Add record expiry queue to registry module state

This commit is contained in:
Prathamesh Musale 2024-02-23 12:01:00 +05:30
parent 92764535a6
commit d2a11bd566
7 changed files with 1025 additions and 126 deletions

View File

@ -7108,6 +7108,550 @@ func (x *fastReflection_AuctionBidInfo) ProtoMethods() *protoiface.Methods {
}
}
var _ protoreflect.List = (*_ExpiryQueue_2_list)(nil)
type _ExpiryQueue_2_list struct {
list *[]string
}
func (x *_ExpiryQueue_2_list) Len() int {
if x.list == nil {
return 0
}
return len(*x.list)
}
func (x *_ExpiryQueue_2_list) Get(i int) protoreflect.Value {
return protoreflect.ValueOfString((*x.list)[i])
}
func (x *_ExpiryQueue_2_list) Set(i int, value protoreflect.Value) {
valueUnwrapped := value.String()
concreteValue := valueUnwrapped
(*x.list)[i] = concreteValue
}
func (x *_ExpiryQueue_2_list) Append(value protoreflect.Value) {
valueUnwrapped := value.String()
concreteValue := valueUnwrapped
*x.list = append(*x.list, concreteValue)
}
func (x *_ExpiryQueue_2_list) AppendMutable() protoreflect.Value {
panic(fmt.Errorf("AppendMutable can not be called on message ExpiryQueue at list field Value as it is not of Message kind"))
}
func (x *_ExpiryQueue_2_list) Truncate(n int) {
*x.list = (*x.list)[:n]
}
func (x *_ExpiryQueue_2_list) NewElement() protoreflect.Value {
v := ""
return protoreflect.ValueOfString(v)
}
func (x *_ExpiryQueue_2_list) IsValid() bool {
return x.list != nil
}
var (
md_ExpiryQueue protoreflect.MessageDescriptor
fd_ExpiryQueue_id protoreflect.FieldDescriptor
fd_ExpiryQueue_value protoreflect.FieldDescriptor
)
func init() {
file_cerc_registry_v1_registry_proto_init()
md_ExpiryQueue = File_cerc_registry_v1_registry_proto.Messages().ByName("ExpiryQueue")
fd_ExpiryQueue_id = md_ExpiryQueue.Fields().ByName("id")
fd_ExpiryQueue_value = md_ExpiryQueue.Fields().ByName("value")
}
var _ protoreflect.Message = (*fastReflection_ExpiryQueue)(nil)
type fastReflection_ExpiryQueue ExpiryQueue
func (x *ExpiryQueue) ProtoReflect() protoreflect.Message {
return (*fastReflection_ExpiryQueue)(x)
}
func (x *ExpiryQueue) slowProtoReflect() protoreflect.Message {
mi := &file_cerc_registry_v1_registry_proto_msgTypes[10]
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_ExpiryQueue_messageType fastReflection_ExpiryQueue_messageType
var _ protoreflect.MessageType = fastReflection_ExpiryQueue_messageType{}
type fastReflection_ExpiryQueue_messageType struct{}
func (x fastReflection_ExpiryQueue_messageType) Zero() protoreflect.Message {
return (*fastReflection_ExpiryQueue)(nil)
}
func (x fastReflection_ExpiryQueue_messageType) New() protoreflect.Message {
return new(fastReflection_ExpiryQueue)
}
func (x fastReflection_ExpiryQueue_messageType) Descriptor() protoreflect.MessageDescriptor {
return md_ExpiryQueue
}
// Descriptor returns message descriptor, which contains only the protobuf
// type information for the message.
func (x *fastReflection_ExpiryQueue) Descriptor() protoreflect.MessageDescriptor {
return md_ExpiryQueue
}
// 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_ExpiryQueue) Type() protoreflect.MessageType {
return _fastReflection_ExpiryQueue_messageType
}
// New returns a newly allocated and mutable empty message.
func (x *fastReflection_ExpiryQueue) New() protoreflect.Message {
return new(fastReflection_ExpiryQueue)
}
// Interface unwraps the message reflection interface and
// returns the underlying ProtoMessage interface.
func (x *fastReflection_ExpiryQueue) Interface() protoreflect.ProtoMessage {
return (*ExpiryQueue)(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_ExpiryQueue) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {
if x.Id != "" {
value := protoreflect.ValueOfString(x.Id)
if !f(fd_ExpiryQueue_id, value) {
return
}
}
if len(x.Value) != 0 {
value := protoreflect.ValueOfList(&_ExpiryQueue_2_list{list: &x.Value})
if !f(fd_ExpiryQueue_value, 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_ExpiryQueue) Has(fd protoreflect.FieldDescriptor) bool {
switch fd.FullName() {
case "cerc.registry.v1.ExpiryQueue.id":
return x.Id != ""
case "cerc.registry.v1.ExpiryQueue.value":
return len(x.Value) != 0
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: cerc.registry.v1.ExpiryQueue"))
}
panic(fmt.Errorf("message cerc.registry.v1.ExpiryQueue 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_ExpiryQueue) Clear(fd protoreflect.FieldDescriptor) {
switch fd.FullName() {
case "cerc.registry.v1.ExpiryQueue.id":
x.Id = ""
case "cerc.registry.v1.ExpiryQueue.value":
x.Value = nil
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: cerc.registry.v1.ExpiryQueue"))
}
panic(fmt.Errorf("message cerc.registry.v1.ExpiryQueue 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_ExpiryQueue) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {
switch descriptor.FullName() {
case "cerc.registry.v1.ExpiryQueue.id":
value := x.Id
return protoreflect.ValueOfString(value)
case "cerc.registry.v1.ExpiryQueue.value":
if len(x.Value) == 0 {
return protoreflect.ValueOfList(&_ExpiryQueue_2_list{})
}
listValue := &_ExpiryQueue_2_list{list: &x.Value}
return protoreflect.ValueOfList(listValue)
default:
if descriptor.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: cerc.registry.v1.ExpiryQueue"))
}
panic(fmt.Errorf("message cerc.registry.v1.ExpiryQueue 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_ExpiryQueue) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {
switch fd.FullName() {
case "cerc.registry.v1.ExpiryQueue.id":
x.Id = value.Interface().(string)
case "cerc.registry.v1.ExpiryQueue.value":
lv := value.List()
clv := lv.(*_ExpiryQueue_2_list)
x.Value = *clv.list
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: cerc.registry.v1.ExpiryQueue"))
}
panic(fmt.Errorf("message cerc.registry.v1.ExpiryQueue 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_ExpiryQueue) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {
switch fd.FullName() {
case "cerc.registry.v1.ExpiryQueue.value":
if x.Value == nil {
x.Value = []string{}
}
value := &_ExpiryQueue_2_list{list: &x.Value}
return protoreflect.ValueOfList(value)
case "cerc.registry.v1.ExpiryQueue.id":
panic(fmt.Errorf("field id of message cerc.registry.v1.ExpiryQueue is not mutable"))
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: cerc.registry.v1.ExpiryQueue"))
}
panic(fmt.Errorf("message cerc.registry.v1.ExpiryQueue 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_ExpiryQueue) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {
switch fd.FullName() {
case "cerc.registry.v1.ExpiryQueue.id":
return protoreflect.ValueOfString("")
case "cerc.registry.v1.ExpiryQueue.value":
list := []string{}
return protoreflect.ValueOfList(&_ExpiryQueue_2_list{list: &list})
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: cerc.registry.v1.ExpiryQueue"))
}
panic(fmt.Errorf("message cerc.registry.v1.ExpiryQueue 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_ExpiryQueue) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {
switch d.FullName() {
default:
panic(fmt.Errorf("%s is not a oneof field in cerc.registry.v1.ExpiryQueue", 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_ExpiryQueue) 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_ExpiryQueue) 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_ExpiryQueue) 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_ExpiryQueue) ProtoMethods() *protoiface.Methods {
size := func(input protoiface.SizeInput) protoiface.SizeOutput {
x := input.Message.Interface().(*ExpiryQueue)
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.Id)
if l > 0 {
n += 1 + l + runtime.Sov(uint64(l))
}
if len(x.Value) > 0 {
for _, s := range x.Value {
l = len(s)
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().(*ExpiryQueue)
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 len(x.Value) > 0 {
for iNdEx := len(x.Value) - 1; iNdEx >= 0; iNdEx-- {
i -= len(x.Value[iNdEx])
copy(dAtA[i:], x.Value[iNdEx])
i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Value[iNdEx])))
i--
dAtA[i] = 0x12
}
}
if len(x.Id) > 0 {
i -= len(x.Id)
copy(dAtA[i:], x.Id)
i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Id)))
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().(*ExpiryQueue)
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: ExpiryQueue: wiretype end group for non-group")
}
if fieldNum <= 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: ExpiryQueue: 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 Id", 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.Id = 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 Value", 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.Value = append(x.Value, string(dAtA[iNdEx:postIndex]))
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,
}
}
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.27.0
@ -7764,6 +8308,52 @@ func (x *AuctionBidInfo) GetBidderAddress() string {
return ""
}
// ExpiryQueue: record / authority expiry queue type
// id: expiry time
// value: array of ids (record cids / authority names)
type ExpiryQueue struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
Value []string `protobuf:"bytes,2,rep,name=value,proto3" json:"value,omitempty"`
}
func (x *ExpiryQueue) Reset() {
*x = ExpiryQueue{}
if protoimpl.UnsafeEnabled {
mi := &file_cerc_registry_v1_registry_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ExpiryQueue) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ExpiryQueue) ProtoMessage() {}
// Deprecated: Use ExpiryQueue.ProtoReflect.Descriptor instead.
func (*ExpiryQueue) Descriptor() ([]byte, []int) {
return file_cerc_registry_v1_registry_proto_rawDescGZIP(), []int{10}
}
func (x *ExpiryQueue) GetId() string {
if x != nil {
return x.Id
}
return ""
}
func (x *ExpiryQueue) GetValue() []string {
if x != nil {
return x.Value
}
return nil
}
var File_cerc_registry_v1_registry_proto protoreflect.FileDescriptor
var file_cerc_registry_v1_registry_proto_rawDesc = []byte{
@ -8009,20 +8599,23 @@ var file_cerc_registry_v1_registry_proto_rawDesc = []byte{
0x6e, 0x3a, 0x22, 0x62, 0x69, 0x64, 0x64, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73,
0x73, 0x22, 0x20, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x62, 0x69, 0x64, 0x64, 0x65, 0x72, 0x5f,
0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x52, 0x0d, 0x62, 0x69, 0x64, 0x64, 0x65, 0x72,
0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0xc5, 0x01, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x2e,
0x63, 0x65, 0x72, 0x63, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31,
0x42, 0x0d, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50,
0x01, 0x5a, 0x3c, 0x67, 0x69, 0x74, 0x2e, 0x76, 0x64, 0x62, 0x2e, 0x74, 0x6f, 0x2f, 0x63, 0x65,
0x72, 0x63, 0x2d, 0x69, 0x6f, 0x2f, 0x6c, 0x61, 0x63, 0x6f, 0x6e, 0x69, 0x63, 0x32, 0x64, 0x2f,
0x61, 0x70, 0x69, 0x2f, 0x63, 0x65, 0x72, 0x63, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
0x79, 0x2f, 0x76, 0x31, 0x3b, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x76, 0x31, 0xa2,
0x02, 0x03, 0x43, 0x52, 0x58, 0xaa, 0x02, 0x10, 0x43, 0x65, 0x72, 0x63, 0x2e, 0x52, 0x65, 0x67,
0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x10, 0x43, 0x65, 0x72, 0x63, 0x5c,
0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1c, 0x43, 0x65,
0x72, 0x63, 0x5c, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x5c, 0x56, 0x31, 0x5c, 0x47,
0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x12, 0x43, 0x65, 0x72,
0x63, 0x3a, 0x3a, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x3a, 0x3a, 0x56, 0x31, 0x62,
0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x33, 0x0a, 0x0b, 0x45, 0x78, 0x70, 0x69, 0x72,
0x79, 0x51, 0x75, 0x65, 0x75, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0xc5, 0x01, 0x0a,
0x14, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x65, 0x72, 0x63, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
0x72, 0x79, 0x2e, 0x76, 0x31, 0x42, 0x0d, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x50,
0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3c, 0x67, 0x69, 0x74, 0x2e, 0x76, 0x64, 0x62, 0x2e,
0x74, 0x6f, 0x2f, 0x63, 0x65, 0x72, 0x63, 0x2d, 0x69, 0x6f, 0x2f, 0x6c, 0x61, 0x63, 0x6f, 0x6e,
0x69, 0x63, 0x32, 0x64, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x65, 0x72, 0x63, 0x2f, 0x72, 0x65,
0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x3b, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
0x72, 0x79, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x52, 0x58, 0xaa, 0x02, 0x10, 0x43, 0x65, 0x72,
0x63, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x10,
0x43, 0x65, 0x72, 0x63, 0x5c, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x5c, 0x56, 0x31,
0xe2, 0x02, 0x1c, 0x43, 0x65, 0x72, 0x63, 0x5c, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea,
0x02, 0x12, 0x43, 0x65, 0x72, 0x63, 0x3a, 0x3a, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@ -8037,7 +8630,7 @@ func file_cerc_registry_v1_registry_proto_rawDescGZIP() []byte {
return file_cerc_registry_v1_registry_proto_rawDescData
}
var file_cerc_registry_v1_registry_proto_msgTypes = make([]protoimpl.MessageInfo, 10)
var file_cerc_registry_v1_registry_proto_msgTypes = make([]protoimpl.MessageInfo, 11)
var file_cerc_registry_v1_registry_proto_goTypes = []interface{}{
(*Params)(nil), // 0: cerc.registry.v1.Params
(*Record)(nil), // 1: cerc.registry.v1.Record
@ -8049,23 +8642,24 @@ var file_cerc_registry_v1_registry_proto_goTypes = []interface{}{
(*Signature)(nil), // 7: cerc.registry.v1.Signature
(*BlockChangeSet)(nil), // 8: cerc.registry.v1.BlockChangeSet
(*AuctionBidInfo)(nil), // 9: cerc.registry.v1.AuctionBidInfo
(*v1beta1.Coin)(nil), // 10: cosmos.base.v1beta1.Coin
(*durationpb.Duration)(nil), // 11: google.protobuf.Duration
(*timestamppb.Timestamp)(nil), // 12: google.protobuf.Timestamp
(*ExpiryQueue)(nil), // 10: cerc.registry.v1.ExpiryQueue
(*v1beta1.Coin)(nil), // 11: cosmos.base.v1beta1.Coin
(*durationpb.Duration)(nil), // 12: google.protobuf.Duration
(*timestamppb.Timestamp)(nil), // 13: google.protobuf.Timestamp
}
var file_cerc_registry_v1_registry_proto_depIdxs = []int32{
10, // 0: cerc.registry.v1.Params.record_rent:type_name -> cosmos.base.v1beta1.Coin
11, // 1: cerc.registry.v1.Params.record_rent_duration:type_name -> google.protobuf.Duration
10, // 2: cerc.registry.v1.Params.authority_rent:type_name -> cosmos.base.v1beta1.Coin
11, // 3: cerc.registry.v1.Params.authority_rent_duration:type_name -> google.protobuf.Duration
11, // 4: cerc.registry.v1.Params.authority_grace_period:type_name -> google.protobuf.Duration
11, // 5: cerc.registry.v1.Params.authority_auction_commits_duration:type_name -> google.protobuf.Duration
11, // 6: cerc.registry.v1.Params.authority_auction_reveals_duration:type_name -> google.protobuf.Duration
10, // 7: cerc.registry.v1.Params.authority_auction_commit_fee:type_name -> cosmos.base.v1beta1.Coin
10, // 8: cerc.registry.v1.Params.authority_auction_reveal_fee:type_name -> cosmos.base.v1beta1.Coin
10, // 9: cerc.registry.v1.Params.authority_auction_minimum_bid:type_name -> cosmos.base.v1beta1.Coin
11, // 0: cerc.registry.v1.Params.record_rent:type_name -> cosmos.base.v1beta1.Coin
12, // 1: cerc.registry.v1.Params.record_rent_duration:type_name -> google.protobuf.Duration
11, // 2: cerc.registry.v1.Params.authority_rent:type_name -> cosmos.base.v1beta1.Coin
12, // 3: cerc.registry.v1.Params.authority_rent_duration:type_name -> google.protobuf.Duration
12, // 4: cerc.registry.v1.Params.authority_grace_period:type_name -> google.protobuf.Duration
12, // 5: cerc.registry.v1.Params.authority_auction_commits_duration:type_name -> google.protobuf.Duration
12, // 6: cerc.registry.v1.Params.authority_auction_reveals_duration:type_name -> google.protobuf.Duration
11, // 7: cerc.registry.v1.Params.authority_auction_commit_fee:type_name -> cosmos.base.v1beta1.Coin
11, // 8: cerc.registry.v1.Params.authority_auction_reveal_fee:type_name -> cosmos.base.v1beta1.Coin
11, // 9: cerc.registry.v1.Params.authority_auction_minimum_bid:type_name -> cosmos.base.v1beta1.Coin
3, // 10: cerc.registry.v1.AuthorityEntry.entry:type_name -> cerc.registry.v1.NameAuthority
12, // 11: cerc.registry.v1.NameAuthority.expiry_time:type_name -> google.protobuf.Timestamp
13, // 11: cerc.registry.v1.NameAuthority.expiry_time:type_name -> google.protobuf.Timestamp
5, // 12: cerc.registry.v1.NameEntry.entry:type_name -> cerc.registry.v1.NameRecord
6, // 13: cerc.registry.v1.NameRecord.latest:type_name -> cerc.registry.v1.NameRecordEntry
6, // 14: cerc.registry.v1.NameRecord.history:type_name -> cerc.registry.v1.NameRecordEntry
@ -8203,6 +8797,18 @@ func file_cerc_registry_v1_registry_proto_init() {
return nil
}
}
file_cerc_registry_v1_registry_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ExpiryQueue); 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{
@ -8210,7 +8816,7 @@ func file_cerc_registry_v1_registry_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_cerc_registry_v1_registry_proto_rawDesc,
NumEnums: 0,
NumMessages: 10,
NumMessages: 11,
NumExtensions: 0,
NumServices: 0,
},

View File

@ -146,3 +146,11 @@ message AuctionBidInfo {
string auction_id = 1 [(gogoproto.moretags) = "json:\"auction_id\" yaml:\"auction_id\""];
string bidder_address = 2 [(gogoproto.moretags) = "json:\"bidder_address\" yaml:\"bidder_address\""];
}
// ExpiryQueue: record / authority expiry queue type
// id: expiry time
// value: array of ids (record cids / authority names)
message ExpiryQueue {
string id = 1;
repeated string value = 2;
}

View File

@ -26,8 +26,7 @@ func (k *Keeper) InitGenesis(ctx sdk.Context, data *registry.GenesisState) error
}
if expiryTime.After(ctx.BlockTime()) {
// TODO
// k.InsertRecordExpiryQueue(ctx, record)
k.insertRecordExpiryQueue(ctx, record)
}
}

View File

@ -2,6 +2,7 @@ package keeper
import (
"bytes"
"errors"
"fmt"
"sort"
"time"
@ -91,11 +92,12 @@ type Keeper struct {
auctionKeeper auctionkeeper.Keeper
// state management
Schema collections.Schema
Params collections.Item[registrytypes.Params]
Records *collections.IndexedMap[string, registrytypes.Record, RecordsIndexes]
Authorities *collections.IndexedMap[string, registrytypes.NameAuthority, AuthoritiesIndexes]
NameRecords *collections.IndexedMap[string, registrytypes.NameRecord, NameRecordsIndexes]
Schema collections.Schema
Params collections.Item[registrytypes.Params]
Records *collections.IndexedMap[string, registrytypes.Record, RecordsIndexes]
Authorities *collections.IndexedMap[string, registrytypes.NameAuthority, AuthoritiesIndexes]
NameRecords *collections.IndexedMap[string, registrytypes.NameRecord, NameRecordsIndexes]
RecordExpiryQueue collections.Map[time.Time, registrytypes.ExpiryQueue]
}
// NewKeeper creates a new Keeper instance
@ -132,6 +134,10 @@ func NewKeeper(
collections.StringKey, codec.CollValue[registrytypes.NameRecord](cdc),
newNameRecordIndexes(sb),
),
RecordExpiryQueue: collections.NewMap(
sb, registrytypes.RecordExpiryQueuePrefix, "record_expiry_queue",
sdk.TimeKey, codec.CollValue[registrytypes.ExpiryQueue](cdc),
),
}
schema, err := sb.Build()
@ -314,9 +320,7 @@ func (k Keeper) processRecord(ctx sdk.Context, record *registrytypes.ReadableRec
// return err
// }
// k.InsertRecordExpiryQueue(ctx, recordObj)
return nil
return k.insertRecordExpiryQueue(ctx, recordObj)
}
func (k Keeper) processAttributes(ctx sdk.Context, attrs registrytypes.AttributeMap, id string, prefix string) error {
@ -412,3 +416,50 @@ func (k Keeper) GetModuleBalances(ctx sdk.Context) []*registrytypes.AccountBalan
return balances
}
// ProcessRecordExpiryQueue tries to renew expiring records (by collecting rent) else marks them as deleted.
func (k Keeper) ProcessRecordExpiryQueue(ctx sdk.Context) {
// TODO: process expired records
cids, err := k.getAllExpiredRecords(ctx, ctx.BlockHeader().Time)
}
// getAllExpiredRecords returns a concatenated list of all the timeslices before currTime.
func (k Keeper) getAllExpiredRecords(ctx sdk.Context, currTime time.Time) ([]string, error) {
var expiredRecordCIDs []string
// Get all the records with expiry time until currTime
rng := new(collections.Range[time.Time]).EndInclusive(currTime)
err := k.RecordExpiryQueue.Walk(ctx, rng, func(key time.Time, value registrytypes.ExpiryQueue) (stop bool, err error) {
expiredRecordCIDs = append(expiredRecordCIDs, value.Value...)
return false, nil
})
if err != nil {
return []string{}, err
}
return expiredRecordCIDs, nil
}
// insertRecordExpiryQueue inserts a record CID to the appropriate timeslice in the record expiry queue.
func (k Keeper) insertRecordExpiryQueue(ctx sdk.Context, record registrytypes.Record) error {
expiryTime, err := time.Parse(time.RFC3339, record.ExpiryTime)
if err != nil {
return err
}
existingRecordsList, err := k.RecordExpiryQueue.Get(ctx, expiryTime)
if err != nil {
if errors.Is(err, collections.ErrNotFound) {
existingRecordsList = registrytypes.ExpiryQueue{
Id: expiryTime.String(),
Value: []string{},
}
} else {
return err
}
}
existingRecordsList.Value = append(existingRecordsList.Value, record.Id)
return k.RecordExpiryQueue.Set(ctx, expiryTime, existingRecordsList)
}

View File

@ -27,4 +27,6 @@ var (
NameRecordsPrefix = collections.NewPrefix(6)
NameRecordsByCidIndexPrefix = collections.NewPrefix(7)
RecordExpiryQueuePrefix = collections.NewPrefix(8)
)

View File

@ -3,14 +3,17 @@ package module
import (
"context"
sdk "github.com/cosmos/cosmos-sdk/types"
"git.vdb.to/cerc-io/laconic2d/x/registry/keeper"
)
// EndBlocker is called every block
func EndBlocker(ctx context.Context, k keeper.Keeper) error {
// TODO: Implement
sdkCtx := sdk.UnwrapSDKContext(ctx)
// k.ProcessRecordExpiryQueue(ctx)
k.ProcessRecordExpiryQueue(sdkCtx)
// k.ProcessAuthorityExpiryQueue(ctx)
return nil

View File

@ -762,6 +762,61 @@ func (m *AuctionBidInfo) GetBidderAddress() string {
return ""
}
// ExpiryQueue: record / authority expiry queue type
// id: expiry time
// value: array of ids (record cids / authority names)
type ExpiryQueue struct {
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
Value []string `protobuf:"bytes,2,rep,name=value,proto3" json:"value,omitempty"`
}
func (m *ExpiryQueue) Reset() { *m = ExpiryQueue{} }
func (m *ExpiryQueue) String() string { return proto.CompactTextString(m) }
func (*ExpiryQueue) ProtoMessage() {}
func (*ExpiryQueue) Descriptor() ([]byte, []int) {
return fileDescriptor_d792f2373089b5b9, []int{10}
}
func (m *ExpiryQueue) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
func (m *ExpiryQueue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
return xxx_messageInfo_ExpiryQueue.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 *ExpiryQueue) XXX_Merge(src proto.Message) {
xxx_messageInfo_ExpiryQueue.Merge(m, src)
}
func (m *ExpiryQueue) XXX_Size() int {
return m.Size()
}
func (m *ExpiryQueue) XXX_DiscardUnknown() {
xxx_messageInfo_ExpiryQueue.DiscardUnknown(m)
}
var xxx_messageInfo_ExpiryQueue proto.InternalMessageInfo
func (m *ExpiryQueue) GetId() string {
if m != nil {
return m.Id
}
return ""
}
func (m *ExpiryQueue) GetValue() []string {
if m != nil {
return m.Value
}
return nil
}
func init() {
proto.RegisterType((*Params)(nil), "cerc.registry.v1.Params")
proto.RegisterType((*Record)(nil), "cerc.registry.v1.Record")
@ -773,96 +828,99 @@ func init() {
proto.RegisterType((*Signature)(nil), "cerc.registry.v1.Signature")
proto.RegisterType((*BlockChangeSet)(nil), "cerc.registry.v1.BlockChangeSet")
proto.RegisterType((*AuctionBidInfo)(nil), "cerc.registry.v1.AuctionBidInfo")
proto.RegisterType((*ExpiryQueue)(nil), "cerc.registry.v1.ExpiryQueue")
}
func init() { proto.RegisterFile("cerc/registry/v1/registry.proto", fileDescriptor_d792f2373089b5b9) }
var fileDescriptor_d792f2373089b5b9 = []byte{
// 1343 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x57, 0x4d, 0x6f, 0x1b, 0xc5,
0x1b, 0xcf, 0xc6, 0x89, 0x13, 0x3f, 0x69, 0xf2, 0xaf, 0xe6, 0x9f, 0xb6, 0x4e, 0x68, 0xbd, 0xa9,
0x11, 0x4a, 0xab, 0xaa, 0x5e, 0xb9, 0x11, 0xaa, 0xda, 0x8a, 0x43, 0x36, 0xb4, 0x51, 0xa8, 0x80,
0x32, 0xa9, 0x38, 0x80, 0x90, 0xb5, 0x2f, 0x53, 0x67, 0xa8, 0x77, 0xd7, 0xda, 0x1d, 0x87, 0xfa,
0x88, 0xc4, 0x01, 0x6e, 0x3d, 0xf6, 0xc0, 0x37, 0xe0, 0x00, 0xdf, 0x82, 0x1e, 0x7b, 0xe4, 0x82,
0x41, 0x8d, 0xc4, 0x07, 0xf0, 0x27, 0x40, 0xf3, 0xb6, 0x6f, 0xb6, 0x6b, 0xa0, 0xb7, 0x7d, 0xde,
0x7e, 0xf3, 0x9b, 0x67, 0x9e, 0xe7, 0x99, 0x59, 0x30, 0x3d, 0x12, 0x7b, 0x56, 0x4c, 0xba, 0x34,
0x61, 0xf1, 0xd0, 0x3a, 0x6d, 0xa7, 0xdf, 0xad, 0x7e, 0x1c, 0xb1, 0x08, 0x9d, 0xe7, 0x0e, 0xad,
0x54, 0x79, 0xda, 0xde, 0x6e, 0x74, 0xa3, 0xa8, 0xdb, 0x23, 0x96, 0xb0, 0xbb, 0x83, 0x27, 0x96,
0x3f, 0x88, 0x1d, 0x46, 0xa3, 0x50, 0x46, 0x6c, 0x9b, 0x65, 0x3b, 0xa3, 0x01, 0x49, 0x98, 0x13,
0xf4, 0x95, 0xc3, 0x66, 0x37, 0xea, 0x46, 0xe2, 0xd3, 0xe2, 0x5f, 0x4a, 0xdb, 0xf0, 0xa2, 0x24,
0x88, 0x12, 0xcb, 0x75, 0x12, 0x62, 0x9d, 0xb6, 0x5d, 0xc2, 0x9c, 0xb6, 0xe5, 0x45, 0x54, 0xc1,
0x36, 0x7f, 0x5f, 0x87, 0xea, 0x23, 0x27, 0x76, 0x82, 0x04, 0x51, 0x58, 0x8b, 0x89, 0x17, 0xc5,
0x7e, 0x27, 0x26, 0x21, 0xab, 0x1b, 0x3b, 0xc6, 0xb5, 0xb5, 0x5b, 0x5b, 0x2d, 0x09, 0xd0, 0xe2,
0x00, 0x2d, 0x05, 0xd0, 0x3a, 0x88, 0x68, 0x68, 0xdf, 0x7c, 0x39, 0x32, 0x17, 0xc6, 0x23, 0xf3,
0xbd, 0xaf, 0x93, 0x28, 0xbc, 0xdb, 0xcc, 0xc5, 0x36, 0x77, 0x86, 0x4e, 0xd0, 0x2b, 0xaa, 0x30,
0x48, 0x09, 0x93, 0x90, 0xa1, 0xe7, 0x06, 0x6c, 0xe6, 0x8c, 0x1d, 0xbd, 0xd7, 0xfa, 0xa2, 0x5a,
0x54, 0x6e, 0xb6, 0xa5, 0x37, 0xdb, 0xfa, 0x50, 0x39, 0xd8, 0x07, 0x6a, 0xd1, 0xdb, 0x13, 0x8b,
0xa6, 0x20, 0x53, 0x56, 0xcf, 0x6c, 0x2f, 0xfe, 0x30, 0x0d, 0x8c, 0x32, 0x2a, 0x1a, 0x18, 0x0d,
0x60, 0xc3, 0x19, 0xb0, 0x93, 0x28, 0xa6, 0x6c, 0x28, 0x13, 0x50, 0x99, 0x97, 0x80, 0x3d, 0xc5,
0xe5, 0x86, 0xe4, 0x52, 0x0c, 0xd7, 0x2c, 0x4a, 0x5a, 0xbc, 0x9e, 0x2a, 0x44, 0x26, 0x7e, 0x34,
0xe0, 0x52, 0xd1, 0x25, 0x4b, 0xc6, 0xd2, 0xbc, 0x64, 0x1c, 0x29, 0x02, 0x1f, 0x4c, 0x23, 0x30,
0x91, 0x8f, 0x59, 0x66, 0x91, 0x92, 0x0b, 0x05, 0x5a, 0x69, 0x56, 0x5e, 0x18, 0x70, 0x31, 0x8b,
0xeb, 0xc6, 0x8e, 0x47, 0x3a, 0x7d, 0x12, 0xd3, 0xc8, 0xaf, 0x2f, 0xcf, 0x63, 0x77, 0xa8, 0xd8,
0xdd, 0x2b, 0xb3, 0xcb, 0xc3, 0x4c, 0x92, 0x2b, 0x58, 0x05, 0xb7, 0xcd, 0xd4, 0x78, 0xc8, 0x6d,
0x8f, 0x84, 0x09, 0x7d, 0x6b, 0xc0, 0x56, 0x16, 0xe5, 0x0c, 0x3c, 0xbe, 0x68, 0x87, 0x84, 0x8e,
0xdb, 0x23, 0x7e, 0xbd, 0xba, 0x63, 0x5c, 0x5b, 0xb5, 0xef, 0x8f, 0x47, 0xe6, 0x7e, 0x79, 0xf9,
0x92, 0xeb, 0x24, 0x83, 0xb2, 0x03, 0xce, 0x4e, 0x68, 0x5f, 0x9a, 0xee, 0x4b, 0x0b, 0xfa, 0xd5,
0x80, 0x29, 0x71, 0x5e, 0x14, 0x04, 0x94, 0x25, 0xd9, 0x41, 0xae, 0xcc, 0x4b, 0x55, 0x47, 0xa5,
0xea, 0x78, 0x16, 0xd7, 0x32, 0xe4, 0x6c, 0xd2, 0x13, 0x9e, 0x22, 0x85, 0x66, 0x79, 0x07, 0x07,
0xd2, 0x2d, 0x3d, 0xe8, 0xe9, 0x3b, 0x89, 0xc9, 0x29, 0x71, 0x7a, 0xb9, 0x9d, 0xac, 0xbe, 0xf5,
0x4e, 0xca, 0x90, 0xb3, 0x77, 0x32, 0xe1, 0x39, 0x7d, 0x27, 0x58, 0xba, 0xa5, 0x3b, 0xf9, 0xc9,
0x80, 0xcb, 0xb3, 0xd2, 0xd2, 0x79, 0x42, 0x48, 0xbd, 0x36, 0xaf, 0xaf, 0x3f, 0x55, 0x7b, 0x38,
0x7c, 0xf3, 0x69, 0x70, 0xb0, 0x79, 0xe7, 0x20, 0x7c, 0xf0, 0xd6, 0xf4, 0xec, 0x3f, 0x20, 0x64,
0x06, 0x5b, 0xb9, 0x75, 0xc1, 0x16, 0xde, 0x9a, 0x6d, 0x06, 0x36, 0x2f, 0xd7, 0x33, 0xd8, 0xca,
0x0c, 0x73, 0xb6, 0x3f, 0x1b, 0x70, 0x65, 0x32, 0x38, 0xa0, 0x21, 0x0d, 0x06, 0x41, 0xc7, 0xa5,
0x7e, 0x7d, 0x6d, 0x1e, 0xdd, 0xcf, 0x14, 0xdd, 0xa3, 0x59, 0x74, 0x73, 0x68, 0xb3, 0xf9, 0xe6,
0x9d, 0xf0, 0x76, 0x99, 0xf0, 0xc7, 0xd2, 0x6a, 0x53, 0xbf, 0xf9, 0xc3, 0x12, 0x54, 0xb1, 0x98,
0xf6, 0x68, 0x17, 0x16, 0xa9, 0x2f, 0xae, 0xb5, 0x9a, 0x7d, 0x69, 0x3c, 0x32, 0xff, 0x2f, 0x19,
0x64, 0xcb, 0x70, 0xac, 0x45, 0xea, 0xa3, 0xbb, 0xb0, 0xe2, 0x46, 0xa1, 0xdf, 0xa1, 0xbe, 0xb8,
0x8f, 0x6a, 0xf6, 0xd5, 0xf1, 0xc8, 0xbc, 0x22, 0xbd, 0x95, 0x41, 0x87, 0x68, 0x11, 0x57, 0xf9,
0xd7, 0x91, 0x8f, 0x3e, 0x82, 0x35, 0x2f, 0x26, 0x0e, 0x23, 0x1d, 0x7e, 0x3f, 0x8b, 0x3b, 0xa4,
0x66, 0x5f, 0xcf, 0x6e, 0xc9, 0x9c, 0x51, 0x63, 0xe4, 0x55, 0x18, 0xa4, 0xf4, 0x98, 0x06, 0x84,
0x63, 0x91, 0x67, 0x7d, 0x1a, 0x0f, 0x25, 0xd6, 0x52, 0x19, 0x2b, 0x67, 0xd4, 0x58, 0x79, 0x15,
0x06, 0x29, 0x09, 0xac, 0x3a, 0xac, 0xf8, 0xa4, 0x47, 0x18, 0x91, 0x83, 0x7b, 0x15, 0x6b, 0x11,
0xdd, 0x86, 0x6a, 0xf4, 0x4d, 0x48, 0xe2, 0xa4, 0x5e, 0xdd, 0xa9, 0x5c, 0xab, 0xd9, 0xe6, 0x78,
0x64, 0xbe, 0x23, 0x17, 0x90, 0x7a, 0x8d, 0xad, 0x24, 0xac, 0xdc, 0xd1, 0x21, 0x80, 0xc3, 0x58,
0x4c, 0xdd, 0x01, 0x23, 0x89, 0x98, 0x71, 0xe7, 0xec, 0xdd, 0xf1, 0xc8, 0x7c, 0x57, 0x9d, 0x6c,
0x6a, 0x4b, 0x8f, 0x31, 0xd3, 0xe0, 0x5c, 0x28, 0xda, 0x83, 0xe5, 0xd0, 0x09, 0x48, 0x52, 0x5f,
0x15, 0x04, 0xae, 0x8c, 0x47, 0xe6, 0x96, 0xc4, 0x10, 0x6a, 0x1d, 0x2e, 0x05, 0x2c, 0x7d, 0x51,
0x1b, 0x96, 0xd8, 0xb0, 0x2f, 0xbb, 0xb9, 0x10, 0xc3, 0xb5, 0x69, 0x8c, 0x14, 0xb0, 0x70, 0x6d,
0x7e, 0x09, 0x1b, 0xfb, 0xba, 0x52, 0xee, 0x87, 0x2c, 0x1e, 0x22, 0x04, 0x4b, 0x1c, 0x4d, 0x16,
0x05, 0x16, 0xdf, 0xe8, 0x7d, 0x58, 0x26, 0xdc, 0xa8, 0xde, 0x22, 0x66, 0xab, 0xfc, 0x54, 0x6b,
0x7d, 0xe2, 0x04, 0x24, 0x05, 0xc2, 0xd2, 0xbb, 0xf9, 0x57, 0x05, 0xd6, 0x0b, 0x06, 0xf4, 0x15,
0x9c, 0x17, 0x99, 0xea, 0xf4, 0x07, 0x6e, 0x8f, 0x7a, 0x9d, 0xa7, 0x64, 0xa8, 0xaa, 0x6f, 0x6f,
0x3c, 0x32, 0xad, 0x5c, 0x8a, 0x73, 0x1e, 0x85, 0x64, 0xe7, 0xf5, 0x78, 0x43, 0xa8, 0x1e, 0x09,
0xcd, 0x43, 0x32, 0x44, 0x18, 0xd6, 0xa5, 0x93, 0xe3, 0xfb, 0x31, 0x49, 0x12, 0x55, 0xab, 0x37,
0xc7, 0x23, 0xf3, 0x7a, 0x1e, 0x5b, 0x99, 0x8b, 0xc0, 0x5a, 0x89, 0xcf, 0x09, 0x79, 0x5f, 0x8a,
0xe8, 0x22, 0x54, 0x4f, 0x08, 0xed, 0x9e, 0xc8, 0xc7, 0xcf, 0x12, 0x56, 0x12, 0xd7, 0x27, 0xcc,
0x61, 0x83, 0x44, 0x16, 0x21, 0x56, 0x12, 0x7a, 0x00, 0xa0, 0x3b, 0x92, 0xca, 0xc2, 0xaa, 0x15,
0x4a, 0x20, 0xb5, 0x65, 0x9d, 0x9c, 0x6a, 0x70, 0x4d, 0x09, 0x47, 0x85, 0x8e, 0xab, 0xfe, 0xdb,
0x8e, 0x0b, 0x8b, 0x5d, 0x22, 0xef, 0xda, 0xed, 0x89, 0x1b, 0xea, 0xb1, 0x7e, 0x2e, 0xdb, 0xed,
0xe2, 0xbb, 0x75, 0x4e, 0x17, 0x3d, 0xe7, 0x97, 0x4e, 0xae, 0x93, 0x9a, 0xc7, 0x50, 0xe3, 0xe7,
0x3c, 0xbb, 0x80, 0x6e, 0x15, 0x0b, 0xe8, 0xf2, 0xf4, 0x02, 0x92, 0x43, 0x49, 0x57, 0xcf, 0x77,
0x06, 0x40, 0xa6, 0x45, 0x77, 0xa0, 0xda, 0x73, 0x18, 0x49, 0xf4, 0x2b, 0xfc, 0xea, 0x9b, 0x30,
0x04, 0x13, 0xac, 0x02, 0xd0, 0x3d, 0x58, 0x39, 0xa1, 0x09, 0x8b, 0xc4, 0xfa, 0x95, 0x7f, 0x16,
0xab, 0x23, 0x9a, 0x77, 0xe0, 0x7f, 0x25, 0x1b, 0xda, 0xc8, 0xa6, 0xa6, 0x18, 0x8e, 0x59, 0x89,
0x2c, 0xe6, 0x4b, 0xa4, 0xc9, 0xa0, 0x76, 0x4c, 0xbb, 0xa1, 0xc3, 0x06, 0x31, 0x41, 0x37, 0xa0,
0x92, 0xd0, 0xae, 0xaa, 0xf6, 0xad, 0xf1, 0xc8, 0xbc, 0x20, 0x73, 0x9d, 0xd0, 0xae, 0xce, 0x31,
0xff, 0xc4, 0xdc, 0x8b, 0x1f, 0x7e, 0x7f, 0xe0, 0x8a, 0xf6, 0x98, 0x18, 0xb7, 0xca, 0xa0, 0x83,
0xb4, 0x88, 0xab, 0xfd, 0x81, 0xfb, 0x90, 0x0c, 0x9b, 0xdf, 0x2f, 0xc2, 0x86, 0xdd, 0x8b, 0xbc,
0xa7, 0x07, 0x27, 0x4e, 0xd8, 0x25, 0xc7, 0x84, 0xe5, 0x08, 0xf2, 0xe5, 0x2b, 0x69, 0x0d, 0xd7,
0x61, 0x45, 0x3e, 0xfb, 0x13, 0x91, 0x98, 0x1a, 0xd6, 0x22, 0xda, 0x86, 0x55, 0x55, 0x8a, 0x49,
0xbd, 0x22, 0x4c, 0xa9, 0x8c, 0xfa, 0x70, 0x4e, 0xd7, 0xac, 0x4b, 0x7d, 0x5e, 0xff, 0x3c, 0xa7,
0x3b, 0x93, 0x39, 0x55, 0x57, 0x8f, 0x4d, 0xfd, 0xa3, 0xf0, 0x49, 0x64, 0xdf, 0x18, 0x8f, 0xcc,
0xdd, 0x62, 0x17, 0xf0, 0xf8, 0x72, 0x1f, 0x08, 0x1d, 0x5e, 0x73, 0xd2, 0xe0, 0x04, 0xed, 0xc0,
0x9a, 0xbe, 0xcf, 0x28, 0x49, 0xea, 0xcb, 0x82, 0x50, 0x5e, 0x85, 0x36, 0xf5, 0xbc, 0x14, 0x03,
0x5b, 0x0d, 0xc4, 0xe6, 0x2f, 0x06, 0x1f, 0x6f, 0x79, 0x12, 0xa5, 0xf6, 0x34, 0xfe, 0x73, 0x7b,
0x7e, 0x0e, 0x1b, 0x2e, 0xf5, 0xfd, 0x89, 0x59, 0x63, 0x65, 0x3f, 0x3f, 0x45, 0x7b, 0xda, 0xac,
0x45, 0x2d, 0x5e, 0x97, 0x0a, 0x35, 0x6e, 0xec, 0xfd, 0x97, 0xaf, 0x1b, 0xc6, 0xab, 0xd7, 0x0d,
0xe3, 0xcf, 0xd7, 0x0d, 0xe3, 0xf9, 0x59, 0x63, 0xe1, 0xd5, 0x59, 0x63, 0xe1, 0xb7, 0xb3, 0xc6,
0xc2, 0x17, 0xbb, 0x5d, 0xca, 0x5a, 0xa7, 0xbe, 0xdb, 0x62, 0x91, 0xc5, 0x53, 0x7d, 0x93, 0x46,
0x56, 0xcf, 0xf1, 0xa2, 0x90, 0x7a, 0xb7, 0x7c, 0xeb, 0x59, 0xfa, 0x3b, 0xed, 0x56, 0x45, 0x83,
0xef, 0xfd, 0x1d, 0x00, 0x00, 0xff, 0xff, 0xf7, 0x12, 0xe3, 0x33, 0x72, 0x0f, 0x00, 0x00,
// 1365 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x57, 0x4f, 0x6f, 0x1b, 0x45,
0x14, 0xcf, 0xc6, 0x89, 0x13, 0x3f, 0x37, 0xa1, 0x1a, 0xd2, 0xd6, 0x09, 0xad, 0x37, 0x35, 0x42,
0x69, 0x55, 0xd5, 0xab, 0x34, 0x42, 0x55, 0x5b, 0x71, 0xc8, 0x86, 0x34, 0x0a, 0x15, 0xd0, 0x4e,
0x2a, 0x0e, 0x20, 0x64, 0xed, 0x9f, 0xa9, 0x33, 0xd4, 0xbb, 0x6b, 0xed, 0xce, 0x9a, 0xfa, 0x88,
0xc4, 0x01, 0x6e, 0x3d, 0xf6, 0xc0, 0x37, 0xe0, 0x00, 0xdf, 0x82, 0x1e, 0x7b, 0xe4, 0x82, 0x41,
0x8d, 0xc4, 0x07, 0xf0, 0x27, 0x40, 0xf3, 0x67, 0xff, 0xda, 0xae, 0x81, 0xde, 0xf6, 0xfd, 0xfb,
0xcd, 0x6f, 0xde, 0xbc, 0xf7, 0x66, 0x16, 0x74, 0x87, 0x84, 0x8e, 0x11, 0x92, 0x2e, 0x8d, 0x58,
0x38, 0x34, 0x06, 0xbb, 0xe9, 0x77, 0xbb, 0x1f, 0x06, 0x2c, 0x40, 0xe7, 0xb9, 0x43, 0x3b, 0x55,
0x0e, 0x76, 0xb7, 0x9a, 0xdd, 0x20, 0xe8, 0xf6, 0x88, 0x21, 0xec, 0x76, 0xfc, 0xc4, 0x70, 0xe3,
0xd0, 0x62, 0x34, 0xf0, 0x65, 0xc4, 0x96, 0x5e, 0xb6, 0x33, 0xea, 0x91, 0x88, 0x59, 0x5e, 0x5f,
0x39, 0x6c, 0x74, 0x83, 0x6e, 0x20, 0x3e, 0x0d, 0xfe, 0xa5, 0xb4, 0x4d, 0x27, 0x88, 0xbc, 0x20,
0x32, 0x6c, 0x2b, 0x22, 0xc6, 0x60, 0xd7, 0x26, 0xcc, 0xda, 0x35, 0x9c, 0x80, 0x2a, 0xd8, 0xd6,
0x1f, 0x6b, 0x50, 0x7d, 0x68, 0x85, 0x96, 0x17, 0x21, 0x0a, 0xf5, 0x90, 0x38, 0x41, 0xe8, 0x76,
0x42, 0xe2, 0xb3, 0x86, 0xb6, 0xad, 0x5d, 0xab, 0xdf, 0xda, 0x6c, 0x4b, 0x80, 0x36, 0x07, 0x68,
0x2b, 0x80, 0xf6, 0x41, 0x40, 0x7d, 0xf3, 0xe6, 0xcb, 0x91, 0xbe, 0x30, 0x1e, 0xe9, 0x1f, 0x7c,
0x13, 0x05, 0xfe, 0xdd, 0x56, 0x2e, 0xb6, 0xb5, 0x3d, 0xb4, 0xbc, 0x5e, 0x51, 0x85, 0x41, 0x4a,
0x98, 0xf8, 0x0c, 0x3d, 0xd7, 0x60, 0x23, 0x67, 0xec, 0x24, 0x7b, 0x6d, 0x2c, 0xaa, 0x45, 0xe5,
0x66, 0xdb, 0xc9, 0x66, 0xdb, 0x1f, 0x2b, 0x07, 0xf3, 0x40, 0x2d, 0x7a, 0x7b, 0x62, 0xd1, 0x14,
0x64, 0xca, 0xea, 0x99, 0xed, 0xc5, 0x9f, 0xba, 0x86, 0x51, 0x46, 0x25, 0x01, 0x46, 0x31, 0xac,
0x5b, 0x31, 0x3b, 0x0d, 0x42, 0xca, 0x86, 0x32, 0x01, 0x95, 0x79, 0x09, 0xd8, 0x53, 0x5c, 0x6e,
0x48, 0x2e, 0xc5, 0xf0, 0x84, 0x45, 0x49, 0x8b, 0xd7, 0x52, 0x85, 0xc8, 0xc4, 0x4f, 0x1a, 0x5c,
0x2a, 0xba, 0x64, 0xc9, 0x58, 0x9a, 0x97, 0x8c, 0x63, 0x45, 0xe0, 0xa3, 0x69, 0x04, 0x26, 0xf2,
0x31, 0xcb, 0x2c, 0x52, 0x72, 0xa1, 0x40, 0x2b, 0xcd, 0xca, 0x0b, 0x0d, 0x2e, 0x66, 0x71, 0xdd,
0xd0, 0x72, 0x48, 0xa7, 0x4f, 0x42, 0x1a, 0xb8, 0x8d, 0xe5, 0x79, 0xec, 0x8e, 0x14, 0xbb, 0x7b,
0x65, 0x76, 0x79, 0x98, 0x49, 0x72, 0x05, 0xab, 0xe0, 0xb6, 0x91, 0x1a, 0x8f, 0xb8, 0xed, 0xa1,
0x30, 0xa1, 0xef, 0x34, 0xd8, 0xcc, 0xa2, 0xac, 0xd8, 0xe1, 0x8b, 0x76, 0x88, 0x6f, 0xd9, 0x3d,
0xe2, 0x36, 0xaa, 0xdb, 0xda, 0xb5, 0x55, 0xf3, 0x70, 0x3c, 0xd2, 0xf7, 0xcb, 0xcb, 0x97, 0x5c,
0x27, 0x19, 0x94, 0x1d, 0x70, 0x76, 0x42, 0xfb, 0xd2, 0x74, 0x28, 0x2d, 0xe8, 0x37, 0x0d, 0xa6,
0xc4, 0x39, 0x81, 0xe7, 0x51, 0x16, 0x65, 0x07, 0xb9, 0x32, 0x2f, 0x55, 0x1d, 0x95, 0xaa, 0x93,
0x59, 0x5c, 0xcb, 0x90, 0xb3, 0x49, 0x4f, 0x78, 0x8a, 0x14, 0xea, 0xe5, 0x1d, 0x1c, 0x48, 0xb7,
0xf4, 0xa0, 0xa7, 0xef, 0x24, 0x24, 0x03, 0x62, 0xf5, 0x72, 0x3b, 0x59, 0x7d, 0xeb, 0x9d, 0x94,
0x21, 0x67, 0xef, 0x64, 0xc2, 0x73, 0xfa, 0x4e, 0xb0, 0x74, 0x4b, 0x77, 0xf2, 0xb3, 0x06, 0x97,
0x67, 0xa5, 0xa5, 0xf3, 0x84, 0x90, 0x46, 0x6d, 0x5e, 0x5f, 0x7f, 0xae, 0xf6, 0x70, 0xf4, 0xe6,
0xd3, 0xe0, 0x60, 0xf3, 0xce, 0x41, 0xf8, 0xe0, 0xcd, 0xe9, 0xd9, 0xbf, 0x4f, 0xc8, 0x0c, 0xb6,
0x72, 0xeb, 0x82, 0x2d, 0xbc, 0x35, 0xdb, 0x0c, 0x6c, 0x5e, 0xae, 0x67, 0xb0, 0x95, 0x19, 0xe6,
0x6c, 0x7f, 0xd1, 0xe0, 0xca, 0x64, 0xb0, 0x47, 0x7d, 0xea, 0xc5, 0x5e, 0xc7, 0xa6, 0x6e, 0xa3,
0x3e, 0x8f, 0xee, 0x23, 0x45, 0xf7, 0x78, 0x16, 0xdd, 0x1c, 0xda, 0x6c, 0xbe, 0x79, 0x27, 0xbc,
0x55, 0x26, 0xfc, 0xa9, 0xb4, 0x9a, 0xd4, 0x6d, 0xfd, 0xb8, 0x04, 0x55, 0x2c, 0xa6, 0x3d, 0xda,
0x81, 0x45, 0xea, 0x8a, 0x6b, 0xad, 0x66, 0x5e, 0x1a, 0x8f, 0xf4, 0x77, 0x25, 0x83, 0x6c, 0x19,
0x8e, 0xb5, 0x48, 0x5d, 0x74, 0x17, 0x56, 0xec, 0xc0, 0x77, 0x3b, 0xd4, 0x15, 0xf7, 0x51, 0xcd,
0xbc, 0x3a, 0x1e, 0xe9, 0x57, 0xa4, 0xb7, 0x32, 0x24, 0x21, 0x89, 0x88, 0xab, 0xfc, 0xeb, 0xd8,
0x45, 0x9f, 0x40, 0xdd, 0x09, 0x89, 0xc5, 0x48, 0x87, 0xdf, 0xcf, 0xe2, 0x0e, 0xa9, 0x99, 0xd7,
0xb3, 0x5b, 0x32, 0x67, 0x4c, 0x30, 0xf2, 0x2a, 0x0c, 0x52, 0x7a, 0x4c, 0x3d, 0xc2, 0xb1, 0xc8,
0xb3, 0x3e, 0x0d, 0x87, 0x12, 0x6b, 0xa9, 0x8c, 0x95, 0x33, 0x26, 0x58, 0x79, 0x15, 0x06, 0x29,
0x09, 0xac, 0x06, 0xac, 0xb8, 0xa4, 0x47, 0x18, 0x91, 0x83, 0x7b, 0x15, 0x27, 0x22, 0xba, 0x0d,
0xd5, 0xe0, 0x5b, 0x9f, 0x84, 0x51, 0xa3, 0xba, 0x5d, 0xb9, 0x56, 0x33, 0xf5, 0xf1, 0x48, 0x7f,
0x4f, 0x2e, 0x20, 0xf5, 0x09, 0xb6, 0x92, 0xb0, 0x72, 0x47, 0x47, 0x00, 0x16, 0x63, 0x21, 0xb5,
0x63, 0x46, 0x22, 0x31, 0xe3, 0xce, 0x99, 0x3b, 0xe3, 0x91, 0xfe, 0xbe, 0x3a, 0xd9, 0xd4, 0x96,
0x1e, 0x63, 0xa6, 0xc1, 0xb9, 0x50, 0xb4, 0x07, 0xcb, 0xbe, 0xe5, 0x91, 0xa8, 0xb1, 0x2a, 0x08,
0x5c, 0x19, 0x8f, 0xf4, 0x4d, 0x89, 0x21, 0xd4, 0x49, 0xb8, 0x14, 0xb0, 0xf4, 0x45, 0xbb, 0xb0,
0xc4, 0x86, 0x7d, 0xd9, 0xcd, 0x85, 0x18, 0xae, 0x4d, 0x63, 0xa4, 0x80, 0x85, 0x6b, 0xeb, 0x2b,
0x58, 0xdf, 0x4f, 0x2a, 0xe5, 0xd0, 0x67, 0xe1, 0x10, 0x21, 0x58, 0xe2, 0x68, 0xb2, 0x28, 0xb0,
0xf8, 0x46, 0x1f, 0xc2, 0x32, 0xe1, 0x46, 0xf5, 0x16, 0xd1, 0xdb, 0xe5, 0xa7, 0x5a, 0xfb, 0x33,
0xcb, 0x23, 0x29, 0x10, 0x96, 0xde, 0xad, 0xbf, 0x2b, 0xb0, 0x56, 0x30, 0xa0, 0xaf, 0xe1, 0xbc,
0xc8, 0x54, 0xa7, 0x1f, 0xdb, 0x3d, 0xea, 0x74, 0x9e, 0x92, 0xa1, 0xaa, 0xbe, 0xbd, 0xf1, 0x48,
0x37, 0x72, 0x29, 0xce, 0x79, 0x14, 0x92, 0x9d, 0xd7, 0xe3, 0x75, 0xa1, 0x7a, 0x28, 0x34, 0x0f,
0xc8, 0x10, 0x61, 0x58, 0x93, 0x4e, 0x96, 0xeb, 0x86, 0x24, 0x8a, 0x54, 0xad, 0xde, 0x1c, 0x8f,
0xf4, 0xeb, 0x79, 0x6c, 0x65, 0x2e, 0x02, 0x27, 0x4a, 0x7c, 0x4e, 0xc8, 0xfb, 0x52, 0x44, 0x17,
0xa1, 0x7a, 0x4a, 0x68, 0xf7, 0x54, 0x3e, 0x7e, 0x96, 0xb0, 0x92, 0xb8, 0x3e, 0x62, 0x16, 0x8b,
0x23, 0x59, 0x84, 0x58, 0x49, 0xe8, 0x3e, 0x40, 0xd2, 0x91, 0x54, 0x16, 0x56, 0xad, 0x50, 0x02,
0xa9, 0x2d, 0xeb, 0xe4, 0x54, 0x83, 0x6b, 0x4a, 0x38, 0x2e, 0x74, 0x5c, 0xf5, 0xbf, 0x76, 0x9c,
0x5f, 0xec, 0x12, 0x79, 0xd7, 0x6e, 0x4d, 0xdc, 0x50, 0x8f, 0x93, 0xe7, 0xb2, 0xb9, 0x5b, 0x7c,
0xb7, 0xce, 0xe9, 0xa2, 0xe7, 0xfc, 0xd2, 0xc9, 0x75, 0x52, 0xeb, 0x04, 0x6a, 0xfc, 0x9c, 0x67,
0x17, 0xd0, 0xad, 0x62, 0x01, 0x5d, 0x9e, 0x5e, 0x40, 0x72, 0x28, 0x25, 0xd5, 0xf3, 0xbd, 0x06,
0x90, 0x69, 0xd1, 0x1d, 0xa8, 0xf6, 0x2c, 0x46, 0xa2, 0xe4, 0x15, 0x7e, 0xf5, 0x4d, 0x18, 0x82,
0x09, 0x56, 0x01, 0xe8, 0x1e, 0xac, 0x9c, 0xd2, 0x88, 0x05, 0x62, 0xfd, 0xca, 0xbf, 0x8b, 0x4d,
0x22, 0x5a, 0x77, 0xe0, 0x9d, 0x92, 0x0d, 0xad, 0x67, 0x53, 0x53, 0x0c, 0xc7, 0xac, 0x44, 0x16,
0xf3, 0x25, 0xd2, 0x62, 0x50, 0x3b, 0xa1, 0x5d, 0xdf, 0x62, 0x71, 0x48, 0xd0, 0x0d, 0xa8, 0x44,
0xb4, 0xab, 0xaa, 0x7d, 0x73, 0x3c, 0xd2, 0x2f, 0xc8, 0x5c, 0x47, 0xb4, 0x9b, 0xe4, 0x98, 0x7f,
0x62, 0xee, 0xc5, 0x0f, 0xbf, 0x1f, 0xdb, 0xa2, 0x3d, 0x26, 0xc6, 0xad, 0x32, 0x24, 0x41, 0x89,
0x88, 0xab, 0xfd, 0xd8, 0x7e, 0x40, 0x86, 0xad, 0x1f, 0x16, 0x61, 0xdd, 0xec, 0x05, 0xce, 0xd3,
0x83, 0x53, 0xcb, 0xef, 0x92, 0x13, 0xc2, 0x72, 0x04, 0xf9, 0xf2, 0x95, 0xb4, 0x86, 0x1b, 0xb0,
0x22, 0x9f, 0xfd, 0x91, 0x48, 0x4c, 0x0d, 0x27, 0x22, 0xda, 0x82, 0x55, 0x55, 0x8a, 0x51, 0xa3,
0x22, 0x4c, 0xa9, 0x8c, 0xfa, 0x70, 0x2e, 0xa9, 0x59, 0x9b, 0xba, 0xbc, 0xfe, 0x79, 0x4e, 0xb7,
0x27, 0x73, 0xaa, 0xae, 0x1e, 0x93, 0xba, 0xc7, 0xfe, 0x93, 0xc0, 0xbc, 0x31, 0x1e, 0xe9, 0x3b,
0xc5, 0x2e, 0xe0, 0xf1, 0xe5, 0x3e, 0x10, 0x3a, 0x5c, 0xb7, 0xd2, 0xe0, 0x08, 0x6d, 0x43, 0x3d,
0xb9, 0xcf, 0x28, 0x89, 0x1a, 0xcb, 0x82, 0x50, 0x5e, 0x85, 0x36, 0x92, 0x79, 0x29, 0x06, 0xb6,
0x1a, 0x88, 0xad, 0x5f, 0x35, 0x3e, 0xde, 0xf2, 0x24, 0x4a, 0xed, 0xa9, 0xfd, 0xef, 0xf6, 0xfc,
0x02, 0xd6, 0x6d, 0xea, 0xba, 0x13, 0xb3, 0xc6, 0xc8, 0x7e, 0x7e, 0x8a, 0xf6, 0xb4, 0x59, 0x8b,
0x5a, 0xbc, 0x26, 0x15, 0x6a, 0xdc, 0xb4, 0xf6, 0xa0, 0x7e, 0x28, 0x1a, 0xeb, 0x51, 0x4c, 0x62,
0x32, 0x51, 0x6a, 0x1b, 0xb0, 0x3c, 0xb0, 0x7a, 0x31, 0x51, 0xe7, 0x25, 0x05, 0x73, 0xff, 0xe5,
0xeb, 0xa6, 0xf6, 0xea, 0x75, 0x53, 0xfb, 0xeb, 0x75, 0x53, 0x7b, 0x7e, 0xd6, 0x5c, 0x78, 0x75,
0xd6, 0x5c, 0xf8, 0xfd, 0xac, 0xb9, 0xf0, 0xe5, 0x4e, 0x97, 0xb2, 0xf6, 0xc0, 0xb5, 0xdb, 0x2c,
0x30, 0xf8, 0xf9, 0xdc, 0xa4, 0x81, 0xd1, 0xb3, 0x9c, 0xc0, 0xa7, 0xce, 0x2d, 0xd7, 0x78, 0x96,
0xfe, 0x83, 0xdb, 0x55, 0x31, 0x15, 0xf6, 0xfe, 0x09, 0x00, 0x00, 0xff, 0xff, 0xa4, 0x85, 0xe1,
0xaf, 0xa7, 0x0f, 0x00, 0x00,
}
func (m *Params) Marshal() (dAtA []byte, err error) {
@ -1472,6 +1530,45 @@ func (m *AuctionBidInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) {
return len(dAtA) - i, nil
}
func (m *ExpiryQueue) 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 *ExpiryQueue) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
func (m *ExpiryQueue) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
_ = l
if len(m.Value) > 0 {
for iNdEx := len(m.Value) - 1; iNdEx >= 0; iNdEx-- {
i -= len(m.Value[iNdEx])
copy(dAtA[i:], m.Value[iNdEx])
i = encodeVarintRegistry(dAtA, i, uint64(len(m.Value[iNdEx])))
i--
dAtA[i] = 0x12
}
}
if len(m.Id) > 0 {
i -= len(m.Id)
copy(dAtA[i:], m.Id)
i = encodeVarintRegistry(dAtA, i, uint64(len(m.Id)))
i--
dAtA[i] = 0xa
}
return len(dAtA) - i, nil
}
func encodeVarintRegistry(dAtA []byte, offset int, v uint64) int {
offset -= sovRegistry(v)
base := offset
@ -1742,6 +1839,25 @@ func (m *AuctionBidInfo) Size() (n int) {
return n
}
func (m *ExpiryQueue) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
l = len(m.Id)
if l > 0 {
n += 1 + l + sovRegistry(uint64(l))
}
if len(m.Value) > 0 {
for _, s := range m.Value {
l = len(s)
n += 1 + l + sovRegistry(uint64(l))
}
}
return n
}
func sovRegistry(x uint64) (n int) {
return (math_bits.Len64(x|1) + 6) / 7
}
@ -3654,6 +3770,120 @@ func (m *AuctionBidInfo) Unmarshal(dAtA []byte) error {
}
return nil
}
func (m *ExpiryQueue) 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 ErrIntOverflowRegistry
}
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: ExpiryQueue: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: ExpiryQueue: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowRegistry
}
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 ErrInvalidLengthRegistry
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthRegistry
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Id = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 2:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowRegistry
}
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 ErrInvalidLengthRegistry
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthRegistry
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Value = append(m.Value, string(dAtA[iNdEx:postIndex]))
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipRegistry(dAtA[iNdEx:])
if err != nil {
return err
}
if (skippy < 0) || (iNdEx+skippy) < 0 {
return ErrInvalidLengthRegistry
}
if (iNdEx + skippy) > l {
return io.ErrUnexpectedEOF
}
iNdEx += skippy
}
}
if iNdEx > l {
return io.ErrUnexpectedEOF
}
return nil
}
func skipRegistry(dAtA []byte) (n int, err error) {
l := len(dAtA)
iNdEx := 0