From cb296b56036cbfa049cd9dbed6be78ef0f049351 Mon Sep 17 00:00:00 2001 From: Aaron Craelius Date: Wed, 10 Jul 2024 16:51:48 +0200 Subject: [PATCH 01/12] feat(depinject/appconfig): remove api module dependency, bump to v1 --- api/cosmos/app/v1/config.pulsar.go | 2085 ++++++++++++++++++++++++++++ depinject/appconfig/config.go | 23 +- depinject/appconfig/config.pb.go | 942 +++++++++++++ proto/cosmos/app/v1/config.proto | 57 + 4 files changed, 3102 insertions(+), 5 deletions(-) create mode 100644 api/cosmos/app/v1/config.pulsar.go create mode 100644 depinject/appconfig/config.pb.go create mode 100644 proto/cosmos/app/v1/config.proto diff --git a/api/cosmos/app/v1/config.pulsar.go b/api/cosmos/app/v1/config.pulsar.go new file mode 100644 index 000000000000..e7db1f9d4330 --- /dev/null +++ b/api/cosmos/app/v1/config.pulsar.go @@ -0,0 +1,2085 @@ +// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. +package appv1 + +import ( + fmt "fmt" + runtime "github.com/cosmos/cosmos-proto/runtime" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoiface "google.golang.org/protobuf/runtime/protoiface" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + anypb "google.golang.org/protobuf/types/known/anypb" + io "io" + reflect "reflect" + sync "sync" +) + +var _ protoreflect.List = (*_Config_1_list)(nil) + +type _Config_1_list struct { + list *[]*ModuleConfig +} + +func (x *_Config_1_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_Config_1_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) +} + +func (x *_Config_1_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*ModuleConfig) + (*x.list)[i] = concreteValue +} + +func (x *_Config_1_list) Append(value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*ModuleConfig) + *x.list = append(*x.list, concreteValue) +} + +func (x *_Config_1_list) AppendMutable() protoreflect.Value { + v := new(ModuleConfig) + *x.list = append(*x.list, v) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_Config_1_list) Truncate(n int) { + for i := n; i < len(*x.list); i++ { + (*x.list)[i] = nil + } + *x.list = (*x.list)[:n] +} + +func (x *_Config_1_list) NewElement() protoreflect.Value { + v := new(ModuleConfig) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_Config_1_list) IsValid() bool { + return x.list != nil +} + +var _ protoreflect.List = (*_Config_2_list)(nil) + +type _Config_2_list struct { + list *[]*GolangBinding +} + +func (x *_Config_2_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_Config_2_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) +} + +func (x *_Config_2_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*GolangBinding) + (*x.list)[i] = concreteValue +} + +func (x *_Config_2_list) Append(value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*GolangBinding) + *x.list = append(*x.list, concreteValue) +} + +func (x *_Config_2_list) AppendMutable() protoreflect.Value { + v := new(GolangBinding) + *x.list = append(*x.list, v) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_Config_2_list) Truncate(n int) { + for i := n; i < len(*x.list); i++ { + (*x.list)[i] = nil + } + *x.list = (*x.list)[:n] +} + +func (x *_Config_2_list) NewElement() protoreflect.Value { + v := new(GolangBinding) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_Config_2_list) IsValid() bool { + return x.list != nil +} + +var ( + md_Config protoreflect.MessageDescriptor + fd_Config_modules protoreflect.FieldDescriptor + fd_Config_golang_bindings protoreflect.FieldDescriptor +) + +func init() { + file_cosmos_app_v1_config_proto_init() + md_Config = File_cosmos_app_v1_config_proto.Messages().ByName("Config") + fd_Config_modules = md_Config.Fields().ByName("modules") + fd_Config_golang_bindings = md_Config.Fields().ByName("golang_bindings") +} + +var _ protoreflect.Message = (*fastReflection_Config)(nil) + +type fastReflection_Config Config + +func (x *Config) ProtoReflect() protoreflect.Message { + return (*fastReflection_Config)(x) +} + +func (x *Config) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_app_v1_config_proto_msgTypes[0] + 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_Config_messageType fastReflection_Config_messageType +var _ protoreflect.MessageType = fastReflection_Config_messageType{} + +type fastReflection_Config_messageType struct{} + +func (x fastReflection_Config_messageType) Zero() protoreflect.Message { + return (*fastReflection_Config)(nil) +} +func (x fastReflection_Config_messageType) New() protoreflect.Message { + return new(fastReflection_Config) +} +func (x fastReflection_Config_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_Config +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_Config) Descriptor() protoreflect.MessageDescriptor { + return md_Config +} + +// 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_Config) Type() protoreflect.MessageType { + return _fastReflection_Config_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_Config) New() protoreflect.Message { + return new(fastReflection_Config) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_Config) Interface() protoreflect.ProtoMessage { + return (*Config)(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_Config) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if len(x.Modules) != 0 { + value := protoreflect.ValueOfList(&_Config_1_list{list: &x.Modules}) + if !f(fd_Config_modules, value) { + return + } + } + if len(x.GolangBindings) != 0 { + value := protoreflect.ValueOfList(&_Config_2_list{list: &x.GolangBindings}) + if !f(fd_Config_golang_bindings, 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_Config) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "cosmos.app.v1.Config.modules": + return len(x.Modules) != 0 + case "cosmos.app.v1.Config.golang_bindings": + return len(x.GolangBindings) != 0 + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.app.v1.Config")) + } + panic(fmt.Errorf("message cosmos.app.v1.Config 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_Config) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "cosmos.app.v1.Config.modules": + x.Modules = nil + case "cosmos.app.v1.Config.golang_bindings": + x.GolangBindings = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.app.v1.Config")) + } + panic(fmt.Errorf("message cosmos.app.v1.Config 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_Config) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "cosmos.app.v1.Config.modules": + if len(x.Modules) == 0 { + return protoreflect.ValueOfList(&_Config_1_list{}) + } + listValue := &_Config_1_list{list: &x.Modules} + return protoreflect.ValueOfList(listValue) + case "cosmos.app.v1.Config.golang_bindings": + if len(x.GolangBindings) == 0 { + return protoreflect.ValueOfList(&_Config_2_list{}) + } + listValue := &_Config_2_list{list: &x.GolangBindings} + return protoreflect.ValueOfList(listValue) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.app.v1.Config")) + } + panic(fmt.Errorf("message cosmos.app.v1.Config 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_Config) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "cosmos.app.v1.Config.modules": + lv := value.List() + clv := lv.(*_Config_1_list) + x.Modules = *clv.list + case "cosmos.app.v1.Config.golang_bindings": + lv := value.List() + clv := lv.(*_Config_2_list) + x.GolangBindings = *clv.list + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.app.v1.Config")) + } + panic(fmt.Errorf("message cosmos.app.v1.Config 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_Config) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.app.v1.Config.modules": + if x.Modules == nil { + x.Modules = []*ModuleConfig{} + } + value := &_Config_1_list{list: &x.Modules} + return protoreflect.ValueOfList(value) + case "cosmos.app.v1.Config.golang_bindings": + if x.GolangBindings == nil { + x.GolangBindings = []*GolangBinding{} + } + value := &_Config_2_list{list: &x.GolangBindings} + return protoreflect.ValueOfList(value) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.app.v1.Config")) + } + panic(fmt.Errorf("message cosmos.app.v1.Config 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_Config) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.app.v1.Config.modules": + list := []*ModuleConfig{} + return protoreflect.ValueOfList(&_Config_1_list{list: &list}) + case "cosmos.app.v1.Config.golang_bindings": + list := []*GolangBinding{} + return protoreflect.ValueOfList(&_Config_2_list{list: &list}) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.app.v1.Config")) + } + panic(fmt.Errorf("message cosmos.app.v1.Config 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_Config) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.app.v1.Config", 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_Config) 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_Config) 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_Config) 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_Config) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*Config) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if len(x.Modules) > 0 { + for _, e := range x.Modules { + l = options.Size(e) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if len(x.GolangBindings) > 0 { + for _, e := range x.GolangBindings { + l = options.Size(e) + 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().(*Config) + 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.GolangBindings) > 0 { + for iNdEx := len(x.GolangBindings) - 1; iNdEx >= 0; iNdEx-- { + encoded, err := options.Marshal(x.GolangBindings[iNdEx]) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x12 + } + } + if len(x.Modules) > 0 { + for iNdEx := len(x.Modules) - 1; iNdEx >= 0; iNdEx-- { + encoded, err := options.Marshal(x.Modules[iNdEx]) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 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().(*Config) + 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: Config: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Config: 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 Modules", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Modules = append(x.Modules, &ModuleConfig{}) + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Modules[len(x.Modules)-1]); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field GolangBindings", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.GolangBindings = append(x.GolangBindings, &GolangBinding{}) + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.GolangBindings[len(x.GolangBindings)-1]); 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 _ protoreflect.List = (*_ModuleConfig_3_list)(nil) + +type _ModuleConfig_3_list struct { + list *[]*GolangBinding +} + +func (x *_ModuleConfig_3_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_ModuleConfig_3_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) +} + +func (x *_ModuleConfig_3_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*GolangBinding) + (*x.list)[i] = concreteValue +} + +func (x *_ModuleConfig_3_list) Append(value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*GolangBinding) + *x.list = append(*x.list, concreteValue) +} + +func (x *_ModuleConfig_3_list) AppendMutable() protoreflect.Value { + v := new(GolangBinding) + *x.list = append(*x.list, v) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_ModuleConfig_3_list) Truncate(n int) { + for i := n; i < len(*x.list); i++ { + (*x.list)[i] = nil + } + *x.list = (*x.list)[:n] +} + +func (x *_ModuleConfig_3_list) NewElement() protoreflect.Value { + v := new(GolangBinding) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_ModuleConfig_3_list) IsValid() bool { + return x.list != nil +} + +var ( + md_ModuleConfig protoreflect.MessageDescriptor + fd_ModuleConfig_name protoreflect.FieldDescriptor + fd_ModuleConfig_config protoreflect.FieldDescriptor + fd_ModuleConfig_golang_bindings protoreflect.FieldDescriptor +) + +func init() { + file_cosmos_app_v1_config_proto_init() + md_ModuleConfig = File_cosmos_app_v1_config_proto.Messages().ByName("ModuleConfig") + fd_ModuleConfig_name = md_ModuleConfig.Fields().ByName("name") + fd_ModuleConfig_config = md_ModuleConfig.Fields().ByName("config") + fd_ModuleConfig_golang_bindings = md_ModuleConfig.Fields().ByName("golang_bindings") +} + +var _ protoreflect.Message = (*fastReflection_ModuleConfig)(nil) + +type fastReflection_ModuleConfig ModuleConfig + +func (x *ModuleConfig) ProtoReflect() protoreflect.Message { + return (*fastReflection_ModuleConfig)(x) +} + +func (x *ModuleConfig) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_app_v1_config_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_ModuleConfig_messageType fastReflection_ModuleConfig_messageType +var _ protoreflect.MessageType = fastReflection_ModuleConfig_messageType{} + +type fastReflection_ModuleConfig_messageType struct{} + +func (x fastReflection_ModuleConfig_messageType) Zero() protoreflect.Message { + return (*fastReflection_ModuleConfig)(nil) +} +func (x fastReflection_ModuleConfig_messageType) New() protoreflect.Message { + return new(fastReflection_ModuleConfig) +} +func (x fastReflection_ModuleConfig_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_ModuleConfig +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_ModuleConfig) Descriptor() protoreflect.MessageDescriptor { + return md_ModuleConfig +} + +// 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_ModuleConfig) Type() protoreflect.MessageType { + return _fastReflection_ModuleConfig_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_ModuleConfig) New() protoreflect.Message { + return new(fastReflection_ModuleConfig) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_ModuleConfig) Interface() protoreflect.ProtoMessage { + return (*ModuleConfig)(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_ModuleConfig) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Name != "" { + value := protoreflect.ValueOfString(x.Name) + if !f(fd_ModuleConfig_name, value) { + return + } + } + if x.Config != nil { + value := protoreflect.ValueOfMessage(x.Config.ProtoReflect()) + if !f(fd_ModuleConfig_config, value) { + return + } + } + if len(x.GolangBindings) != 0 { + value := protoreflect.ValueOfList(&_ModuleConfig_3_list{list: &x.GolangBindings}) + if !f(fd_ModuleConfig_golang_bindings, 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_ModuleConfig) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "cosmos.app.v1.ModuleConfig.name": + return x.Name != "" + case "cosmos.app.v1.ModuleConfig.config": + return x.Config != nil + case "cosmos.app.v1.ModuleConfig.golang_bindings": + return len(x.GolangBindings) != 0 + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.app.v1.ModuleConfig")) + } + panic(fmt.Errorf("message cosmos.app.v1.ModuleConfig 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_ModuleConfig) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "cosmos.app.v1.ModuleConfig.name": + x.Name = "" + case "cosmos.app.v1.ModuleConfig.config": + x.Config = nil + case "cosmos.app.v1.ModuleConfig.golang_bindings": + x.GolangBindings = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.app.v1.ModuleConfig")) + } + panic(fmt.Errorf("message cosmos.app.v1.ModuleConfig 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_ModuleConfig) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "cosmos.app.v1.ModuleConfig.name": + value := x.Name + return protoreflect.ValueOfString(value) + case "cosmos.app.v1.ModuleConfig.config": + value := x.Config + return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "cosmos.app.v1.ModuleConfig.golang_bindings": + if len(x.GolangBindings) == 0 { + return protoreflect.ValueOfList(&_ModuleConfig_3_list{}) + } + listValue := &_ModuleConfig_3_list{list: &x.GolangBindings} + return protoreflect.ValueOfList(listValue) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.app.v1.ModuleConfig")) + } + panic(fmt.Errorf("message cosmos.app.v1.ModuleConfig 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_ModuleConfig) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "cosmos.app.v1.ModuleConfig.name": + x.Name = value.Interface().(string) + case "cosmos.app.v1.ModuleConfig.config": + x.Config = value.Message().Interface().(*anypb.Any) + case "cosmos.app.v1.ModuleConfig.golang_bindings": + lv := value.List() + clv := lv.(*_ModuleConfig_3_list) + x.GolangBindings = *clv.list + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.app.v1.ModuleConfig")) + } + panic(fmt.Errorf("message cosmos.app.v1.ModuleConfig 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_ModuleConfig) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.app.v1.ModuleConfig.config": + if x.Config == nil { + x.Config = new(anypb.Any) + } + return protoreflect.ValueOfMessage(x.Config.ProtoReflect()) + case "cosmos.app.v1.ModuleConfig.golang_bindings": + if x.GolangBindings == nil { + x.GolangBindings = []*GolangBinding{} + } + value := &_ModuleConfig_3_list{list: &x.GolangBindings} + return protoreflect.ValueOfList(value) + case "cosmos.app.v1.ModuleConfig.name": + panic(fmt.Errorf("field name of message cosmos.app.v1.ModuleConfig is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.app.v1.ModuleConfig")) + } + panic(fmt.Errorf("message cosmos.app.v1.ModuleConfig 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_ModuleConfig) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.app.v1.ModuleConfig.name": + return protoreflect.ValueOfString("") + case "cosmos.app.v1.ModuleConfig.config": + m := new(anypb.Any) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "cosmos.app.v1.ModuleConfig.golang_bindings": + list := []*GolangBinding{} + return protoreflect.ValueOfList(&_ModuleConfig_3_list{list: &list}) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.app.v1.ModuleConfig")) + } + panic(fmt.Errorf("message cosmos.app.v1.ModuleConfig 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_ModuleConfig) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.app.v1.ModuleConfig", 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_ModuleConfig) 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_ModuleConfig) 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_ModuleConfig) 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_ModuleConfig) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*ModuleConfig) + 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.Name) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.Config != nil { + l = options.Size(x.Config) + n += 1 + l + runtime.Sov(uint64(l)) + } + if len(x.GolangBindings) > 0 { + for _, e := range x.GolangBindings { + l = options.Size(e) + 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().(*ModuleConfig) + 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.GolangBindings) > 0 { + for iNdEx := len(x.GolangBindings) - 1; iNdEx >= 0; iNdEx-- { + encoded, err := options.Marshal(x.GolangBindings[iNdEx]) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x1a + } + } + if x.Config != nil { + encoded, err := options.Marshal(x.Config) + 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.Name) > 0 { + i -= len(x.Name) + copy(dAtA[i:], x.Name) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Name))) + 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().(*ModuleConfig) + 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: ModuleConfig: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: ModuleConfig: 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 Name", 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.Name = 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 Config", 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.Config == nil { + x.Config = &anypb.Any{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Config); 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 GolangBindings", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.GolangBindings = append(x.GolangBindings, &GolangBinding{}) + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.GolangBindings[len(x.GolangBindings)-1]); 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_GolangBinding protoreflect.MessageDescriptor + fd_GolangBinding_interface_type protoreflect.FieldDescriptor + fd_GolangBinding_implementation protoreflect.FieldDescriptor +) + +func init() { + file_cosmos_app_v1_config_proto_init() + md_GolangBinding = File_cosmos_app_v1_config_proto.Messages().ByName("GolangBinding") + fd_GolangBinding_interface_type = md_GolangBinding.Fields().ByName("interface_type") + fd_GolangBinding_implementation = md_GolangBinding.Fields().ByName("implementation") +} + +var _ protoreflect.Message = (*fastReflection_GolangBinding)(nil) + +type fastReflection_GolangBinding GolangBinding + +func (x *GolangBinding) ProtoReflect() protoreflect.Message { + return (*fastReflection_GolangBinding)(x) +} + +func (x *GolangBinding) slowProtoReflect() protoreflect.Message { + mi := &file_cosmos_app_v1_config_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_GolangBinding_messageType fastReflection_GolangBinding_messageType +var _ protoreflect.MessageType = fastReflection_GolangBinding_messageType{} + +type fastReflection_GolangBinding_messageType struct{} + +func (x fastReflection_GolangBinding_messageType) Zero() protoreflect.Message { + return (*fastReflection_GolangBinding)(nil) +} +func (x fastReflection_GolangBinding_messageType) New() protoreflect.Message { + return new(fastReflection_GolangBinding) +} +func (x fastReflection_GolangBinding_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_GolangBinding +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_GolangBinding) Descriptor() protoreflect.MessageDescriptor { + return md_GolangBinding +} + +// 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_GolangBinding) Type() protoreflect.MessageType { + return _fastReflection_GolangBinding_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_GolangBinding) New() protoreflect.Message { + return new(fastReflection_GolangBinding) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_GolangBinding) Interface() protoreflect.ProtoMessage { + return (*GolangBinding)(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_GolangBinding) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.InterfaceType != "" { + value := protoreflect.ValueOfString(x.InterfaceType) + if !f(fd_GolangBinding_interface_type, value) { + return + } + } + if x.Implementation != "" { + value := protoreflect.ValueOfString(x.Implementation) + if !f(fd_GolangBinding_implementation, 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_GolangBinding) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "cosmos.app.v1.GolangBinding.interface_type": + return x.InterfaceType != "" + case "cosmos.app.v1.GolangBinding.implementation": + return x.Implementation != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.app.v1.GolangBinding")) + } + panic(fmt.Errorf("message cosmos.app.v1.GolangBinding 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_GolangBinding) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "cosmos.app.v1.GolangBinding.interface_type": + x.InterfaceType = "" + case "cosmos.app.v1.GolangBinding.implementation": + x.Implementation = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.app.v1.GolangBinding")) + } + panic(fmt.Errorf("message cosmos.app.v1.GolangBinding 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_GolangBinding) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "cosmos.app.v1.GolangBinding.interface_type": + value := x.InterfaceType + return protoreflect.ValueOfString(value) + case "cosmos.app.v1.GolangBinding.implementation": + value := x.Implementation + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.app.v1.GolangBinding")) + } + panic(fmt.Errorf("message cosmos.app.v1.GolangBinding 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_GolangBinding) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "cosmos.app.v1.GolangBinding.interface_type": + x.InterfaceType = value.Interface().(string) + case "cosmos.app.v1.GolangBinding.implementation": + x.Implementation = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.app.v1.GolangBinding")) + } + panic(fmt.Errorf("message cosmos.app.v1.GolangBinding 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_GolangBinding) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.app.v1.GolangBinding.interface_type": + panic(fmt.Errorf("field interface_type of message cosmos.app.v1.GolangBinding is not mutable")) + case "cosmos.app.v1.GolangBinding.implementation": + panic(fmt.Errorf("field implementation of message cosmos.app.v1.GolangBinding is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.app.v1.GolangBinding")) + } + panic(fmt.Errorf("message cosmos.app.v1.GolangBinding 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_GolangBinding) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "cosmos.app.v1.GolangBinding.interface_type": + return protoreflect.ValueOfString("") + case "cosmos.app.v1.GolangBinding.implementation": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.app.v1.GolangBinding")) + } + panic(fmt.Errorf("message cosmos.app.v1.GolangBinding 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_GolangBinding) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in cosmos.app.v1.GolangBinding", 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_GolangBinding) 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_GolangBinding) 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_GolangBinding) 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_GolangBinding) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*GolangBinding) + 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.InterfaceType) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Implementation) + if l > 0 { + 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().(*GolangBinding) + 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.Implementation) > 0 { + i -= len(x.Implementation) + copy(dAtA[i:], x.Implementation) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Implementation))) + i-- + dAtA[i] = 0x12 + } + if len(x.InterfaceType) > 0 { + i -= len(x.InterfaceType) + copy(dAtA[i:], x.InterfaceType) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.InterfaceType))) + 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().(*GolangBinding) + 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: GolangBinding: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: GolangBinding: 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 InterfaceType", 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.InterfaceType = 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 Implementation", 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.Implementation = 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 +// protoc (unknown) +// source: cosmos/app/v1/config.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Config represents the configuration for a Cosmos SDK ABCI app. +// It is intended that all state machine logic including the version of +// baseapp and tx handlers (and possibly even Tendermint) that an app needs +// can be described in a config object. For compatibility, the framework should +// allow a mixture of declarative and imperative app wiring, however, apps +// that strive for the maximum ease of maintainability should be able to describe +// their state machine with a config object alone. +type Config struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // modules are the module configurations for the app. + Modules []*ModuleConfig `protobuf:"bytes,1,rep,name=modules,proto3" json:"modules,omitempty"` + // golang_bindings specifies explicit interface to implementation type bindings which + // depinject uses to resolve interface inputs to provider functions. The scope of this + // field's configuration is global (not module specific). + GolangBindings []*GolangBinding `protobuf:"bytes,2,rep,name=golang_bindings,json=golangBindings,proto3" json:"golang_bindings,omitempty"` +} + +func (x *Config) Reset() { + *x = Config{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_app_v1_config_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Config) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Config) ProtoMessage() {} + +// Deprecated: Use Config.ProtoReflect.Descriptor instead. +func (*Config) Descriptor() ([]byte, []int) { + return file_cosmos_app_v1_config_proto_rawDescGZIP(), []int{0} +} + +func (x *Config) GetModules() []*ModuleConfig { + if x != nil { + return x.Modules + } + return nil +} + +func (x *Config) GetGolangBindings() []*GolangBinding { + if x != nil { + return x.GolangBindings + } + return nil +} + +// ModuleConfig is a module configuration for an app. +type ModuleConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // name is the unique name of the module within the app. It should be a name + // that persists between different versions of a module so that modules + // can be smoothly upgraded to new versions. + // + // For example, for the module cosmos.bank.module.v1.Module, we may chose + // to simply name the module "bank" in the app. When we upgrade to + // cosmos.bank.module.v2.Module, the app-specific name "bank" stays the same + // and the framework knows that the v2 module should receive all the same state + // that the v1 module had. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // config is the config object for the module. Module config messages should + // define a ModuleDescriptor using the cosmos.app.v1alpha1.is_module extension, + // although this requirement shouldn't be considered stable. + Config *anypb.Any `protobuf:"bytes,2,opt,name=config,proto3" json:"config,omitempty"` + // golang_bindings specifies explicit interface to implementation type bindings which + // depinject uses to resolve interface inputs to provider functions. The scope of this + // field's configuration is module specific. + GolangBindings []*GolangBinding `protobuf:"bytes,3,rep,name=golang_bindings,json=golangBindings,proto3" json:"golang_bindings,omitempty"` +} + +func (x *ModuleConfig) Reset() { + *x = ModuleConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_app_v1_config_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ModuleConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ModuleConfig) ProtoMessage() {} + +// Deprecated: Use ModuleConfig.ProtoReflect.Descriptor instead. +func (*ModuleConfig) Descriptor() ([]byte, []int) { + return file_cosmos_app_v1_config_proto_rawDescGZIP(), []int{1} +} + +func (x *ModuleConfig) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ModuleConfig) GetConfig() *anypb.Any { + if x != nil { + return x.Config + } + return nil +} + +func (x *ModuleConfig) GetGolangBindings() []*GolangBinding { + if x != nil { + return x.GolangBindings + } + return nil +} + +// GolangBinding is an explicit interface type to implementing type binding for dependency injection. +type GolangBinding struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // interface_type is the interface type which will be bound to a specific implementation type + InterfaceType string `protobuf:"bytes,1,opt,name=interface_type,json=interfaceType,proto3" json:"interface_type,omitempty"` + // implementation is the implementing type which will be supplied when an input of type interface is requested + Implementation string `protobuf:"bytes,2,opt,name=implementation,proto3" json:"implementation,omitempty"` +} + +func (x *GolangBinding) Reset() { + *x = GolangBinding{} + if protoimpl.UnsafeEnabled { + mi := &file_cosmos_app_v1_config_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GolangBinding) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GolangBinding) ProtoMessage() {} + +// Deprecated: Use GolangBinding.ProtoReflect.Descriptor instead. +func (*GolangBinding) Descriptor() ([]byte, []int) { + return file_cosmos_app_v1_config_proto_rawDescGZIP(), []int{2} +} + +func (x *GolangBinding) GetInterfaceType() string { + if x != nil { + return x.InterfaceType + } + return "" +} + +func (x *GolangBinding) GetImplementation() string { + if x != nil { + return x.Implementation + } + return "" +} + +var File_cosmos_app_v1_config_proto protoreflect.FileDescriptor + +var file_cosmos_app_v1_config_proto_rawDesc = []byte{ + 0x0a, 0x1a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x76, 0x31, 0x2f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0d, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x1a, 0x19, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x86, 0x01, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x35, 0x0a, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x2e, + 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, + 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x0f, 0x67, 0x6f, 0x6c, 0x61, + 0x6e, 0x67, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x76, + 0x31, 0x2e, 0x47, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, + 0x0e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x22, + 0x97, 0x01, 0x0a, 0x0c, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 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, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x12, 0x45, 0x0a, 0x0f, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x5f, 0x62, 0x69, 0x6e, + 0x64, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x6f, 0x6c, 0x61, + 0x6e, 0x67, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x0e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, + 0x67, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x5e, 0x0a, 0x0d, 0x47, 0x6f, 0x6c, + 0x61, 0x6e, 0x67, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6d, 0x70, 0x6c, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x9c, 0x01, 0x0a, 0x11, 0x63, 0x6f, + 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x42, + 0x0b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x24, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x76, 0x31, 0x3b, 0x61, + 0x70, 0x70, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x41, 0x58, 0xaa, 0x02, 0x0d, 0x43, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x70, 0x70, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0d, 0x43, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x5c, 0x41, 0x70, 0x70, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x19, 0x43, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x5c, 0x41, 0x70, 0x70, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0f, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x3a, + 0x3a, 0x41, 0x70, 0x70, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_cosmos_app_v1_config_proto_rawDescOnce sync.Once + file_cosmos_app_v1_config_proto_rawDescData = file_cosmos_app_v1_config_proto_rawDesc +) + +func file_cosmos_app_v1_config_proto_rawDescGZIP() []byte { + file_cosmos_app_v1_config_proto_rawDescOnce.Do(func() { + file_cosmos_app_v1_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_cosmos_app_v1_config_proto_rawDescData) + }) + return file_cosmos_app_v1_config_proto_rawDescData +} + +var file_cosmos_app_v1_config_proto_msgTypes = make([]protoimpl.MessageInfo, 3) +var file_cosmos_app_v1_config_proto_goTypes = []interface{}{ + (*Config)(nil), // 0: cosmos.app.v1.Config + (*ModuleConfig)(nil), // 1: cosmos.app.v1.ModuleConfig + (*GolangBinding)(nil), // 2: cosmos.app.v1.GolangBinding + (*anypb.Any)(nil), // 3: google.protobuf.Any +} +var file_cosmos_app_v1_config_proto_depIdxs = []int32{ + 1, // 0: cosmos.app.v1.Config.modules:type_name -> cosmos.app.v1.ModuleConfig + 2, // 1: cosmos.app.v1.Config.golang_bindings:type_name -> cosmos.app.v1.GolangBinding + 3, // 2: cosmos.app.v1.ModuleConfig.config:type_name -> google.protobuf.Any + 2, // 3: cosmos.app.v1.ModuleConfig.golang_bindings:type_name -> cosmos.app.v1.GolangBinding + 4, // [4:4] is the sub-list for method output_type + 4, // [4:4] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 4, // [4:4] is the sub-list for extension extendee + 0, // [0:4] is the sub-list for field type_name +} + +func init() { file_cosmos_app_v1_config_proto_init() } +func file_cosmos_app_v1_config_proto_init() { + if File_cosmos_app_v1_config_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_cosmos_app_v1_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Config); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cosmos_app_v1_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ModuleConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cosmos_app_v1_config_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GolangBinding); 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{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_cosmos_app_v1_config_proto_rawDesc, + NumEnums: 0, + NumMessages: 3, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_cosmos_app_v1_config_proto_goTypes, + DependencyIndexes: file_cosmos_app_v1_config_proto_depIdxs, + MessageInfos: file_cosmos_app_v1_config_proto_msgTypes, + }.Build() + File_cosmos_app_v1_config_proto = out.File + file_cosmos_app_v1_config_proto_rawDesc = nil + file_cosmos_app_v1_config_proto_goTypes = nil + file_cosmos_app_v1_config_proto_depIdxs = nil +} diff --git a/depinject/appconfig/config.go b/depinject/appconfig/config.go index 39a6c6c695fa..4a82760b0b87 100644 --- a/depinject/appconfig/config.go +++ b/depinject/appconfig/config.go @@ -14,6 +14,7 @@ import ( "sigs.k8s.io/yaml" appv1alpha1 "cosmossdk.io/api/cosmos/app/v1alpha1" + "cosmossdk.io/depinject" internal "cosmossdk.io/depinject/internal/appconfig" ) @@ -51,9 +52,21 @@ func WrapAny(config protoreflect.ProtoMessage) *anypb.Any { return cfg } -// Compose composes a v1alpha1 app config into a container option by resolving -// the required modules and composing their options. -func Compose(appConfig *appv1alpha1.Config) depinject.Config { +// Compose composes an app config into a container option by resolving +// the required modules and composing their options. appConfig should be an instance +// of cosmos.app.v1alpha1.Config. +func Compose(appConfig gogoproto.Message) depinject.Config { + bz, err := gogoproto.Marshal(appConfig) + if err != nil { + return depinject.Error(err) + } + + var appConfigConcrete appv1alpha1.Config + err = gogoproto.Unmarshal(bz, &appConfigConcrete) + if err != nil { + return depinject.Error(err) + } + opts := []depinject.Config{ depinject.Supply(appConfig), } @@ -63,7 +76,7 @@ func Compose(appConfig *appv1alpha1.Config) depinject.Config { return depinject.Error(err) } - for _, module := range appConfig.Modules { + for _, module := range appConfigConcrete.Modules { if module.Name == "" { return depinject.Error(fmt.Errorf("module is missing name")) } @@ -122,7 +135,7 @@ func Compose(appConfig *appv1alpha1.Config) depinject.Config { } } - for _, binding := range appConfig.GolangBindings { + for _, binding := range appConfigConcrete.GolangBindings { opts = append(opts, depinject.BindInterface(binding.InterfaceType, binding.Implementation)) } diff --git a/depinject/appconfig/config.pb.go b/depinject/appconfig/config.pb.go new file mode 100644 index 000000000000..0d8fa03c52ae --- /dev/null +++ b/depinject/appconfig/config.pb.go @@ -0,0 +1,942 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: cosmos/app/v1/config.proto + +package appconfig + +import ( + fmt "fmt" + proto "github.com/cosmos/gogoproto/proto" + any "github.com/cosmos/gogoproto/types/any" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// Config represents the configuration for a Cosmos SDK ABCI app. +// It is intended that all state machine logic including the version of +// baseapp and tx handlers (and possibly even Tendermint) that an app needs +// can be described in a config object. For compatibility, the framework should +// allow a mixture of declarative and imperative app wiring, however, apps +// that strive for the maximum ease of maintainability should be able to describe +// their state machine with a config object alone. +type Config struct { + // modules are the module configurations for the app. + Modules []*ModuleConfig `protobuf:"bytes,1,rep,name=modules,proto3" json:"modules,omitempty"` + // golang_bindings specifies explicit interface to implementation type bindings which + // depinject uses to resolve interface inputs to provider functions. The scope of this + // field's configuration is global (not module specific). + GolangBindings []*GolangBinding `protobuf:"bytes,2,rep,name=golang_bindings,json=golangBindings,proto3" json:"golang_bindings,omitempty"` +} + +func (m *Config) Reset() { *m = Config{} } +func (m *Config) String() string { return proto.CompactTextString(m) } +func (*Config) ProtoMessage() {} +func (*Config) Descriptor() ([]byte, []int) { + return fileDescriptor_9c5c7e08cb1a0bd9, []int{0} +} +func (m *Config) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Config) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Config.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 *Config) XXX_Merge(src proto.Message) { + xxx_messageInfo_Config.Merge(m, src) +} +func (m *Config) XXX_Size() int { + return m.Size() +} +func (m *Config) XXX_DiscardUnknown() { + xxx_messageInfo_Config.DiscardUnknown(m) +} + +var xxx_messageInfo_Config proto.InternalMessageInfo + +func (m *Config) GetModules() []*ModuleConfig { + if m != nil { + return m.Modules + } + return nil +} + +func (m *Config) GetGolangBindings() []*GolangBinding { + if m != nil { + return m.GolangBindings + } + return nil +} + +// ModuleConfig is a module configuration for an app. +type ModuleConfig struct { + // name is the unique name of the module within the app. It should be a name + // that persists between different versions of a module so that modules + // can be smoothly upgraded to new versions. + // + // For example, for the module cosmos.bank.module.v1.Module, we may chose + // to simply name the module "bank" in the app. When we upgrade to + // cosmos.bank.module.v2.Module, the app-specific name "bank" stays the same + // and the framework knows that the v2 module should receive all the same state + // that the v1 module had. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // config is the config object for the module. Module config messages should + // define a ModuleDescriptor using the cosmos.app.v1alpha1.is_module extension, + // although this requirement shouldn't be considered stable. + Config *any.Any `protobuf:"bytes,2,opt,name=config,proto3" json:"config,omitempty"` + // golang_bindings specifies explicit interface to implementation type bindings which + // depinject uses to resolve interface inputs to provider functions. The scope of this + // field's configuration is module specific. + GolangBindings []*GolangBinding `protobuf:"bytes,3,rep,name=golang_bindings,json=golangBindings,proto3" json:"golang_bindings,omitempty"` +} + +func (m *ModuleConfig) Reset() { *m = ModuleConfig{} } +func (m *ModuleConfig) String() string { return proto.CompactTextString(m) } +func (*ModuleConfig) ProtoMessage() {} +func (*ModuleConfig) Descriptor() ([]byte, []int) { + return fileDescriptor_9c5c7e08cb1a0bd9, []int{1} +} +func (m *ModuleConfig) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ModuleConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ModuleConfig.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 *ModuleConfig) XXX_Merge(src proto.Message) { + xxx_messageInfo_ModuleConfig.Merge(m, src) +} +func (m *ModuleConfig) XXX_Size() int { + return m.Size() +} +func (m *ModuleConfig) XXX_DiscardUnknown() { + xxx_messageInfo_ModuleConfig.DiscardUnknown(m) +} + +var xxx_messageInfo_ModuleConfig proto.InternalMessageInfo + +func (m *ModuleConfig) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *ModuleConfig) GetConfig() *any.Any { + if m != nil { + return m.Config + } + return nil +} + +func (m *ModuleConfig) GetGolangBindings() []*GolangBinding { + if m != nil { + return m.GolangBindings + } + return nil +} + +// GolangBinding is an explicit interface type to implementing type binding for dependency injection. +type GolangBinding struct { + // interface_type is the interface type which will be bound to a specific implementation type + InterfaceType string `protobuf:"bytes,1,opt,name=interface_type,json=interfaceType,proto3" json:"interface_type,omitempty"` + // implementation is the implementing type which will be supplied when an input of type interface is requested + Implementation string `protobuf:"bytes,2,opt,name=implementation,proto3" json:"implementation,omitempty"` +} + +func (m *GolangBinding) Reset() { *m = GolangBinding{} } +func (m *GolangBinding) String() string { return proto.CompactTextString(m) } +func (*GolangBinding) ProtoMessage() {} +func (*GolangBinding) Descriptor() ([]byte, []int) { + return fileDescriptor_9c5c7e08cb1a0bd9, []int{2} +} +func (m *GolangBinding) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GolangBinding) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GolangBinding.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 *GolangBinding) XXX_Merge(src proto.Message) { + xxx_messageInfo_GolangBinding.Merge(m, src) +} +func (m *GolangBinding) XXX_Size() int { + return m.Size() +} +func (m *GolangBinding) XXX_DiscardUnknown() { + xxx_messageInfo_GolangBinding.DiscardUnknown(m) +} + +var xxx_messageInfo_GolangBinding proto.InternalMessageInfo + +func (m *GolangBinding) GetInterfaceType() string { + if m != nil { + return m.InterfaceType + } + return "" +} + +func (m *GolangBinding) GetImplementation() string { + if m != nil { + return m.Implementation + } + return "" +} + +func init() { + proto.RegisterType((*Config)(nil), "cosmos.app.v1.Config") + proto.RegisterType((*ModuleConfig)(nil), "cosmos.app.v1.ModuleConfig") + proto.RegisterType((*GolangBinding)(nil), "cosmos.app.v1.GolangBinding") +} + +func init() { proto.RegisterFile("cosmos/app/v1/config.proto", fileDescriptor_9c5c7e08cb1a0bd9) } + +var fileDescriptor_9c5c7e08cb1a0bd9 = []byte{ + // 325 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x91, 0x31, 0x4b, 0x03, 0x31, + 0x1c, 0xc5, 0x9b, 0x56, 0x2a, 0x4d, 0x6d, 0x85, 0xe0, 0x70, 0x56, 0x39, 0x8e, 0x82, 0xd2, 0x41, + 0x12, 0x5a, 0x71, 0x71, 0xb3, 0x22, 0x4e, 0x2e, 0x87, 0x93, 0x83, 0x25, 0xbd, 0x4b, 0x43, 0xf4, + 0x2e, 0x09, 0x4d, 0x5a, 0xb8, 0x2f, 0xe0, 0xec, 0xe6, 0x57, 0x72, 0xec, 0xe8, 0x28, 0xed, 0x17, + 0x11, 0x13, 0x4f, 0xda, 0xe2, 0xe4, 0x96, 0xfc, 0xdf, 0xef, 0x25, 0xef, 0xf1, 0x87, 0x9d, 0x44, + 0x99, 0x5c, 0x19, 0x42, 0xb5, 0x26, 0xf3, 0x3e, 0x49, 0x94, 0x9c, 0x08, 0x8e, 0xf5, 0x54, 0x59, + 0x85, 0x5a, 0x5e, 0xc3, 0x54, 0x6b, 0x3c, 0xef, 0x77, 0x0e, 0xb9, 0x52, 0x3c, 0x63, 0xc4, 0x89, + 0xe3, 0xd9, 0x84, 0x50, 0x59, 0x78, 0xb2, 0xfb, 0x02, 0x60, 0xfd, 0xda, 0x59, 0xd1, 0x05, 0xdc, + 0xcd, 0x55, 0x3a, 0xcb, 0x98, 0x09, 0x40, 0x54, 0xeb, 0x35, 0x07, 0x47, 0x78, 0xe3, 0x19, 0x7c, + 0xe7, 0x54, 0x4f, 0xc7, 0x25, 0x8b, 0x6e, 0xe0, 0x3e, 0x57, 0x19, 0x95, 0x7c, 0x34, 0x16, 0x32, + 0x15, 0x92, 0x9b, 0xa0, 0xea, 0xec, 0xc7, 0x5b, 0xf6, 0x5b, 0x47, 0x0d, 0x3d, 0x14, 0xb7, 0xf9, + 0xfa, 0xd5, 0x74, 0xdf, 0x00, 0xdc, 0x5b, 0xff, 0x00, 0x21, 0xb8, 0x23, 0x69, 0xce, 0x02, 0x10, + 0x81, 0x5e, 0x23, 0x76, 0x67, 0x74, 0x06, 0xeb, 0xbe, 0x67, 0x50, 0x8d, 0x40, 0xaf, 0x39, 0x38, + 0xc0, 0xbe, 0x19, 0x2e, 0x9b, 0xe1, 0x2b, 0x59, 0xc4, 0x3f, 0xcc, 0x5f, 0xc9, 0x6a, 0xff, 0x48, + 0xf6, 0x08, 0x5b, 0x1b, 0x00, 0x3a, 0x81, 0x6d, 0x21, 0x2d, 0x9b, 0x4e, 0x68, 0xc2, 0x46, 0xb6, + 0xd0, 0x65, 0xc6, 0xd6, 0xef, 0xf4, 0xbe, 0xd0, 0x0c, 0x9d, 0xc2, 0xb6, 0xc8, 0x75, 0xc6, 0x72, + 0x26, 0x2d, 0xb5, 0x42, 0x49, 0x17, 0xba, 0x11, 0x6f, 0x4d, 0x87, 0x97, 0xef, 0xcb, 0x10, 0x2c, + 0x96, 0x21, 0xf8, 0x5c, 0x86, 0xe0, 0x75, 0x15, 0x56, 0x16, 0xab, 0xb0, 0xf2, 0xb1, 0x0a, 0x2b, + 0x0f, 0x91, 0x8f, 0x69, 0xd2, 0x67, 0x2c, 0x14, 0x49, 0x99, 0x16, 0xf2, 0x89, 0x25, 0xf6, 0x7b, + 0xe5, 0xbe, 0xe2, 0xb8, 0xee, 0x8a, 0x9f, 0x7f, 0x05, 0x00, 0x00, 0xff, 0xff, 0x8e, 0x47, 0xed, + 0x78, 0x0d, 0x02, 0x00, 0x00, +} + +func (m *Config) 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 *Config) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Config) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.GolangBindings) > 0 { + for iNdEx := len(m.GolangBindings) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.GolangBindings[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintConfig(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if len(m.Modules) > 0 { + for iNdEx := len(m.Modules) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Modules[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintConfig(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *ModuleConfig) 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 *ModuleConfig) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ModuleConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.GolangBindings) > 0 { + for iNdEx := len(m.GolangBindings) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.GolangBindings[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintConfig(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + if m.Config != nil { + { + size, err := m.Config.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintConfig(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.Name) > 0 { + i -= len(m.Name) + copy(dAtA[i:], m.Name) + i = encodeVarintConfig(dAtA, i, uint64(len(m.Name))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *GolangBinding) 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 *GolangBinding) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GolangBinding) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Implementation) > 0 { + i -= len(m.Implementation) + copy(dAtA[i:], m.Implementation) + i = encodeVarintConfig(dAtA, i, uint64(len(m.Implementation))) + i-- + dAtA[i] = 0x12 + } + if len(m.InterfaceType) > 0 { + i -= len(m.InterfaceType) + copy(dAtA[i:], m.InterfaceType) + i = encodeVarintConfig(dAtA, i, uint64(len(m.InterfaceType))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func encodeVarintConfig(dAtA []byte, offset int, v uint64) int { + offset -= sovConfig(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *Config) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Modules) > 0 { + for _, e := range m.Modules { + l = e.Size() + n += 1 + l + sovConfig(uint64(l)) + } + } + if len(m.GolangBindings) > 0 { + for _, e := range m.GolangBindings { + l = e.Size() + n += 1 + l + sovConfig(uint64(l)) + } + } + return n +} + +func (m *ModuleConfig) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Name) + if l > 0 { + n += 1 + l + sovConfig(uint64(l)) + } + if m.Config != nil { + l = m.Config.Size() + n += 1 + l + sovConfig(uint64(l)) + } + if len(m.GolangBindings) > 0 { + for _, e := range m.GolangBindings { + l = e.Size() + n += 1 + l + sovConfig(uint64(l)) + } + } + return n +} + +func (m *GolangBinding) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.InterfaceType) + if l > 0 { + n += 1 + l + sovConfig(uint64(l)) + } + l = len(m.Implementation) + if l > 0 { + n += 1 + l + sovConfig(uint64(l)) + } + return n +} + +func sovConfig(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozConfig(x uint64) (n int) { + return sovConfig(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *Config) 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 ErrIntOverflowConfig + } + 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: Config: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Config: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Modules", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfig + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthConfig + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthConfig + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Modules = append(m.Modules, &ModuleConfig{}) + if err := m.Modules[len(m.Modules)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field GolangBindings", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfig + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthConfig + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthConfig + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.GolangBindings = append(m.GolangBindings, &GolangBinding{}) + if err := m.GolangBindings[len(m.GolangBindings)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipConfig(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthConfig + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ModuleConfig) 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 ErrIntOverflowConfig + } + 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: ModuleConfig: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ModuleConfig: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfig + } + 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 ErrInvalidLengthConfig + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthConfig + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Config", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfig + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthConfig + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthConfig + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Config == nil { + m.Config = &any.Any{} + } + if err := m.Config.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field GolangBindings", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfig + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthConfig + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthConfig + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.GolangBindings = append(m.GolangBindings, &GolangBinding{}) + if err := m.GolangBindings[len(m.GolangBindings)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipConfig(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthConfig + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GolangBinding) 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 ErrIntOverflowConfig + } + 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: GolangBinding: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GolangBinding: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field InterfaceType", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfig + } + 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 ErrInvalidLengthConfig + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthConfig + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.InterfaceType = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Implementation", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowConfig + } + 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 ErrInvalidLengthConfig + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthConfig + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Implementation = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipConfig(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthConfig + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipConfig(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowConfig + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowConfig + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowConfig + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthConfig + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupConfig + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthConfig + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthConfig = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowConfig = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupConfig = fmt.Errorf("proto: unexpected end of group") +) diff --git a/proto/cosmos/app/v1/config.proto b/proto/cosmos/app/v1/config.proto new file mode 100644 index 000000000000..6003d005eec1 --- /dev/null +++ b/proto/cosmos/app/v1/config.proto @@ -0,0 +1,57 @@ +syntax = "proto3"; + +package cosmos.app.v1; + +import "google/protobuf/any.proto"; + +option go_package = "cosmossdk.io/depinject/appconfig"; + +// Config represents the configuration for a Cosmos SDK ABCI app. +// It is intended that all state machine logic including the version of +// baseapp and tx handlers (and possibly even Tendermint) that an app needs +// can be described in a config object. For compatibility, the framework should +// allow a mixture of declarative and imperative app wiring, however, apps +// that strive for the maximum ease of maintainability should be able to describe +// their state machine with a config object alone. +message Config { + // modules are the module configurations for the app. + repeated ModuleConfig modules = 1; + + // golang_bindings specifies explicit interface to implementation type bindings which + // depinject uses to resolve interface inputs to provider functions. The scope of this + // field's configuration is global (not module specific). + repeated GolangBinding golang_bindings = 2; +} + +// ModuleConfig is a module configuration for an app. +message ModuleConfig { + // name is the unique name of the module within the app. It should be a name + // that persists between different versions of a module so that modules + // can be smoothly upgraded to new versions. + // + // For example, for the module cosmos.bank.module.v1.Module, we may chose + // to simply name the module "bank" in the app. When we upgrade to + // cosmos.bank.module.v2.Module, the app-specific name "bank" stays the same + // and the framework knows that the v2 module should receive all the same state + // that the v1 module had. + string name = 1; + + // config is the config object for the module. Module config messages should + // define a ModuleDescriptor using the cosmos.app.v1alpha1.is_module extension, + // although this requirement shouldn't be considered stable. + google.protobuf.Any config = 2; + + // golang_bindings specifies explicit interface to implementation type bindings which + // depinject uses to resolve interface inputs to provider functions. The scope of this + // field's configuration is module specific. + repeated GolangBinding golang_bindings = 3; +} + +// GolangBinding is an explicit interface type to implementing type binding for dependency injection. +message GolangBinding { + // interface_type is the interface type which will be bound to a specific implementation type + string interface_type = 1; + + // implementation is the implementing type which will be supplied when an input of type interface is requested + string implementation = 2; +} From 90333b542eef9604ab37cf74989973a4369326c1 Mon Sep 17 00:00:00 2001 From: Aaron Craelius Date: Wed, 10 Jul 2024 17:07:50 +0200 Subject: [PATCH 02/12] fix tests --- depinject/appconfig/config.go | 37 ++++++++++++++++++++++++----------- depinject/go.mod | 1 + depinject/go.sum | 12 ++++++++++++ 3 files changed, 39 insertions(+), 11 deletions(-) diff --git a/depinject/appconfig/config.go b/depinject/appconfig/config.go index 4a82760b0b87..b76e85a3962e 100644 --- a/depinject/appconfig/config.go +++ b/depinject/appconfig/config.go @@ -10,6 +10,7 @@ import ( "google.golang.org/protobuf/encoding/protojson" protov2 "google.golang.org/protobuf/proto" "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/types/dynamicpb" "google.golang.org/protobuf/types/known/anypb" "sigs.k8s.io/yaml" @@ -21,8 +22,17 @@ import ( // LoadJSON loads an app config in JSON format. func LoadJSON(bz []byte) depinject.Config { - config := &appv1alpha1.Config{} - err := protojson.UnmarshalOptions{ + // in order to avoid a direct dependency on api types, but in order to also be able to support + // either gogo or google.golang.org/protobuf types, we use protojson and dynamicpb to unmarshal + // from JSON + resolver := gogoproto.HybridResolver + desc, err := resolver.FindDescriptorByName(protoreflect.FullName(gogoproto.MessageName(&Config{}))) + if err != nil { + return depinject.Error(err) + } + + config := dynamicpb.NewMessage(desc.(protoreflect.MessageDescriptor)) + err = protojson.UnmarshalOptions{ Resolver: dynamicTypeResolver{resolver: gogoproto.HybridResolver}, }.Unmarshal(bz, config) if err != nil { @@ -54,17 +64,22 @@ func WrapAny(config protoreflect.ProtoMessage) *anypb.Any { // Compose composes an app config into a container option by resolving // the required modules and composing their options. appConfig should be an instance -// of cosmos.app.v1alpha1.Config. +// of cosmos.app.v1.Config or cosmos.app.v1alpha1.Config (they should be the same +// and it doesn't matter whether you use gogo proto or google.golang.org/protobuf +// types). func Compose(appConfig gogoproto.Message) depinject.Config { - bz, err := gogoproto.Marshal(appConfig) - if err != nil { - return depinject.Error(err) - } + appConfigConcrete, ok := appConfig.(*Config) + if !ok { + appConfigConcrete = &Config{} + bz, err := gogoproto.Marshal(appConfig) + if err != nil { + return depinject.Error(err) + } - var appConfigConcrete appv1alpha1.Config - err = gogoproto.Unmarshal(bz, &appConfigConcrete) - if err != nil { - return depinject.Error(err) + err = gogoproto.Unmarshal(bz, appConfigConcrete) + if err != nil { + return depinject.Error(err) + } } opts := []depinject.Config{ diff --git a/depinject/go.mod b/depinject/go.mod index 83f43fb81cf3..ddcb8c004388 100644 --- a/depinject/go.mod +++ b/depinject/go.mod @@ -19,6 +19,7 @@ require ( github.com/kr/pretty v0.3.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rogpeppe/go-internal v1.11.0 // indirect + github.com/tendermint/go-amino v0.16.0 // indirect golang.org/x/net v0.27.0 // indirect golang.org/x/sys v0.22.0 // indirect golang.org/x/text v0.16.0 // indirect diff --git a/depinject/go.sum b/depinject/go.sum index d45197eef76f..4c51608691ae 100644 --- a/depinject/go.sum +++ b/depinject/go.sum @@ -5,12 +5,16 @@ github.com/cosmos/cosmos-proto v1.0.0-beta.5/go.mod h1:hQGLpiIUloJBMdQMMWb/4wRAp github.com/cosmos/gogoproto v1.5.0 h1:SDVwzEqZDDBoslaeZg+dGE55hdzHfgUA40pEanMh52o= github.com/cosmos/gogoproto v1.5.0/go.mod h1:iUM31aofn3ymidYG6bUR5ZFrk+Om8p5s754eMUcyp8I= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= +github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= @@ -24,16 +28,24 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/tendermint/go-amino v0.16.0 h1:GyhmgQKvqF82e2oZeuMSp9JTN0N09emoSZlb2lyGa2E= +github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoMC9Sphe2ZwGME= golang.org/x/exp v0.0.0-20231006140011-7918f672742d h1:jtJma62tbqLibJ5sFQz8bKtEM8rJBtfilJ2qTU199MI= golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys= golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= +google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto/googleapis/rpc v0.0.0-20240709173604-40e1e62336c5 h1:SbSDUWW1PAO24TNpLdeheoYPd7kllICcLU52x6eD4kQ= google.golang.org/genproto/googleapis/rpc v0.0.0-20240709173604-40e1e62336c5/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= google.golang.org/grpc v1.64.1 h1:LKtvyfbX3UGVPFcGqJ9ItpVWW6oN/2XqTxfAnwRRXiA= From c875f3b74cecfb95f79312b9bf6c017336ff21ad Mon Sep 17 00:00:00 2001 From: Aaron Craelius Date: Wed, 10 Jul 2024 18:04:27 +0200 Subject: [PATCH 03/12] proto-gen --- api/cosmos/staking/v1beta1/staking.pulsar.go | 275 +-- depinject/appconfig/config.go | 12 +- .../appconfig/{ => v1alpha1}/config.pb.go | 76 +- depinject/appconfig/v1alpha1/module.pb.go | 893 +++++++++ depinject/appconfig/v1alpha1/query.pb.go | 537 ++++++ depinject/internal/appconfig/buf.gen.yaml | 2 - .../internal/appconfig/testpb/test.proto | 2 + depinject/internal/appconfiggogo/buf.gen.yaml | 6 - .../internal/appconfiggogo/testpb/test.proto | 2 + proto/cosmos/app/v1/config.proto | 57 - proto/cosmos/app/v1alpha1/config.proto | 2 +- proto/cosmos/app/v1alpha1/module.proto | 2 +- proto/cosmos/app/v1alpha1/query.proto | 2 +- .../cosmos/staking/v1beta1/staking.proto | 4 +- x/staking/types/staking.pb.go | 1705 +++++++++-------- 15 files changed, 2476 insertions(+), 1101 deletions(-) rename depinject/appconfig/{ => v1alpha1}/config.pb.go (88%) create mode 100644 depinject/appconfig/v1alpha1/module.pb.go create mode 100644 depinject/appconfig/v1alpha1/query.pb.go delete mode 100644 proto/cosmos/app/v1/config.proto diff --git a/api/cosmos/staking/v1beta1/staking.pulsar.go b/api/cosmos/staking/v1beta1/staking.pulsar.go index 55a7bc8165fa..3b0e5cb37861 100644 --- a/api/cosmos/staking/v1beta1/staking.pulsar.go +++ b/api/cosmos/staking/v1beta1/staking.pulsar.go @@ -15008,6 +15008,8 @@ type Params struct { // max_entries is the max entries for either unbonding delegation or redelegation (per pair/trio). MaxEntries uint32 `protobuf:"varint,3,opt,name=max_entries,json=maxEntries,proto3" json:"max_entries,omitempty"` // historical_entries is the number of historical entries to persist. + // + // Deprecated: Do not use. HistoricalEntries uint32 `protobuf:"varint,4,opt,name=historical_entries,json=historicalEntries,proto3" json:"historical_entries,omitempty"` // bond_denom defines the bondable coin denomination. BondDenom string `protobuf:"bytes,5,opt,name=bond_denom,json=bondDenom,proto3" json:"bond_denom,omitempty"` @@ -15059,6 +15061,7 @@ func (x *Params) GetMaxEntries() uint32 { return 0 } +// Deprecated: Do not use. func (x *Params) GetHistoricalEntries() uint32 { if x != nil { return x.HistoricalEntries @@ -15698,7 +15701,7 @@ var file_cosmos_staking_v1beta1_staking_proto_rawDesc = []byte{ 0x31, 0x2e, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x3a, 0x08, 0x88, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, - 0x00, 0x22, 0xe7, 0x03, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x4f, 0x0a, 0x0e, + 0x00, 0x22, 0xeb, 0x03, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x4f, 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, @@ -15708,143 +15711,143 @@ var file_cosmos_staking_v1beta1_staking_proto_rawDesc = []byte{ 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, + 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x31, 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, 0x84, 0x01, 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, 0x54, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x4c, 0x65, 0x67, - 0x61, 0x63, 0x79, 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, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, - 0x65, 0x63, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x11, 0x6d, 0x69, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, - 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x12, 0x49, 0x0a, 0x10, 0x6b, 0x65, - 0x79, 0x5f, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x65, 0x65, 0x18, 0x07, - 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, 0x0e, 0x6b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x46, 0x65, 0x65, 0x3a, 0x24, 0xe8, 0xa0, 0x1f, 0x01, 0x8a, 0xe7, 0xb0, 0x2a, 0x1b, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x78, 0x2f, 0x73, 0x74, 0x61, - 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0xa9, 0x01, 0x0a, 0x12, - 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x01, 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, - 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, - 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x3e, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 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, 0x09, 0xc8, - 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, - 0x65, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0xcd, 0x01, 0x0a, 0x19, 0x52, 0x65, 0x64, 0x65, - 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x63, 0x0a, 0x12, 0x72, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 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, 0x09, 0xc8, 0xde, - 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x11, 0x72, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x45, 0x0a, 0x07, 0x62, 0x61, - 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2b, 0xc8, 0xde, 0x1f, - 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, - 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, - 0x65, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x01, 0x22, 0xc9, 0x01, 0x0a, 0x14, 0x52, 0x65, 0x64, 0x65, - 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x53, 0x0a, 0x0c, 0x72, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 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, 0x42, 0x09, 0xc8, 0xde, - 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0c, 0x72, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x56, 0x0a, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, - 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, + 0x0d, 0x42, 0x02, 0x18, 0x01, 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, 0x84, 0x01, 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, 0x54, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x1b, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, + 0x2e, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 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, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x11, 0x6d, 0x69, 0x6e, + 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x12, 0x49, + 0x0a, 0x10, 0x6b, 0x65, 0x79, 0x5f, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, + 0x65, 0x65, 0x18, 0x07, 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, 0x0e, 0x6b, 0x65, 0x79, 0x52, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x65, 0x3a, 0x24, 0xe8, 0xa0, 0x1f, 0x01, 0x8a, + 0xe7, 0xb0, 0x2a, 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x78, + 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, + 0xa9, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 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, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x09, + 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x67, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, + 0x18, 0x02, 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, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x07, 0x62, 0x61, + 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0xcd, 0x01, 0x0a, 0x19, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, - 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x3a, 0x04, 0xe8, - 0xa0, 0x1f, 0x00, 0x22, 0xeb, 0x01, 0x0a, 0x04, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x71, 0x0a, 0x11, - 0x6e, 0x6f, 0x74, 0x5f, 0x62, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x45, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, - 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, - 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xea, 0xde, 0x1f, 0x11, 0x6e, 0x6f, 0x74, 0x5f, 0x62, 0x6f, - 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0f, - 0x6e, 0x6f, 0x74, 0x42, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, - 0x66, 0x0a, 0x0d, 0x62, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x41, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, - 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xea, 0xde, 0x1f, 0x0d, 0x62, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x5f, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x2e, 0x49, 0x6e, 0x74, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0c, 0x62, 0x6f, 0x6e, 0x64, 0x65, - 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x3a, 0x08, 0xe8, 0xa0, 0x1f, 0x01, 0xf0, 0xa0, 0x1f, - 0x01, 0x22, 0x5e, 0x0a, 0x10, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x73, 0x12, 0x46, 0x0a, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6f, 0x6d, 0x65, 0x74, 0x62, 0x66, - 0x74, 0x2e, 0x61, 0x62, 0x63, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x6f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, - 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x3a, 0x02, 0x18, - 0x01, 0x22, 0xd0, 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, - 0x29, 0x0a, 0x10, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 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, 0x16, 0x0a, 0x06, 0x68, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x12, 0x36, 0x0a, 0x03, 0x66, 0x65, 0x65, 0x18, 0x05, 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, 0x09, 0xc8, 0xde, 0x1f, 0x00, - 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x03, 0x66, 0x65, 0x65, 0x3a, 0x08, 0x88, 0xa0, 0x1f, 0x00, - 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0x53, 0x0a, 0x19, 0x56, 0x61, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x73, - 0x4f, 0x66, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x4b, 0x65, 0x79, - 0x73, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0c, 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, 0x2a, 0xb6, 0x01, 0x0a, 0x0a, 0x42, 0x6f, - 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2c, 0x0a, 0x17, 0x42, 0x4f, 0x4e, 0x44, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x10, 0x00, 0x1a, 0x0f, 0x8a, 0x9d, 0x20, 0x0b, 0x55, 0x6e, 0x73, 0x70, 0x65, - 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x26, 0x0a, 0x14, 0x42, 0x4f, 0x4e, 0x44, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x42, 0x4f, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x01, - 0x1a, 0x0c, 0x8a, 0x9d, 0x20, 0x08, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x28, - 0x0a, 0x15, 0x42, 0x4f, 0x4e, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, - 0x42, 0x4f, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x1a, 0x0d, 0x8a, 0x9d, 0x20, 0x09, 0x55, - 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x22, 0x0a, 0x12, 0x42, 0x4f, 0x4e, 0x44, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x42, 0x4f, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x03, - 0x1a, 0x0a, 0x8a, 0x9d, 0x20, 0x06, 0x42, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x1a, 0x04, 0x88, 0xa3, - 0x1e, 0x00, 0x2a, 0x5d, 0x0a, 0x0a, 0x49, 0x6e, 0x66, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x1a, 0x0a, 0x16, 0x49, 0x4e, 0x46, 0x52, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, - 0x49, 0x4e, 0x46, 0x52, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x4f, 0x55, 0x42, 0x4c, - 0x45, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x49, 0x4e, 0x46, 0x52, - 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x4f, 0x57, 0x4e, 0x54, 0x49, 0x4d, 0x45, 0x10, - 0x02, 0x42, 0xdc, 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, 0x0c, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 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, + 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x63, 0x0a, 0x12, 0x72, 0x65, 0x64, + 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, + 0x01, 0x20, 0x01, 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, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x11, 0x72, 0x65, 0x64, + 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x45, + 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x2b, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, + 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xd2, 0xb4, + 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x07, 0x62, 0x61, + 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x01, 0x22, 0xc9, 0x01, 0x0a, 0x14, + 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x0c, 0x72, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 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, + 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0c, 0x72, 0x65, 0x64, + 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x56, 0x0a, 0x07, 0x65, 0x6e, 0x74, + 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 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, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x09, 0xc8, + 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, + 0x73, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0xeb, 0x01, 0x0a, 0x04, 0x50, 0x6f, 0x6f, 0x6c, + 0x12, 0x71, 0x0a, 0x11, 0x6e, 0x6f, 0x74, 0x5f, 0x62, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x45, 0xc8, 0xde, 0x1f, + 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, + 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xea, 0xde, 0x1f, 0x11, 0x6e, 0x6f, + 0x74, 0x5f, 0x62, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0xd2, + 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0xa8, 0xe7, 0xb0, + 0x2a, 0x01, 0x52, 0x0f, 0x6e, 0x6f, 0x74, 0x42, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x73, 0x12, 0x66, 0x0a, 0x0d, 0x62, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x41, 0xc8, 0xde, 0x1f, 0x00, + 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, + 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xea, 0xde, 0x1f, 0x0d, 0x62, 0x6f, 0x6e, + 0x64, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0c, 0x62, + 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x3a, 0x08, 0xe8, 0xa0, 0x1f, + 0x01, 0xf0, 0xa0, 0x1f, 0x01, 0x22, 0x5e, 0x0a, 0x10, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x6f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x12, 0x46, 0x0a, 0x07, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6f, 0x6d, + 0x65, 0x74, 0x62, 0x66, 0x74, 0x2e, 0x61, 0x62, 0x63, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x09, 0xc8, + 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x73, 0x3a, 0x02, 0x18, 0x01, 0x22, 0xd0, 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, 0x29, 0x0a, 0x10, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5f, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 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, 0x16, + 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, + 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x36, 0x0a, 0x03, 0x66, 0x65, 0x65, 0x18, 0x05, 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, 0x09, + 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x03, 0x66, 0x65, 0x65, 0x3a, 0x08, + 0x88, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0x53, 0x0a, 0x19, 0x56, 0x61, 0x6c, 0x41, + 0x64, 0x64, 0x72, 0x73, 0x4f, 0x66, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x6e, + 0x73, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 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, 0x2a, 0xb6, 0x01, + 0x0a, 0x0a, 0x42, 0x6f, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2c, 0x0a, 0x17, + 0x42, 0x4f, 0x4e, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x1a, 0x0f, 0x8a, 0x9d, 0x20, 0x0b, 0x55, + 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x26, 0x0a, 0x14, 0x42, 0x4f, + 0x4e, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x42, 0x4f, 0x4e, 0x44, + 0x45, 0x44, 0x10, 0x01, 0x1a, 0x0c, 0x8a, 0x9d, 0x20, 0x08, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, + 0x65, 0x64, 0x12, 0x28, 0x0a, 0x15, 0x42, 0x4f, 0x4e, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, + 0x53, 0x5f, 0x55, 0x4e, 0x42, 0x4f, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x1a, 0x0d, 0x8a, + 0x9d, 0x20, 0x09, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x22, 0x0a, 0x12, + 0x42, 0x4f, 0x4e, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x42, 0x4f, 0x4e, 0x44, + 0x45, 0x44, 0x10, 0x03, 0x1a, 0x0a, 0x8a, 0x9d, 0x20, 0x06, 0x42, 0x6f, 0x6e, 0x64, 0x65, 0x64, + 0x1a, 0x04, 0x88, 0xa3, 0x1e, 0x00, 0x2a, 0x5d, 0x0a, 0x0a, 0x49, 0x6e, 0x66, 0x72, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x16, 0x49, 0x4e, 0x46, 0x52, 0x41, 0x43, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x1a, 0x0a, 0x16, 0x49, 0x4e, 0x46, 0x52, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, + 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, + 0x49, 0x4e, 0x46, 0x52, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x4f, 0x57, 0x4e, 0x54, + 0x49, 0x4d, 0x45, 0x10, 0x02, 0x42, 0xdc, 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, 0x0c, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 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 ( diff --git a/depinject/appconfig/config.go b/depinject/appconfig/config.go index b76e85a3962e..41250b34bf74 100644 --- a/depinject/appconfig/config.go +++ b/depinject/appconfig/config.go @@ -17,6 +17,7 @@ import ( appv1alpha1 "cosmossdk.io/api/cosmos/app/v1alpha1" "cosmossdk.io/depinject" + "cosmossdk.io/depinject/appconfig/v1alpha1" internal "cosmossdk.io/depinject/internal/appconfig" ) @@ -26,7 +27,7 @@ func LoadJSON(bz []byte) depinject.Config { // either gogo or google.golang.org/protobuf types, we use protojson and dynamicpb to unmarshal // from JSON resolver := gogoproto.HybridResolver - desc, err := resolver.FindDescriptorByName(protoreflect.FullName(gogoproto.MessageName(&Config{}))) + desc, err := resolver.FindDescriptorByName(protoreflect.FullName(gogoproto.MessageName(&v1alpha1.Config{}))) if err != nil { return depinject.Error(err) } @@ -64,13 +65,12 @@ func WrapAny(config protoreflect.ProtoMessage) *anypb.Any { // Compose composes an app config into a container option by resolving // the required modules and composing their options. appConfig should be an instance -// of cosmos.app.v1.Config or cosmos.app.v1alpha1.Config (they should be the same -// and it doesn't matter whether you use gogo proto or google.golang.org/protobuf -// types). +// of cosmos.app.v1alpha1.Config (it doesn't matter whether you use gogo proto or +// google.golang.org/protobuf types). func Compose(appConfig gogoproto.Message) depinject.Config { - appConfigConcrete, ok := appConfig.(*Config) + appConfigConcrete, ok := appConfig.(*v1alpha1.Config) if !ok { - appConfigConcrete = &Config{} + appConfigConcrete = &v1alpha1.Config{} bz, err := gogoproto.Marshal(appConfig) if err != nil { return depinject.Error(err) diff --git a/depinject/appconfig/config.pb.go b/depinject/appconfig/v1alpha1/config.pb.go similarity index 88% rename from depinject/appconfig/config.pb.go rename to depinject/appconfig/v1alpha1/config.pb.go index 0d8fa03c52ae..838f6cf8fea3 100644 --- a/depinject/appconfig/config.pb.go +++ b/depinject/appconfig/v1alpha1/config.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: cosmos/app/v1/config.proto +// source: cosmos/app/v1alpha1/config.proto -package appconfig +package v1alpha1 import ( fmt "fmt" @@ -43,7 +43,7 @@ func (m *Config) Reset() { *m = Config{} } func (m *Config) String() string { return proto.CompactTextString(m) } func (*Config) ProtoMessage() {} func (*Config) Descriptor() ([]byte, []int) { - return fileDescriptor_9c5c7e08cb1a0bd9, []int{0} + return fileDescriptor_5af1d229673256fa, []int{0} } func (m *Config) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -96,11 +96,11 @@ type ModuleConfig struct { // to simply name the module "bank" in the app. When we upgrade to // cosmos.bank.module.v2.Module, the app-specific name "bank" stays the same // and the framework knows that the v2 module should receive all the same state - // that the v1 module had. + // that the v1 module had. Note: modules should provide info on which versions + // they can migrate from in the ModuleDescriptor.can_migration_from field. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // config is the config object for the module. Module config messages should - // define a ModuleDescriptor using the cosmos.app.v1alpha1.is_module extension, - // although this requirement shouldn't be considered stable. + // define a ModuleDescriptor using the cosmos.app.v1alpha1.is_module extension. Config *any.Any `protobuf:"bytes,2,opt,name=config,proto3" json:"config,omitempty"` // golang_bindings specifies explicit interface to implementation type bindings which // depinject uses to resolve interface inputs to provider functions. The scope of this @@ -112,7 +112,7 @@ func (m *ModuleConfig) Reset() { *m = ModuleConfig{} } func (m *ModuleConfig) String() string { return proto.CompactTextString(m) } func (*ModuleConfig) ProtoMessage() {} func (*ModuleConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_9c5c7e08cb1a0bd9, []int{1} + return fileDescriptor_5af1d229673256fa, []int{1} } func (m *ModuleConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -174,7 +174,7 @@ func (m *GolangBinding) Reset() { *m = GolangBinding{} } func (m *GolangBinding) String() string { return proto.CompactTextString(m) } func (*GolangBinding) ProtoMessage() {} func (*GolangBinding) Descriptor() ([]byte, []int) { - return fileDescriptor_9c5c7e08cb1a0bd9, []int{2} + return fileDescriptor_5af1d229673256fa, []int{2} } func (m *GolangBinding) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -218,36 +218,36 @@ func (m *GolangBinding) GetImplementation() string { } func init() { - proto.RegisterType((*Config)(nil), "cosmos.app.v1.Config") - proto.RegisterType((*ModuleConfig)(nil), "cosmos.app.v1.ModuleConfig") - proto.RegisterType((*GolangBinding)(nil), "cosmos.app.v1.GolangBinding") -} - -func init() { proto.RegisterFile("cosmos/app/v1/config.proto", fileDescriptor_9c5c7e08cb1a0bd9) } - -var fileDescriptor_9c5c7e08cb1a0bd9 = []byte{ - // 325 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x91, 0x31, 0x4b, 0x03, 0x31, - 0x1c, 0xc5, 0x9b, 0x56, 0x2a, 0x4d, 0x6d, 0x85, 0xe0, 0x70, 0x56, 0x39, 0x8e, 0x82, 0xd2, 0x41, - 0x12, 0x5a, 0x71, 0x71, 0xb3, 0x22, 0x4e, 0x2e, 0x87, 0x93, 0x83, 0x25, 0xbd, 0x4b, 0x43, 0xf4, - 0x2e, 0x09, 0x4d, 0x5a, 0xb8, 0x2f, 0xe0, 0xec, 0xe6, 0x57, 0x72, 0xec, 0xe8, 0x28, 0xed, 0x17, - 0x11, 0x13, 0x4f, 0xda, 0xe2, 0xe4, 0x96, 0xfc, 0xdf, 0xef, 0x25, 0xef, 0xf1, 0x87, 0x9d, 0x44, - 0x99, 0x5c, 0x19, 0x42, 0xb5, 0x26, 0xf3, 0x3e, 0x49, 0x94, 0x9c, 0x08, 0x8e, 0xf5, 0x54, 0x59, - 0x85, 0x5a, 0x5e, 0xc3, 0x54, 0x6b, 0x3c, 0xef, 0x77, 0x0e, 0xb9, 0x52, 0x3c, 0x63, 0xc4, 0x89, - 0xe3, 0xd9, 0x84, 0x50, 0x59, 0x78, 0xb2, 0xfb, 0x02, 0x60, 0xfd, 0xda, 0x59, 0xd1, 0x05, 0xdc, - 0xcd, 0x55, 0x3a, 0xcb, 0x98, 0x09, 0x40, 0x54, 0xeb, 0x35, 0x07, 0x47, 0x78, 0xe3, 0x19, 0x7c, - 0xe7, 0x54, 0x4f, 0xc7, 0x25, 0x8b, 0x6e, 0xe0, 0x3e, 0x57, 0x19, 0x95, 0x7c, 0x34, 0x16, 0x32, - 0x15, 0x92, 0x9b, 0xa0, 0xea, 0xec, 0xc7, 0x5b, 0xf6, 0x5b, 0x47, 0x0d, 0x3d, 0x14, 0xb7, 0xf9, - 0xfa, 0xd5, 0x74, 0xdf, 0x00, 0xdc, 0x5b, 0xff, 0x00, 0x21, 0xb8, 0x23, 0x69, 0xce, 0x02, 0x10, - 0x81, 0x5e, 0x23, 0x76, 0x67, 0x74, 0x06, 0xeb, 0xbe, 0x67, 0x50, 0x8d, 0x40, 0xaf, 0x39, 0x38, - 0xc0, 0xbe, 0x19, 0x2e, 0x9b, 0xe1, 0x2b, 0x59, 0xc4, 0x3f, 0xcc, 0x5f, 0xc9, 0x6a, 0xff, 0x48, - 0xf6, 0x08, 0x5b, 0x1b, 0x00, 0x3a, 0x81, 0x6d, 0x21, 0x2d, 0x9b, 0x4e, 0x68, 0xc2, 0x46, 0xb6, - 0xd0, 0x65, 0xc6, 0xd6, 0xef, 0xf4, 0xbe, 0xd0, 0x0c, 0x9d, 0xc2, 0xb6, 0xc8, 0x75, 0xc6, 0x72, - 0x26, 0x2d, 0xb5, 0x42, 0x49, 0x17, 0xba, 0x11, 0x6f, 0x4d, 0x87, 0x97, 0xef, 0xcb, 0x10, 0x2c, - 0x96, 0x21, 0xf8, 0x5c, 0x86, 0xe0, 0x75, 0x15, 0x56, 0x16, 0xab, 0xb0, 0xf2, 0xb1, 0x0a, 0x2b, - 0x0f, 0x91, 0x8f, 0x69, 0xd2, 0x67, 0x2c, 0x14, 0x49, 0x99, 0x16, 0xf2, 0x89, 0x25, 0xf6, 0x7b, - 0xe5, 0xbe, 0xe2, 0xb8, 0xee, 0x8a, 0x9f, 0x7f, 0x05, 0x00, 0x00, 0xff, 0xff, 0x8e, 0x47, 0xed, - 0x78, 0x0d, 0x02, 0x00, 0x00, + proto.RegisterType((*Config)(nil), "cosmos.app.v1alpha1.Config") + proto.RegisterType((*ModuleConfig)(nil), "cosmos.app.v1alpha1.ModuleConfig") + proto.RegisterType((*GolangBinding)(nil), "cosmos.app.v1alpha1.GolangBinding") +} + +func init() { proto.RegisterFile("cosmos/app/v1alpha1/config.proto", fileDescriptor_5af1d229673256fa) } + +var fileDescriptor_5af1d229673256fa = []byte{ + // 333 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x92, 0x31, 0x4f, 0x02, 0x31, + 0x1c, 0xc5, 0x29, 0x18, 0x0c, 0x45, 0x30, 0xa9, 0x0e, 0xa7, 0xc3, 0xe5, 0x24, 0xd1, 0x60, 0x62, + 0xda, 0x80, 0xa3, 0x93, 0x30, 0x38, 0x18, 0x97, 0x8b, 0x93, 0x83, 0xa4, 0xdc, 0x95, 0x5a, 0xbd, + 0x6b, 0x1b, 0x5a, 0x4c, 0xee, 0x5b, 0x18, 0x77, 0xbf, 0x8f, 0x23, 0xa3, 0xa3, 0x81, 0x2f, 0x62, + 0x6c, 0x3d, 0x82, 0x86, 0xc9, 0xad, 0xfd, 0xe7, 0xf7, 0x7f, 0x7d, 0xaf, 0x79, 0x30, 0x4a, 0x94, + 0xc9, 0x95, 0x21, 0x54, 0x6b, 0xf2, 0xdc, 0xa3, 0x99, 0x7e, 0xa0, 0x3d, 0x92, 0x28, 0x39, 0x11, + 0x1c, 0xeb, 0xa9, 0xb2, 0x0a, 0xed, 0x79, 0x02, 0x53, 0xad, 0x71, 0x49, 0x1c, 0x1e, 0x70, 0xa5, + 0x78, 0xc6, 0x88, 0x43, 0xc6, 0xb3, 0x09, 0xa1, 0xb2, 0xf0, 0x7c, 0xe7, 0x15, 0xc0, 0xfa, 0xd0, + 0x09, 0xa0, 0x0b, 0xb8, 0x9d, 0xab, 0x74, 0x96, 0x31, 0x13, 0x80, 0xa8, 0xd6, 0x6d, 0xf6, 0x8f, + 0xf0, 0x06, 0x31, 0x7c, 0xe3, 0x18, 0xbf, 0x13, 0x97, 0x1b, 0xe8, 0x1a, 0xee, 0x72, 0x95, 0x51, + 0xc9, 0x47, 0x63, 0x21, 0x53, 0x21, 0xb9, 0x09, 0xaa, 0x4e, 0xa4, 0xb3, 0x51, 0xe4, 0xca, 0xb1, + 0x03, 0x8f, 0xc6, 0x6d, 0xbe, 0x7e, 0x35, 0x9d, 0x37, 0x00, 0x77, 0xd6, 0x9f, 0x41, 0x08, 0x6e, + 0x49, 0x9a, 0xb3, 0x00, 0x44, 0xa0, 0xdb, 0x88, 0xdd, 0x19, 0x9d, 0xc1, 0xba, 0x4f, 0x1e, 0x54, + 0x23, 0xd0, 0x6d, 0xf6, 0xf7, 0xb1, 0x4f, 0x89, 0xcb, 0x94, 0xf8, 0x52, 0x16, 0xf1, 0x0f, 0xb3, + 0xc9, 0x5f, 0xed, 0xdf, 0xfe, 0xee, 0x61, 0xeb, 0x17, 0x80, 0x8e, 0x61, 0x5b, 0x48, 0xcb, 0xa6, + 0x13, 0x9a, 0xb0, 0x91, 0x2d, 0x74, 0xe9, 0xb4, 0xb5, 0x9a, 0xde, 0x16, 0x9a, 0xa1, 0x13, 0xd8, + 0x16, 0xb9, 0xce, 0x58, 0xce, 0xa4, 0xa5, 0x56, 0x28, 0xe9, 0xac, 0x37, 0xe2, 0x3f, 0xd3, 0xc1, + 0xf0, 0x7d, 0x11, 0x82, 0xf9, 0x22, 0x04, 0x9f, 0x8b, 0x10, 0xbc, 0x2c, 0xc3, 0xca, 0x7c, 0x19, + 0x56, 0x3e, 0x96, 0x61, 0xe5, 0xee, 0xd4, 0x9b, 0x35, 0xe9, 0x13, 0x16, 0x8a, 0xa4, 0x4c, 0x0b, + 0xf9, 0xc8, 0x12, 0xfb, 0x5d, 0x08, 0x1f, 0x74, 0x55, 0x8b, 0x71, 0xdd, 0xfd, 0xc3, 0xf9, 0x57, + 0x00, 0x00, 0x00, 0xff, 0xff, 0xd5, 0xfa, 0x9f, 0xcf, 0x34, 0x02, 0x00, 0x00, } func (m *Config) Marshal() (dAtA []byte, err error) { diff --git a/depinject/appconfig/v1alpha1/module.pb.go b/depinject/appconfig/v1alpha1/module.pb.go new file mode 100644 index 000000000000..67dde820c1ec --- /dev/null +++ b/depinject/appconfig/v1alpha1/module.pb.go @@ -0,0 +1,893 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: cosmos/app/v1alpha1/module.proto + +package v1alpha1 + +import ( + fmt "fmt" + proto "github.com/cosmos/gogoproto/proto" + descriptorpb "google.golang.org/protobuf/types/descriptorpb" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// ModuleDescriptor describes an app module. +type ModuleDescriptor struct { + // go_import names the package that should be imported by an app to load the + // module in the runtime module registry. It is required to make debugging + // of configuration errors easier for users. + GoImport string `protobuf:"bytes,1,opt,name=go_import,json=goImport,proto3" json:"go_import,omitempty"` + // use_package refers to a protobuf package that this module + // uses and exposes to the world. In an app, only one module should "use" + // or own a single protobuf package. It is assumed that the module uses + // all of the .proto files in a single package. + UsePackage []*PackageReference `protobuf:"bytes,2,rep,name=use_package,json=usePackage,proto3" json:"use_package,omitempty"` + // can_migrate_from defines which module versions this module can migrate + // state from. The framework will check that one module version is able to + // migrate from a previous module version before attempting to update its + // config. It is assumed that modules can transitively migrate from earlier + // versions. For instance if v3 declares it can migrate from v2, and v2 + // declares it can migrate from v1, the framework knows how to migrate + // from v1 to v3, assuming all 3 module versions are registered at runtime. + CanMigrateFrom []*MigrateFromInfo `protobuf:"bytes,3,rep,name=can_migrate_from,json=canMigrateFrom,proto3" json:"can_migrate_from,omitempty"` +} + +func (m *ModuleDescriptor) Reset() { *m = ModuleDescriptor{} } +func (m *ModuleDescriptor) String() string { return proto.CompactTextString(m) } +func (*ModuleDescriptor) ProtoMessage() {} +func (*ModuleDescriptor) Descriptor() ([]byte, []int) { + return fileDescriptor_0e7eb8b9b8dcd164, []int{0} +} +func (m *ModuleDescriptor) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ModuleDescriptor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ModuleDescriptor.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 *ModuleDescriptor) XXX_Merge(src proto.Message) { + xxx_messageInfo_ModuleDescriptor.Merge(m, src) +} +func (m *ModuleDescriptor) XXX_Size() int { + return m.Size() +} +func (m *ModuleDescriptor) XXX_DiscardUnknown() { + xxx_messageInfo_ModuleDescriptor.DiscardUnknown(m) +} + +var xxx_messageInfo_ModuleDescriptor proto.InternalMessageInfo + +func (m *ModuleDescriptor) GetGoImport() string { + if m != nil { + return m.GoImport + } + return "" +} + +func (m *ModuleDescriptor) GetUsePackage() []*PackageReference { + if m != nil { + return m.UsePackage + } + return nil +} + +func (m *ModuleDescriptor) GetCanMigrateFrom() []*MigrateFromInfo { + if m != nil { + return m.CanMigrateFrom + } + return nil +} + +// PackageReference is a reference to a protobuf package used by a module. +type PackageReference struct { + // name is the fully-qualified name of the package. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // revision is the optional revision of the package that is being used. + // Protobuf packages used in Cosmos should generally have a major version + // as the last part of the package name, ex. foo.bar.baz.v1. + // The revision of a package can be thought of as the minor version of a + // package which has additional backwards compatible definitions that weren't + // present in a previous version. + // + // A package should indicate its revision with a source code comment + // above the package declaration in one of its files containing the + // text "Revision N" where N is an integer revision. All packages start + // at revision 0 the first time they are released in a module. + // + // When a new version of a module is released and items are added to existing + // .proto files, these definitions should contain comments of the form + // "Since: Revision N" where N is an integer revision. + // + // When the module runtime starts up, it will check the pinned proto + // image and panic if there are runtime protobuf definitions that are not + // in the pinned descriptor which do not have + // a "Since Revision N" comment or have a "Since Revision N" comment where + // N is <= to the revision specified here. This indicates that the protobuf + // files have been updated, but the pinned file descriptor hasn't. + // + // If there are items in the pinned file descriptor with a revision + // greater than the value indicated here, this will also cause a panic + // as it may mean that the pinned descriptor for a legacy module has been + // improperly updated or that there is some other versioning discrepancy. + // Runtime protobuf definitions will also be checked for compatibility + // with pinned file descriptors to make sure there are no incompatible changes. + // + // This behavior ensures that: + // - pinned proto images are up-to-date + // - protobuf files are carefully annotated with revision comments which + // are important good client UX + // - protobuf files are changed in backwards and forwards compatible ways + Revision uint32 `protobuf:"varint,2,opt,name=revision,proto3" json:"revision,omitempty"` +} + +func (m *PackageReference) Reset() { *m = PackageReference{} } +func (m *PackageReference) String() string { return proto.CompactTextString(m) } +func (*PackageReference) ProtoMessage() {} +func (*PackageReference) Descriptor() ([]byte, []int) { + return fileDescriptor_0e7eb8b9b8dcd164, []int{1} +} +func (m *PackageReference) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *PackageReference) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_PackageReference.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 *PackageReference) XXX_Merge(src proto.Message) { + xxx_messageInfo_PackageReference.Merge(m, src) +} +func (m *PackageReference) XXX_Size() int { + return m.Size() +} +func (m *PackageReference) XXX_DiscardUnknown() { + xxx_messageInfo_PackageReference.DiscardUnknown(m) +} + +var xxx_messageInfo_PackageReference proto.InternalMessageInfo + +func (m *PackageReference) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *PackageReference) GetRevision() uint32 { + if m != nil { + return m.Revision + } + return 0 +} + +// MigrateFromInfo is information on a module version that a newer module +// can migrate from. +type MigrateFromInfo struct { + // module is the fully-qualified protobuf name of the module config object + // for the previous module version, ex: "cosmos.group.module.v1.Module". + Module string `protobuf:"bytes,1,opt,name=module,proto3" json:"module,omitempty"` +} + +func (m *MigrateFromInfo) Reset() { *m = MigrateFromInfo{} } +func (m *MigrateFromInfo) String() string { return proto.CompactTextString(m) } +func (*MigrateFromInfo) ProtoMessage() {} +func (*MigrateFromInfo) Descriptor() ([]byte, []int) { + return fileDescriptor_0e7eb8b9b8dcd164, []int{2} +} +func (m *MigrateFromInfo) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MigrateFromInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MigrateFromInfo.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 *MigrateFromInfo) XXX_Merge(src proto.Message) { + xxx_messageInfo_MigrateFromInfo.Merge(m, src) +} +func (m *MigrateFromInfo) XXX_Size() int { + return m.Size() +} +func (m *MigrateFromInfo) XXX_DiscardUnknown() { + xxx_messageInfo_MigrateFromInfo.DiscardUnknown(m) +} + +var xxx_messageInfo_MigrateFromInfo proto.InternalMessageInfo + +func (m *MigrateFromInfo) GetModule() string { + if m != nil { + return m.Module + } + return "" +} + +var E_Module = &proto.ExtensionDesc{ + ExtendedType: (*descriptorpb.MessageOptions)(nil), + ExtensionType: (*ModuleDescriptor)(nil), + Field: 57193479, + Name: "cosmos.app.v1alpha1.module", + Tag: "bytes,57193479,opt,name=module", + Filename: "cosmos/app/v1alpha1/module.proto", +} + +func init() { + proto.RegisterType((*ModuleDescriptor)(nil), "cosmos.app.v1alpha1.ModuleDescriptor") + proto.RegisterType((*PackageReference)(nil), "cosmos.app.v1alpha1.PackageReference") + proto.RegisterType((*MigrateFromInfo)(nil), "cosmos.app.v1alpha1.MigrateFromInfo") + proto.RegisterExtension(E_Module) +} + +func init() { proto.RegisterFile("cosmos/app/v1alpha1/module.proto", fileDescriptor_0e7eb8b9b8dcd164) } + +var fileDescriptor_0e7eb8b9b8dcd164 = []byte{ + // 368 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x52, 0xcd, 0xaa, 0x13, 0x31, + 0x18, 0x6d, 0xee, 0x95, 0xcb, 0x6d, 0x8a, 0x5a, 0x22, 0xc8, 0xd0, 0xc2, 0x38, 0x14, 0x85, 0x76, + 0x93, 0xa1, 0xba, 0x73, 0x59, 0xa5, 0xd0, 0x45, 0x55, 0x66, 0xe9, 0x66, 0x48, 0x33, 0xdf, 0xc4, + 0xd8, 0x4e, 0xbe, 0x90, 0xcc, 0xf4, 0x15, 0xdc, 0xfa, 0x0c, 0xbe, 0x8c, 0x2e, 0xbb, 0x74, 0x29, + 0xed, 0xc6, 0xc7, 0x10, 0xe7, 0xa7, 0x48, 0xa9, 0xbb, 0x9c, 0x93, 0x93, 0x73, 0xf2, 0x1d, 0x3e, + 0x1a, 0x49, 0xf4, 0x05, 0xfa, 0x58, 0x58, 0x1b, 0xef, 0xe7, 0x62, 0x67, 0x3f, 0x89, 0x79, 0x5c, + 0x60, 0x56, 0xed, 0x80, 0x5b, 0x87, 0x25, 0xb2, 0x27, 0x8d, 0x82, 0x0b, 0x6b, 0x79, 0xa7, 0x18, + 0x45, 0x0a, 0x51, 0xed, 0x20, 0xae, 0x25, 0x9b, 0x2a, 0x8f, 0x33, 0xf0, 0xd2, 0x69, 0x5b, 0xa2, + 0x6b, 0x9e, 0x4d, 0xbe, 0x13, 0x3a, 0x5c, 0xd7, 0x3e, 0x6f, 0xcf, 0x57, 0x6c, 0x4c, 0xfb, 0x0a, + 0x53, 0x5d, 0x58, 0x74, 0x65, 0x40, 0x22, 0x32, 0xed, 0x27, 0xf7, 0x0a, 0x57, 0x35, 0x66, 0x4b, + 0x3a, 0xa8, 0x3c, 0xa4, 0x56, 0xc8, 0xad, 0x50, 0x10, 0xdc, 0x44, 0xb7, 0xd3, 0xc1, 0xcb, 0x17, + 0xfc, 0x4a, 0x3c, 0xff, 0xd0, 0x68, 0x12, 0xc8, 0xc1, 0x81, 0x91, 0x90, 0xd0, 0xca, 0x43, 0x4b, + 0xb2, 0x77, 0x74, 0x28, 0x85, 0x49, 0x0b, 0xad, 0x9c, 0x28, 0x21, 0xcd, 0x1d, 0x16, 0xc1, 0x6d, + 0x6d, 0xf6, 0xfc, 0xaa, 0xd9, 0xba, 0x11, 0x2e, 0x1d, 0x16, 0x2b, 0x93, 0x63, 0xf2, 0x48, 0x0a, + 0xf3, 0x0f, 0x37, 0x59, 0xd0, 0xe1, 0x65, 0x1e, 0x63, 0xf4, 0x81, 0x11, 0x05, 0xb4, 0x33, 0xd4, + 0x67, 0x36, 0xa2, 0xf7, 0x0e, 0xf6, 0xda, 0x6b, 0x34, 0xc1, 0x4d, 0x44, 0xa6, 0x0f, 0x93, 0x33, + 0x9e, 0xcc, 0xe8, 0xe3, 0x8b, 0x18, 0xf6, 0x94, 0xde, 0x35, 0x3d, 0xb7, 0x26, 0x2d, 0x7a, 0x2d, + 0x3a, 0x9e, 0x3d, 0xe3, 0x4d, 0xcb, 0xbc, 0x6b, 0x99, 0xaf, 0xc1, 0x7b, 0xa1, 0xe0, 0xbd, 0x2d, + 0x35, 0x1a, 0x1f, 0x7c, 0xf9, 0xfd, 0x6d, 0x1c, 0x91, 0xff, 0xb6, 0x74, 0x59, 0x7f, 0x17, 0xb1, + 0x78, 0xf3, 0xe3, 0x18, 0x92, 0xc3, 0x31, 0x24, 0xbf, 0x8e, 0x21, 0xf9, 0x7a, 0x0a, 0x7b, 0x87, + 0x53, 0xd8, 0xfb, 0x79, 0x0a, 0x7b, 0x1f, 0x67, 0x8d, 0x8f, 0xcf, 0xb6, 0x5c, 0x63, 0x9c, 0x81, + 0xd5, 0xe6, 0x33, 0xc8, 0xf2, 0xef, 0x7a, 0x48, 0x34, 0xb9, 0x56, 0xe7, 0x25, 0xd9, 0xdc, 0xd5, + 0xbf, 0x7a, 0xf5, 0x27, 0x00, 0x00, 0xff, 0xff, 0xf5, 0x00, 0xca, 0xe6, 0x42, 0x02, 0x00, 0x00, +} + +func (m *ModuleDescriptor) 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 *ModuleDescriptor) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ModuleDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.CanMigrateFrom) > 0 { + for iNdEx := len(m.CanMigrateFrom) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.CanMigrateFrom[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintModule(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + if len(m.UsePackage) > 0 { + for iNdEx := len(m.UsePackage) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.UsePackage[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintModule(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if len(m.GoImport) > 0 { + i -= len(m.GoImport) + copy(dAtA[i:], m.GoImport) + i = encodeVarintModule(dAtA, i, uint64(len(m.GoImport))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *PackageReference) 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 *PackageReference) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *PackageReference) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Revision != 0 { + i = encodeVarintModule(dAtA, i, uint64(m.Revision)) + i-- + dAtA[i] = 0x10 + } + if len(m.Name) > 0 { + i -= len(m.Name) + copy(dAtA[i:], m.Name) + i = encodeVarintModule(dAtA, i, uint64(len(m.Name))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MigrateFromInfo) 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 *MigrateFromInfo) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MigrateFromInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Module) > 0 { + i -= len(m.Module) + copy(dAtA[i:], m.Module) + i = encodeVarintModule(dAtA, i, uint64(len(m.Module))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func encodeVarintModule(dAtA []byte, offset int, v uint64) int { + offset -= sovModule(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *ModuleDescriptor) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.GoImport) + if l > 0 { + n += 1 + l + sovModule(uint64(l)) + } + if len(m.UsePackage) > 0 { + for _, e := range m.UsePackage { + l = e.Size() + n += 1 + l + sovModule(uint64(l)) + } + } + if len(m.CanMigrateFrom) > 0 { + for _, e := range m.CanMigrateFrom { + l = e.Size() + n += 1 + l + sovModule(uint64(l)) + } + } + return n +} + +func (m *PackageReference) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Name) + if l > 0 { + n += 1 + l + sovModule(uint64(l)) + } + if m.Revision != 0 { + n += 1 + sovModule(uint64(m.Revision)) + } + return n +} + +func (m *MigrateFromInfo) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Module) + if l > 0 { + n += 1 + l + sovModule(uint64(l)) + } + return n +} + +func sovModule(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozModule(x uint64) (n int) { + return sovModule(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *ModuleDescriptor) 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 ErrIntOverflowModule + } + 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: ModuleDescriptor: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ModuleDescriptor: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field GoImport", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModule + } + 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 ErrInvalidLengthModule + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthModule + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.GoImport = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UsePackage", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModule + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthModule + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthModule + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.UsePackage = append(m.UsePackage, &PackageReference{}) + if err := m.UsePackage[len(m.UsePackage)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CanMigrateFrom", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModule + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthModule + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthModule + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CanMigrateFrom = append(m.CanMigrateFrom, &MigrateFromInfo{}) + if err := m.CanMigrateFrom[len(m.CanMigrateFrom)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipModule(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthModule + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PackageReference) 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 ErrIntOverflowModule + } + 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: PackageReference: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PackageReference: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModule + } + 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 ErrInvalidLengthModule + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthModule + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Revision", wireType) + } + m.Revision = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModule + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Revision |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipModule(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthModule + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MigrateFromInfo) 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 ErrIntOverflowModule + } + 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: MigrateFromInfo: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MigrateFromInfo: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Module", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModule + } + 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 ErrInvalidLengthModule + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthModule + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Module = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipModule(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthModule + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipModule(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowModule + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowModule + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowModule + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthModule + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupModule + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthModule + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthModule = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowModule = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupModule = fmt.Errorf("proto: unexpected end of group") +) diff --git a/depinject/appconfig/v1alpha1/query.pb.go b/depinject/appconfig/v1alpha1/query.pb.go new file mode 100644 index 000000000000..363c61fa9cd8 --- /dev/null +++ b/depinject/appconfig/v1alpha1/query.pb.go @@ -0,0 +1,537 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: cosmos/app/v1alpha1/query.proto + +package v1alpha1 + +import ( + context "context" + fmt "fmt" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// QueryConfigRequest is the Query/Config request type. +type QueryConfigRequest struct { +} + +func (m *QueryConfigRequest) Reset() { *m = QueryConfigRequest{} } +func (m *QueryConfigRequest) String() string { return proto.CompactTextString(m) } +func (*QueryConfigRequest) ProtoMessage() {} +func (*QueryConfigRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_bd84655af543ba53, []int{0} +} +func (m *QueryConfigRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryConfigRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryConfigRequest.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 *QueryConfigRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryConfigRequest.Merge(m, src) +} +func (m *QueryConfigRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryConfigRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryConfigRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryConfigRequest proto.InternalMessageInfo + +// QueryConfigResponse is the Query/Config response type. +type QueryConfigResponse struct { + // config is the current app config. + Config *Config `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` +} + +func (m *QueryConfigResponse) Reset() { *m = QueryConfigResponse{} } +func (m *QueryConfigResponse) String() string { return proto.CompactTextString(m) } +func (*QueryConfigResponse) ProtoMessage() {} +func (*QueryConfigResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_bd84655af543ba53, []int{1} +} +func (m *QueryConfigResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryConfigResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryConfigResponse.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 *QueryConfigResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryConfigResponse.Merge(m, src) +} +func (m *QueryConfigResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryConfigResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryConfigResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryConfigResponse proto.InternalMessageInfo + +func (m *QueryConfigResponse) GetConfig() *Config { + if m != nil { + return m.Config + } + return nil +} + +func init() { + proto.RegisterType((*QueryConfigRequest)(nil), "cosmos.app.v1alpha1.QueryConfigRequest") + proto.RegisterType((*QueryConfigResponse)(nil), "cosmos.app.v1alpha1.QueryConfigResponse") +} + +func init() { proto.RegisterFile("cosmos/app/v1alpha1/query.proto", fileDescriptor_bd84655af543ba53) } + +var fileDescriptor_bd84655af543ba53 = []byte{ + // 222 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4f, 0xce, 0x2f, 0xce, + 0xcd, 0x2f, 0xd6, 0x4f, 0x2c, 0x28, 0xd0, 0x2f, 0x33, 0x4c, 0xcc, 0x29, 0xc8, 0x48, 0x34, 0xd4, + 0x2f, 0x2c, 0x4d, 0x2d, 0xaa, 0xd4, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x86, 0x28, 0xd0, + 0x4b, 0x2c, 0x28, 0xd0, 0x83, 0x29, 0x90, 0x52, 0xc0, 0xa6, 0x2b, 0x39, 0x3f, 0x2f, 0x2d, 0x33, + 0x1d, 0xa2, 0x4d, 0x49, 0x84, 0x4b, 0x28, 0x10, 0x64, 0x8a, 0x33, 0x58, 0x30, 0x28, 0xb5, 0xb0, + 0x34, 0xb5, 0xb8, 0x44, 0xc9, 0x8b, 0x4b, 0x18, 0x45, 0xb4, 0xb8, 0x20, 0x3f, 0xaf, 0x38, 0x55, + 0xc8, 0x98, 0x8b, 0x0d, 0xa2, 0x59, 0x82, 0x51, 0x81, 0x51, 0x83, 0xdb, 0x48, 0x5a, 0x0f, 0x8b, + 0xa5, 0x7a, 0x50, 0x4d, 0x50, 0xa5, 0x46, 0x99, 0x5c, 0xac, 0x60, 0xb3, 0x84, 0x12, 0xb8, 0xd8, + 0x20, 0x52, 0x42, 0xea, 0x58, 0xf5, 0x61, 0xba, 0x43, 0x4a, 0x83, 0xb0, 0x42, 0x88, 0xd3, 0x94, + 0x98, 0x3b, 0x98, 0x18, 0x9d, 0x9c, 0x4f, 0x3c, 0x92, 0x63, 0xbc, 0xf0, 0x48, 0x8e, 0xf1, 0xc1, + 0x23, 0x39, 0xc6, 0x09, 0x8f, 0xe5, 0x18, 0x2e, 0x3c, 0x96, 0x63, 0xb8, 0xf1, 0x58, 0x8e, 0x21, + 0x4a, 0x13, 0x62, 0x4e, 0x71, 0x4a, 0xb6, 0x5e, 0x66, 0xbe, 0x7e, 0x4a, 0x6a, 0x41, 0x66, 0x5e, + 0x56, 0x6a, 0x72, 0x09, 0x28, 0x60, 0x20, 0xce, 0x84, 0x07, 0x4f, 0x12, 0x1b, 0x38, 0x60, 0x8c, + 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0x72, 0xe6, 0x07, 0x7f, 0x72, 0x01, 0x00, 0x00, +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConn + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion4 + +// QueryClient is the client API for Query service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type QueryClient interface { + // Config returns the current app config. + Config(ctx context.Context, in *QueryConfigRequest, opts ...grpc.CallOption) (*QueryConfigResponse, error) +} + +type queryClient struct { + cc grpc1.ClientConn +} + +func NewQueryClient(cc grpc1.ClientConn) QueryClient { + return &queryClient{cc} +} + +// Deprecated: Do not use. +func (c *queryClient) Config(ctx context.Context, in *QueryConfigRequest, opts ...grpc.CallOption) (*QueryConfigResponse, error) { + out := new(QueryConfigResponse) + err := c.cc.Invoke(ctx, "/cosmos.app.v1alpha1.Query/Config", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// QueryServer is the server API for Query service. +type QueryServer interface { + // Config returns the current app config. + Config(context.Context, *QueryConfigRequest) (*QueryConfigResponse, error) +} + +// UnimplementedQueryServer can be embedded to have forward compatible implementations. +type UnimplementedQueryServer struct { +} + +func (*UnimplementedQueryServer) Config(ctx context.Context, req *QueryConfigRequest) (*QueryConfigResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Config not implemented") +} + +func RegisterQueryServer(s grpc1.Server, srv QueryServer) { + s.RegisterService(&_Query_serviceDesc, srv) +} + +func _Query_Config_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryConfigRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).Config(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.app.v1alpha1.Query/Config", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).Config(ctx, req.(*QueryConfigRequest)) + } + return interceptor(ctx, in, info, handler) +} + +var _Query_serviceDesc = grpc.ServiceDesc{ + ServiceName: "cosmos.app.v1alpha1.Query", + HandlerType: (*QueryServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Config", + Handler: _Query_Config_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "cosmos/app/v1alpha1/query.proto", +} + +func (m *QueryConfigRequest) 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 *QueryConfigRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryConfigRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *QueryConfigResponse) 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 *QueryConfigResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryConfigResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Config != nil { + { + size, err := m.Config.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func encodeVarintQuery(dAtA []byte, offset int, v uint64) int { + offset -= sovQuery(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *QueryConfigRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *QueryConfigResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Config != nil { + l = m.Config.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func sovQuery(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozQuery(x uint64) (n int) { + return sovQuery(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *QueryConfigRequest) 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 ErrIntOverflowQuery + } + 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: QueryConfigRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryConfigRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryConfigResponse) 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 ErrIntOverflowQuery + } + 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: QueryConfigResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryConfigResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Config", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Config == nil { + m.Config = &Config{} + } + if err := m.Config.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipQuery(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowQuery + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowQuery + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowQuery + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthQuery + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupQuery + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthQuery + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthQuery = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowQuery = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupQuery = fmt.Errorf("proto: unexpected end of group") +) diff --git a/depinject/internal/appconfig/buf.gen.yaml b/depinject/internal/appconfig/buf.gen.yaml index 30a31e9678d3..1fe5c3e73ba4 100644 --- a/depinject/internal/appconfig/buf.gen.yaml +++ b/depinject/internal/appconfig/buf.gen.yaml @@ -3,8 +3,6 @@ managed: enabled: true go_package_prefix: default: cosmossdk.io/depinject/internal/appconfig - override: - buf.build/cosmos/cosmos-sdk: cosmossdk.io/api plugins: - name: go-pulsar out: . diff --git a/depinject/internal/appconfig/testpb/test.proto b/depinject/internal/appconfig/testpb/test.proto index fe6535a2d44a..25f7eefeea0f 100644 --- a/depinject/internal/appconfig/testpb/test.proto +++ b/depinject/internal/appconfig/testpb/test.proto @@ -4,6 +4,8 @@ package testpb; import "cosmos/app/v1alpha1/module.proto"; +option go_package = "cosmossdk.io/depinject/internal/appconfig"; + message TestRuntimeModule { option (cosmos.app.v1alpha1.module) = { go_import: "cosmossdk.io/core/internal/testpb" diff --git a/depinject/internal/appconfiggogo/buf.gen.yaml b/depinject/internal/appconfiggogo/buf.gen.yaml index 48924f89b954..ca01a181525f 100644 --- a/depinject/internal/appconfiggogo/buf.gen.yaml +++ b/depinject/internal/appconfiggogo/buf.gen.yaml @@ -1,10 +1,4 @@ version: v1 -managed: - enabled: true - go_package_prefix: - default: cosmossdk.io/depinject/internal/appconfiggogo - override: - buf.build/cosmos/cosmos-sdk: cosmossdk.io/api plugins: - name: gocosmos out: . diff --git a/depinject/internal/appconfiggogo/testpb/test.proto b/depinject/internal/appconfiggogo/testpb/test.proto index 47294a53b476..bc8909efce0a 100644 --- a/depinject/internal/appconfiggogo/testpb/test.proto +++ b/depinject/internal/appconfiggogo/testpb/test.proto @@ -4,6 +4,8 @@ package testpb; import "cosmos/app/v1alpha1/module.proto"; +option go_package = "cosmossdk.io/depinject/internal/appconfiggogo"; + message TestModuleGogo { option (cosmos.app.v1alpha1.module) = { go_import: "cosmossdk.io/core/internal/appconfiggogo/testpb" diff --git a/proto/cosmos/app/v1/config.proto b/proto/cosmos/app/v1/config.proto deleted file mode 100644 index 6003d005eec1..000000000000 --- a/proto/cosmos/app/v1/config.proto +++ /dev/null @@ -1,57 +0,0 @@ -syntax = "proto3"; - -package cosmos.app.v1; - -import "google/protobuf/any.proto"; - -option go_package = "cosmossdk.io/depinject/appconfig"; - -// Config represents the configuration for a Cosmos SDK ABCI app. -// It is intended that all state machine logic including the version of -// baseapp and tx handlers (and possibly even Tendermint) that an app needs -// can be described in a config object. For compatibility, the framework should -// allow a mixture of declarative and imperative app wiring, however, apps -// that strive for the maximum ease of maintainability should be able to describe -// their state machine with a config object alone. -message Config { - // modules are the module configurations for the app. - repeated ModuleConfig modules = 1; - - // golang_bindings specifies explicit interface to implementation type bindings which - // depinject uses to resolve interface inputs to provider functions. The scope of this - // field's configuration is global (not module specific). - repeated GolangBinding golang_bindings = 2; -} - -// ModuleConfig is a module configuration for an app. -message ModuleConfig { - // name is the unique name of the module within the app. It should be a name - // that persists between different versions of a module so that modules - // can be smoothly upgraded to new versions. - // - // For example, for the module cosmos.bank.module.v1.Module, we may chose - // to simply name the module "bank" in the app. When we upgrade to - // cosmos.bank.module.v2.Module, the app-specific name "bank" stays the same - // and the framework knows that the v2 module should receive all the same state - // that the v1 module had. - string name = 1; - - // config is the config object for the module. Module config messages should - // define a ModuleDescriptor using the cosmos.app.v1alpha1.is_module extension, - // although this requirement shouldn't be considered stable. - google.protobuf.Any config = 2; - - // golang_bindings specifies explicit interface to implementation type bindings which - // depinject uses to resolve interface inputs to provider functions. The scope of this - // field's configuration is module specific. - repeated GolangBinding golang_bindings = 3; -} - -// GolangBinding is an explicit interface type to implementing type binding for dependency injection. -message GolangBinding { - // interface_type is the interface type which will be bound to a specific implementation type - string interface_type = 1; - - // implementation is the implementing type which will be supplied when an input of type interface is requested - string implementation = 2; -} diff --git a/proto/cosmos/app/v1alpha1/config.proto b/proto/cosmos/app/v1alpha1/config.proto index f1993b82c134..1aac4b4396f5 100644 --- a/proto/cosmos/app/v1alpha1/config.proto +++ b/proto/cosmos/app/v1alpha1/config.proto @@ -4,7 +4,7 @@ package cosmos.app.v1alpha1; import "google/protobuf/any.proto"; -option go_package = "cosmossdk.io/api/app/v1alpha1"; +option go_package = "cosmossdk.io/depinject/appconfig/v1alpha1"; // Config represents the configuration for a Cosmos SDK ABCI app. // It is intended that all state machine logic including the version of diff --git a/proto/cosmos/app/v1alpha1/module.proto b/proto/cosmos/app/v1alpha1/module.proto index 823dcb7d3259..ea475f35e17e 100644 --- a/proto/cosmos/app/v1alpha1/module.proto +++ b/proto/cosmos/app/v1alpha1/module.proto @@ -4,7 +4,7 @@ package cosmos.app.v1alpha1; import "google/protobuf/descriptor.proto"; -option go_package = "cosmossdk.io/api/app/v1alpha1"; +option go_package = "cosmossdk.io/depinject/appconfig/v1alpha1"; extend google.protobuf.MessageOptions { // module indicates that this proto type is a config object for an app module diff --git a/proto/cosmos/app/v1alpha1/query.proto b/proto/cosmos/app/v1alpha1/query.proto index 2a854b18b259..a51aea691db8 100644 --- a/proto/cosmos/app/v1alpha1/query.proto +++ b/proto/cosmos/app/v1alpha1/query.proto @@ -4,7 +4,7 @@ package cosmos.app.v1alpha1; import "cosmos/app/v1alpha1/config.proto"; -option go_package = "cosmossdk.io/api/app/v1alpha1"; +option go_package = "cosmossdk.io/depinject/appconfig/v1alpha1"; // Query is the app module query service. service Query { diff --git a/x/staking/proto/cosmos/staking/v1beta1/staking.proto b/x/staking/proto/cosmos/staking/v1beta1/staking.proto index f9e5d555f1fc..8b8709322305 100644 --- a/x/staking/proto/cosmos/staking/v1beta1/staking.proto +++ b/x/staking/proto/cosmos/staking/v1beta1/staking.proto @@ -221,7 +221,7 @@ message UnbondingDelegation { string validator_address = 2 [(cosmos_proto.scalar) = "cosmos.ValidatorAddressString"]; // entries are the unbonding delegation entries. repeated UnbondingDelegationEntry entries = 3 - [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; // unbonding delegation entries + [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; // unbonding delegation entries } // UnbondingDelegationEntry defines an unbonding object with relevant metadata. @@ -294,7 +294,7 @@ message Redelegation { string validator_dst_address = 3 [(cosmos_proto.scalar) = "cosmos.ValidatorAddressString"]; // entries are the redelegation entries. repeated RedelegationEntry entries = 4 - [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; // redelegation entries + [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; // redelegation entries } // Params defines the parameters for the x/staking module. diff --git a/x/staking/types/staking.pb.go b/x/staking/types/staking.pb.go index 9db7ba75707d..ace9bc23e313 100644 --- a/x/staking/types/staking.pb.go +++ b/x/staking/types/staking.pb.go @@ -927,7 +927,7 @@ type Params struct { // max_entries is the max entries for either unbonding delegation or redelegation (per pair/trio). MaxEntries uint32 `protobuf:"varint,3,opt,name=max_entries,json=maxEntries,proto3" json:"max_entries,omitempty"` // historical_entries is the number of historical entries to persist. - HistoricalEntries uint32 `protobuf:"varint,4,opt,name=historical_entries,json=historicalEntries,proto3" json:"historical_entries,omitempty"` + HistoricalEntries uint32 `protobuf:"varint,4,opt,name=historical_entries,json=historicalEntries,proto3" json:"historical_entries,omitempty"` // Deprecated: Do not use. // bond_denom defines the bondable coin denomination. 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 @@ -991,6 +991,7 @@ func (m *Params) GetMaxEntries() uint32 { return 0 } +// Deprecated: Do not use. func (m *Params) GetHistoricalEntries() uint32 { if m != nil { return m.HistoricalEntries @@ -1383,136 +1384,137 @@ func init() { } var fileDescriptor_64c30c6cf92913c9 = []byte{ - // 2060 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x59, 0x4d, 0x6c, 0x1b, 0xc7, - 0x15, 0xd6, 0x92, 0x34, 0x25, 0x3d, 0x4a, 0x22, 0x35, 0xfe, 0xa3, 0xe8, 0x58, 0x92, 0x19, 0xb7, - 0xb1, 0xdd, 0x8a, 0x8a, 0xdc, 0xc2, 0x05, 0x84, 0x20, 0x85, 0x29, 0xd2, 0x31, 0xf3, 0x23, 0xa9, - 0x4b, 0x49, 0xfd, 0x41, 0x9b, 0xc5, 0x70, 0x77, 0x48, 0x6d, 0x45, 0xce, 0xb2, 0x3b, 0x43, 0xd9, - 0xbc, 0xf7, 0x10, 0xb8, 0x28, 0x90, 0x53, 0x11, 0xa0, 0x30, 0x6a, 0xa0, 0x97, 0xf4, 0x96, 0x83, - 0xd1, 0x7b, 0x6f, 0x69, 0x81, 0x02, 0x86, 0x4f, 0x45, 0x80, 0xba, 0x85, 0x7d, 0x70, 0xd0, 0x5e, - 0x8a, 0x9e, 0x7a, 0x2c, 0xe6, 0x67, 0x7f, 0x28, 0x8a, 0x96, 0x65, 0x07, 0x45, 0xd0, 0x5c, 0x04, - 0xce, 0xcc, 0x7b, 0xdf, 0xbe, 0xf7, 0xcd, 0x7b, 0x6f, 0x66, 0x9e, 0xe0, 0xa2, 0xed, 0xb1, 0x8e, - 0xc7, 0x96, 0x19, 0xc7, 0x7b, 0x2e, 0x6d, 0x2d, 0xef, 0xaf, 0x34, 0x08, 0xc7, 0x2b, 0xc1, 0xb8, - 0xd4, 0xf5, 0x3d, 0xee, 0xa1, 0x33, 0x4a, 0xaa, 0x14, 0xcc, 0x6a, 0xa9, 0xc2, 0xa9, 0x96, 0xd7, - 0xf2, 0xa4, 0xc8, 0xb2, 0xf8, 0xa5, 0xa4, 0x0b, 0x73, 0x2d, 0xcf, 0x6b, 0xb5, 0xc9, 0xb2, 0x1c, - 0x35, 0x7a, 0xcd, 0x65, 0x4c, 0xfb, 0x7a, 0x69, 0xfe, 0xe0, 0x92, 0xd3, 0xf3, 0x31, 0x77, 0x3d, - 0xaa, 0xd7, 0x17, 0x0e, 0xae, 0x73, 0xb7, 0x43, 0x18, 0xc7, 0x9d, 0x6e, 0x80, 0xad, 0x2c, 0xb1, - 0xd4, 0x47, 0xb5, 0x59, 0x1a, 0x5b, 0xbb, 0xd2, 0xc0, 0x8c, 0x84, 0x7e, 0xd8, 0x9e, 0x1b, 0x60, - 0xcf, 0xe2, 0x8e, 0x4b, 0xbd, 0x65, 0xf9, 0x57, 0x4f, 0x9d, 0xb7, 0xbd, 0x0e, 0xe1, 0x8d, 0x26, - 0x5f, 0xe6, 0xfd, 0x2e, 0x61, 0xcb, 0xfb, 0x2b, 0xea, 0x87, 0x5e, 0x7e, 0x25, 0x5c, 0xc6, 0x0d, - 0xdb, 0x3d, 0xb0, 0x5a, 0xfc, 0xc8, 0x80, 0x99, 0x9b, 0x2e, 0xe3, 0x9e, 0xef, 0xda, 0xb8, 0x5d, - 0xa3, 0x4d, 0x0f, 0xbd, 0x01, 0xe9, 0x5d, 0x82, 0x1d, 0xe2, 0xe7, 0x8d, 0x45, 0xe3, 0x52, 0xe6, - 0xea, 0x5c, 0x29, 0x40, 0x28, 0x29, 0xcd, 0xfd, 0x95, 0xd2, 0x4d, 0x29, 0x50, 0x9e, 0xfc, 0xf4, - 0xd1, 0xc2, 0xd8, 0xc7, 0x4f, 0x3f, 0xb9, 0x62, 0x98, 0x5a, 0x07, 0x55, 0x20, 0xbd, 0x8f, 0xdb, - 0x8c, 0xf0, 0x7c, 0x62, 0x31, 0x79, 0x29, 0x73, 0xf5, 0x42, 0xe9, 0x70, 0xda, 0x4b, 0x3b, 0xb8, - 0xed, 0x3a, 0x98, 0x7b, 0x83, 0x28, 0x4a, 0x77, 0x35, 0x91, 0x37, 0x8a, 0xbf, 0x4a, 0x40, 0x76, - 0xcd, 0xeb, 0x74, 0x5c, 0xc6, 0x5c, 0x8f, 0x9a, 0x98, 0x13, 0x86, 0xde, 0x86, 0x94, 0x8f, 0x39, - 0x91, 0x96, 0x4d, 0x96, 0xaf, 0x09, 0xc5, 0xcf, 0x1e, 0x2d, 0x9c, 0x53, 0x9f, 0x60, 0xce, 0x5e, - 0xc9, 0xf5, 0x96, 0x3b, 0x98, 0xef, 0x96, 0xde, 0x25, 0x2d, 0x6c, 0xf7, 0x2b, 0xc4, 0x7e, 0x78, - 0x7f, 0x09, 0xb4, 0x05, 0x15, 0x62, 0xab, 0xaf, 0x48, 0x0c, 0xf4, 0x3d, 0x98, 0xe8, 0xe0, 0xdb, - 0x96, 0xc4, 0x4b, 0xbc, 0x14, 0xde, 0x78, 0x07, 0xdf, 0x16, 0xf6, 0xa1, 0xf7, 0x21, 0x2b, 0x20, - 0xed, 0x5d, 0x4c, 0x5b, 0x44, 0x21, 0x27, 0x5f, 0x0a, 0x79, 0xba, 0x83, 0x6f, 0xaf, 0x49, 0x34, - 0x81, 0xbf, 0x9a, 0xfa, 0xfc, 0xde, 0x82, 0x51, 0xfc, 0x83, 0x01, 0x10, 0x11, 0x83, 0x30, 0xe4, - 0xec, 0x70, 0x24, 0x3f, 0xca, 0xf4, 0xce, 0xbd, 0x36, 0x8a, 0xfb, 0x03, 0xb4, 0x96, 0xa7, 0x85, - 0x79, 0x0f, 0x1e, 0x2d, 0x18, 0xea, 0xab, 0x59, 0x7b, 0x88, 0xf6, 0x4c, 0xaf, 0xeb, 0x60, 0x4e, - 0x2c, 0x11, 0xca, 0x92, 0xad, 0xcc, 0xd5, 0x42, 0x49, 0xc5, 0x79, 0x29, 0x88, 0xf3, 0xd2, 0x56, - 0x10, 0xe7, 0x0a, 0xf0, 0xc3, 0xbf, 0x05, 0x80, 0xa0, 0xb4, 0xc5, 0xba, 0xf6, 0xe1, 0x63, 0x03, - 0x32, 0x15, 0xc2, 0x6c, 0xdf, 0xed, 0x8a, 0xcc, 0x41, 0x79, 0x18, 0xef, 0x78, 0xd4, 0xdd, 0xd3, - 0x51, 0x37, 0x69, 0x06, 0x43, 0x54, 0x80, 0x09, 0xd7, 0x21, 0x94, 0xbb, 0xbc, 0xaf, 0xb6, 0xc9, - 0x0c, 0xc7, 0x42, 0xeb, 0x16, 0x69, 0x30, 0x37, 0xe0, 0xd9, 0x0c, 0x86, 0xe8, 0x32, 0xe4, 0x18, - 0xb1, 0x7b, 0xbe, 0xcb, 0xfb, 0x96, 0xed, 0x51, 0x8e, 0x6d, 0x9e, 0x4f, 0x49, 0x91, 0x6c, 0x30, - 0xbf, 0xa6, 0xa6, 0x05, 0x88, 0x43, 0x38, 0x76, 0xdb, 0x2c, 0x7f, 0x42, 0x81, 0xe8, 0xa1, 0x36, - 0xf5, 0xee, 0x38, 0x4c, 0x86, 0xc1, 0x8a, 0xd6, 0x20, 0xe7, 0x75, 0x89, 0x2f, 0x7e, 0x5b, 0xd8, - 0x71, 0x7c, 0xc2, 0x98, 0x8e, 0xc6, 0xfc, 0xc3, 0xfb, 0x4b, 0xa7, 0x34, 0xe1, 0xd7, 0xd5, 0x4a, - 0x9d, 0xfb, 0x2e, 0x6d, 0x99, 0xd9, 0x40, 0x43, 0x4f, 0xa3, 0x1f, 0x8a, 0x2d, 0xa3, 0x8c, 0x50, - 0xd6, 0x63, 0x56, 0xb7, 0xd7, 0xd8, 0x23, 0x7d, 0x4d, 0xea, 0xa9, 0x21, 0x52, 0xaf, 0xd3, 0x7e, - 0x39, 0xff, 0xa7, 0x08, 0xda, 0xf6, 0xfb, 0x5d, 0xee, 0x95, 0x36, 0x7b, 0x8d, 0x77, 0x48, 0x5f, - 0x6c, 0x95, 0xc6, 0xd9, 0x94, 0x30, 0xe8, 0x0c, 0xa4, 0x7f, 0x8a, 0xdd, 0x36, 0x71, 0x24, 0x23, - 0x13, 0xa6, 0x1e, 0xa1, 0x55, 0x48, 0x33, 0x8e, 0x79, 0x8f, 0x49, 0x1a, 0x66, 0xae, 0x16, 0x47, - 0xc5, 0x46, 0xd9, 0xa3, 0x4e, 0x5d, 0x4a, 0x9a, 0x5a, 0x03, 0xad, 0x41, 0x9a, 0x7b, 0x7b, 0x84, - 0x6a, 0x82, 0xca, 0xdf, 0xd0, 0xd1, 0x7c, 0x7a, 0x38, 0x9a, 0x6b, 0x94, 0xc7, 0xe2, 0xb8, 0x46, - 0xb9, 0xa9, 0x55, 0xd1, 0x8f, 0x21, 0xe7, 0x90, 0x36, 0x69, 0x49, 0xe6, 0xd8, 0x2e, 0xf6, 0x09, - 0xcb, 0xa7, 0x25, 0xdc, 0xca, 0xb1, 0x93, 0xc3, 0xcc, 0x86, 0x50, 0x75, 0x89, 0x84, 0x36, 0x21, - 0xe3, 0x44, 0xe1, 0x94, 0x1f, 0x97, 0x64, 0xbe, 0x3a, 0xca, 0xc7, 0x58, 0xe4, 0xc5, 0xab, 0x4f, - 0x1c, 0x42, 0x44, 0x50, 0x8f, 0x36, 0x3c, 0xea, 0xb8, 0xb4, 0x65, 0xed, 0x12, 0xb7, 0xb5, 0xcb, - 0xf3, 0x13, 0x8b, 0xc6, 0xa5, 0xa4, 0x99, 0x0d, 0xe7, 0x6f, 0xca, 0x69, 0xb4, 0x09, 0x33, 0x91, - 0xa8, 0xcc, 0x90, 0xc9, 0xe3, 0x66, 0xc8, 0x74, 0x08, 0x20, 0x44, 0xd0, 0x7b, 0x00, 0x51, 0x0e, - 0xe6, 0x41, 0xa2, 0x15, 0x8f, 0xce, 0xe6, 0xb8, 0x33, 0x31, 0x00, 0x44, 0xe1, 0x64, 0xc7, 0xa5, - 0x16, 0x23, 0xed, 0xa6, 0xa5, 0x99, 0x13, 0xb8, 0x19, 0x49, 0xff, 0x9b, 0xc7, 0xd8, 0xcd, 0xcf, - 0xee, 0x2f, 0x65, 0xd5, 0x68, 0x89, 0x39, 0x7b, 0x8b, 0xaf, 0x97, 0xbe, 0xfd, 0x1d, 0x73, 0xb6, - 0xe3, 0xd2, 0x3a, 0x69, 0x37, 0x2b, 0x21, 0x30, 0x7a, 0x03, 0xce, 0x45, 0x84, 0x78, 0xd4, 0xda, - 0xf5, 0xda, 0x8e, 0xe5, 0x93, 0xa6, 0x65, 0x7b, 0x3d, 0xca, 0xf3, 0x53, 0x92, 0xc6, 0xb3, 0xa1, - 0xc8, 0x06, 0xbd, 0xe9, 0xb5, 0x1d, 0x93, 0x34, 0xd7, 0xc4, 0x32, 0x7a, 0x15, 0x22, 0x36, 0x2c, - 0xd7, 0x61, 0xf9, 0xe9, 0xc5, 0xe4, 0xa5, 0x94, 0x39, 0x15, 0x4e, 0xd6, 0x1c, 0xb6, 0x3a, 0xf1, - 0xc1, 0xbd, 0x85, 0xb1, 0xcf, 0xef, 0x2d, 0x8c, 0x15, 0x6f, 0xc0, 0xd4, 0x0e, 0x6e, 0xeb, 0xd4, - 0x22, 0x0c, 0x5d, 0x83, 0x49, 0x1c, 0x0c, 0xf2, 0xc6, 0x62, 0xf2, 0x99, 0xa9, 0x19, 0x89, 0x16, - 0x7f, 0x67, 0x40, 0xba, 0xb2, 0xb3, 0x89, 0x5d, 0x1f, 0x55, 0x61, 0x36, 0x8a, 0xd5, 0xe7, 0xcd, - 0xf2, 0x28, 0xbc, 0x83, 0x34, 0x5f, 0x87, 0xd9, 0xfd, 0xa0, 0x70, 0x84, 0x30, 0xea, 0xa8, 0xb9, - 0xf0, 0xf0, 0xfe, 0xd2, 0x79, 0x0d, 0x13, 0x16, 0x97, 0x03, 0x78, 0xfb, 0x07, 0xe6, 0x63, 0x3e, - 0xbf, 0x0d, 0xe3, 0xca, 0x54, 0x86, 0xbe, 0x0b, 0x27, 0xba, 0xe2, 0x87, 0x74, 0x35, 0x73, 0x75, - 0x7e, 0x64, 0xcc, 0x4b, 0xf9, 0x78, 0x84, 0x28, 0xbd, 0xe2, 0x2f, 0x12, 0x00, 0x95, 0x9d, 0x9d, - 0x2d, 0xdf, 0xed, 0xb6, 0x09, 0xff, 0xa2, 0x7c, 0xdf, 0x86, 0xd3, 0x91, 0xef, 0xcc, 0xb7, 0x8f, - 0xef, 0xff, 0xc9, 0x50, 0xbf, 0xee, 0xdb, 0x87, 0xc2, 0x3a, 0x8c, 0x87, 0xb0, 0xc9, 0xe3, 0xc3, - 0x56, 0x18, 0x1f, 0x66, 0xf6, 0x07, 0x90, 0x89, 0xc8, 0x60, 0xa8, 0x06, 0x13, 0x5c, 0xff, 0xd6, - 0x04, 0x17, 0x47, 0x13, 0x1c, 0xa8, 0xc5, 0x49, 0x0e, 0xd5, 0x8b, 0xff, 0x31, 0x00, 0x62, 0x39, - 0xf2, 0xe5, 0x8c, 0x31, 0x54, 0x83, 0xb4, 0x2e, 0xce, 0xc9, 0x17, 0x2d, 0xce, 0x1a, 0x20, 0x46, - 0xea, 0x2f, 0x13, 0x70, 0x72, 0x3b, 0xc8, 0xde, 0x2f, 0x3f, 0x07, 0xdb, 0x30, 0x4e, 0x28, 0xf7, - 0x5d, 0x49, 0x82, 0xd8, 0xf3, 0xd7, 0x47, 0xed, 0xf9, 0x21, 0x4e, 0x55, 0x29, 0xf7, 0xfb, 0xf1, - 0x08, 0x08, 0xb0, 0x62, 0x7c, 0xfc, 0x3a, 0x09, 0xf9, 0x51, 0xaa, 0xe8, 0x35, 0xc8, 0xda, 0x3e, - 0x91, 0x13, 0xc1, 0xb9, 0x63, 0xc8, 0x82, 0x39, 0x13, 0x4c, 0xeb, 0x63, 0xc7, 0x04, 0x71, 0x51, - 0x13, 0xc1, 0x25, 0x44, 0x5f, 0xec, 0x66, 0x36, 0x13, 0x21, 0xc8, 0x83, 0x67, 0x0b, 0xb2, 0x2e, - 0x75, 0xb9, 0x8b, 0xdb, 0x56, 0x03, 0xb7, 0x31, 0xb5, 0x83, 0x1b, 0xec, 0xb1, 0xce, 0xfc, 0x19, - 0x8d, 0x51, 0x56, 0x10, 0xa8, 0x0a, 0xe3, 0x01, 0x5a, 0xea, 0xf8, 0x68, 0x81, 0x2e, 0xba, 0x00, - 0x53, 0xf1, 0x83, 0x41, 0xde, 0x46, 0x52, 0x66, 0x26, 0x76, 0x2e, 0x1c, 0x75, 0xf2, 0xa4, 0x9f, - 0x79, 0xf2, 0xe8, 0x0b, 0xdf, 0x6f, 0x92, 0x30, 0x6b, 0x12, 0xe7, 0xff, 0x7f, 0x5b, 0x36, 0x01, - 0x54, 0xaa, 0x8a, 0x4a, 0xaa, 0x77, 0xe6, 0x05, 0xf2, 0x7d, 0x52, 0x81, 0x54, 0x18, 0xff, 0x5f, - 0xed, 0xd0, 0x5f, 0x13, 0x30, 0x15, 0xdf, 0xa1, 0xaf, 0xe4, 0xa1, 0x85, 0xd6, 0xa3, 0x32, 0x95, - 0x92, 0x65, 0xea, 0xf2, 0xa8, 0x32, 0x35, 0x14, 0xcd, 0x47, 0xd4, 0xa7, 0xa7, 0x49, 0x48, 0x6f, - 0x62, 0x1f, 0x77, 0x18, 0xda, 0x18, 0xba, 0xdb, 0x06, 0x5d, 0x81, 0x83, 0xc1, 0x5c, 0xd1, 0x5d, - 0x10, 0x15, 0xcb, 0x1f, 0x8d, 0xba, 0xda, 0x7e, 0x0d, 0x66, 0xc4, 0x1b, 0x39, 0x74, 0x48, 0x91, - 0x3b, 0x2d, 0x9f, 0xba, 0xa1, 0xf7, 0x0c, 0x2d, 0x40, 0x46, 0x88, 0x45, 0x75, 0x58, 0xc8, 0x40, - 0x07, 0xdf, 0xae, 0xaa, 0x19, 0xb4, 0x04, 0x68, 0x37, 0x6c, 0x5c, 0x58, 0x11, 0x11, 0x42, 0x6e, - 0x36, 0x5a, 0x09, 0xc4, 0xcf, 0x03, 0x08, 0x2b, 0x2c, 0x87, 0x50, 0xaf, 0xa3, 0x1f, 0x7a, 0x93, - 0x62, 0xa6, 0x22, 0x26, 0xd0, 0xcf, 0x0d, 0x75, 0x45, 0x3e, 0xf0, 0x92, 0xd6, 0x2f, 0x94, 0xad, - 0xe7, 0x48, 0x8a, 0x7f, 0x3f, 0x5a, 0x28, 0xf4, 0x71, 0xa7, 0xbd, 0x5a, 0x3c, 0x04, 0xa7, 0x78, - 0xd8, 0xe3, 0x5e, 0x5c, 0x9c, 0x07, 0x5f, 0xe2, 0xa8, 0x06, 0xb9, 0x3d, 0xd2, 0xb7, 0x7c, 0x8f, - 0xab, 0x42, 0xd3, 0x24, 0x44, 0xbf, 0x65, 0xe6, 0x82, 0xbd, 0x6d, 0x60, 0x46, 0x62, 0x57, 0x7f, - 0x97, 0x96, 0x53, 0xc2, 0x3a, 0x73, 0x66, 0x8f, 0xf4, 0x4d, 0xad, 0x77, 0x83, 0x90, 0xd5, 0x8b, - 0x22, 0x53, 0xee, 0x3c, 0xfd, 0xe4, 0xca, 0xb9, 0xe8, 0xc2, 0xbe, 0x7c, 0x3b, 0xec, 0x91, 0xa9, - 0xed, 0x15, 0x97, 0x5e, 0x14, 0x1d, 0x40, 0x26, 0x61, 0x5d, 0xf1, 0x9e, 0x14, 0xef, 0x8f, 0xd8, - 0x3b, 0xc1, 0x78, 0xf6, 0xfb, 0x23, 0xd2, 0x1f, 0x78, 0x7f, 0xc4, 0xd2, 0xf3, 0xcd, 0xa8, 0xfe, - 0x27, 0x8e, 0xf2, 0x26, 0x1e, 0x99, 0x5a, 0x49, 0x66, 0xfd, 0x58, 0xf1, 0xcf, 0x06, 0xcc, 0x0d, - 0x45, 0x72, 0x68, 0xb2, 0x0d, 0xc8, 0x8f, 0x2d, 0xca, 0x88, 0xe8, 0x6b, 0xd3, 0x5f, 0x2c, 0x31, - 0x66, 0xfd, 0xa1, 0x43, 0xe0, 0x8b, 0x39, 0xc8, 0x74, 0x15, 0xfb, 0xa3, 0x01, 0xa7, 0xe2, 0x06, - 0x84, 0xae, 0xd4, 0x61, 0x2a, 0xfe, 0x69, 0xed, 0xc4, 0xc5, 0xe7, 0x71, 0x22, 0x6e, 0xff, 0x00, - 0x08, 0xda, 0x89, 0xaa, 0x85, 0xea, 0xcc, 0xad, 0x3c, 0x37, 0x29, 0x81, 0x61, 0x87, 0x56, 0x0d, - 0xb5, 0x37, 0xff, 0x34, 0x20, 0xb5, 0xe9, 0x79, 0x6d, 0xf4, 0x33, 0x98, 0xa5, 0x1e, 0xb7, 0x44, - 0x66, 0x11, 0xc7, 0xd2, 0x6d, 0x03, 0x55, 0x89, 0xab, 0xcf, 0xe4, 0xea, 0x1f, 0x8f, 0x16, 0x86, - 0x35, 0x07, 0x09, 0xd4, 0xdd, 0x29, 0xea, 0xf1, 0xb2, 0x14, 0xda, 0x52, 0x9d, 0x85, 0x26, 0x4c, - 0x0f, 0x7e, 0x4e, 0x55, 0xeb, 0xeb, 0x47, 0x7d, 0x6e, 0xfa, 0xc8, 0x4f, 0x4d, 0x35, 0x62, 0xdf, - 0x59, 0x9d, 0x10, 0xbb, 0xf6, 0x2f, 0xb1, 0x73, 0xef, 0x43, 0x2e, 0x2c, 0x55, 0xdb, 0xb2, 0xb5, - 0xc5, 0xd0, 0x0d, 0x18, 0x57, 0x5d, 0xae, 0xe0, 0xa1, 0x70, 0x21, 0xea, 0x9b, 0xe2, 0x86, 0xed, - 0x96, 0xf6, 0x63, 0x3d, 0x4f, 0xa5, 0x34, 0xc0, 0xa7, 0x56, 0x96, 0xad, 0xcf, 0x07, 0x09, 0x98, - 0x5b, 0xf3, 0x28, 0xd3, 0x4d, 0x1e, 0x9d, 0xd5, 0xaa, 0x4f, 0xdb, 0x47, 0x97, 0x47, 0xb4, 0xa0, - 0xa6, 0x86, 0x1b, 0x4d, 0x3b, 0x90, 0x15, 0xc7, 0xab, 0xed, 0xd1, 0x97, 0xec, 0x33, 0x4d, 0x7b, - 0x6d, 0x47, 0x5b, 0xb4, 0x47, 0xfa, 0x02, 0x97, 0x92, 0x5b, 0x03, 0xb8, 0xc9, 0x17, 0xc3, 0xa5, - 0xe4, 0x56, 0x0c, 0xf7, 0x0c, 0xa4, 0xf5, 0xdd, 0x2a, 0x25, 0x6f, 0x0e, 0x7a, 0x84, 0xae, 0x41, - 0x52, 0x94, 0xc2, 0x13, 0xc7, 0x28, 0x1e, 0x42, 0x21, 0x76, 0xa4, 0xd5, 0x61, 0x4e, 0x77, 0x09, - 0xd8, 0x46, 0x53, 0x32, 0x4a, 0xa4, 0x43, 0xef, 0x90, 0xfe, 0x21, 0x2d, 0x83, 0xa9, 0xe7, 0x6a, - 0x19, 0x5c, 0xf9, 0xbd, 0x01, 0x10, 0xf5, 0xcb, 0xd0, 0x37, 0xe1, 0x6c, 0x79, 0x63, 0xbd, 0x62, - 0xd5, 0xb7, 0xae, 0x6f, 0x6d, 0xd7, 0xad, 0xed, 0xf5, 0xfa, 0x66, 0x75, 0xad, 0x76, 0xa3, 0x56, - 0xad, 0xe4, 0xc6, 0x0a, 0xd9, 0x3b, 0x77, 0x17, 0x33, 0xdb, 0x94, 0x75, 0x89, 0xed, 0x36, 0x5d, - 0xe2, 0xa0, 0xaf, 0xc3, 0xa9, 0x41, 0x69, 0x31, 0xaa, 0x56, 0x72, 0x46, 0x61, 0xea, 0xce, 0xdd, - 0xc5, 0x09, 0xf5, 0x3e, 0x20, 0x0e, 0xba, 0x04, 0xa7, 0x87, 0xe5, 0x6a, 0xeb, 0x6f, 0xe5, 0x12, - 0x85, 0xe9, 0x3b, 0x77, 0x17, 0x27, 0xc3, 0x87, 0x04, 0x2a, 0x02, 0x8a, 0x4b, 0x6a, 0xbc, 0x64, - 0x01, 0xee, 0xdc, 0x5d, 0x4c, 0xab, 0x94, 0x29, 0xa4, 0x3e, 0xf8, 0xed, 0xfc, 0xd8, 0x95, 0x9f, - 0x00, 0xd4, 0x68, 0xd3, 0xc7, 0xb6, 0x2c, 0x0d, 0x05, 0x38, 0x53, 0x5b, 0xbf, 0x61, 0x5e, 0x5f, - 0xdb, 0xaa, 0x6d, 0xac, 0x0f, 0x9a, 0x7d, 0x60, 0xad, 0xb2, 0xb1, 0x5d, 0x7e, 0xb7, 0x6a, 0xd5, - 0x6b, 0x6f, 0xad, 0xe7, 0x0c, 0x74, 0x16, 0x4e, 0x0e, 0xac, 0x7d, 0x7f, 0x7d, 0xab, 0xf6, 0x5e, - 0x35, 0x97, 0x28, 0x5f, 0xfb, 0xf4, 0xf1, 0xbc, 0xf1, 0xe0, 0xf1, 0xbc, 0xf1, 0xf7, 0xc7, 0xf3, - 0xc6, 0x87, 0x4f, 0xe6, 0xc7, 0x1e, 0x3c, 0x99, 0x1f, 0xfb, 0xcb, 0x93, 0xf9, 0xb1, 0x1f, 0xbd, - 0x32, 0x90, 0x8c, 0xd1, 0x71, 0x24, 0xff, 0xb3, 0xd0, 0x48, 0xcb, 0xa8, 0xf9, 0xd6, 0x7f, 0x03, - 0x00, 0x00, 0xff, 0xff, 0x3a, 0x28, 0x52, 0x25, 0xd1, 0x19, 0x00, 0x00, + // 2065 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x59, 0x4b, 0x6c, 0x1b, 0xc7, + 0x19, 0xd6, 0x92, 0x0c, 0x25, 0xfd, 0x94, 0x44, 0x6a, 0xfc, 0xa2, 0xe8, 0x58, 0x92, 0x19, 0xb7, + 0x91, 0xdd, 0x9a, 0x8a, 0xdc, 0xc2, 0x05, 0x84, 0x20, 0x85, 0x29, 0xd2, 0x31, 0xf3, 0x90, 0xd4, + 0xa5, 0xa4, 0x3e, 0xd0, 0x66, 0x31, 0xdc, 0x1d, 0x52, 0x5b, 0x91, 0xb3, 0xec, 0xce, 0x50, 0x36, + 0xef, 0x3d, 0x04, 0x2e, 0x0a, 0xe4, 0x54, 0x04, 0x28, 0x8c, 0x1a, 0xe8, 0x25, 0xbd, 0xe5, 0x60, + 0xf4, 0xde, 0x5b, 0x5a, 0xa0, 0x80, 0xe1, 0x53, 0x11, 0xa0, 0x6e, 0x61, 0x1f, 0x12, 0x34, 0x97, + 0xa2, 0xa7, 0x1e, 0x8b, 0x79, 0xec, 0x83, 0xa2, 0x68, 0x59, 0x72, 0x50, 0x04, 0xed, 0x45, 0xe0, + 0xcc, 0xfc, 0xff, 0xb7, 0xf3, 0x7f, 0xf3, 0x3f, 0x66, 0x7e, 0xc1, 0x25, 0xdb, 0x63, 0x1d, 0x8f, + 0x2d, 0x33, 0x8e, 0xf7, 0x5c, 0xda, 0x5a, 0xde, 0x5f, 0x69, 0x10, 0x8e, 0x57, 0x82, 0x71, 0xa9, + 0xeb, 0x7b, 0xdc, 0x43, 0x67, 0x95, 0x54, 0x29, 0x98, 0xd5, 0x52, 0x85, 0xd3, 0x2d, 0xaf, 0xe5, + 0x49, 0x91, 0x65, 0xf1, 0x4b, 0x49, 0x17, 0xe6, 0x5a, 0x9e, 0xd7, 0x6a, 0x93, 0x65, 0x39, 0x6a, + 0xf4, 0x9a, 0xcb, 0x98, 0xf6, 0xf5, 0xd2, 0xfc, 0xc1, 0x25, 0xa7, 0xe7, 0x63, 0xee, 0x7a, 0x54, + 0xaf, 0x2f, 0x1c, 0x5c, 0xe7, 0x6e, 0x87, 0x30, 0x8e, 0x3b, 0xdd, 0x00, 0x5b, 0xed, 0xc4, 0x52, + 0x1f, 0xd5, 0xdb, 0xd2, 0xd8, 0xda, 0x94, 0x06, 0x66, 0x24, 0xb4, 0xc3, 0xf6, 0xdc, 0x00, 0x7b, + 0x16, 0x77, 0x5c, 0xea, 0x2d, 0xcb, 0xbf, 0x7a, 0xea, 0x82, 0xed, 0x75, 0x08, 0x6f, 0x34, 0xf9, + 0x32, 0xef, 0x77, 0x09, 0x5b, 0xde, 0x5f, 0x51, 0x3f, 0xf4, 0xf2, 0xcb, 0xe1, 0x32, 0x6e, 0xd8, + 0xee, 0x81, 0xd5, 0xe2, 0x87, 0x06, 0xcc, 0xdc, 0x72, 0x19, 0xf7, 0x7c, 0xd7, 0xc6, 0xed, 0x1a, + 0x6d, 0x7a, 0xe8, 0x75, 0x48, 0xef, 0x12, 0xec, 0x10, 0x3f, 0x6f, 0x2c, 0x1a, 0x4b, 0x99, 0x6b, + 0x73, 0xa5, 0x00, 0xa1, 0xa4, 0x34, 0xf7, 0x57, 0x4a, 0xb7, 0xa4, 0x40, 0x79, 0xf2, 0x93, 0xc7, + 0x0b, 0x63, 0x1f, 0x7d, 0xf6, 0xf1, 0x15, 0xc3, 0xd4, 0x3a, 0xa8, 0x02, 0xe9, 0x7d, 0xdc, 0x66, + 0x84, 0xe7, 0x13, 0x8b, 0xc9, 0xa5, 0xcc, 0xb5, 0x8b, 0xa5, 0xc3, 0x69, 0x2f, 0xed, 0xe0, 0xb6, + 0xeb, 0x60, 0xee, 0x0d, 0xa2, 0x28, 0xdd, 0xd5, 0x44, 0xde, 0x28, 0xfe, 0x2a, 0x01, 0xd9, 0x35, + 0xaf, 0xd3, 0x71, 0x19, 0x73, 0x3d, 0x6a, 0x62, 0x4e, 0x18, 0x7a, 0x0b, 0x52, 0x3e, 0xe6, 0x44, + 0xee, 0x6c, 0xb2, 0x7c, 0x5d, 0x28, 0x7e, 0xfa, 0x78, 0xe1, 0xbc, 0xfa, 0x04, 0x73, 0xf6, 0x4a, + 0xae, 0xb7, 0xdc, 0xc1, 0x7c, 0xb7, 0xf4, 0x0e, 0x69, 0x61, 0xbb, 0x5f, 0x21, 0xf6, 0xa3, 0x07, + 0x57, 0x41, 0xef, 0xa0, 0x42, 0x6c, 0xf5, 0x15, 0x89, 0x81, 0xbe, 0x07, 0x13, 0x1d, 0x7c, 0xc7, + 0x92, 0x78, 0x89, 0x17, 0xc2, 0x1b, 0xef, 0xe0, 0x3b, 0x62, 0x7f, 0xe8, 0x3d, 0xc8, 0x0a, 0x48, + 0x7b, 0x17, 0xd3, 0x16, 0x51, 0xc8, 0xc9, 0x17, 0x42, 0x9e, 0xee, 0xe0, 0x3b, 0x6b, 0x12, 0x4d, + 0xe0, 0xaf, 0xa6, 0x3e, 0xbf, 0xbf, 0x60, 0x14, 0xff, 0x60, 0x00, 0x44, 0xc4, 0x20, 0x0c, 0x39, + 0x3b, 0x1c, 0xc9, 0x8f, 0x32, 0x7d, 0x72, 0xaf, 0x8e, 0xe2, 0xfe, 0x00, 0xad, 0xe5, 0x69, 0xb1, + 0xbd, 0x87, 0x8f, 0x17, 0x0c, 0xf5, 0xd5, 0xac, 0x3d, 0x44, 0x7b, 0xa6, 0xd7, 0x75, 0x30, 0x27, + 0x96, 0x70, 0x65, 0xc9, 0x56, 0xe6, 0x5a, 0xa1, 0xa4, 0xfc, 0xbc, 0x14, 0xf8, 0x79, 0x69, 0x2b, + 0xf0, 0x73, 0x05, 0xf8, 0xc1, 0xdf, 0x02, 0x40, 0x50, 0xda, 0x62, 0x5d, 0xdb, 0xf0, 0x91, 0x01, + 0x99, 0x0a, 0x61, 0xb6, 0xef, 0x76, 0x45, 0xe4, 0xa0, 0x3c, 0x8c, 0x77, 0x3c, 0xea, 0xee, 0x69, + 0xaf, 0x9b, 0x34, 0x83, 0x21, 0x2a, 0xc0, 0x84, 0xeb, 0x10, 0xca, 0x5d, 0xde, 0x57, 0xc7, 0x64, + 0x86, 0x63, 0xa1, 0x75, 0x9b, 0x34, 0x98, 0x1b, 0xf0, 0x6c, 0x06, 0x43, 0x74, 0x19, 0x72, 0x8c, + 0xd8, 0x3d, 0xdf, 0xe5, 0x7d, 0xcb, 0xf6, 0x28, 0xc7, 0x36, 0xcf, 0xa7, 0xa4, 0x48, 0x36, 0x98, + 0x5f, 0x53, 0xd3, 0x02, 0xc4, 0x21, 0x1c, 0xbb, 0x6d, 0x96, 0x7f, 0x49, 0x81, 0xe8, 0xa1, 0xde, + 0xea, 0xbd, 0x71, 0x98, 0x0c, 0x9d, 0x15, 0xad, 0x41, 0xce, 0xeb, 0x12, 0x5f, 0xfc, 0xb6, 0xb0, + 0xe3, 0xf8, 0x84, 0x31, 0xed, 0x8d, 0xf9, 0x47, 0x0f, 0xae, 0x9e, 0xd6, 0x84, 0xdf, 0x50, 0x2b, + 0x75, 0xee, 0xbb, 0xb4, 0x65, 0x66, 0x03, 0x0d, 0x3d, 0x8d, 0x7e, 0x28, 0x8e, 0x8c, 0x32, 0x42, + 0x59, 0x8f, 0x59, 0xdd, 0x5e, 0x63, 0x8f, 0xf4, 0x35, 0xa9, 0xa7, 0x87, 0x48, 0xbd, 0x41, 0xfb, + 0xe5, 0xfc, 0x9f, 0x22, 0x68, 0xdb, 0xef, 0x77, 0xb9, 0x57, 0xda, 0xec, 0x35, 0xde, 0x26, 0x7d, + 0x71, 0x54, 0x1a, 0x67, 0x53, 0xc2, 0xa0, 0xb3, 0x90, 0xfe, 0x29, 0x76, 0xdb, 0xc4, 0x91, 0x8c, + 0x4c, 0x98, 0x7a, 0x84, 0x56, 0x21, 0xcd, 0x38, 0xe6, 0x3d, 0x26, 0x69, 0x98, 0xb9, 0x56, 0x1c, + 0xe5, 0x1b, 0x65, 0x8f, 0x3a, 0x75, 0x29, 0x69, 0x6a, 0x0d, 0xb4, 0x06, 0x69, 0xee, 0xed, 0x11, + 0xaa, 0x09, 0x2a, 0x7f, 0x43, 0x7b, 0xf3, 0x99, 0x61, 0x6f, 0xae, 0x51, 0x1e, 0xf3, 0xe3, 0x1a, + 0xe5, 0xa6, 0x56, 0x45, 0x3f, 0x86, 0x9c, 0x43, 0xda, 0xa4, 0x25, 0x99, 0x63, 0xbb, 0xd8, 0x27, + 0x2c, 0x9f, 0x96, 0x70, 0x2b, 0xc7, 0x0e, 0x0e, 0x33, 0x1b, 0x42, 0xd5, 0x25, 0x12, 0xda, 0x84, + 0x8c, 0x13, 0xb9, 0x53, 0x7e, 0x5c, 0x92, 0xf9, 0xca, 0x28, 0x1b, 0x63, 0x9e, 0x17, 0xcf, 0x3e, + 0x71, 0x08, 0xe1, 0x41, 0x3d, 0xda, 0xf0, 0xa8, 0xe3, 0xd2, 0x96, 0xb5, 0x4b, 0xdc, 0xd6, 0x2e, + 0xcf, 0x4f, 0x2c, 0x1a, 0x4b, 0x49, 0x33, 0x1b, 0xce, 0xdf, 0x92, 0xd3, 0x68, 0x13, 0x66, 0x22, + 0x51, 0x19, 0x21, 0x93, 0xc7, 0x8d, 0x90, 0xe9, 0x10, 0x40, 0x88, 0xa0, 0x77, 0x01, 0xa2, 0x18, + 0xcc, 0x83, 0x44, 0x2b, 0x1e, 0x1d, 0xcd, 0x71, 0x63, 0x62, 0x00, 0x88, 0xc2, 0xa9, 0x8e, 0x4b, + 0x2d, 0x46, 0xda, 0x4d, 0x4b, 0x33, 0x27, 0x70, 0x33, 0x92, 0xfe, 0x37, 0x8e, 0x71, 0x9a, 0x9f, + 0x3e, 0xb8, 0x9a, 0x55, 0xa3, 0xab, 0xcc, 0xd9, 0x5b, 0x7c, 0xad, 0xf4, 0xed, 0xef, 0x98, 0xb3, + 0x1d, 0x97, 0xd6, 0x49, 0xbb, 0x59, 0x09, 0x81, 0xd1, 0xeb, 0x70, 0x3e, 0x22, 0xc4, 0xa3, 0xd6, + 0xae, 0xd7, 0x76, 0x2c, 0x9f, 0x34, 0x2d, 0xdb, 0xeb, 0x51, 0x9e, 0x9f, 0x92, 0x34, 0x9e, 0x0b, + 0x45, 0x36, 0xe8, 0x2d, 0xaf, 0xed, 0x98, 0xa4, 0xb9, 0x26, 0x96, 0xd1, 0x2b, 0x10, 0xb1, 0x61, + 0xb9, 0x0e, 0xcb, 0x4f, 0x2f, 0x26, 0x97, 0x52, 0xe6, 0x54, 0x38, 0x59, 0x73, 0xd8, 0xea, 0xc4, + 0xfb, 0xf7, 0x17, 0xc6, 0x3e, 0xbf, 0xbf, 0x30, 0x56, 0xbc, 0x09, 0x53, 0x3b, 0xb8, 0xad, 0x43, + 0x8b, 0x30, 0x74, 0x1d, 0x26, 0x71, 0x30, 0xc8, 0x1b, 0x8b, 0xc9, 0x67, 0x86, 0x66, 0x24, 0x5a, + 0xfc, 0x9d, 0x01, 0xe9, 0xca, 0xce, 0x26, 0x76, 0x7d, 0x54, 0x85, 0xd9, 0xc8, 0x57, 0x9f, 0x37, + 0xca, 0x23, 0xf7, 0x0e, 0xc2, 0x7c, 0x1d, 0x66, 0xf7, 0x83, 0xc4, 0x11, 0xc2, 0xa8, 0x52, 0x73, + 0xf1, 0xd1, 0x83, 0xab, 0x17, 0x34, 0x4c, 0x98, 0x5c, 0x0e, 0xe0, 0xed, 0x1f, 0x98, 0x8f, 0xd9, + 0xfc, 0x16, 0x8c, 0xab, 0xad, 0x32, 0xf4, 0x5d, 0x78, 0xa9, 0x2b, 0x7e, 0x48, 0x53, 0x33, 0xd7, + 0xe6, 0x47, 0xfa, 0xbc, 0x94, 0x8f, 0x7b, 0x88, 0xd2, 0x2b, 0xfe, 0x22, 0x01, 0x50, 0xd9, 0xd9, + 0xd9, 0xf2, 0xdd, 0x6e, 0x9b, 0xf0, 0x2f, 0xcb, 0xf6, 0x6d, 0x38, 0x13, 0xd9, 0xce, 0x7c, 0xfb, + 0xf8, 0xf6, 0x9f, 0x0a, 0xf5, 0xeb, 0xbe, 0x7d, 0x28, 0xac, 0xc3, 0x78, 0x08, 0x9b, 0x3c, 0x3e, + 0x6c, 0x85, 0xf1, 0x61, 0x66, 0x7f, 0x00, 0x99, 0x88, 0x0c, 0x86, 0x6a, 0x30, 0xc1, 0xf5, 0x6f, + 0x4d, 0x70, 0x71, 0x34, 0xc1, 0x81, 0x5a, 0x9c, 0xe4, 0x50, 0xbd, 0xf8, 0x6f, 0x03, 0x20, 0x16, + 0x23, 0x5f, 0x4d, 0x1f, 0x43, 0x35, 0x48, 0xeb, 0xe4, 0x9c, 0x3c, 0x69, 0x72, 0xd6, 0x00, 0x31, + 0x52, 0x7f, 0x99, 0x80, 0x53, 0xdb, 0x41, 0xf4, 0x7e, 0xf5, 0x39, 0xd8, 0x86, 0x71, 0x42, 0xb9, + 0xef, 0x4a, 0x12, 0xc4, 0x99, 0xbf, 0x36, 0xea, 0xcc, 0x0f, 0x31, 0xaa, 0x4a, 0xb9, 0xdf, 0x8f, + 0x7b, 0x40, 0x80, 0x15, 0xe3, 0xe3, 0xd7, 0x49, 0xc8, 0x8f, 0x52, 0x45, 0xaf, 0x42, 0xd6, 0xf6, + 0x89, 0x9c, 0x08, 0xea, 0x8e, 0x21, 0x13, 0xe6, 0x4c, 0x30, 0xad, 0xcb, 0x8e, 0x09, 0xe2, 0xa2, + 0x26, 0x9c, 0x4b, 0x88, 0x9e, 0xec, 0x66, 0x36, 0x13, 0x21, 0xc8, 0xc2, 0xb3, 0x05, 0x59, 0x97, + 0xba, 0xdc, 0xc5, 0x6d, 0xab, 0x81, 0xdb, 0x98, 0xda, 0xc1, 0x0d, 0xf6, 0x58, 0x35, 0x7f, 0x46, + 0x63, 0x94, 0x15, 0x04, 0xaa, 0xc2, 0x78, 0x80, 0x96, 0x3a, 0x3e, 0x5a, 0xa0, 0x8b, 0x2e, 0xc2, + 0x54, 0xbc, 0x30, 0xc8, 0xdb, 0x48, 0xca, 0xcc, 0xc4, 0xea, 0xc2, 0x51, 0x95, 0x27, 0xfd, 0xcc, + 0xca, 0xa3, 0x2f, 0x7c, 0xbf, 0x49, 0xc2, 0xac, 0x49, 0x9c, 0xff, 0xfd, 0x63, 0xd9, 0x04, 0x50, + 0xa1, 0x2a, 0x32, 0xa9, 0x3e, 0x99, 0x13, 0xc4, 0xfb, 0xa4, 0x02, 0xa9, 0x30, 0xfe, 0xdf, 0x3a, + 0xa1, 0xbf, 0x26, 0x60, 0x2a, 0x7e, 0x42, 0xff, 0x97, 0x45, 0x0b, 0xad, 0x47, 0x69, 0x2a, 0x25, + 0xd3, 0xd4, 0xe5, 0x51, 0x69, 0x6a, 0xc8, 0x9b, 0x8f, 0xc8, 0x4f, 0x5f, 0x24, 0x21, 0xbd, 0x89, + 0x7d, 0xdc, 0x61, 0x68, 0x63, 0xe8, 0x6e, 0x1b, 0x74, 0x05, 0x0e, 0x3a, 0x73, 0x45, 0x77, 0x41, + 0x94, 0x2f, 0x7f, 0x38, 0xea, 0x6a, 0xfb, 0x35, 0x98, 0x11, 0x6f, 0xe4, 0xd0, 0x20, 0x45, 0xee, + 0xb4, 0x7c, 0xea, 0x86, 0xd6, 0x33, 0xb4, 0x00, 0x19, 0x21, 0x16, 0xe5, 0x61, 0x21, 0x03, 0x1d, + 0x7c, 0xa7, 0xaa, 0x66, 0xd0, 0x0a, 0xa0, 0xdd, 0xb0, 0x71, 0x61, 0x45, 0x44, 0x18, 0x4b, 0xd3, + 0xe5, 0x44, 0xde, 0x30, 0x67, 0xa3, 0xd5, 0x40, 0xe5, 0x02, 0x80, 0xd8, 0x89, 0xe5, 0x10, 0xea, + 0x75, 0xf4, 0x63, 0x6f, 0x52, 0xcc, 0x54, 0xc4, 0x04, 0xfa, 0xb9, 0xa1, 0xae, 0xc9, 0x07, 0x5e, + 0xd3, 0xfa, 0x95, 0xb2, 0xf5, 0x1c, 0x81, 0xf1, 0xaf, 0xc7, 0x0b, 0x85, 0x3e, 0xee, 0xb4, 0x57, + 0x8b, 0x87, 0xe0, 0x14, 0x0f, 0x7b, 0xe0, 0x8b, 0xcb, 0xf3, 0xe0, 0x6b, 0x1c, 0xd5, 0x20, 0xb7, + 0x47, 0xfa, 0x96, 0xef, 0x71, 0x95, 0x6c, 0x9a, 0x84, 0xe8, 0xf7, 0xcc, 0x5c, 0x70, 0xbe, 0x0d, + 0xcc, 0x48, 0xec, 0xfa, 0xef, 0xd2, 0x72, 0x4a, 0xec, 0xce, 0x9c, 0xd9, 0x23, 0x7d, 0x53, 0xeb, + 0xdd, 0x24, 0x64, 0xf5, 0x92, 0x88, 0x96, 0xbb, 0x9f, 0x7d, 0x7c, 0xe5, 0x7c, 0x74, 0x69, 0x5f, + 0xbe, 0x13, 0xf6, 0xc9, 0xd4, 0x11, 0x8b, 0x8b, 0x2f, 0x8a, 0x8a, 0x90, 0x49, 0x58, 0x57, 0xbc, + 0x29, 0xc5, 0x1b, 0x24, 0xf6, 0x56, 0x30, 0x9e, 0xfd, 0x06, 0x89, 0xf4, 0x07, 0xde, 0x20, 0xb1, + 0x10, 0x7d, 0x23, 0xaa, 0x01, 0x89, 0xa3, 0xac, 0x89, 0x7b, 0xa7, 0x56, 0x92, 0x91, 0x3f, 0x56, + 0xfc, 0xb3, 0x01, 0x73, 0x43, 0xde, 0x1c, 0x6e, 0xd9, 0x06, 0xe4, 0xc7, 0x16, 0xa5, 0x57, 0xf4, + 0xf5, 0xd6, 0x4f, 0x16, 0x1c, 0xb3, 0xfe, 0x50, 0x21, 0xf8, 0x72, 0x8a, 0x99, 0xce, 0x64, 0x7f, + 0x34, 0xe0, 0x74, 0x7c, 0x03, 0xa1, 0x29, 0x75, 0x98, 0x8a, 0x7f, 0x5a, 0x1b, 0x71, 0xe9, 0x79, + 0x8c, 0x88, 0xef, 0x7f, 0x00, 0x04, 0xed, 0x44, 0x19, 0x43, 0x75, 0xe7, 0x56, 0x9e, 0x9b, 0x94, + 0x60, 0x63, 0x87, 0x66, 0x0e, 0x75, 0x36, 0x5f, 0x18, 0x90, 0xda, 0xf4, 0xbc, 0x36, 0xfa, 0x19, + 0xcc, 0x52, 0x8f, 0x5b, 0x22, 0xb2, 0x88, 0x63, 0xe9, 0xd6, 0x81, 0xca, 0xc6, 0xd5, 0x67, 0x72, + 0xf5, 0x8f, 0xc7, 0x0b, 0xc3, 0x9a, 0x83, 0x04, 0xea, 0x0e, 0x15, 0xf5, 0x78, 0x59, 0x0a, 0x6d, + 0xa9, 0xee, 0x42, 0x13, 0xa6, 0x07, 0x3f, 0xa7, 0x32, 0xf6, 0x8d, 0xa3, 0x3e, 0x37, 0x7d, 0xe4, + 0xa7, 0xa6, 0x1a, 0xb1, 0xef, 0xac, 0x4e, 0x88, 0x53, 0xfb, 0xa7, 0x38, 0xb9, 0xf7, 0x20, 0x17, + 0xa6, 0xab, 0x6d, 0xd9, 0xde, 0x62, 0xe8, 0x26, 0x8c, 0xab, 0x4e, 0x57, 0xf0, 0x58, 0xb8, 0x18, + 0xf5, 0x4e, 0x71, 0xc3, 0x76, 0x4b, 0xfb, 0xb1, 0xbe, 0xa7, 0x52, 0x1a, 0xe0, 0x53, 0x2b, 0xcb, + 0xf6, 0xe7, 0xc3, 0x04, 0xcc, 0xad, 0x79, 0x94, 0xe9, 0x46, 0x8f, 0x8e, 0x6a, 0xd5, 0xab, 0xed, + 0xa3, 0xcb, 0x23, 0xda, 0x50, 0x53, 0xc3, 0xcd, 0xa6, 0x1d, 0xc8, 0x8a, 0x12, 0x6b, 0x7b, 0xf4, + 0x05, 0x7b, 0x4d, 0xd3, 0x5e, 0xdb, 0xd1, 0x3b, 0xda, 0x23, 0x7d, 0x81, 0x4b, 0xc9, 0xed, 0x01, + 0xdc, 0xe4, 0xc9, 0x70, 0x29, 0xb9, 0x1d, 0xc3, 0x3d, 0x0b, 0x69, 0x7d, 0xbf, 0x4a, 0xc9, 0xdb, + 0x83, 0x1e, 0xa1, 0xeb, 0x90, 0x14, 0xa9, 0xf0, 0xa5, 0x63, 0x24, 0x0f, 0xa1, 0x10, 0x2b, 0x6b, + 0x75, 0x98, 0xd3, 0x9d, 0x02, 0xb6, 0xd1, 0x94, 0x8c, 0x12, 0x69, 0xd0, 0xdb, 0xa4, 0x7f, 0x48, + 0xdb, 0x60, 0xea, 0xb9, 0xda, 0x06, 0x57, 0x7e, 0x6f, 0x00, 0x44, 0x3d, 0x33, 0xf4, 0x4d, 0x38, + 0x57, 0xde, 0x58, 0xaf, 0x58, 0xf5, 0xad, 0x1b, 0x5b, 0xdb, 0x75, 0x6b, 0x7b, 0xbd, 0xbe, 0x59, + 0x5d, 0xab, 0xdd, 0xac, 0x55, 0x2b, 0xb9, 0xb1, 0x42, 0xf6, 0xee, 0xbd, 0xc5, 0xcc, 0x36, 0x65, + 0x5d, 0x62, 0xbb, 0x4d, 0x97, 0x38, 0xe8, 0xeb, 0x70, 0x7a, 0x50, 0x5a, 0x8c, 0xaa, 0x95, 0x9c, + 0x51, 0x98, 0xba, 0x7b, 0x6f, 0x71, 0x42, 0xbd, 0x11, 0x88, 0x83, 0x96, 0xe0, 0xcc, 0xb0, 0x5c, + 0x6d, 0xfd, 0xcd, 0x5c, 0xa2, 0x30, 0x7d, 0xf7, 0xde, 0xe2, 0x64, 0xf8, 0x98, 0x40, 0x45, 0x40, + 0x71, 0x49, 0x8d, 0x97, 0x2c, 0xc0, 0xdd, 0x7b, 0x8b, 0x69, 0x15, 0x32, 0x85, 0xd4, 0xfb, 0xbf, + 0x9d, 0x1f, 0xbb, 0xf2, 0x13, 0x80, 0x1a, 0x6d, 0xfa, 0xd8, 0x96, 0xa9, 0xa1, 0x00, 0x67, 0x6b, + 0xeb, 0x37, 0xcd, 0x1b, 0x6b, 0x5b, 0xb5, 0x8d, 0xf5, 0xc1, 0x6d, 0x1f, 0x58, 0xab, 0x6c, 0x6c, + 0x97, 0xdf, 0xa9, 0x5a, 0xf5, 0xda, 0x9b, 0xeb, 0x39, 0x03, 0x9d, 0x83, 0x53, 0x03, 0x6b, 0xdf, + 0x5f, 0xdf, 0xaa, 0xbd, 0x5b, 0xcd, 0x25, 0xca, 0xd7, 0x3f, 0x79, 0x32, 0x6f, 0x3c, 0x7c, 0x32, + 0x6f, 0xfc, 0xfd, 0xc9, 0xbc, 0xf1, 0xc1, 0xd3, 0xf9, 0xb1, 0x87, 0x4f, 0xe7, 0xc7, 0xfe, 0xf2, + 0x74, 0x7e, 0xec, 0x47, 0x2f, 0x0f, 0x04, 0x63, 0x54, 0x8e, 0xe4, 0x7f, 0x17, 0x1a, 0x69, 0xe9, + 0x35, 0xdf, 0xfa, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf4, 0xd1, 0x83, 0x1f, 0xd5, 0x19, 0x00, + 0x00, } func (this *Pool) Description() (desc *github_com_cosmos_gogoproto_protoc_gen_gogo_descriptor.FileDescriptorSet) { @@ -1521,732 +1523,733 @@ func (this *Pool) Description() (desc *github_com_cosmos_gogoproto_protoc_gen_go func StakingDescription() (desc *github_com_cosmos_gogoproto_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_cosmos_gogoproto_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 11600 bytes of a gzipped FileDescriptorSet + // 11605 bytes of a gzipped FileDescriptorSet 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x7b, 0x70, 0x23, 0x57, 0x76, 0x1f, 0x3c, 0x0d, 0x80, 0x20, 0x70, 0x00, 0x10, 0xcd, 0x4b, 0xce, 0x0c, 0x87, 0x23, 0x0d, 0x39, 0x18, 0x49, 0x33, 0x1a, 0x49, 0x1c, 0xcd, 0x48, 0x1a, 0x49, 0xd0, 0xcb, 0x00, 0x09, 0x72, 0x30, 0xe2, 0x6b, 0x1b, 0x20, 0x57, 0x92, 0x1f, 0xed, 0x66, 0xe3, 0x92, 0x6c, 0x0d, 0xd0, 0xdd, 0xdb, 0xdd, 0x98, 0x21, 0xf5, 0x7d, 0xf5, 0xd5, 0xfa, 0xf3, 0xe3, 0xb3, 0xe5, 0xc7, 0xb7, 0x8e, 0x1d, 0x7b, 0xbd, 0xbb, 0xb3, 0x5e, 0xdb, 0xb1, 0x77, 0xd7, 0x4e, 0x1c, 0x3b, 0xbb, 0x7e, 0xc5, - 0x95, 0x87, 0x53, 0x89, 0x63, 0x3b, 0x15, 0x67, 0xed, 0x3f, 0x12, 0x97, 0xab, 0xac, 0xd8, 0xbb, - 0xae, 0xda, 0x8d, 0xbd, 0x76, 0x6c, 0x67, 0xd7, 0xe5, 0xca, 0x56, 0x52, 0xa9, 0xfb, 0xea, 0x07, - 0xd0, 0x20, 0xc0, 0x91, 0xb4, 0x76, 0xec, 0xfc, 0x33, 0xc3, 0xbe, 0xf7, 0x9c, 0x5f, 0xdf, 0x7b, - 0xee, 0xb9, 0xe7, 0x9c, 0x7b, 0xee, 0xed, 0x0b, 0xf8, 0x83, 0x2a, 0xcc, 0xef, 0x59, 0xd6, 0x5e, - 0x1b, 0x5f, 0xb1, 0x1d, 0xcb, 0xb3, 0x76, 0xba, 0xbb, 0x57, 0x5a, 0xd8, 0xd5, 0x1d, 0xc3, 0xf6, - 0x2c, 0x67, 0x81, 0x96, 0xa1, 0x22, 0xa3, 0x58, 0x10, 0x14, 0xa5, 0x35, 0x98, 0x5c, 0x36, 0xda, - 0x78, 0xc9, 0x27, 0x6c, 0x60, 0x0f, 0x3d, 0x03, 0xa9, 0x5d, 0xa3, 0x8d, 0x67, 0xa4, 0xf9, 0xe4, - 0xa5, 0xdc, 0xb5, 0x07, 0x16, 0x7a, 0x98, 0x16, 0xa2, 0x1c, 0x9b, 0xa4, 0x58, 0xa1, 0x1c, 0xa5, - 0xff, 0x99, 0x82, 0xa9, 0x98, 0x5a, 0x84, 0x20, 0x65, 0x6a, 0x1d, 0x82, 0x28, 0x5d, 0xca, 0x2a, - 0xf4, 0x6f, 0x34, 0x03, 0xe3, 0xb6, 0xa6, 0xdf, 0xd2, 0xf6, 0xf0, 0x4c, 0x82, 0x16, 0x8b, 0x47, - 0x74, 0x0e, 0xa0, 0x85, 0x6d, 0x6c, 0xb6, 0xb0, 0xa9, 0x1f, 0xce, 0x24, 0xe7, 0x93, 0x97, 0xb2, - 0x4a, 0xa8, 0x04, 0x3d, 0x02, 0x93, 0x76, 0x77, 0xa7, 0x6d, 0xe8, 0x6a, 0x88, 0x0c, 0xe6, 0x93, - 0x97, 0xc6, 0x14, 0x99, 0x55, 0x2c, 0x05, 0xc4, 0x17, 0xa1, 0x78, 0x07, 0x6b, 0xb7, 0xc2, 0xa4, - 0x39, 0x4a, 0x3a, 0x41, 0x8a, 0x43, 0x84, 0x8b, 0x90, 0xef, 0x60, 0xd7, 0xd5, 0xf6, 0xb0, 0xea, - 0x1d, 0xda, 0x78, 0x26, 0x45, 0x7b, 0x3f, 0xdf, 0xd7, 0xfb, 0xde, 0x9e, 0xe7, 0x38, 0x57, 0xf3, - 0xd0, 0xc6, 0xa8, 0x02, 0x59, 0x6c, 0x76, 0x3b, 0x0c, 0x61, 0x6c, 0x80, 0xfc, 0x6a, 0x66, 0xb7, - 0xd3, 0x8b, 0x92, 0x21, 0x6c, 0x1c, 0x62, 0xdc, 0xc5, 0xce, 0x6d, 0x43, 0xc7, 0x33, 0x69, 0x0a, - 0x70, 0xb1, 0x0f, 0xa0, 0xc1, 0xea, 0x7b, 0x31, 0x04, 0x1f, 0x5a, 0x84, 0x2c, 0x3e, 0xf0, 0xb0, - 0xe9, 0x1a, 0x96, 0x39, 0x33, 0x4e, 0x41, 0x1e, 0x8c, 0x19, 0x45, 0xdc, 0x6e, 0xf5, 0x42, 0x04, - 0x7c, 0xe8, 0x3a, 0x8c, 0x5b, 0xb6, 0x67, 0x58, 0xa6, 0x3b, 0x93, 0x99, 0x97, 0x2e, 0xe5, 0xae, - 0xdd, 0x17, 0xab, 0x08, 0x1b, 0x8c, 0x46, 0x11, 0xc4, 0xa8, 0x0e, 0xb2, 0x6b, 0x75, 0x1d, 0x1d, - 0xab, 0xba, 0xd5, 0xc2, 0xaa, 0x61, 0xee, 0x5a, 0x33, 0x59, 0x0a, 0x30, 0xd7, 0xdf, 0x11, 0x4a, - 0xb8, 0x68, 0xb5, 0x70, 0xdd, 0xdc, 0xb5, 0x94, 0x09, 0x37, 0xf2, 0x8c, 0x4e, 0x41, 0xda, 0x3d, - 0x34, 0x3d, 0xed, 0x60, 0x26, 0x4f, 0x35, 0x84, 0x3f, 0x11, 0xd5, 0xc1, 0x2d, 0x83, 0xbc, 0x6e, - 0xa6, 0xc0, 0x54, 0x87, 0x3f, 0x96, 0x7e, 0x29, 0x0d, 0xc5, 0x51, 0x94, 0xef, 0x39, 0x18, 0xdb, - 0x25, 0xfd, 0x9f, 0x49, 0x1c, 0x47, 0x3a, 0x8c, 0x27, 0x2a, 0xde, 0xf4, 0x3d, 0x8a, 0xb7, 0x02, - 0x39, 0x13, 0xbb, 0x1e, 0x6e, 0x31, 0x5d, 0x49, 0x8e, 0xa8, 0x6d, 0xc0, 0x98, 0xfa, 0x95, 0x2d, - 0x75, 0x4f, 0xca, 0xf6, 0x0a, 0x14, 0xfd, 0x26, 0xa9, 0x8e, 0x66, 0xee, 0x09, 0xad, 0xbd, 0x32, - 0xac, 0x25, 0x0b, 0x35, 0xc1, 0xa7, 0x10, 0x36, 0x65, 0x02, 0x47, 0x9e, 0xd1, 0x12, 0x80, 0x65, - 0x62, 0x6b, 0x57, 0x6d, 0x61, 0xbd, 0x3d, 0x93, 0x19, 0x20, 0xa5, 0x0d, 0x42, 0xd2, 0x27, 0x25, - 0x8b, 0x95, 0xea, 0x6d, 0xf4, 0x6c, 0xa0, 0x84, 0xe3, 0x03, 0x74, 0x68, 0x8d, 0x4d, 0xbf, 0x3e, - 0x3d, 0xdc, 0x82, 0x09, 0x07, 0x93, 0x19, 0x81, 0x5b, 0xbc, 0x67, 0x59, 0xda, 0x88, 0x85, 0xa1, - 0x3d, 0x53, 0x38, 0x1b, 0xeb, 0x58, 0xc1, 0x09, 0x3f, 0xa2, 0x0b, 0xe0, 0x17, 0xa8, 0x54, 0xad, - 0x80, 0xda, 0xa7, 0xbc, 0x28, 0x5c, 0xd7, 0x3a, 0x78, 0xf6, 0x0d, 0x98, 0x88, 0x8a, 0x07, 0x4d, - 0xc3, 0x98, 0xeb, 0x69, 0x8e, 0x47, 0xb5, 0x70, 0x4c, 0x61, 0x0f, 0x48, 0x86, 0x24, 0x36, 0x5b, - 0xd4, 0xfe, 0x8d, 0x29, 0xe4, 0x4f, 0xf4, 0x35, 0x41, 0x87, 0x93, 0xb4, 0xc3, 0x0f, 0xf5, 0x8f, - 0x68, 0x04, 0xb9, 0xb7, 0xdf, 0xb3, 0x4f, 0x43, 0x21, 0xd2, 0x81, 0x51, 0x5f, 0x5d, 0xfa, 0xbf, - 0xe1, 0x64, 0x2c, 0x34, 0x7a, 0x05, 0xa6, 0xbb, 0xa6, 0x61, 0x7a, 0xd8, 0xb1, 0x1d, 0x4c, 0x34, - 0x96, 0xbd, 0x6a, 0xe6, 0xf3, 0xe3, 0x03, 0x74, 0x6e, 0x2b, 0x4c, 0xcd, 0x50, 0x94, 0xa9, 0x6e, - 0x7f, 0xe1, 0xe5, 0x6c, 0xe6, 0x0b, 0xe3, 0xf2, 0xfb, 0xdf, 0xff, 0xfe, 0xf7, 0x27, 0x4a, 0xbf, - 0x92, 0x86, 0xe9, 0xb8, 0x39, 0x13, 0x3b, 0x7d, 0x4f, 0x41, 0xda, 0xec, 0x76, 0x76, 0xb0, 0x43, - 0x85, 0x34, 0xa6, 0xf0, 0x27, 0x54, 0x81, 0xb1, 0xb6, 0xb6, 0x83, 0xdb, 0x33, 0xa9, 0x79, 0xe9, - 0xd2, 0xc4, 0xb5, 0x47, 0x46, 0x9a, 0x95, 0x0b, 0xab, 0x84, 0x45, 0x61, 0x9c, 0xe8, 0x45, 0x48, - 0x71, 0xe3, 0x4d, 0x10, 0x2e, 0x8f, 0x86, 0x40, 0xe6, 0x92, 0x42, 0xf9, 0xd0, 0x59, 0xc8, 0x92, - 0xff, 0x99, 0x6e, 0xa4, 0x69, 0x9b, 0x33, 0xa4, 0x80, 0xe8, 0x05, 0x9a, 0x85, 0x0c, 0x9d, 0x26, - 0x2d, 0x2c, 0x9c, 0x9e, 0xff, 0x4c, 0x14, 0xab, 0x85, 0x77, 0xb5, 0x6e, 0xdb, 0x53, 0x6f, 0x6b, - 0xed, 0x2e, 0xa6, 0x0a, 0x9f, 0x55, 0xf2, 0xbc, 0x70, 0x9b, 0x94, 0xa1, 0x39, 0xc8, 0xb1, 0x59, - 0x65, 0x98, 0x2d, 0x7c, 0x40, 0xed, 0xea, 0x98, 0xc2, 0x26, 0x5a, 0x9d, 0x94, 0x90, 0xd7, 0xbf, - 0xee, 0x5a, 0xa6, 0x50, 0x4d, 0xfa, 0x0a, 0x52, 0x40, 0x5f, 0xff, 0x74, 0xaf, 0x49, 0xbf, 0x3f, - 0xbe, 0x7b, 0x7d, 0x73, 0xe9, 0x22, 0x14, 0x29, 0xc5, 0x13, 0x7c, 0xe8, 0xb5, 0xf6, 0xcc, 0xe4, - 0xbc, 0x74, 0x29, 0xa3, 0x4c, 0xb0, 0xe2, 0x0d, 0x5e, 0x5a, 0xfa, 0xf9, 0x04, 0xa4, 0xa8, 0x61, - 0x29, 0x42, 0xae, 0xf9, 0xea, 0x66, 0x4d, 0x5d, 0xda, 0xd8, 0xaa, 0xae, 0xd6, 0x64, 0x09, 0x4d, - 0x00, 0xd0, 0x82, 0xe5, 0xd5, 0x8d, 0x4a, 0x53, 0x4e, 0xf8, 0xcf, 0xf5, 0xf5, 0xe6, 0xf5, 0x27, - 0xe5, 0xa4, 0xcf, 0xb0, 0xc5, 0x0a, 0x52, 0x61, 0x82, 0x27, 0xae, 0xc9, 0x63, 0x48, 0x86, 0x3c, - 0x03, 0xa8, 0xbf, 0x52, 0x5b, 0xba, 0xfe, 0xa4, 0x9c, 0x8e, 0x96, 0x3c, 0x71, 0x4d, 0x1e, 0x47, - 0x05, 0xc8, 0xd2, 0x92, 0xea, 0xc6, 0xc6, 0xaa, 0x9c, 0xf1, 0x31, 0x1b, 0x4d, 0xa5, 0xbe, 0xbe, - 0x22, 0x67, 0x7d, 0xcc, 0x15, 0x65, 0x63, 0x6b, 0x53, 0x06, 0x1f, 0x61, 0xad, 0xd6, 0x68, 0x54, - 0x56, 0x6a, 0x72, 0xce, 0xa7, 0xa8, 0xbe, 0xda, 0xac, 0x35, 0xe4, 0x7c, 0xa4, 0x59, 0x4f, 0x5c, - 0x93, 0x0b, 0xfe, 0x2b, 0x6a, 0xeb, 0x5b, 0x6b, 0xf2, 0x04, 0x9a, 0x84, 0x02, 0x7b, 0x85, 0x68, - 0x44, 0xb1, 0xa7, 0xe8, 0xfa, 0x93, 0xb2, 0x1c, 0x34, 0x84, 0xa1, 0x4c, 0x46, 0x0a, 0xae, 0x3f, - 0x29, 0xa3, 0xd2, 0x22, 0x8c, 0x51, 0x35, 0x44, 0x08, 0x26, 0x56, 0x2b, 0xd5, 0xda, 0xaa, 0xba, - 0xb1, 0xd9, 0xac, 0x6f, 0xac, 0x57, 0x56, 0x65, 0x29, 0x28, 0x53, 0x6a, 0xef, 0xd9, 0xaa, 0x2b, - 0xb5, 0x25, 0x39, 0x11, 0x2e, 0xdb, 0xac, 0x55, 0x9a, 0xb5, 0x25, 0x39, 0x59, 0xd2, 0x61, 0x3a, - 0xce, 0xa0, 0xc6, 0x4e, 0xa1, 0x90, 0x2e, 0x24, 0x06, 0xe8, 0x02, 0xc5, 0xea, 0xd5, 0x85, 0xd2, - 0xe7, 0x12, 0x30, 0x15, 0xe3, 0x54, 0x62, 0x5f, 0xf2, 0x12, 0x8c, 0x31, 0x5d, 0x66, 0x6e, 0xf6, - 0xe1, 0x58, 0xef, 0x44, 0x35, 0xbb, 0xcf, 0xd5, 0x52, 0xbe, 0x70, 0x10, 0x92, 0x1c, 0x10, 0x84, - 0x10, 0x88, 0x3e, 0x85, 0xfd, 0xfa, 0x3e, 0xe3, 0xcf, 0xfc, 0xe3, 0xf5, 0x51, 0xfc, 0x23, 0x2d, - 0x3b, 0x9e, 0x13, 0x18, 0x8b, 0x71, 0x02, 0xcf, 0xc1, 0x64, 0x1f, 0xd0, 0xc8, 0xc6, 0xf8, 0x9b, - 0x25, 0x98, 0x19, 0x24, 0x9c, 0x21, 0x26, 0x31, 0x11, 0x31, 0x89, 0xcf, 0xf5, 0x4a, 0xf0, 0xfc, - 0xe0, 0x41, 0xe8, 0x1b, 0xeb, 0x8f, 0x4b, 0x70, 0x2a, 0x3e, 0xd8, 0x8c, 0x6d, 0xc3, 0x8b, 0x90, - 0xee, 0x60, 0x6f, 0xdf, 0x12, 0x61, 0xd5, 0x43, 0x31, 0xce, 0x9a, 0x54, 0xf7, 0x0e, 0x36, 0xe7, - 0x0a, 0x7b, 0xfb, 0xe4, 0xa0, 0x88, 0x91, 0xb5, 0xa6, 0xaf, 0xa5, 0xdf, 0x91, 0x80, 0x93, 0xb1, - 0xe0, 0xb1, 0x0d, 0xbd, 0x1f, 0xc0, 0x30, 0xed, 0xae, 0xc7, 0x42, 0x27, 0x66, 0x89, 0xb3, 0xb4, - 0x84, 0x1a, 0x2f, 0x62, 0x65, 0xbb, 0x9e, 0x5f, 0x9f, 0xa4, 0xf5, 0xc0, 0x8a, 0x28, 0xc1, 0x33, - 0x41, 0x43, 0x53, 0xb4, 0xa1, 0xe7, 0x06, 0xf4, 0xb4, 0x4f, 0x31, 0x1f, 0x07, 0x59, 0x6f, 0x1b, - 0xd8, 0xf4, 0x54, 0xd7, 0x73, 0xb0, 0xd6, 0x31, 0xcc, 0x3d, 0xea, 0x6a, 0x32, 0xe5, 0xb1, 0x5d, - 0xad, 0xed, 0x62, 0xa5, 0xc8, 0xaa, 0x1b, 0xa2, 0x96, 0x70, 0x50, 0x05, 0x72, 0x42, 0x1c, 0xe9, - 0x08, 0x07, 0xab, 0xf6, 0x39, 0x4a, 0xdf, 0x9b, 0x85, 0x5c, 0x28, 0x34, 0x47, 0xe7, 0x21, 0xff, - 0xba, 0x76, 0x5b, 0x53, 0xc5, 0x72, 0x8b, 0x49, 0x22, 0x47, 0xca, 0x36, 0xf9, 0x92, 0xeb, 0x71, - 0x98, 0xa6, 0x24, 0x56, 0xd7, 0xc3, 0x8e, 0xaa, 0xb7, 0x35, 0xd7, 0xa5, 0x42, 0xcb, 0x50, 0x52, - 0x44, 0xea, 0x36, 0x48, 0xd5, 0xa2, 0xa8, 0x41, 0x4f, 0xc1, 0x14, 0xe5, 0xe8, 0x74, 0xdb, 0x9e, - 0x61, 0xb7, 0xb1, 0x4a, 0x16, 0x80, 0x2e, 0x75, 0x39, 0x7e, 0xcb, 0x26, 0x09, 0xc5, 0x1a, 0x27, - 0x20, 0x2d, 0x72, 0xd1, 0x12, 0xdc, 0x4f, 0xd9, 0xf6, 0xb0, 0x89, 0x1d, 0xcd, 0xc3, 0x2a, 0x7e, - 0x5f, 0x57, 0x6b, 0xbb, 0xaa, 0x66, 0xb6, 0xd4, 0x7d, 0xcd, 0xdd, 0x9f, 0x99, 0x26, 0x00, 0xd5, - 0xc4, 0x8c, 0xa4, 0x9c, 0x21, 0x84, 0x2b, 0x9c, 0xae, 0x46, 0xc9, 0x2a, 0x66, 0xeb, 0x86, 0xe6, - 0xee, 0xa3, 0x32, 0x9c, 0xa2, 0x28, 0xae, 0xe7, 0x18, 0xe6, 0x9e, 0xaa, 0xef, 0x63, 0xfd, 0x96, - 0xda, 0xf5, 0x76, 0x9f, 0x99, 0x39, 0x1b, 0x7e, 0x3f, 0x6d, 0x61, 0x83, 0xd2, 0x2c, 0x12, 0x92, - 0x2d, 0x6f, 0xf7, 0x19, 0xd4, 0x80, 0x3c, 0x19, 0x8c, 0x8e, 0xf1, 0x06, 0x56, 0x77, 0x2d, 0x87, - 0xfa, 0xd0, 0x89, 0x18, 0xd3, 0x14, 0x92, 0xe0, 0xc2, 0x06, 0x67, 0x58, 0xb3, 0x5a, 0xb8, 0x3c, - 0xd6, 0xd8, 0xac, 0xd5, 0x96, 0x94, 0x9c, 0x40, 0x59, 0xb6, 0x1c, 0xa2, 0x50, 0x7b, 0x96, 0x2f, - 0xe0, 0x1c, 0x53, 0xa8, 0x3d, 0x4b, 0x88, 0xf7, 0x29, 0x98, 0xd2, 0x75, 0xd6, 0x67, 0x43, 0x57, - 0xf9, 0x32, 0xcd, 0x9d, 0x91, 0x23, 0xc2, 0xd2, 0xf5, 0x15, 0x46, 0xc0, 0x75, 0xdc, 0x45, 0xcf, - 0xc2, 0xc9, 0x40, 0x58, 0x61, 0xc6, 0xc9, 0xbe, 0x5e, 0xf6, 0xb2, 0x3e, 0x05, 0x53, 0xf6, 0x61, - 0x3f, 0x23, 0x8a, 0xbc, 0xd1, 0x3e, 0xec, 0x65, 0x7b, 0x1a, 0xa6, 0xed, 0x7d, 0xbb, 0x9f, 0xef, - 0x72, 0x98, 0x0f, 0xd9, 0xfb, 0x76, 0x2f, 0xe3, 0x83, 0x74, 0xcd, 0xee, 0x60, 0x5d, 0xf3, 0x70, - 0x6b, 0xe6, 0x74, 0x98, 0x3c, 0x54, 0x81, 0x16, 0x40, 0xd6, 0x75, 0x15, 0x9b, 0xda, 0x4e, 0x1b, - 0xab, 0x9a, 0x83, 0x4d, 0xcd, 0x9d, 0x99, 0xa3, 0xc4, 0x29, 0xcf, 0xe9, 0x62, 0x65, 0x42, 0xd7, - 0x6b, 0xb4, 0xb2, 0x42, 0xeb, 0xd0, 0x65, 0x98, 0xb4, 0x76, 0x5e, 0xd7, 0x99, 0x46, 0xaa, 0xb6, - 0x83, 0x77, 0x8d, 0x83, 0x99, 0x07, 0xa8, 0x78, 0x8b, 0xa4, 0x82, 0xea, 0xe3, 0x26, 0x2d, 0x46, - 0x0f, 0x83, 0xac, 0xbb, 0xfb, 0x9a, 0x63, 0x53, 0x93, 0xec, 0xda, 0x9a, 0x8e, 0x67, 0x1e, 0x64, - 0xa4, 0xac, 0x7c, 0x5d, 0x14, 0x93, 0x19, 0xe1, 0xde, 0x31, 0x76, 0x3d, 0x81, 0x78, 0x91, 0xcd, - 0x08, 0x5a, 0xc6, 0xd1, 0x2e, 0x81, 0x4c, 0x24, 0x11, 0x79, 0xf1, 0x25, 0x4a, 0x36, 0x61, 0xef, - 0xdb, 0xe1, 0xf7, 0x5e, 0x80, 0x02, 0xa1, 0x0c, 0x5e, 0xfa, 0x30, 0x0b, 0xdc, 0xec, 0xfd, 0xd0, - 0x1b, 0x9f, 0x84, 0x53, 0x84, 0xa8, 0x83, 0x3d, 0xad, 0xa5, 0x79, 0x5a, 0x88, 0xfa, 0x51, 0x4a, - 0x4d, 0xc4, 0xbe, 0xc6, 0x2b, 0x23, 0xed, 0x74, 0xba, 0x3b, 0x87, 0xbe, 0x62, 0x3d, 0xc6, 0xda, - 0x49, 0xca, 0x84, 0x6a, 0xbd, 0x6b, 0xc1, 0x79, 0xa9, 0x0c, 0xf9, 0xb0, 0xde, 0xa3, 0x2c, 0x30, - 0xcd, 0x97, 0x25, 0x12, 0x04, 0x2d, 0x6e, 0x2c, 0x91, 0xf0, 0xe5, 0xb5, 0x9a, 0x9c, 0x20, 0x61, - 0xd4, 0x6a, 0xbd, 0x59, 0x53, 0x95, 0xad, 0xf5, 0x66, 0x7d, 0xad, 0x26, 0x27, 0x43, 0x81, 0xfd, - 0xcd, 0x54, 0xe6, 0x21, 0xf9, 0x62, 0xe9, 0x97, 0x93, 0x30, 0x11, 0x5d, 0xa9, 0xa1, 0xe7, 0xe1, - 0xb4, 0x48, 0xb8, 0xb8, 0xd8, 0x53, 0xef, 0x18, 0x0e, 0x9d, 0x90, 0x1d, 0x8d, 0x39, 0x47, 0x5f, - 0x7f, 0xa6, 0x39, 0x55, 0x03, 0x7b, 0xef, 0x35, 0x1c, 0x32, 0xdd, 0x3a, 0x9a, 0x87, 0x56, 0x61, - 0xce, 0xb4, 0x54, 0xd7, 0xd3, 0xcc, 0x96, 0xe6, 0xb4, 0xd4, 0x20, 0xd5, 0xa5, 0x6a, 0xba, 0x8e, - 0x5d, 0xd7, 0x62, 0x8e, 0xd0, 0x47, 0xb9, 0xcf, 0xb4, 0x1a, 0x9c, 0x38, 0xf0, 0x10, 0x15, 0x4e, - 0xda, 0xa3, 0xbe, 0xc9, 0x41, 0xea, 0x7b, 0x16, 0xb2, 0x1d, 0xcd, 0x56, 0xb1, 0xe9, 0x39, 0x87, - 0x34, 0x3e, 0xcf, 0x28, 0x99, 0x8e, 0x66, 0xd7, 0xc8, 0x33, 0xda, 0x86, 0x87, 0x02, 0x52, 0xb5, - 0x8d, 0xf7, 0x34, 0xfd, 0x50, 0xa5, 0xc1, 0x38, 0x4d, 0x1b, 0xa8, 0xba, 0x65, 0xee, 0xb6, 0x0d, - 0xdd, 0x73, 0xa9, 0x7d, 0x60, 0x36, 0xae, 0x14, 0x70, 0xac, 0x52, 0x86, 0x9b, 0xae, 0x65, 0xd2, - 0x18, 0x7c, 0x51, 0x50, 0x7f, 0x55, 0x96, 0x5f, 0x37, 0x53, 0x99, 0x94, 0x3c, 0x76, 0x33, 0x95, - 0x19, 0x93, 0xd3, 0x37, 0x53, 0x99, 0xb4, 0x3c, 0x7e, 0x33, 0x95, 0xc9, 0xc8, 0xd9, 0x9b, 0xa9, - 0x4c, 0x56, 0x86, 0xd2, 0x2f, 0x64, 0x20, 0x1f, 0x5e, 0x19, 0x90, 0x85, 0x96, 0x4e, 0x7d, 0xa3, - 0x44, 0xad, 0xe7, 0x85, 0x23, 0xd7, 0x11, 0x0b, 0x8b, 0xc4, 0x69, 0x96, 0xd3, 0x2c, 0x0c, 0x57, - 0x18, 0x27, 0x09, 0x58, 0x88, 0x5a, 0x63, 0x16, 0xf6, 0x64, 0x14, 0xfe, 0x84, 0x56, 0x20, 0xfd, - 0xba, 0x4b, 0xb1, 0xd3, 0x14, 0xfb, 0x81, 0xa3, 0xb1, 0x6f, 0x36, 0x28, 0x78, 0xf6, 0x66, 0x43, - 0x5d, 0xdf, 0x50, 0xd6, 0x2a, 0xab, 0x0a, 0x67, 0x47, 0x67, 0x20, 0xd5, 0xd6, 0xde, 0x38, 0x8c, - 0xba, 0x57, 0x5a, 0x84, 0x16, 0xa0, 0xd8, 0x35, 0x6f, 0x63, 0xc7, 0xd8, 0x35, 0xc8, 0x50, 0x11, - 0xaa, 0x62, 0x98, 0x6a, 0x22, 0xa8, 0x5d, 0x25, 0xf4, 0x23, 0xaa, 0xc7, 0x19, 0x48, 0xdd, 0xc1, - 0xda, 0xad, 0xa8, 0x13, 0xa4, 0x45, 0xe8, 0x12, 0xe4, 0x5b, 0x78, 0xa7, 0xbb, 0xa7, 0x3a, 0xb8, - 0xa5, 0xe9, 0x5e, 0xd4, 0xf4, 0xe7, 0x68, 0x95, 0x42, 0x6b, 0xd0, 0xcb, 0x90, 0x25, 0x63, 0x64, - 0xd2, 0x31, 0x9e, 0xa4, 0x22, 0x78, 0xec, 0x68, 0x11, 0xf0, 0x21, 0x16, 0x4c, 0x4a, 0xc0, 0x8f, - 0x96, 0x21, 0xed, 0x69, 0xce, 0x1e, 0xf6, 0xa8, 0xe5, 0x9f, 0x88, 0x49, 0x7e, 0xc4, 0x20, 0x35, - 0x29, 0x07, 0x5d, 0xd3, 0x72, 0xee, 0x77, 0xd1, 0xca, 0x5c, 0x81, 0x31, 0xaa, 0x1e, 0x08, 0x80, - 0x2b, 0x88, 0x7c, 0x02, 0x65, 0x20, 0xb5, 0xb8, 0xa1, 0x10, 0x4b, 0x23, 0x43, 0x9e, 0x95, 0xaa, - 0x9b, 0xf5, 0xda, 0x62, 0x4d, 0x4e, 0x94, 0x9e, 0x82, 0x34, 0x1b, 0x73, 0x62, 0x85, 0xfc, 0x51, - 0x97, 0x4f, 0xf0, 0x47, 0x8e, 0x21, 0x89, 0xda, 0xad, 0xb5, 0x6a, 0x4d, 0x91, 0x13, 0xa5, 0x2d, - 0x28, 0xf6, 0xc8, 0x09, 0x9d, 0x84, 0x49, 0xa5, 0xd6, 0xac, 0xad, 0x93, 0x75, 0x96, 0xba, 0xb5, - 0xfe, 0xf2, 0xfa, 0xc6, 0x7b, 0xd7, 0xe5, 0x13, 0xd1, 0x62, 0x61, 0xd2, 0x24, 0x34, 0x0d, 0x72, - 0x50, 0xdc, 0xd8, 0xd8, 0x52, 0x68, 0x6b, 0xbe, 0x2b, 0x01, 0x72, 0xaf, 0xd4, 0xd0, 0x69, 0x98, - 0x6a, 0x56, 0x94, 0x95, 0x5a, 0x53, 0x65, 0x6b, 0x47, 0x1f, 0x7a, 0x1a, 0xe4, 0x70, 0xc5, 0x72, - 0x9d, 0x2e, 0x8d, 0xe7, 0xe0, 0x6c, 0xb8, 0xb4, 0xf6, 0x4a, 0xb3, 0xb6, 0xde, 0xa0, 0x2f, 0xaf, - 0xac, 0xaf, 0x10, 0xfb, 0xda, 0x83, 0x27, 0x56, 0xab, 0x49, 0xd2, 0xd4, 0x28, 0x5e, 0x6d, 0x75, - 0x49, 0x4e, 0xf5, 0x16, 0x6f, 0xac, 0xd7, 0x36, 0x96, 0xe5, 0xb1, 0xde, 0xb7, 0xd3, 0x15, 0x6c, - 0x1a, 0xcd, 0xc2, 0xa9, 0xde, 0x52, 0xb5, 0xb6, 0xde, 0x54, 0x5e, 0x95, 0xc7, 0x7b, 0x5f, 0xdc, - 0xa8, 0x29, 0xdb, 0xf5, 0xc5, 0x9a, 0x9c, 0x41, 0xa7, 0x00, 0x45, 0x5b, 0xd4, 0xbc, 0xb1, 0xb1, - 0x24, 0x67, 0xfb, 0x2c, 0x4a, 0xc9, 0x85, 0x7c, 0x78, 0x19, 0xf9, 0xd5, 0xc9, 0x25, 0x7d, 0x30, - 0x01, 0xb9, 0xd0, 0xb2, 0x90, 0xc4, 0xf3, 0x5a, 0xbb, 0x6d, 0xdd, 0x51, 0xb5, 0xb6, 0xa1, 0xb9, - 0xdc, 0xde, 0x00, 0x2d, 0xaa, 0x90, 0x92, 0x51, 0xe7, 0xf7, 0xe8, 0x16, 0x3e, 0xfd, 0x37, 0xd1, - 0xc2, 0x8f, 0xc9, 0xe9, 0xd2, 0x47, 0x25, 0x90, 0x7b, 0xd7, 0x7b, 0x3d, 0xdd, 0x97, 0x06, 0x75, - 0xff, 0xab, 0x32, 0x76, 0x1f, 0x91, 0x60, 0x22, 0xba, 0xc8, 0xeb, 0x69, 0xde, 0xf9, 0xbf, 0xd6, - 0xe6, 0xfd, 0x7e, 0x02, 0x0a, 0x91, 0xa5, 0xdd, 0xa8, 0xad, 0x7b, 0x1f, 0x4c, 0x1a, 0x2d, 0xdc, - 0xb1, 0x2d, 0x0f, 0x9b, 0xfa, 0xa1, 0xda, 0xc6, 0xb7, 0x71, 0x7b, 0xa6, 0x44, 0x8d, 0xf2, 0x95, - 0xa3, 0x17, 0x8f, 0x0b, 0xf5, 0x80, 0x6f, 0x95, 0xb0, 0x95, 0xa7, 0xea, 0x4b, 0xb5, 0xb5, 0xcd, - 0x8d, 0x66, 0x6d, 0x7d, 0xf1, 0x55, 0x61, 0x5d, 0x14, 0xd9, 0xe8, 0x21, 0x7b, 0x17, 0x8d, 0xf6, - 0x26, 0xc8, 0xbd, 0x8d, 0x22, 0xb6, 0x22, 0xa6, 0x59, 0xf2, 0x09, 0x34, 0x05, 0xc5, 0xf5, 0x0d, - 0xb5, 0x51, 0x5f, 0xaa, 0xa9, 0xb5, 0xe5, 0xe5, 0xda, 0x62, 0xb3, 0xc1, 0xd2, 0x81, 0x3e, 0x75, - 0x53, 0x4e, 0x84, 0x45, 0xfc, 0xa1, 0x24, 0x4c, 0xc5, 0xb4, 0x04, 0x55, 0xf8, 0x42, 0x9e, 0xe5, - 0x16, 0x1e, 0x1b, 0xa5, 0xf5, 0x0b, 0x24, 0x94, 0xde, 0xd4, 0x1c, 0x8f, 0xaf, 0xfb, 0x1f, 0x06, - 0x22, 0x25, 0xd3, 0x23, 0x9e, 0xdd, 0xe1, 0x69, 0x56, 0xb6, 0xba, 0x2f, 0x06, 0xe5, 0x2c, 0xd3, - 0xfa, 0x28, 0x20, 0xdb, 0x72, 0x0d, 0xcf, 0xb8, 0x8d, 0x55, 0xc3, 0x14, 0x39, 0x59, 0xb2, 0xda, - 0x4f, 0x29, 0xb2, 0xa8, 0xa9, 0x9b, 0x9e, 0x4f, 0x6d, 0xe2, 0x3d, 0xad, 0x87, 0x9a, 0x44, 0x1e, - 0x49, 0x45, 0x16, 0x35, 0x3e, 0xf5, 0x79, 0xc8, 0xb7, 0xac, 0x2e, 0x59, 0x02, 0x31, 0x3a, 0x62, - 0x2d, 0x24, 0x25, 0xc7, 0xca, 0x7c, 0x12, 0xbe, 0xb8, 0x0d, 0x92, 0xc1, 0x79, 0x25, 0xc7, 0xca, - 0x18, 0xc9, 0x45, 0x28, 0x6a, 0x7b, 0x7b, 0x0e, 0x01, 0x17, 0x40, 0x6c, 0xb9, 0x3e, 0xe1, 0x17, - 0x53, 0xc2, 0xd9, 0x9b, 0x90, 0x11, 0x72, 0x20, 0x11, 0x2c, 0x91, 0x84, 0x6a, 0xb3, 0x1c, 0x54, - 0xe2, 0x52, 0x56, 0xc9, 0x98, 0xa2, 0xf2, 0x3c, 0xe4, 0x0d, 0x57, 0x0d, 0xf6, 0xb6, 0x12, 0xf3, - 0x89, 0x4b, 0x19, 0x25, 0x67, 0xb8, 0xfe, 0xbe, 0x40, 0xe9, 0xe3, 0x09, 0x98, 0x88, 0xee, 0xda, - 0xa1, 0x25, 0xc8, 0xb4, 0x2d, 0x5d, 0xa3, 0xaa, 0xc5, 0xb6, 0x8c, 0x2f, 0x0d, 0xd9, 0xe8, 0x5b, - 0x58, 0xe5, 0xf4, 0x8a, 0xcf, 0x39, 0xfb, 0x9b, 0x12, 0x64, 0x44, 0x31, 0x3a, 0x05, 0x29, 0x5b, - 0xf3, 0xf6, 0x29, 0xdc, 0x58, 0x35, 0x21, 0x4b, 0x0a, 0x7d, 0x26, 0xe5, 0xae, 0xad, 0x99, 0x54, - 0x05, 0x78, 0x39, 0x79, 0x26, 0xe3, 0xda, 0xc6, 0x5a, 0x8b, 0xe6, 0x02, 0xac, 0x4e, 0x07, 0x9b, - 0x9e, 0x2b, 0xc6, 0x95, 0x97, 0x2f, 0xf2, 0x62, 0xf4, 0x08, 0x4c, 0x7a, 0x8e, 0x66, 0xb4, 0x23, - 0xb4, 0x29, 0x4a, 0x2b, 0x8b, 0x0a, 0x9f, 0xb8, 0x0c, 0x67, 0x04, 0x6e, 0x0b, 0x7b, 0x9a, 0xbe, - 0x8f, 0x5b, 0x01, 0x53, 0x9a, 0xe6, 0xfc, 0x4e, 0x73, 0x82, 0x25, 0x5e, 0x2f, 0x78, 0x4b, 0x9f, - 0x49, 0xc0, 0xa4, 0xc8, 0x5e, 0xb4, 0x7c, 0x61, 0xad, 0x01, 0x68, 0xa6, 0x69, 0x79, 0x61, 0x71, - 0xf5, 0xab, 0x72, 0x1f, 0xdf, 0x42, 0xc5, 0x67, 0x52, 0x42, 0x00, 0xb3, 0x7f, 0x2c, 0x01, 0x04, - 0x55, 0x03, 0xe5, 0x36, 0x07, 0x39, 0xbe, 0x27, 0x4b, 0x37, 0xf6, 0x59, 0xc2, 0x0b, 0x58, 0xd1, - 0xb2, 0xd1, 0xa6, 0x69, 0xc9, 0x1d, 0xbc, 0x67, 0x98, 0x7c, 0x3f, 0x85, 0x3d, 0x88, 0xb4, 0x64, - 0x2a, 0xd8, 0x9e, 0x52, 0x20, 0xe3, 0xe2, 0x8e, 0x66, 0x7a, 0x86, 0xce, 0x77, 0x48, 0xae, 0x1f, - 0xab, 0xf1, 0x0b, 0x0d, 0xce, 0xad, 0xf8, 0x38, 0xa5, 0x4b, 0x90, 0x11, 0xa5, 0x24, 0xf0, 0x5b, - 0xdf, 0x58, 0xaf, 0xc9, 0x27, 0xd0, 0x38, 0x24, 0x1b, 0xb5, 0xa6, 0x2c, 0x91, 0x65, 0x67, 0x65, - 0xb5, 0x5e, 0x69, 0xc8, 0x89, 0xea, 0xff, 0x03, 0x53, 0xba, 0xd5, 0xe9, 0x7d, 0x61, 0x55, 0xee, - 0x49, 0xf9, 0xb9, 0x37, 0xa4, 0xd7, 0x1e, 0xe3, 0x44, 0x7b, 0x56, 0x5b, 0x33, 0xf7, 0x16, 0x2c, - 0x67, 0x2f, 0x38, 0x16, 0x41, 0x56, 0x07, 0x6e, 0xe8, 0x70, 0x84, 0xbd, 0xf3, 0x57, 0x92, 0xf4, - 0xa3, 0x89, 0xe4, 0xca, 0x66, 0xf5, 0x27, 0x13, 0xb3, 0x2b, 0x8c, 0x71, 0x53, 0x74, 0x47, 0xc1, - 0xbb, 0x6d, 0xac, 0x93, 0xc6, 0xc3, 0x9f, 0x3c, 0x02, 0xd3, 0x7b, 0xd6, 0x9e, 0x45, 0x91, 0xae, - 0x90, 0xbf, 0xf8, 0xb9, 0x8a, 0xac, 0x5f, 0x3a, 0x3b, 0xf4, 0x10, 0x46, 0x79, 0x1d, 0xa6, 0x38, - 0xb1, 0x4a, 0xb7, 0x6f, 0x59, 0x72, 0x01, 0x1d, 0x99, 0xd9, 0x9e, 0xf9, 0xd9, 0x3f, 0xa4, 0x51, - 0x89, 0x32, 0xc9, 0x59, 0x49, 0x1d, 0xcb, 0x3f, 0x94, 0x15, 0x38, 0x19, 0xc1, 0x63, 0x36, 0x02, - 0x3b, 0x43, 0x10, 0xff, 0x0d, 0x47, 0x9c, 0x0a, 0x21, 0x36, 0x38, 0x6b, 0x79, 0x11, 0x0a, 0xc7, - 0xc1, 0xfa, 0x55, 0x8e, 0x95, 0xc7, 0x61, 0x90, 0x15, 0x28, 0x52, 0x10, 0xbd, 0xeb, 0x7a, 0x56, - 0x87, 0x1a, 0xe0, 0xa3, 0x61, 0xfe, 0xed, 0x1f, 0xb2, 0x49, 0x3b, 0x41, 0xd8, 0x16, 0x7d, 0xae, - 0x72, 0x19, 0xe8, 0x8e, 0x75, 0x0b, 0xeb, 0xed, 0x21, 0x08, 0xbf, 0xc6, 0x1b, 0xe2, 0xd3, 0x97, - 0xb7, 0x61, 0x9a, 0xfc, 0x4d, 0xed, 0x63, 0xb8, 0x25, 0xc3, 0xd3, 0xe0, 0x33, 0xbf, 0xf5, 0xcd, - 0xcc, 0x2e, 0x4c, 0xf9, 0x00, 0xa1, 0x36, 0x85, 0x46, 0x71, 0x0f, 0x7b, 0x1e, 0x76, 0x5c, 0x55, - 0x6b, 0xc7, 0x35, 0x2f, 0x94, 0x47, 0x9c, 0xf9, 0xa1, 0x2f, 0x46, 0x47, 0x71, 0x85, 0x71, 0x56, - 0xda, 0xed, 0xf2, 0x16, 0x9c, 0x8e, 0xd1, 0x8a, 0x11, 0x30, 0x3f, 0xc4, 0x31, 0xa7, 0xfb, 0x34, - 0x83, 0xc0, 0x6e, 0x82, 0x28, 0xf7, 0xc7, 0x72, 0x04, 0xcc, 0x0f, 0x73, 0x4c, 0xc4, 0x79, 0xc5, - 0x90, 0x12, 0xc4, 0x9b, 0x30, 0x79, 0x1b, 0x3b, 0x3b, 0x96, 0xcb, 0x73, 0xb7, 0x23, 0xc0, 0x7d, - 0x84, 0xc3, 0x15, 0x39, 0x23, 0x4d, 0xe6, 0x12, 0xac, 0x67, 0x21, 0xb3, 0xab, 0xe9, 0x78, 0x04, - 0x88, 0xbb, 0x1c, 0x62, 0x9c, 0xd0, 0x13, 0xd6, 0x0a, 0xe4, 0xf7, 0x2c, 0xee, 0x22, 0x87, 0xb3, - 0x7f, 0x94, 0xb3, 0xe7, 0x04, 0x0f, 0x87, 0xb0, 0x2d, 0xbb, 0xdb, 0x26, 0xfe, 0x73, 0x38, 0xc4, - 0x0f, 0x0b, 0x08, 0xc1, 0xc3, 0x21, 0x8e, 0x21, 0xd6, 0x8f, 0x09, 0x08, 0x37, 0x24, 0xcf, 0x97, - 0x20, 0x67, 0x99, 0xed, 0x43, 0xcb, 0x1c, 0xa5, 0x11, 0x3f, 0xc2, 0x11, 0x80, 0xb3, 0x10, 0x80, - 0xe7, 0x20, 0x3b, 0xea, 0x40, 0xfc, 0xf8, 0x17, 0xc5, 0xf4, 0x10, 0x23, 0xb0, 0x02, 0x45, 0x61, - 0xa0, 0x0c, 0xcb, 0x1c, 0x01, 0xe2, 0x27, 0x38, 0xc4, 0x44, 0x88, 0x8d, 0x77, 0xc3, 0xc3, 0xae, - 0xb7, 0x87, 0x47, 0x01, 0xf9, 0xb8, 0xe8, 0x06, 0x67, 0xe1, 0xa2, 0xdc, 0xc1, 0xa6, 0xbe, 0x3f, - 0x1a, 0xc2, 0x27, 0x84, 0x28, 0x05, 0x0f, 0x81, 0x58, 0x84, 0x42, 0x47, 0x73, 0xdc, 0x7d, 0xad, - 0x3d, 0xd2, 0x70, 0x7c, 0x92, 0x63, 0xe4, 0x7d, 0x26, 0x2e, 0x91, 0xae, 0x79, 0x1c, 0x98, 0x9f, - 0x14, 0x12, 0x09, 0xb1, 0xf1, 0xa9, 0xe7, 0x7a, 0x34, 0xd1, 0x7d, 0x1c, 0xb4, 0x9f, 0x12, 0x53, - 0x8f, 0xf1, 0xae, 0x85, 0x11, 0x9f, 0x83, 0xac, 0x6b, 0xbc, 0x31, 0x12, 0xcc, 0x3f, 0x14, 0x23, - 0x4d, 0x19, 0x08, 0xf3, 0xab, 0x70, 0x26, 0xd6, 0x4d, 0x8c, 0x00, 0xf6, 0x8f, 0x38, 0xd8, 0xa9, - 0x18, 0x57, 0xc1, 0x4d, 0xc2, 0x71, 0x21, 0x7f, 0x5a, 0x98, 0x04, 0xdc, 0x83, 0xb5, 0x49, 0x16, - 0x2d, 0xae, 0xb6, 0x7b, 0x3c, 0xa9, 0xfd, 0x63, 0x21, 0x35, 0xc6, 0x1b, 0x91, 0x5a, 0x13, 0x4e, - 0x71, 0xc4, 0xe3, 0x8d, 0xeb, 0xcf, 0x08, 0xc3, 0xca, 0xb8, 0xb7, 0xa2, 0xa3, 0xfb, 0xb5, 0x30, - 0xeb, 0x8b, 0x53, 0x44, 0xc7, 0xae, 0xda, 0xd1, 0xec, 0x11, 0x90, 0x7f, 0x96, 0x23, 0x0b, 0x8b, - 0xef, 0x87, 0xd7, 0xee, 0x9a, 0x66, 0x13, 0xf0, 0x57, 0x60, 0x46, 0x80, 0x77, 0x4d, 0x07, 0xeb, - 0xd6, 0x9e, 0x69, 0xbc, 0x81, 0x5b, 0x23, 0x40, 0xff, 0x93, 0x9e, 0xa1, 0xda, 0x0a, 0xb1, 0x13, - 0xe4, 0x3a, 0xc8, 0x7e, 0xac, 0xa2, 0x1a, 0x1d, 0xdb, 0x72, 0xbc, 0x21, 0x88, 0x9f, 0x12, 0x23, - 0xe5, 0xf3, 0xd5, 0x29, 0x5b, 0xb9, 0x06, 0xec, 0xf4, 0xc7, 0xa8, 0x2a, 0xf9, 0x69, 0x0e, 0x54, - 0x08, 0xb8, 0xb8, 0xe1, 0xd0, 0xad, 0x8e, 0xad, 0x39, 0xa3, 0xd8, 0xbf, 0x9f, 0x13, 0x86, 0x83, - 0xb3, 0x70, 0xc3, 0x41, 0x22, 0x3a, 0xe2, 0xed, 0x47, 0x40, 0xf8, 0x79, 0x61, 0x38, 0x04, 0x0f, - 0x87, 0x10, 0x01, 0xc3, 0x08, 0x10, 0xbf, 0x20, 0x20, 0x04, 0x0f, 0x81, 0x78, 0x4f, 0xe0, 0x68, - 0x1d, 0xbc, 0x67, 0xb8, 0x9e, 0xc3, 0x42, 0xf2, 0xa3, 0xa1, 0x7e, 0xf1, 0x8b, 0xd1, 0x20, 0x4c, - 0x09, 0xb1, 0x12, 0x4b, 0xc4, 0xb7, 0x3e, 0xe8, 0x92, 0x6d, 0x78, 0xc3, 0x7e, 0x49, 0x58, 0xa2, - 0x10, 0x1b, 0x69, 0x5b, 0x28, 0x42, 0x24, 0x62, 0xd7, 0xc9, 0x42, 0x65, 0x04, 0xb8, 0x7f, 0xda, - 0xd3, 0xb8, 0x86, 0xe0, 0x25, 0x98, 0xa1, 0xf8, 0xa7, 0x6b, 0xde, 0xc2, 0x87, 0x23, 0x69, 0xe7, - 0x2f, 0xf7, 0xc4, 0x3f, 0x5b, 0x8c, 0x93, 0xd9, 0x90, 0x62, 0x4f, 0x3c, 0x85, 0x86, 0x9d, 0xf5, - 0x9b, 0xf9, 0xa6, 0x2f, 0xf1, 0xfe, 0x46, 0xc3, 0xa9, 0xf2, 0x2a, 0x51, 0xf2, 0x68, 0xd0, 0x33, - 0x1c, 0xec, 0x9b, 0xbf, 0xe4, 0xeb, 0x79, 0x24, 0xe6, 0x29, 0x2f, 0x43, 0x21, 0x12, 0xf0, 0x0c, - 0x87, 0xfa, 0x16, 0x0e, 0x95, 0x0f, 0xc7, 0x3b, 0xe5, 0xa7, 0x20, 0x45, 0x82, 0x97, 0xe1, 0xec, - 0xdf, 0xca, 0xd9, 0x29, 0x79, 0xf9, 0x05, 0xc8, 0x88, 0xa0, 0x65, 0x38, 0xeb, 0xb7, 0x71, 0x56, - 0x9f, 0x85, 0xb0, 0x8b, 0x80, 0x65, 0x38, 0xfb, 0xff, 0x27, 0xd8, 0x05, 0x0b, 0x61, 0x1f, 0x5d, - 0x84, 0xff, 0xf2, 0x3b, 0x53, 0xdc, 0xe9, 0x08, 0xd9, 0x3d, 0x07, 0xe3, 0x3c, 0x52, 0x19, 0xce, - 0xfd, 0x1d, 0xfc, 0xe5, 0x82, 0xa3, 0xfc, 0x34, 0x8c, 0x8d, 0x28, 0xf0, 0xef, 0xe6, 0xac, 0x8c, - 0xbe, 0xbc, 0x08, 0xb9, 0x50, 0x74, 0x32, 0x9c, 0xfd, 0x7b, 0x38, 0x7b, 0x98, 0x8b, 0x34, 0x9d, - 0x47, 0x27, 0xc3, 0x01, 0xfe, 0x7f, 0xd1, 0x74, 0xce, 0x41, 0xc4, 0x26, 0x02, 0x93, 0xe1, 0xdc, - 0x1f, 0x10, 0x52, 0x17, 0x2c, 0xe5, 0x97, 0x20, 0xeb, 0x3b, 0x9b, 0xe1, 0xfc, 0xdf, 0xcb, 0xf9, - 0x03, 0x1e, 0x22, 0x81, 0x90, 0xb3, 0x1b, 0x0e, 0xf1, 0xf7, 0x84, 0x04, 0x42, 0x5c, 0x64, 0x1a, - 0xf5, 0x06, 0x30, 0xc3, 0x91, 0xbe, 0x4f, 0x4c, 0xa3, 0x9e, 0xf8, 0x85, 0x8c, 0x26, 0xb5, 0xf9, - 0xc3, 0x21, 0xbe, 0x5f, 0x8c, 0x26, 0xa5, 0x27, 0xcd, 0xe8, 0x8d, 0x08, 0x86, 0x63, 0xfc, 0xa0, - 0x68, 0x46, 0x4f, 0x40, 0x50, 0xde, 0x04, 0xd4, 0x1f, 0x0d, 0x0c, 0xc7, 0xfb, 0x20, 0xc7, 0x9b, - 0xec, 0x0b, 0x06, 0xca, 0xef, 0x85, 0x53, 0xf1, 0x91, 0xc0, 0x70, 0xd4, 0x1f, 0xfa, 0x52, 0xcf, - 0xda, 0x2d, 0x1c, 0x08, 0x94, 0x9b, 0x81, 0x4b, 0x09, 0x47, 0x01, 0xc3, 0x61, 0x3f, 0xf4, 0xa5, - 0xa8, 0xe1, 0x0e, 0x07, 0x01, 0xe5, 0x0a, 0x40, 0xe0, 0x80, 0x87, 0x63, 0x7d, 0x84, 0x63, 0x85, - 0x98, 0xc8, 0xd4, 0xe0, 0xfe, 0x77, 0x38, 0xff, 0x5d, 0x31, 0x35, 0x38, 0x07, 0x99, 0x1a, 0xc2, - 0xf5, 0x0e, 0xe7, 0xfe, 0xa8, 0x98, 0x1a, 0x82, 0x85, 0x68, 0x76, 0xc8, 0xbb, 0x0d, 0x47, 0xf8, - 0x11, 0xa1, 0xd9, 0x21, 0xae, 0xf2, 0x3a, 0x4c, 0xf6, 0x39, 0xc4, 0xe1, 0x50, 0x3f, 0xca, 0xa1, - 0xe4, 0x5e, 0x7f, 0x18, 0x76, 0x5e, 0xdc, 0x19, 0x0e, 0x47, 0xfb, 0xb1, 0x1e, 0xe7, 0xc5, 0x7d, - 0x61, 0xf9, 0x39, 0xc8, 0x98, 0xdd, 0x76, 0x9b, 0x4c, 0x1e, 0x74, 0xf4, 0xf9, 0xdc, 0x99, 0xff, - 0xf2, 0x15, 0x2e, 0x1d, 0xc1, 0x50, 0x7e, 0x0a, 0xc6, 0x70, 0x67, 0x07, 0xb7, 0x86, 0x71, 0xfe, - 0xd1, 0x57, 0x84, 0xc1, 0x24, 0xd4, 0xe5, 0x97, 0x00, 0x58, 0x6a, 0x84, 0x6e, 0x9c, 0x0f, 0xe1, - 0xfd, 0xe3, 0xaf, 0xf0, 0x03, 0x71, 0x01, 0x4b, 0x00, 0xc0, 0x8e, 0xd7, 0x1d, 0x0d, 0xf0, 0xc5, - 0x28, 0x00, 0x1d, 0x91, 0x67, 0x61, 0xfc, 0x75, 0xd7, 0x32, 0x3d, 0x6d, 0x6f, 0x18, 0xf7, 0x9f, - 0x70, 0x6e, 0x41, 0x4f, 0x04, 0xd6, 0xb1, 0x1c, 0xec, 0x69, 0x7b, 0xee, 0x30, 0xde, 0x3f, 0xe5, - 0xbc, 0x3e, 0x03, 0x61, 0xd6, 0x35, 0xd7, 0x1b, 0xa5, 0xdf, 0xff, 0x55, 0x30, 0x0b, 0x06, 0xd2, - 0x68, 0xf2, 0xf7, 0x2d, 0x7c, 0x38, 0x8c, 0xf7, 0xcf, 0x44, 0xa3, 0x39, 0x7d, 0xf9, 0x05, 0xc8, - 0x92, 0x3f, 0xd9, 0x29, 0xd7, 0x21, 0xcc, 0x7f, 0xce, 0x99, 0x03, 0x0e, 0xf2, 0x66, 0xd7, 0x6b, - 0x79, 0xc6, 0x70, 0x61, 0xff, 0x05, 0x1f, 0x69, 0x41, 0x5f, 0xae, 0x40, 0xce, 0xf5, 0x5a, 0xad, - 0x2e, 0x8f, 0x4f, 0x87, 0xb0, 0xff, 0xb7, 0xaf, 0xf8, 0x29, 0x0b, 0x9f, 0x87, 0x8c, 0xf6, 0x9d, - 0x5b, 0x9e, 0x6d, 0xd1, 0xfd, 0x96, 0x61, 0x08, 0x5f, 0xe2, 0x08, 0x21, 0x96, 0xf2, 0x22, 0xe4, - 0x49, 0x5f, 0x1c, 0x6c, 0x63, 0xba, 0x39, 0x36, 0x04, 0xe2, 0xcb, 0x5c, 0x00, 0x11, 0xa6, 0xea, - 0x37, 0xfe, 0xda, 0x67, 0xcf, 0x49, 0x9f, 0xf9, 0xec, 0x39, 0xe9, 0xf7, 0x3f, 0x7b, 0x4e, 0xfa, - 0xc0, 0xe7, 0xce, 0x9d, 0xf8, 0xcc, 0xe7, 0xce, 0x9d, 0xf8, 0x9d, 0xcf, 0x9d, 0x3b, 0x11, 0x9f, - 0x25, 0x86, 0x15, 0x6b, 0xc5, 0x62, 0xf9, 0xe1, 0xd7, 0x1e, 0xdc, 0x33, 0xbc, 0xfd, 0xee, 0xce, - 0x82, 0x6e, 0x75, 0xae, 0xe8, 0x96, 0xdb, 0xb1, 0xdc, 0x2b, 0xd1, 0xbc, 0x2e, 0xfd, 0x0b, 0xfe, - 0x87, 0x44, 0xd6, 0xcc, 0xd1, 0x74, 0xae, 0x66, 0x1e, 0x0e, 0xfa, 0x98, 0xee, 0x3a, 0x24, 0x2b, - 0xe6, 0x21, 0x3a, 0xc3, 0x0c, 0x9c, 0xda, 0x75, 0xda, 0xfc, 0xa8, 0xe5, 0x38, 0x79, 0xde, 0x72, - 0xda, 0x68, 0x3a, 0x38, 0x0f, 0x2d, 0x5d, 0xca, 0xf3, 0x43, 0xce, 0xd5, 0xef, 0x91, 0x8e, 0xd7, - 0x93, 0x4c, 0xc5, 0x3c, 0xa4, 0x1d, 0xd9, 0x94, 0x5e, 0x7b, 0x74, 0x68, 0x9e, 0xfb, 0x96, 0x69, - 0xdd, 0x31, 0x49, 0xb3, 0xed, 0x1d, 0x91, 0xe3, 0x3e, 0xd7, 0x9b, 0xe3, 0x7e, 0x2f, 0x6e, 0xb7, - 0x5f, 0x26, 0x74, 0x4d, 0xc2, 0xb2, 0x93, 0x66, 0xa7, 0xfa, 0xe1, 0xfb, 0x12, 0x70, 0xae, 0x2f, - 0x9d, 0xcd, 0x95, 0x60, 0x90, 0x10, 0xca, 0x90, 0x59, 0x12, 0xba, 0x35, 0x03, 0xe3, 0x2e, 0xd6, - 0x2d, 0xb3, 0xe5, 0x52, 0x41, 0x24, 0x15, 0xf1, 0x48, 0x04, 0x61, 0x6a, 0xa6, 0xe5, 0xf2, 0xc3, - 0xca, 0xec, 0xa1, 0xfa, 0xe1, 0x63, 0x0a, 0xa2, 0x20, 0xde, 0x24, 0xa4, 0x71, 0x75, 0x44, 0x69, - 0x88, 0x4e, 0x44, 0x32, 0xff, 0xa3, 0x4a, 0xe5, 0x07, 0x13, 0x30, 0xd7, 0x2b, 0x15, 0x32, 0xb3, - 0x5c, 0x4f, 0xeb, 0xd8, 0x83, 0xc4, 0xf2, 0x1c, 0x64, 0x9b, 0x82, 0xe6, 0xd8, 0x72, 0xb9, 0x7b, - 0x4c, 0xb9, 0x4c, 0xf8, 0xaf, 0x12, 0x82, 0xb9, 0x36, 0xa2, 0x60, 0xfc, 0x7e, 0xdc, 0x93, 0x64, - 0x3e, 0x9c, 0x85, 0x33, 0x6c, 0x3a, 0xa9, 0x6c, 0x2a, 0xb1, 0x07, 0x2e, 0x93, 0x7c, 0xb8, 0x6a, - 0xf8, 0x3e, 0x49, 0xe9, 0x65, 0x98, 0xaa, 0x13, 0x6b, 0x41, 0x56, 0x41, 0xc1, 0x0e, 0x4f, 0xec, - 0x79, 0xee, 0xf9, 0x48, 0xc0, 0xcf, 0xf7, 0xb7, 0xc2, 0x45, 0xa5, 0x6f, 0x92, 0x40, 0x6e, 0xe8, - 0x5a, 0x5b, 0x73, 0xde, 0x2e, 0x14, 0x7a, 0x1a, 0x80, 0x1d, 0xf7, 0xf0, 0x3f, 0xdc, 0x9b, 0xb8, - 0x36, 0xb3, 0x10, 0xee, 0xdc, 0x02, 0x7b, 0x13, 0x3d, 0x41, 0x95, 0xa5, 0xb4, 0xe4, 0xcf, 0xcb, - 0xaf, 0x00, 0x04, 0x15, 0xe8, 0x2c, 0x9c, 0x6e, 0x2c, 0x56, 0x56, 0x2b, 0x8a, 0x38, 0x24, 0xd4, - 0xd8, 0xac, 0x2d, 0xd6, 0x97, 0xeb, 0xb5, 0x25, 0xf9, 0x04, 0x3a, 0x05, 0x28, 0x5c, 0xe9, 0x1f, - 0x6a, 0x3a, 0x09, 0x93, 0xe1, 0x72, 0xf6, 0x95, 0x4a, 0xa2, 0x7c, 0x03, 0x8a, 0xec, 0x08, 0xbd, - 0xaa, 0xb5, 0x5a, 0xb8, 0xa5, 0x1a, 0x26, 0x1a, 0x72, 0x22, 0x7d, 0xe6, 0xd7, 0xff, 0xe3, 0x18, - 0xed, 0x5a, 0x81, 0x31, 0x56, 0x08, 0x5f, 0xdd, 0x24, 0x31, 0xa7, 0xd1, 0xb1, 0xdb, 0x98, 0xee, - 0x61, 0xaa, 0x86, 0x90, 0xff, 0xf0, 0x70, 0x86, 0xe0, 0x25, 0x2f, 0x65, 0x95, 0xa9, 0x80, 0xdd, - 0x1f, 0xbd, 0xf2, 0xcb, 0x20, 0x8b, 0xa3, 0x9e, 0x7e, 0x03, 0x87, 0x22, 0xfe, 0x06, 0x6f, 0xa1, - 0xc8, 0x66, 0x88, 0x26, 0xae, 0xc2, 0xa4, 0xa6, 0xeb, 0xd8, 0x8e, 0xb4, 0x6f, 0x88, 0x07, 0x11, - 0xbd, 0x95, 0x39, 0x67, 0xd0, 0xb4, 0xa7, 0x21, 0xed, 0xd2, 0x41, 0x19, 0x06, 0x21, 0x9a, 0xc3, - 0xc9, 0xcb, 0x35, 0x98, 0x60, 0x6a, 0xe0, 0xf7, 0x68, 0x08, 0xc0, 0xbf, 0xe3, 0x00, 0x79, 0xca, - 0x26, 0x7a, 0x63, 0xc2, 0x24, 0x89, 0x6b, 0x35, 0x07, 0x87, 0x7a, 0x73, 0x74, 0x16, 0xe5, 0x9f, - 0x7d, 0xea, 0x71, 0xba, 0x6f, 0x7c, 0x3e, 0xaa, 0x74, 0x31, 0x93, 0x45, 0x91, 0x39, 0x76, 0xd0, - 0x5f, 0x0c, 0x13, 0xe2, 0x7d, 0xbc, 0xdf, 0x47, 0xbf, 0xec, 0x9f, 0xf3, 0x97, 0x9d, 0x8b, 0xd3, - 0xf0, 0xd0, 0x9b, 0x0a, 0x1c, 0x95, 0x55, 0x94, 0xab, 0x50, 0xd8, 0x35, 0xda, 0xa1, 0xe1, 0x3e, - 0xfa, 0x2d, 0xff, 0xe2, 0x53, 0x8f, 0xb3, 0x89, 0x46, 0x98, 0xb8, 0x68, 0xaa, 0xb5, 0x41, 0x56, - 0xef, 0xb5, 0x47, 0xfa, 0xfd, 0x37, 0xfb, 0xef, 0x31, 0x8a, 0xfe, 0x5c, 0xb8, 0xa9, 0x81, 0x75, - 0x4a, 0xc1, 0xa4, 0xd6, 0x31, 0x4c, 0xeb, 0x0a, 0xfd, 0x97, 0x5b, 0xa5, 0x31, 0xfa, 0x30, 0xc2, - 0xb6, 0xed, 0x75, 0x66, 0x2c, 0x86, 0xeb, 0xed, 0x9f, 0x7f, 0xd7, 0x4f, 0x8c, 0x05, 0x06, 0xa5, - 0xbc, 0x16, 0xe8, 0x3e, 0x36, 0x75, 0xab, 0x35, 0x52, 0x1e, 0xe7, 0x2f, 0x04, 0x86, 0xc8, 0x00, - 0xd6, 0x38, 0x6b, 0xf9, 0x79, 0xc8, 0xf8, 0x30, 0xc3, 0x62, 0x37, 0x01, 0xe2, 0x73, 0x90, 0xc8, - 0x8d, 0x29, 0xed, 0x28, 0x71, 0xfa, 0x97, 0x04, 0x3f, 0xb3, 0x61, 0xeb, 0xa4, 0x37, 0x2b, 0x30, - 0xd1, 0xb2, 0x4c, 0x4f, 0xb5, 0x3a, 0x86, 0x87, 0x3b, 0xb6, 0x37, 0x34, 0xf2, 0xfd, 0x32, 0x03, - 0xc9, 0x28, 0x05, 0xc2, 0xb7, 0x21, 0xd8, 0x48, 0x4b, 0xd8, 0x97, 0x8c, 0xa3, 0xb4, 0xe4, 0x2f, - 0xfd, 0x96, 0x50, 0x1e, 0xd2, 0x92, 0x7b, 0xd2, 0x0e, 0xb7, 0x75, 0x8b, 0xbb, 0x3b, 0xef, 0x80, - 0x69, 0x81, 0xaf, 0x1d, 0x1f, 0x4f, 0xc2, 0x39, 0x4e, 0xbc, 0xa3, 0xb9, 0xf8, 0xca, 0xed, 0xab, - 0x3b, 0xd8, 0xd3, 0xae, 0x5e, 0xd1, 0x2d, 0x43, 0xc4, 0x3a, 0x53, 0xdc, 0x9d, 0x91, 0xfa, 0x05, - 0x5e, 0x3f, 0x1b, 0x7b, 0x20, 0x60, 0x76, 0xb0, 0x1b, 0x9c, 0xed, 0xd7, 0xc1, 0x52, 0x1b, 0x52, - 0x8b, 0x96, 0x61, 0x12, 0xef, 0xdf, 0xc2, 0xa6, 0xd5, 0xe1, 0x0e, 0x89, 0x3d, 0xa0, 0x1b, 0x90, - 0xd6, 0x3a, 0x56, 0xd7, 0xf4, 0x98, 0x33, 0xaa, 0x3e, 0xfe, 0x6b, 0x6f, 0xcd, 0x9d, 0xf8, 0xdd, - 0xb7, 0xe6, 0x4e, 0x32, 0x58, 0xb7, 0x75, 0x6b, 0xc1, 0xb0, 0xae, 0x74, 0x34, 0x6f, 0x9f, 0x98, - 0x80, 0xdf, 0xfe, 0xf4, 0x63, 0xc0, 0xdf, 0x57, 0x37, 0xbd, 0x4f, 0x7c, 0xfe, 0x67, 0x2e, 0x4b, - 0x0a, 0xe7, 0x2f, 0xa7, 0xbe, 0xf0, 0xb1, 0x39, 0xa9, 0x64, 0xc3, 0xf8, 0x12, 0xd6, 0x8f, 0x78, - 0x61, 0xbd, 0xe7, 0x85, 0x57, 0xf9, 0x0b, 0xcf, 0xf6, 0xbf, 0x90, 0x1d, 0x69, 0x5c, 0xc2, 0x7a, - 0xe8, 0xb5, 0x4b, 0x58, 0x8f, 0xbe, 0xb1, 0xba, 0xf4, 0x3b, 0x7f, 0x70, 0xee, 0xc4, 0xfb, 0x3f, - 0x7b, 0xee, 0xc4, 0xc0, 0x21, 0x2b, 0x0d, 0x1f, 0x32, 0x7f, 0xa4, 0x3e, 0x99, 0x22, 0x23, 0xd5, - 0xc1, 0xde, 0xce, 0xae, 0x77, 0x45, 0x77, 0x0e, 0x6d, 0xcf, 0xba, 0x72, 0xfb, 0x2a, 0x99, 0xb9, - 0xd6, 0x2e, 0x1f, 0x29, 0x24, 0xea, 0x17, 0x58, 0xfd, 0xc2, 0xed, 0x01, 0x03, 0x55, 0xda, 0x85, - 0xb1, 0x4d, 0xc2, 0x48, 0x44, 0xe1, 0x59, 0x9e, 0xd6, 0xe6, 0x11, 0x19, 0x7b, 0x20, 0xa5, 0xec, - 0x4b, 0xdb, 0x04, 0x2b, 0x35, 0xc4, 0x47, 0xb6, 0x6d, 0xac, 0xed, 0xb2, 0x0f, 0x96, 0x92, 0x34, - 0x94, 0xcf, 0x90, 0x02, 0xfa, 0x6d, 0xd2, 0x34, 0x8c, 0x69, 0x5d, 0x76, 0xa8, 0x28, 0x49, 0x62, - 0x7c, 0xfa, 0x50, 0x5a, 0x85, 0x71, 0x7e, 0xb6, 0x00, 0xc9, 0x90, 0xbc, 0x85, 0x0f, 0xe9, 0x7b, - 0xf2, 0x0a, 0xf9, 0x13, 0x5d, 0x81, 0x31, 0xda, 0x7a, 0xfe, 0x25, 0xe6, 0x99, 0x85, 0xfe, 0xe6, - 0x2f, 0xd0, 0x56, 0x2a, 0x8c, 0xae, 0x74, 0x13, 0x32, 0x4b, 0x16, 0x51, 0xa0, 0x28, 0x5c, 0x96, - 0xc1, 0xd1, 0x46, 0xdb, 0x5d, 0x3e, 0x7c, 0x0a, 0x7b, 0x40, 0xa7, 0x20, 0xcd, 0xbe, 0x60, 0xe3, - 0x27, 0xa3, 0xf8, 0x53, 0x69, 0x11, 0xc6, 0x29, 0xf6, 0x86, 0x4d, 0xe2, 0x21, 0xff, 0x50, 0x7f, - 0x96, 0x7f, 0xcf, 0xcc, 0xe1, 0x13, 0x41, 0x6b, 0x11, 0xa4, 0x5a, 0x9a, 0xa7, 0xf1, 0x8e, 0xd3, - 0xbf, 0x4b, 0x2f, 0x41, 0x86, 0x83, 0xb8, 0xe8, 0x09, 0x48, 0x5a, 0xb6, 0xcb, 0xcf, 0x36, 0x9d, - 0x1d, 0xd8, 0x97, 0x0d, 0xbb, 0x9a, 0x22, 0x8a, 0xa5, 0x10, 0xea, 0xea, 0xda, 0x40, 0xd5, 0x78, - 0x22, 0xa2, 0x1a, 0x62, 0xd8, 0xc5, 0x1f, 0x9a, 0x6d, 0x5c, 0xe9, 0x57, 0x06, 0x5f, 0x57, 0xfe, - 0xbb, 0x04, 0xf7, 0xc7, 0xe8, 0xca, 0x2d, 0x7c, 0xe8, 0x1e, 0x5b, 0x55, 0x5e, 0x81, 0xec, 0x26, - 0xbd, 0x5d, 0xe4, 0x65, 0x7c, 0x88, 0x66, 0x61, 0x1c, 0xb7, 0xae, 0x3d, 0xf5, 0xd4, 0xd5, 0x67, - 0xd9, 0x40, 0xde, 0x38, 0xa1, 0x88, 0x02, 0x74, 0x0e, 0xb2, 0x2e, 0xd6, 0xed, 0x6b, 0x4f, 0x5d, - 0xbf, 0x75, 0x95, 0x09, 0xee, 0xc6, 0x09, 0x25, 0x28, 0x2a, 0x67, 0xc8, 0xa4, 0xf8, 0xc2, 0x8f, - 0xcc, 0x49, 0xd5, 0x31, 0x48, 0xba, 0xdd, 0xce, 0xbb, 0xd5, 0xf9, 0xbf, 0x4c, 0xc3, 0x79, 0xbf, - 0x9a, 0x99, 0xbd, 0xdb, 0x57, 0xaf, 0xdc, 0xd6, 0xda, 0x46, 0x4b, 0x0b, 0xee, 0x84, 0x99, 0xf4, - 0x05, 0x40, 0x49, 0x06, 0xf6, 0x7f, 0xf6, 0x68, 0x41, 0x96, 0x3e, 0x2d, 0x41, 0x7e, 0x5b, 0x60, - 0x37, 0xb0, 0x87, 0x9e, 0x07, 0xf0, 0xdf, 0x25, 0xd4, 0xe1, 0xbe, 0x85, 0xbe, 0xb7, 0x2d, 0xf8, - 0x4c, 0x4a, 0x88, 0x1e, 0x3d, 0x03, 0x19, 0xdb, 0xb1, 0x6c, 0xcb, 0xe5, 0x5f, 0xb4, 0x0e, 0xe3, - 0xf5, 0xa9, 0xd1, 0xa3, 0x80, 0xe8, 0xe4, 0x55, 0x6f, 0x5b, 0x9e, 0x61, 0xee, 0xa9, 0xb6, 0x75, - 0x87, 0x5f, 0x14, 0x90, 0x54, 0x64, 0x5a, 0xb3, 0x4d, 0x2b, 0x36, 0x49, 0x79, 0xe9, 0x53, 0x12, - 0x64, 0x7d, 0x14, 0xb2, 0x32, 0xd3, 0x5a, 0x2d, 0x07, 0xbb, 0x2e, 0x9f, 0x9f, 0xe2, 0x11, 0x3d, - 0x0f, 0xe3, 0x76, 0x77, 0x47, 0x15, 0x73, 0x21, 0x77, 0xed, 0xfe, 0x58, 0xcd, 0x16, 0x0a, 0xc2, - 0x75, 0x3b, 0x6d, 0x77, 0x77, 0x88, 0xba, 0x9c, 0x87, 0x7c, 0x4c, 0x6b, 0x72, 0xb7, 0x83, 0x86, - 0xd0, 0x5b, 0x6d, 0x78, 0x17, 0x54, 0xdb, 0x31, 0x2c, 0xc7, 0xf0, 0x0e, 0xe9, 0xd1, 0xbb, 0xa4, - 0x22, 0x8b, 0x8a, 0x4d, 0x5e, 0x5e, 0x6a, 0x43, 0xb1, 0x41, 0x03, 0xed, 0xa0, 0xe9, 0xd7, 0x83, - 0x06, 0x4a, 0x23, 0x34, 0x70, 0x60, 0xd3, 0x12, 0x7d, 0x4d, 0xbb, 0xfc, 0x9f, 0x24, 0xc8, 0x55, - 0xdb, 0x96, 0x7e, 0xab, 0xbe, 0xb4, 0xdc, 0xd6, 0xf6, 0xd0, 0x55, 0x38, 0x59, 0x5d, 0xdd, 0x58, - 0x7c, 0x59, 0xad, 0x2f, 0xa9, 0xcb, 0xab, 0x95, 0x95, 0xe0, 0xb0, 0xef, 0xec, 0xa9, 0x37, 0xef, - 0xce, 0xa3, 0x10, 0xed, 0x96, 0x49, 0x17, 0x96, 0xe8, 0x0a, 0x4c, 0x47, 0x59, 0x2a, 0xd5, 0x46, - 0x6d, 0xbd, 0x29, 0x4b, 0xb3, 0x27, 0xdf, 0xbc, 0x3b, 0x3f, 0x19, 0xe2, 0xa8, 0xec, 0xb8, 0xd8, - 0xf4, 0xfa, 0x19, 0x16, 0x37, 0xd6, 0xd6, 0xea, 0x4d, 0x39, 0xd1, 0xc7, 0xb0, 0x68, 0x75, 0x3a, - 0x86, 0x87, 0x1e, 0x86, 0xc9, 0x28, 0xc3, 0x7a, 0x7d, 0x55, 0x4e, 0xce, 0xa2, 0x37, 0xef, 0xce, - 0x4f, 0x84, 0xa8, 0xd7, 0x8d, 0xf6, 0x6c, 0xe6, 0xdb, 0x7f, 0xec, 0xdc, 0x89, 0x4f, 0xfc, 0x83, - 0x73, 0x52, 0x75, 0x75, 0xe0, 0xcc, 0xbb, 0x36, 0xfa, 0xcc, 0x13, 0x53, 0xcb, 0x9f, 0x78, 0x1f, - 0x4d, 0xc0, 0x9c, 0x5f, 0x7b, 0x1b, 0x3b, 0xae, 0x61, 0x99, 0x64, 0xb6, 0x30, 0xb5, 0xf5, 0x83, - 0x09, 0x3e, 0x38, 0x9c, 0x60, 0xb0, 0xe1, 0x79, 0x01, 0x92, 0x15, 0xdb, 0x46, 0xb3, 0x74, 0x46, - 0x78, 0x96, 0x6e, 0x31, 0x27, 0x95, 0x52, 0xfc, 0x67, 0x52, 0xe7, 0x5a, 0xbb, 0xde, 0x1d, 0xcd, - 0xf1, 0x2f, 0x96, 0x10, 0xcf, 0xa5, 0x67, 0x21, 0xbb, 0x68, 0x99, 0x2e, 0x36, 0xdd, 0x2e, 0x4d, - 0x30, 0xec, 0x10, 0x61, 0x70, 0x04, 0xf6, 0x40, 0x8c, 0xbc, 0x66, 0xdb, 0x94, 0x33, 0xa5, 0x90, - 0x3f, 0xb9, 0xe3, 0x5e, 0x1f, 0x28, 0x9e, 0x27, 0x47, 0x17, 0x4f, 0x20, 0x00, 0x5f, 0x40, 0xdf, - 0x7f, 0x7f, 0xc8, 0x2c, 0xfb, 0x96, 0x29, 0x2c, 0x9e, 0x18, 0xab, 0x34, 0xc4, 0xe9, 0xcf, 0x0e, - 0xb7, 0x75, 0xb3, 0xc3, 0x46, 0x65, 0x80, 0xe5, 0x1b, 0x96, 0xee, 0x29, 0x3d, 0x0b, 0x85, 0x4d, - 0xcd, 0xf1, 0x1a, 0xd8, 0xbb, 0x81, 0xb5, 0x16, 0x76, 0xa2, 0xd1, 0x44, 0x41, 0x44, 0x13, 0x08, - 0x52, 0x34, 0x64, 0x60, 0xce, 0x94, 0xfe, 0x5d, 0x32, 0x20, 0x45, 0xcf, 0x5e, 0xfb, 0x91, 0x06, - 0xe7, 0x60, 0x91, 0x06, 0x19, 0xae, 0x43, 0x0f, 0xbb, 0x22, 0x61, 0x48, 0x1f, 0xd0, 0x53, 0x22, - 0x5e, 0x48, 0x0e, 0x89, 0x17, 0xb8, 0x15, 0xe2, 0x51, 0x43, 0x07, 0xc6, 0xf9, 0x44, 0xf0, 0x5b, - 0x22, 0x05, 0x2d, 0x41, 0xeb, 0x50, 0xb4, 0x35, 0xc7, 0xa3, 0x1f, 0x63, 0xee, 0xd3, 0x6e, 0x70, - 0x4b, 0x37, 0x1f, 0x63, 0x78, 0x23, 0xdd, 0xe5, 0xaf, 0x29, 0xd8, 0xe1, 0xc2, 0xd2, 0x17, 0x52, - 0x90, 0xe6, 0xe2, 0x78, 0x11, 0xc6, 0xb9, 0xc0, 0xb9, 0x6d, 0x3a, 0xb7, 0x10, 0xa3, 0xfe, 0x0b, - 0xbe, 0x9a, 0x72, 0x40, 0xc1, 0x84, 0x1e, 0x82, 0x8c, 0xbe, 0xaf, 0x19, 0xa6, 0x6a, 0xb4, 0x78, - 0x4c, 0x9a, 0xfb, 0xec, 0x5b, 0x73, 0xe3, 0x8b, 0xa4, 0xac, 0xbe, 0xa4, 0x8c, 0xd3, 0xca, 0x7a, - 0x8b, 0xc4, 0x38, 0xfb, 0xd8, 0xd8, 0xdb, 0xf7, 0xb8, 0x81, 0xe5, 0x4f, 0xe8, 0x19, 0x48, 0x91, - 0x21, 0xe3, 0x1f, 0xeb, 0xcf, 0xf6, 0x2d, 0x36, 0xfc, 0x7c, 0x59, 0x35, 0x43, 0x5e, 0xfc, 0x81, - 0xff, 0x3c, 0x27, 0x29, 0x94, 0x03, 0x2d, 0x41, 0xa1, 0xad, 0xb9, 0x9e, 0x4a, 0xe7, 0x09, 0x79, - 0xfd, 0x18, 0x87, 0xe8, 0x17, 0x09, 0x97, 0x2d, 0x6f, 0x7b, 0x8e, 0xb0, 0xb1, 0xa2, 0x16, 0xba, - 0x04, 0x32, 0x45, 0xd1, 0xa9, 0xa9, 0x62, 0x71, 0x63, 0x9a, 0x8a, 0x7e, 0x82, 0x94, 0x33, 0x0b, - 0x46, 0xa3, 0xc7, 0xb3, 0x90, 0xa5, 0xdf, 0x07, 0x53, 0x12, 0x76, 0xe8, 0x3f, 0x43, 0x0a, 0x68, - 0xe5, 0x45, 0x28, 0x06, 0x1e, 0x92, 0x91, 0x64, 0x18, 0x4a, 0x50, 0x4c, 0x09, 0x1f, 0x87, 0x69, - 0x13, 0x1f, 0xd0, 0xcf, 0x10, 0x22, 0xd4, 0x59, 0x4a, 0x8d, 0x48, 0xdd, 0x76, 0x94, 0xe3, 0x41, - 0x98, 0xd0, 0x85, 0xf4, 0x19, 0x2d, 0x50, 0xda, 0x82, 0x5f, 0x4a, 0xc9, 0xce, 0x40, 0x46, 0xb3, - 0x6d, 0x46, 0x90, 0xe3, 0x0e, 0xd2, 0xb6, 0x69, 0xd5, 0x65, 0x98, 0xa4, 0x7d, 0x74, 0xb0, 0xdb, - 0x6d, 0x7b, 0x1c, 0x24, 0x4f, 0x69, 0x8a, 0xa4, 0x42, 0x61, 0xe5, 0x94, 0xf6, 0x02, 0x14, 0xf0, - 0x6d, 0xa3, 0x85, 0x4d, 0x1d, 0x33, 0xba, 0x02, 0xa5, 0xcb, 0x8b, 0x42, 0x4a, 0xf4, 0x30, 0xf8, - 0x7e, 0x4f, 0x15, 0x4e, 0x79, 0x82, 0xe1, 0x89, 0xf2, 0x0a, 0x2b, 0x2e, 0xcd, 0x40, 0x6a, 0x49, - 0xf3, 0x34, 0x62, 0xc7, 0xbc, 0x03, 0x16, 0x6b, 0xe4, 0x15, 0xf2, 0x67, 0xe9, 0x97, 0x92, 0x90, - 0xda, 0xb6, 0x3c, 0x8c, 0x9e, 0x0c, 0xc5, 0xb6, 0x13, 0xb1, 0x2a, 0xdd, 0x30, 0xf6, 0x4c, 0xdc, - 0x5a, 0x73, 0xf7, 0x42, 0xb7, 0xf9, 0x04, 0x0a, 0x95, 0x88, 0x28, 0xd4, 0x34, 0x8c, 0x39, 0x56, - 0xd7, 0x6c, 0x89, 0xf3, 0xf2, 0xf4, 0x01, 0x2d, 0x43, 0xc6, 0xd7, 0x93, 0xd4, 0x50, 0x3d, 0x29, - 0x12, 0x3d, 0x21, 0x6a, 0xcc, 0x0b, 0x94, 0xf1, 0x1d, 0xae, 0x2e, 0x55, 0xc8, 0xfa, 0x16, 0xc6, - 0x57, 0xb8, 0x51, 0x74, 0x36, 0x60, 0x23, 0xe1, 0x84, 0x3f, 0xfa, 0xbe, 0xf8, 0x98, 0xce, 0xc9, - 0x7e, 0x05, 0x97, 0x5f, 0x44, 0xb1, 0xf8, 0xd5, 0x42, 0xe3, 0xb4, 0x63, 0x81, 0x62, 0xb1, 0xeb, - 0x85, 0xee, 0x83, 0xac, 0x6b, 0xec, 0x99, 0x9a, 0xd7, 0x75, 0x30, 0xd7, 0xbd, 0xa0, 0x80, 0xd4, - 0x06, 0x1f, 0x8f, 0x30, 0x5d, 0x0b, 0xdd, 0x78, 0x76, 0x05, 0xa6, 0x82, 0xbb, 0xc6, 0x02, 0x14, - 0xa6, 0x67, 0xc8, 0xaf, 0x6a, 0x88, 0x9a, 0xd2, 0xbf, 0x92, 0x20, 0xcd, 0x9d, 0x7b, 0x30, 0x0e, - 0x52, 0xfc, 0x38, 0x24, 0x06, 0x8d, 0x43, 0xf2, 0x6d, 0x8d, 0x03, 0xf8, 0xed, 0x74, 0xf9, 0x0d, - 0x32, 0x71, 0x51, 0x28, 0x6b, 0x64, 0xc3, 0xd8, 0xe3, 0x73, 0x3f, 0xc4, 0x55, 0x7a, 0x4b, 0x22, - 0xee, 0x97, 0xd7, 0xa3, 0x2a, 0x14, 0x44, 0xcb, 0xd4, 0xdd, 0xb6, 0xb6, 0xc7, 0xd5, 0xf1, 0xdc, - 0xe0, 0xe6, 0x91, 0x98, 0x45, 0xc9, 0xf1, 0x16, 0xd1, 0xe8, 0x2b, 0x76, 0x64, 0x13, 0x03, 0x46, - 0x36, 0xa2, 0x4a, 0xc9, 0x7b, 0x53, 0xa5, 0xc8, 0xa0, 0xa7, 0x7a, 0x06, 0xbd, 0xf4, 0x39, 0x89, - 0x5f, 0x76, 0xd6, 0x62, 0x1f, 0xbf, 0xfc, 0xb5, 0x8d, 0xd6, 0xd7, 0x72, 0xfd, 0x6a, 0xe1, 0x96, - 0xda, 0x37, 0x6c, 0x0f, 0xc4, 0x40, 0x46, 0x5b, 0x1d, 0x0c, 0x1f, 0x12, 0x30, 0x8d, 0x60, 0x18, - 0x7f, 0x2e, 0x01, 0x93, 0x7d, 0xf4, 0x7f, 0x0b, 0x87, 0x33, 0x3a, 0x87, 0xc7, 0x46, 0x9c, 0xc3, - 0xe9, 0x81, 0x73, 0xf8, 0xe7, 0x12, 0x34, 0x33, 0x60, 0x5b, 0xae, 0xd6, 0xfe, 0xaa, 0xd8, 0xe0, - 0xb3, 0x90, 0xb5, 0xad, 0xb6, 0xca, 0x6a, 0xd8, 0x97, 0x4b, 0x19, 0xdb, 0x6a, 0x2b, 0x7d, 0xaa, - 0x36, 0xf6, 0x4e, 0x19, 0xe8, 0xf4, 0x3b, 0x30, 0x0c, 0xe3, 0xbd, 0xb3, 0xca, 0x83, 0x3c, 0x93, - 0x05, 0x8f, 0xa0, 0xae, 0x12, 0x21, 0xd0, 0x98, 0x4c, 0xea, 0x8d, 0xf9, 0xfc, 0x76, 0x33, 0x52, - 0x85, 0x13, 0x12, 0x16, 0x16, 0x6f, 0xf4, 0xa7, 0x95, 0x7a, 0x2c, 0x97, 0xc2, 0x09, 0x4b, 0x1f, - 0x94, 0x00, 0x56, 0x89, 0x70, 0x69, 0x8f, 0x49, 0xf0, 0xe3, 0xd2, 0x46, 0xa8, 0x91, 0x77, 0xcf, - 0x0d, 0x1c, 0x38, 0xde, 0x82, 0xbc, 0x1b, 0x6e, 0xfa, 0x12, 0x14, 0x02, 0x05, 0x77, 0xb1, 0x68, - 0xce, 0xdc, 0x51, 0xcb, 0xf9, 0x06, 0xf6, 0x94, 0xfc, 0xed, 0xd0, 0x53, 0xe9, 0x5f, 0x4b, 0x90, - 0xa5, 0xad, 0x5a, 0xc3, 0x9e, 0x16, 0x19, 0x48, 0xe9, 0x6d, 0x0c, 0xe4, 0xfd, 0x00, 0x0c, 0xc7, - 0x35, 0xde, 0xc0, 0x5c, 0xbf, 0xb2, 0xb4, 0xa4, 0x61, 0xbc, 0x81, 0xd1, 0xd3, 0xbe, 0xd4, 0x93, - 0x43, 0xa4, 0x2e, 0xd6, 0xfb, 0x5c, 0xf6, 0xa7, 0x61, 0x9c, 0xde, 0xcc, 0x79, 0xe0, 0xf2, 0x25, - 0x7c, 0xda, 0xec, 0x76, 0x9a, 0x07, 0x6e, 0xe9, 0x16, 0x8c, 0x37, 0x0f, 0x58, 0xc6, 0xf1, 0x2c, - 0x64, 0x1d, 0xcb, 0xe2, 0xd1, 0x20, 0x0b, 0xc4, 0x33, 0xa4, 0x80, 0x06, 0x3f, 0x22, 0xc9, 0x96, - 0x08, 0x92, 0x6c, 0x41, 0x9a, 0x30, 0x39, 0x5a, 0x9a, 0x90, 0xac, 0xdb, 0x0b, 0x91, 0x19, 0x85, - 0x1e, 0x85, 0xd3, 0x8d, 0xfa, 0xca, 0x7a, 0x6d, 0x49, 0x5d, 0x6b, 0xac, 0xf4, 0xdc, 0x4e, 0x30, - 0x5b, 0x7c, 0xf3, 0xee, 0x7c, 0x8e, 0x2f, 0xd8, 0x07, 0x51, 0x6f, 0x2a, 0xb5, 0xed, 0x8d, 0x66, - 0x4d, 0x96, 0x18, 0xf5, 0xa6, 0x83, 0x6f, 0x5b, 0x1e, 0xbb, 0xfb, 0xf6, 0x71, 0x38, 0x13, 0x43, - 0xed, 0x2f, 0xdb, 0x27, 0xdf, 0xbc, 0x3b, 0x5f, 0xd8, 0x74, 0x30, 0x53, 0x35, 0xca, 0xb1, 0x00, - 0x33, 0xfd, 0x1c, 0x1b, 0x9b, 0x1b, 0x8d, 0xca, 0xaa, 0x3c, 0x3f, 0x2b, 0xbf, 0x79, 0x77, 0x3e, - 0x2f, 0x6c, 0x07, 0xa1, 0x7f, 0xf7, 0xd7, 0xed, 0xa9, 0xfe, 0xf3, 0x0e, 0x77, 0x1c, 0xcd, 0xb6, - 0xb1, 0xe3, 0x0e, 0xda, 0xd8, 0xbf, 0x00, 0xb9, 0xa5, 0xd0, 0x77, 0xbb, 0xfe, 0x09, 0x0f, 0x89, - 0x7e, 0xd3, 0xcb, 0x1e, 0x4a, 0x25, 0x80, 0xe5, 0xb6, 0xa5, 0x79, 0x31, 0x34, 0x89, 0x10, 0x4d, - 0xdd, 0xf4, 0xae, 0x3f, 0x19, 0x43, 0x93, 0x14, 0x34, 0x17, 0x20, 0xb7, 0x35, 0x88, 0x28, 0x15, - 0x05, 0x7a, 0xe2, 0x5a, 0x0c, 0xcd, 0x58, 0x0f, 0x50, 0x2c, 0x51, 0x41, 0x10, 0x9d, 0x87, 0x6c, - 0xd5, 0xb2, 0xda, 0x31, 0x24, 0x99, 0x10, 0x4e, 0x23, 0xf4, 0x49, 0x72, 0x84, 0x28, 0x1b, 0x6a, - 0x50, 0x95, 0xac, 0x5b, 0x63, 0x68, 0xfc, 0x33, 0x30, 0xc7, 0x3e, 0xfa, 0xf1, 0x5e, 0x3e, 0x2e, - 0xc7, 0x3d, 0xfa, 0x21, 0xc6, 0xf3, 0xde, 0x8e, 0x7e, 0xe4, 0x43, 0x5b, 0x0f, 0x7e, 0x96, 0xc1, - 0xd6, 0x1c, 0xad, 0xe3, 0x1e, 0x37, 0x9d, 0x3a, 0xe4, 0x64, 0xcd, 0xec, 0x10, 0x4d, 0x24, 0x2b, - 0x9b, 0xa2, 0xbf, 0x60, 0xde, 0xa4, 0x4d, 0x40, 0x4f, 0x86, 0xb3, 0x3b, 0xb9, 0xc1, 0x71, 0x08, - 0x23, 0x17, 0xd9, 0x9f, 0x17, 0x20, 0x23, 0x16, 0x5e, 0xdc, 0x36, 0x9f, 0x8f, 0x8b, 0x96, 0x38, - 0x09, 0xe7, 0xf5, 0x59, 0xd0, 0xd7, 0x40, 0xd6, 0xb7, 0xd4, 0xdc, 0x34, 0x95, 0x8e, 0xb2, 0xed, - 0x1c, 0x20, 0x60, 0x42, 0xe5, 0x20, 0x3d, 0x90, 0x1a, 0x98, 0x71, 0xd8, 0x66, 0x14, 0x9c, 0xdb, - 0x4f, 0x0d, 0x3c, 0x05, 0x29, 0x6d, 0x47, 0x37, 0xb8, 0x3b, 0xbf, 0x3f, 0x86, 0xb1, 0x52, 0x5d, - 0xac, 0x33, 0x2e, 0x7a, 0x21, 0x07, 0x25, 0x27, 0x8d, 0x76, 0x0f, 0x4d, 0x7d, 0xdf, 0xb1, 0xcc, - 0x43, 0xee, 0xc1, 0xe3, 0x1a, 0xdd, 0x10, 0x34, 0xa2, 0xd1, 0x3e, 0x13, 0x69, 0xf4, 0x2e, 0x0e, - 0xbc, 0x77, 0x7c, 0xa3, 0x97, 0x19, 0x85, 0x68, 0x34, 0x67, 0x28, 0xd5, 0x79, 0x3e, 0x95, 0x0f, - 0x1b, 0xbd, 0x56, 0xea, 0x40, 0x65, 0x99, 0x1e, 0x36, 0xe1, 0x33, 0x1d, 0xed, 0x80, 0x4e, 0x1a, - 0xe2, 0x4a, 0x48, 0xe5, 0x1e, 0xbf, 0xb8, 0x24, 0xa9, 0xa4, 0x3b, 0xda, 0xc1, 0x8a, 0xe6, 0xde, - 0x4c, 0x65, 0x92, 0x72, 0xaa, 0xf4, 0x49, 0x12, 0x7e, 0x47, 0x86, 0x06, 0x3d, 0x02, 0x88, 0x70, - 0x68, 0x7b, 0x58, 0x25, 0x4e, 0x88, 0x0e, 0xb2, 0xc0, 0x2d, 0x76, 0xb4, 0x83, 0xca, 0x1e, 0x5e, - 0xef, 0x76, 0x68, 0x03, 0x5c, 0xb4, 0x06, 0xb2, 0x20, 0x16, 0x0a, 0xe8, 0xc7, 0x0b, 0x7d, 0x17, - 0x25, 0x73, 0x02, 0x16, 0xd0, 0x7c, 0x90, 0x04, 0x34, 0x13, 0x0c, 0xcf, 0x3f, 0xf2, 0x15, 0xe9, - 0x4a, 0x32, 0xda, 0x95, 0xd2, 0x4b, 0x50, 0xec, 0xd1, 0x02, 0x54, 0x82, 0x02, 0xcf, 0x5a, 0xd3, - 0xe3, 0x34, 0x6c, 0xed, 0x9e, 0x55, 0x72, 0x2c, 0x39, 0x4d, 0x67, 0x5f, 0x39, 0xf3, 0x8b, 0x1f, - 0x9b, 0x93, 0xe8, 0xd6, 0xe5, 0x23, 0x50, 0x88, 0xa8, 0x81, 0x48, 0x5c, 0x4a, 0x41, 0xe2, 0x32, - 0x20, 0x7e, 0x0d, 0xf2, 0xc4, 0x95, 0xe2, 0x16, 0xa7, 0x7d, 0x08, 0x8a, 0xcc, 0xd7, 0xf7, 0xca, - 0x9a, 0xc5, 0xf0, 0x6b, 0x42, 0xe0, 0x25, 0x11, 0xd4, 0x47, 0xc5, 0x9e, 0x13, 0x54, 0x2b, 0x9a, - 0x5b, 0xfa, 0x01, 0x09, 0x8a, 0x3d, 0xba, 0x81, 0x5e, 0x80, 0xac, 0xed, 0x60, 0xdd, 0x08, 0xa5, - 0xb9, 0x8e, 0x10, 0x61, 0x8a, 0x8a, 0x2f, 0xe0, 0x20, 0x61, 0x92, 0x38, 0x27, 0xd0, 0xc2, 0x6d, - 0xed, 0x70, 0xf8, 0x28, 0x30, 0x08, 0x71, 0x6b, 0xfd, 0x12, 0x61, 0x2a, 0xfd, 0xaa, 0x04, 0x85, - 0x88, 0xd2, 0xa1, 0x16, 0xdc, 0x4f, 0x5c, 0x74, 0xf8, 0x6c, 0x3a, 0xbf, 0x7f, 0x2f, 0xb4, 0x46, - 0xcb, 0x5d, 0x3b, 0xdb, 0xf7, 0x9e, 0xc0, 0xd1, 0xd0, 0xe0, 0x46, 0x52, 0x66, 0x09, 0x4e, 0x70, - 0x44, 0x9d, 0x5d, 0xd4, 0x77, 0x83, 0x05, 0xe3, 0x1b, 0x80, 0xec, 0x1d, 0xaf, 0x17, 0x3a, 0x31, - 0x2a, 0xb4, 0x4c, 0x98, 0xc3, 0x80, 0xa5, 0x06, 0x40, 0x30, 0x71, 0x51, 0x65, 0x94, 0x4e, 0x24, - 0x8f, 0x6a, 0x61, 0x39, 0x31, 0x23, 0x55, 0x37, 0x3f, 0xf1, 0xd9, 0x73, 0xd2, 0xbb, 0x12, 0x3a, - 0xfc, 0x5e, 0x03, 0xee, 0x0b, 0x48, 0x77, 0x74, 0xa3, 0x37, 0xa1, 0x2d, 0xfb, 0xc6, 0x81, 0xd4, - 0x12, 0xb7, 0x70, 0xf4, 0x7e, 0xda, 0xd0, 0x74, 0xf7, 0x10, 0x47, 0x34, 0x4a, 0x3a, 0xfc, 0x1e, - 0xb3, 0xdd, 0xff, 0x21, 0x0b, 0xe3, 0x0a, 0x7e, 0x5f, 0x17, 0xbb, 0x1e, 0x7a, 0x02, 0x52, 0x58, - 0xdf, 0xb7, 0xfa, 0xb7, 0x9c, 0x78, 0x2f, 0x17, 0x6a, 0xfa, 0xbe, 0xc5, 0x89, 0x6f, 0x9c, 0x50, - 0x28, 0x31, 0xba, 0x0e, 0x63, 0xbb, 0xed, 0x2e, 0x4f, 0x84, 0x47, 0xdc, 0x94, 0xe0, 0x5a, 0x26, - 0xd5, 0x01, 0x1b, 0x23, 0x27, 0x2f, 0xa3, 0x3f, 0x27, 0x90, 0x1c, 0xf4, 0x32, 0xfa, 0x2b, 0x02, - 0xc1, 0xcb, 0x08, 0x31, 0x5a, 0x04, 0x30, 0x4c, 0xc3, 0x53, 0x69, 0x8e, 0x98, 0xbb, 0x89, 0x52, - 0x1c, 0xab, 0xe1, 0xd1, 0x7c, 0x72, 0xc0, 0x9f, 0x35, 0x44, 0x19, 0x69, 0xf1, 0xfb, 0xba, 0xd8, - 0x11, 0xae, 0x22, 0xa6, 0xc5, 0xef, 0x21, 0xd5, 0xa1, 0x16, 0x53, 0x72, 0xe2, 0x5a, 0xd9, 0xe5, - 0xa4, 0xde, 0x01, 0xbf, 0x72, 0x7b, 0xbe, 0x9f, 0x95, 0xde, 0x4d, 0xda, 0x3c, 0x08, 0x98, 0xc7, - 0x75, 0x56, 0x82, 0x9e, 0xf5, 0x97, 0x70, 0xb9, 0xde, 0x35, 0x93, 0xcf, 0xcc, 0x56, 0x70, 0x3e, - 0x2f, 0x67, 0x40, 0x1b, 0x30, 0xd1, 0x36, 0x5c, 0x4f, 0x75, 0x4d, 0xcd, 0x76, 0xf7, 0x2d, 0xcf, - 0xa5, 0xb9, 0xd8, 0xdc, 0xb5, 0x87, 0xfa, 0x21, 0x56, 0x0d, 0xd7, 0x6b, 0x08, 0xb2, 0x00, 0xa9, - 0xd0, 0x0e, 0x97, 0x13, 0x40, 0x6b, 0x77, 0x17, 0x3b, 0x3e, 0x22, 0x4d, 0xda, 0xc6, 0x02, 0x6e, - 0x10, 0x3a, 0xc1, 0x19, 0x02, 0xb4, 0xc2, 0xe5, 0xe8, 0xeb, 0x60, 0xaa, 0x6d, 0x69, 0x2d, 0x1f, - 0x4f, 0xd5, 0xf7, 0xbb, 0xe6, 0x2d, 0x9a, 0xe2, 0xcd, 0x5d, 0xbb, 0x1c, 0xd3, 0x4c, 0x4b, 0x6b, - 0x09, 0xe6, 0x45, 0x42, 0x1a, 0x20, 0x4f, 0xb6, 0x7b, 0xeb, 0x90, 0x0a, 0xd3, 0x9a, 0x6d, 0xb7, - 0x0f, 0x7b, 0xe1, 0x8b, 0x14, 0xfe, 0x91, 0x7e, 0xf8, 0x0a, 0xa1, 0x1e, 0x80, 0x8f, 0xb4, 0xbe, - 0x4a, 0xb4, 0x05, 0xb2, 0xed, 0x60, 0xfa, 0xdd, 0xaa, 0xcd, 0x17, 0x29, 0xf4, 0x56, 0xbf, 0xdc, - 0xb5, 0x4b, 0xfd, 0xe0, 0x9b, 0x8c, 0x52, 0xac, 0x66, 0x02, 0xe4, 0xa2, 0x1d, 0xad, 0x61, 0xb0, - 0x96, 0x8e, 0xe9, 0xad, 0xa3, 0x1c, 0x76, 0x72, 0x30, 0x2c, 0xa5, 0x8c, 0x85, 0x8d, 0xd4, 0xa0, - 0x65, 0xc8, 0xb1, 0xac, 0x96, 0x4a, 0x4c, 0x24, 0xbd, 0x0d, 0x30, 0x77, 0xed, 0x42, 0xcc, 0x74, - 0xa5, 0x44, 0xdb, 0x96, 0x87, 0x03, 0x30, 0xc0, 0x7e, 0x21, 0xda, 0x81, 0x93, 0xf4, 0x66, 0xc4, - 0x43, 0x35, 0x6a, 0x8f, 0x67, 0xa6, 0x28, 0xe2, 0xa3, 0xfd, 0x88, 0xdb, 0x94, 0x7c, 0x3b, 0x6c, - 0x98, 0x03, 0xe8, 0xa9, 0xdb, 0xfd, 0xb5, 0x44, 0xd3, 0x76, 0x0d, 0x53, 0x6b, 0x1b, 0x6f, 0x60, - 0x16, 0xbc, 0xd0, 0x4b, 0x81, 0x63, 0x35, 0x6d, 0x99, 0xd3, 0xd1, 0x60, 0x26, 0xa4, 0x69, 0xbb, - 0xe1, 0xf2, 0xea, 0x38, 0x5f, 0x72, 0xf8, 0xb7, 0x5c, 0x8e, 0xcb, 0x19, 0x76, 0xb3, 0xe5, 0xcd, - 0x54, 0x06, 0xe4, 0x5c, 0xe9, 0x22, 0xe4, 0x42, 0x76, 0x0a, 0xcd, 0xc0, 0x38, 0x77, 0xaa, 0xe2, - 0x00, 0x3f, 0x7f, 0x2c, 0x4d, 0x40, 0x3e, 0x6c, 0x9a, 0x4a, 0x1f, 0x90, 0x20, 0x17, 0x32, 0x3a, - 0x84, 0x33, 0xbc, 0xd1, 0x95, 0x0d, 0xe2, 0xd4, 0x0b, 0x22, 0xaa, 0x10, 0xf5, 0x6c, 0xb3, 0x35, - 0x4f, 0x0b, 0x79, 0x50, 0x83, 0xe6, 0x20, 0x67, 0x5f, 0xb3, 0x7d, 0x92, 0x24, 0x25, 0x01, 0xfb, - 0x9a, 0x2d, 0x08, 0xce, 0x43, 0x9e, 0x74, 0x5d, 0x0d, 0x87, 0xcb, 0x59, 0x25, 0x47, 0xca, 0x38, - 0x49, 0xe9, 0x37, 0x13, 0x20, 0xf7, 0x1a, 0x33, 0x7f, 0x03, 0x4c, 0x3a, 0xf6, 0x06, 0xd8, 0x99, - 0xde, 0xad, 0xb7, 0x60, 0xb7, 0x6d, 0x0d, 0xe4, 0x60, 0xcf, 0x88, 0xf9, 0x9e, 0x23, 0xe2, 0xff, - 0x9e, 0xb5, 0x8a, 0x52, 0xd4, 0x7b, 0x16, 0x2f, 0x2b, 0x91, 0xf3, 0x22, 0x29, 0xff, 0x88, 0x6b, - 0xaf, 0x3e, 0x09, 0x9a, 0x2d, 0xbb, 0xa5, 0x79, 0x58, 0xa4, 0xdc, 0x43, 0x47, 0x47, 0x1e, 0x82, - 0xa2, 0x66, 0xdb, 0xaa, 0xeb, 0x69, 0x1e, 0xe6, 0x81, 0x1e, 0x4b, 0x64, 0x16, 0x34, 0xdb, 0x6e, - 0x90, 0x52, 0x16, 0xe8, 0x3d, 0x08, 0x13, 0xc4, 0xc2, 0x1b, 0x5a, 0x5b, 0x44, 0x11, 0x69, 0x16, - 0x0f, 0xf2, 0x52, 0x1e, 0x89, 0xb4, 0x20, 0x1f, 0x36, 0xee, 0x7e, 0x6a, 0x46, 0x0a, 0xa5, 0x66, - 0x10, 0xbf, 0x78, 0x89, 0x49, 0x48, 0x5c, 0x56, 0x15, 0xbf, 0x19, 0x39, 0x4d, 0xd3, 0x38, 0xb7, - 0x59, 0xee, 0x35, 0xa3, 0xb0, 0x87, 0xd2, 0xab, 0x30, 0x11, 0xf5, 0x03, 0x68, 0x02, 0x12, 0xde, - 0x01, 0x7f, 0x4b, 0xc2, 0x3b, 0x40, 0x57, 0x79, 0xf6, 0x34, 0x49, 0xb3, 0xa7, 0xf7, 0x0f, 0xf4, - 0x23, 0x41, 0xea, 0xf4, 0x66, 0x2a, 0x93, 0x90, 0x93, 0xa5, 0x22, 0x14, 0x22, 0x5e, 0xa2, 0x74, - 0x0a, 0xa6, 0xe3, 0x6c, 0x7e, 0xc9, 0x80, 0xe9, 0x38, 0xd3, 0x8d, 0xae, 0x43, 0xc6, 0x37, 0xfa, - 0x7d, 0xd9, 0x36, 0xf1, 0x76, 0x9f, 0xc9, 0xa7, 0x8d, 0xec, 0x16, 0x26, 0x22, 0xbb, 0x85, 0xa5, - 0x6f, 0x84, 0x99, 0x41, 0xf6, 0xbc, 0x67, 0xfb, 0x20, 0xe5, 0x0b, 0xee, 0x14, 0xa4, 0xf9, 0xfd, - 0xc0, 0x09, 0x9a, 0xa6, 0xe0, 0x4f, 0x44, 0xa0, 0xcc, 0xb6, 0x27, 0x59, 0xf6, 0x82, 0x3e, 0x94, - 0x54, 0x38, 0x33, 0xd0, 0xa4, 0x0f, 0xde, 0x6d, 0x67, 0x40, 0x7c, 0xb7, 0x9d, 0x3e, 0xd0, 0x5f, - 0x21, 0xc2, 0xa6, 0x48, 0x02, 0x66, 0x15, 0xfe, 0x54, 0xfa, 0x50, 0x12, 0x4e, 0xc5, 0xdb, 0x75, - 0x34, 0x0f, 0x79, 0xb2, 0x78, 0xf0, 0xa2, 0xeb, 0x0c, 0xe8, 0x68, 0x07, 0x4d, 0xbe, 0xc8, 0xe0, - 0x3b, 0x95, 0x09, 0x7f, 0xa7, 0x12, 0x6d, 0xc3, 0x64, 0xdb, 0xd2, 0xb5, 0xb6, 0x1a, 0xda, 0x29, - 0xe6, 0xd3, 0xe9, 0x81, 0x41, 0x76, 0x5a, 0xec, 0x45, 0x10, 0x13, 0xc4, 0x27, 0x42, 0x91, 0x82, - 0xac, 0xfa, 0xbb, 0xca, 0xa8, 0x06, 0xb9, 0x8e, 0xe1, 0xee, 0xe0, 0x7d, 0xed, 0xb6, 0x61, 0x39, - 0x7c, 0x5e, 0xc5, 0x68, 0xcf, 0x5a, 0x40, 0x24, 0xb6, 0xb0, 0x43, 0x7c, 0xa1, 0x41, 0x19, 0x8b, - 0xdd, 0x5a, 0x4f, 0x1f, 0xdb, 0xb2, 0x0c, 0xda, 0xa4, 0x1e, 0x1f, 0xb8, 0x49, 0x1d, 0xb7, 0x23, - 0x9c, 0x89, 0xdf, 0x11, 0x7e, 0x93, 0x0e, 0x4e, 0x9c, 0x77, 0xec, 0xdf, 0x24, 0x46, 0x4d, 0x98, - 0xe6, 0xfc, 0xad, 0x88, 0xf4, 0xfb, 0xce, 0x9d, 0x45, 0x83, 0xae, 0x90, 0xd4, 0x91, 0xe0, 0x1f, - 0x2c, 0xf8, 0xe4, 0x3d, 0x0a, 0x5e, 0x1c, 0xd5, 0x48, 0x85, 0x8e, 0x6a, 0xfc, 0x6f, 0x36, 0x18, - 0xdf, 0x9a, 0x14, 0x9b, 0x67, 0xa1, 0xc0, 0x22, 0xf6, 0x0c, 0xca, 0xa0, 0xbd, 0x1e, 0xd1, 0xb1, - 0xe4, 0xb1, 0x3b, 0xc6, 0x47, 0x3b, 0x35, 0x7c, 0xb4, 0xc7, 0xde, 0xc9, 0xd1, 0x4e, 0xdf, 0xe3, - 0x68, 0xbf, 0xab, 0xe3, 0xf0, 0x11, 0x09, 0x66, 0x07, 0x87, 0x63, 0xb1, 0x03, 0x72, 0xac, 0xdd, - 0xc9, 0x41, 0x1e, 0xef, 0x41, 0x98, 0xe8, 0x89, 0x16, 0x99, 0x32, 0x17, 0x22, 0xcb, 0xf5, 0xd2, - 0xb7, 0x25, 0x61, 0x3a, 0x2e, 0xa0, 0x8b, 0x99, 0xb1, 0x0a, 0x4c, 0xb5, 0xb0, 0x6e, 0xb4, 0xee, - 0x79, 0xc2, 0x4e, 0x72, 0xf6, 0xff, 0x33, 0x5f, 0x63, 0xf4, 0xe4, 0xc7, 0x01, 0x32, 0x0a, 0x76, - 0x6d, 0x12, 0xa0, 0xb1, 0x5f, 0xbb, 0xd3, 0xb1, 0xed, 0x05, 0x69, 0xad, 0xd8, 0x75, 0x03, 0x27, - 0x11, 0x7c, 0x64, 0xfd, 0xec, 0xf3, 0xa1, 0x27, 0x79, 0x9a, 0x60, 0xe0, 0x82, 0x9f, 0x85, 0xdf, - 0x3e, 0x2b, 0xcb, 0x13, 0x3c, 0x2d, 0xf2, 0x04, 0xc9, 0x41, 0xab, 0x5f, 0x1e, 0x8c, 0xfb, 0x7c, - 0x3c, 0x51, 0xf0, 0x24, 0x4f, 0x14, 0xa4, 0x06, 0xbd, 0x8e, 0xc5, 0xec, 0xc1, 0xeb, 0x0c, 0x76, - 0x91, 0x69, 0x38, 0x53, 0x90, 0x1e, 0xd4, 0xd5, 0x50, 0x70, 0x1d, 0x74, 0x35, 0x48, 0x15, 0x3c, - 0x2d, 0x52, 0x05, 0xe3, 0x83, 0x1a, 0xcd, 0xa3, 0xc9, 0xa0, 0xd1, 0x2c, 0x57, 0xf0, 0x62, 0x28, - 0x57, 0x90, 0xed, 0x4d, 0xc3, 0xf7, 0xe5, 0x0a, 0x7c, 0x6e, 0x3f, 0x59, 0x50, 0xf6, 0x93, 0x05, - 0xf9, 0x81, 0x99, 0x06, 0x1e, 0x06, 0xfa, 0xcc, 0x22, 0x5b, 0xb0, 0xd9, 0x97, 0x2d, 0x60, 0x8b, - 0xfb, 0x8b, 0x43, 0xb3, 0x05, 0x3e, 0x54, 0x4f, 0xba, 0x60, 0xb3, 0x2f, 0x5d, 0x30, 0x31, 0x08, - 0xb1, 0x27, 0xe6, 0x0c, 0x10, 0xa3, 0xf9, 0x82, 0xaf, 0x8f, 0xcf, 0x17, 0x0c, 0x5c, 0xd0, 0xc7, - 0xc4, 0x97, 0x3e, 0x74, 0x4c, 0xc2, 0xe0, 0x1b, 0x07, 0x24, 0x0c, 0xe4, 0x41, 0x0b, 0xdb, 0xb8, - 0xe8, 0xd2, 0x7f, 0x41, 0x5c, 0xc6, 0x60, 0x3b, 0x26, 0x63, 0xc0, 0x96, 0xf6, 0x0f, 0x8f, 0x90, - 0x31, 0xf0, 0xa1, 0xfb, 0x52, 0x06, 0xdb, 0x31, 0x29, 0x03, 0x34, 0x18, 0xb7, 0x27, 0x28, 0x0a, - 0xe3, 0x46, 0x73, 0x06, 0x2b, 0xd1, 0x9c, 0xc1, 0xd4, 0xd1, 0xb1, 0x28, 0x73, 0xed, 0x3e, 0x5a, - 0x38, 0x69, 0xa0, 0x0f, 0x4a, 0x1a, 0xb0, 0x75, 0xfd, 0x63, 0x23, 0x26, 0x0d, 0x7c, 0xec, 0xd8, - 0xac, 0xc1, 0x66, 0x5f, 0xd6, 0xe0, 0xe4, 0x20, 0x85, 0xeb, 0x71, 0x32, 0x81, 0xc2, 0x0d, 0x4c, - 0x1b, 0xb0, 0x9f, 0xc5, 0x60, 0x3f, 0x88, 0x01, 0x72, 0xee, 0x66, 0x2a, 0x93, 0x93, 0xf3, 0xa5, - 0x87, 0x49, 0x58, 0xd3, 0x63, 0xf7, 0xc8, 0x22, 0x02, 0x3b, 0x8e, 0xe5, 0x88, 0x3d, 0x50, 0xfa, - 0x50, 0xba, 0x04, 0xf9, 0xb0, 0x89, 0x3b, 0x22, 0xc5, 0x50, 0x84, 0x42, 0xc4, 0xaa, 0x95, 0x7e, - 0x51, 0x82, 0x7c, 0xd8, 0x5e, 0x45, 0x16, 0xa0, 0x59, 0xbe, 0x00, 0x0d, 0x25, 0x1e, 0x12, 0xd1, - 0xc4, 0xc3, 0x1c, 0xe4, 0xc8, 0x22, 0xac, 0x27, 0xa7, 0xa0, 0xd9, 0x7e, 0x4e, 0x41, 0x1c, 0xdc, - 0x64, 0xe9, 0x09, 0xee, 0xa7, 0xd8, 0xa9, 0x85, 0xa2, 0x7f, 0x88, 0x95, 0xa7, 0xf9, 0x1f, 0x83, - 0xa9, 0x10, 0xad, 0xbf, 0xb8, 0x63, 0xcb, 0x6b, 0xd9, 0xa7, 0xae, 0xf0, 0x55, 0xde, 0xaf, 0x4a, - 0x30, 0xd9, 0x67, 0x2e, 0x63, 0xf3, 0x06, 0xd2, 0x3b, 0x95, 0x37, 0x48, 0xdc, 0x7b, 0xde, 0x20, - 0xbc, 0x5c, 0x4d, 0x46, 0x97, 0xab, 0x7f, 0x25, 0x41, 0x21, 0x62, 0xb6, 0xc9, 0x20, 0xe8, 0x56, - 0x4b, 0xec, 0x98, 0xd3, 0xbf, 0x49, 0x9c, 0xd2, 0xb6, 0xf6, 0xf8, 0x32, 0x91, 0xfc, 0x49, 0xa8, - 0x7c, 0x47, 0x94, 0xe5, 0x6e, 0xc6, 0x5f, 0x7b, 0x8e, 0x85, 0xbf, 0x29, 0xe3, 0xdf, 0x59, 0xa5, - 0x83, 0xef, 0xac, 0xfc, 0x8d, 0xf2, 0xf1, 0xd0, 0x46, 0x39, 0x7a, 0x16, 0xb2, 0x74, 0x17, 0x40, - 0xb5, 0xec, 0xe0, 0x87, 0x79, 0x07, 0x7f, 0x63, 0xe5, 0xd2, 0x8f, 0x04, 0xd8, 0x87, 0x59, 0x41, - 0x14, 0x92, 0x8d, 0x44, 0x21, 0xf7, 0x41, 0x96, 0x34, 0x9f, 0xfd, 0x1c, 0x11, 0xf0, 0xab, 0x46, - 0x44, 0x41, 0xe9, 0xa7, 0x12, 0x50, 0xec, 0xf1, 0x3a, 0xb1, 0x9d, 0x8f, 0x3b, 0xb1, 0x32, 0x9a, - 0x40, 0xce, 0x01, 0xec, 0x69, 0xae, 0x7a, 0x47, 0x33, 0x3d, 0xdc, 0xe2, 0x52, 0x09, 0x95, 0xa0, - 0x59, 0xc8, 0x90, 0xa7, 0xae, 0x8b, 0x5b, 0x3c, 0x43, 0xe3, 0x3f, 0xa3, 0x3a, 0xa4, 0xf1, 0x6d, - 0x7a, 0x1d, 0x37, 0xbb, 0xd4, 0xfe, 0x74, 0x8c, 0x79, 0x22, 0xf5, 0xd5, 0x19, 0x32, 0xdc, 0x7f, - 0xf4, 0xd6, 0x9c, 0xcc, 0xc8, 0x1f, 0xf5, 0x3f, 0x60, 0x55, 0x38, 0x40, 0x54, 0x0c, 0x99, 0x1e, - 0x31, 0xd0, 0x74, 0x61, 0x5e, 0xac, 0xfd, 0x89, 0x50, 0xd9, 0x97, 0x38, 0x4a, 0xa1, 0x83, 0x3b, - 0xb6, 0x65, 0xb5, 0x55, 0x36, 0xcf, 0x2b, 0x30, 0x11, 0x75, 0xb2, 0xec, 0xb7, 0x02, 0x3d, 0xcd, - 0x30, 0xd5, 0x48, 0x6c, 0x9c, 0x67, 0x85, 0x6c, 0x5e, 0xdd, 0x4c, 0x65, 0x24, 0x39, 0xc1, 0xd3, - 0x35, 0xef, 0x81, 0x93, 0xb1, 0x3e, 0x16, 0x3d, 0x03, 0xd9, 0xc0, 0x3f, 0xb3, 0xef, 0xa9, 0x8e, - 0xca, 0xc3, 0x04, 0xc4, 0xa5, 0x6d, 0x38, 0x19, 0xeb, 0x64, 0xd1, 0x0b, 0x90, 0x66, 0xe7, 0xb5, - 0xf9, 0x99, 0xbc, 0x07, 0x87, 0x7b, 0xe7, 0x6e, 0xdb, 0x53, 0x38, 0x53, 0xe9, 0x2a, 0x9c, 0x19, - 0xe8, 0x65, 0x83, 0x6c, 0x8a, 0x14, 0xca, 0xa6, 0x94, 0x7e, 0x5a, 0x82, 0xd9, 0xc1, 0x9e, 0x13, - 0x55, 0x7b, 0x1a, 0x74, 0x79, 0x44, 0xbf, 0x1b, 0x6a, 0x15, 0x59, 0x6e, 0x38, 0x78, 0x17, 0x7b, - 0xfa, 0x3e, 0x73, 0xe1, 0xcc, 0x28, 0x14, 0x94, 0x02, 0x2f, 0xa5, 0x3c, 0x2e, 0x23, 0x7b, 0x1d, - 0xeb, 0x9e, 0xca, 0x06, 0xd5, 0xe5, 0x3f, 0x35, 0x5e, 0x60, 0xa5, 0x0d, 0x56, 0x58, 0x7a, 0x04, - 0x4e, 0x0f, 0xf0, 0xc5, 0x31, 0xc7, 0xcd, 0x5f, 0x23, 0xc4, 0xb1, 0x0e, 0x16, 0xbd, 0x04, 0x69, - 0xd7, 0xd3, 0xbc, 0xae, 0xcb, 0x7b, 0x76, 0x71, 0xa8, 0x6f, 0x6e, 0x50, 0x72, 0x85, 0xb3, 0x95, - 0x9e, 0x03, 0xd4, 0xef, 0x69, 0x63, 0xd6, 0x56, 0x52, 0xdc, 0xda, 0x6a, 0x07, 0xce, 0x1e, 0xe1, - 0x53, 0xd1, 0x62, 0x4f, 0xe3, 0x1e, 0x19, 0xc9, 0x25, 0xf7, 0x34, 0xf0, 0x4f, 0x13, 0x70, 0x32, - 0xd6, 0xb5, 0x86, 0x66, 0xa9, 0xf4, 0x76, 0x67, 0xe9, 0x0b, 0x00, 0xde, 0x81, 0xf8, 0xc8, 0x80, - 0x5b, 0xfb, 0xb8, 0xf5, 0xc4, 0x01, 0xd6, 0xa9, 0xc1, 0x22, 0x8a, 0x91, 0xf5, 0xf8, 0x5f, 0x64, - 0xf1, 0x1f, 0x5a, 0xcf, 0x76, 0xa9, 0x27, 0x70, 0xf9, 0x52, 0x6f, 0x64, 0x9f, 0x11, 0x2c, 0x7c, - 0x59, 0xb1, 0x8b, 0x5e, 0x83, 0xd3, 0x3d, 0x1e, 0xcd, 0xc7, 0x4e, 0x8d, 0xec, 0xd8, 0x4e, 0x46, - 0x1d, 0x9b, 0xc0, 0x0e, 0x7b, 0xa5, 0xb1, 0xa8, 0x57, 0x7a, 0x0d, 0x20, 0x58, 0xd8, 0x06, 0xe7, - 0x61, 0xa5, 0xf0, 0x79, 0xd8, 0xeb, 0x30, 0x46, 0x34, 0x41, 0x88, 0x2a, 0xc6, 0x60, 0x90, 0x21, - 0x0d, 0xad, 0x8c, 0x19, 0x79, 0xe9, 0x75, 0xa1, 0x6d, 0xe1, 0x1c, 0xe3, 0x80, 0x77, 0xbc, 0x18, - 0x7d, 0x47, 0x69, 0x70, 0xba, 0x32, 0xfe, 0x5d, 0xff, 0x17, 0x8c, 0xd1, 0xe1, 0x8f, 0xfd, 0x00, - 0xf9, 0x1b, 0x00, 0x34, 0xcf, 0x73, 0x8c, 0x9d, 0x6e, 0xf0, 0x86, 0xf9, 0x01, 0xfa, 0x53, 0x11, - 0x84, 0xd5, 0xfb, 0xb8, 0x22, 0x4d, 0x07, 0xbc, 0x21, 0x65, 0x0a, 0x21, 0x96, 0xd6, 0x61, 0x22, - 0xca, 0x1b, 0xff, 0x45, 0x75, 0x70, 0x6f, 0x93, 0x38, 0xd7, 0x16, 0x38, 0x72, 0x7e, 0x97, 0x1a, - 0x7d, 0x28, 0x7d, 0x53, 0x02, 0xf2, 0x61, 0xed, 0xfb, 0x3b, 0xe8, 0x2c, 0x4b, 0xdf, 0x26, 0x41, - 0xc6, 0xef, 0xff, 0x11, 0x5f, 0x03, 0x04, 0xdf, 0xd6, 0xfb, 0x39, 0x78, 0xb6, 0xeb, 0x91, 0xf4, - 0x77, 0x3d, 0x9e, 0xf7, 0x1d, 0xc2, 0xc0, 0xc5, 0x7c, 0x58, 0xda, 0xe2, 0x1c, 0x2e, 0x77, 0x50, - 0xcf, 0x8d, 0xf6, 0x71, 0xef, 0x34, 0x8c, 0x85, 0xbf, 0xcb, 0x65, 0x0f, 0x25, 0x1c, 0x3a, 0xae, - 0xc4, 0x66, 0x63, 0xf8, 0x2b, 0x60, 0xe9, 0xf8, 0x5f, 0x01, 0xfb, 0xaf, 0x49, 0x84, 0x5f, 0xf3, - 0xf7, 0x25, 0xc8, 0x88, 0x79, 0x81, 0x5e, 0x0a, 0x1f, 0xa6, 0x13, 0x27, 0x73, 0x06, 0xdb, 0x25, - 0xfe, 0x82, 0xd0, 0x59, 0xba, 0xbe, 0x4f, 0x12, 0x92, 0xc7, 0xfe, 0x24, 0x81, 0xc7, 0x21, 0x5f, - 0x96, 0x40, 0xee, 0x9d, 0xb7, 0x6f, 0xbf, 0x7d, 0xfd, 0xfe, 0x2a, 0x19, 0xe3, 0xaf, 0x06, 0x7d, - 0x68, 0x90, 0x1a, 0xf4, 0xa1, 0x41, 0x7f, 0xbf, 0xc7, 0xee, 0xb5, 0xdf, 0xdf, 0x9a, 0x80, 0x5c, - 0x28, 0xc7, 0x87, 0x9e, 0x8a, 0x7c, 0xb5, 0x70, 0xfe, 0xc8, 0x84, 0x60, 0xe8, 0xb3, 0x85, 0x88, - 0xa4, 0x12, 0xf7, 0x20, 0xa9, 0x77, 0xfe, 0x63, 0xc6, 0xf8, 0x2f, 0xe3, 0xc7, 0x06, 0x7c, 0x19, - 0xff, 0xff, 0x4a, 0x90, 0xf1, 0x93, 0x2f, 0xc7, 0xdd, 0x93, 0x3b, 0x05, 0x69, 0x1e, 0x7b, 0xb1, - 0x4d, 0x39, 0xfe, 0x14, 0x9b, 0x1d, 0x9d, 0x85, 0x8c, 0xf8, 0x5d, 0x54, 0xee, 0xe1, 0xfc, 0xe7, - 0xcb, 0x3b, 0x90, 0x0b, 0x6d, 0x6b, 0xa2, 0x33, 0x70, 0x72, 0xf1, 0x46, 0x6d, 0xf1, 0x65, 0xb5, - 0xf9, 0x4a, 0xef, 0x6f, 0xeb, 0xf5, 0x55, 0x29, 0x35, 0xfa, 0x2c, 0x4b, 0xe8, 0x34, 0x4c, 0x45, - 0xab, 0x58, 0x45, 0x62, 0x36, 0xf5, 0xed, 0x3f, 0x76, 0xee, 0xc4, 0xe5, 0x2f, 0x4b, 0x30, 0x15, - 0x13, 0xe5, 0xa2, 0xf3, 0x70, 0xff, 0xc6, 0xf2, 0x72, 0x4d, 0x51, 0x1b, 0xeb, 0x95, 0xcd, 0xc6, - 0x8d, 0x8d, 0xa6, 0xaa, 0xd4, 0x1a, 0x5b, 0xab, 0xcd, 0xd0, 0x4b, 0xe7, 0xe1, 0xbe, 0x78, 0x92, - 0xca, 0xe2, 0x62, 0x6d, 0xb3, 0xc9, 0x7e, 0xdc, 0x6f, 0x00, 0x45, 0x75, 0x43, 0x69, 0xca, 0x89, - 0xc1, 0x10, 0x4a, 0xed, 0x66, 0x6d, 0xb1, 0x29, 0x27, 0xd1, 0x45, 0xb8, 0x70, 0x14, 0x85, 0xba, - 0xbc, 0xa1, 0xac, 0x55, 0x9a, 0x72, 0x6a, 0x28, 0x61, 0xa3, 0xb6, 0xbe, 0x54, 0x53, 0xe4, 0x31, - 0xde, 0xef, 0x8f, 0x25, 0x60, 0x66, 0x50, 0x30, 0x4d, 0xb0, 0x2a, 0x9b, 0x9b, 0xab, 0xaf, 0x06, - 0x58, 0x8b, 0x37, 0xb6, 0xd6, 0x5f, 0xee, 0x17, 0xc1, 0x43, 0x50, 0x3a, 0x8a, 0xd0, 0x17, 0xc4, - 0x83, 0x70, 0xfe, 0x48, 0x3a, 0x2e, 0x8e, 0x21, 0x64, 0x4a, 0xad, 0xa9, 0xbc, 0x2a, 0x27, 0xd1, - 0x02, 0x5c, 0x1e, 0x4a, 0xe6, 0xd7, 0xc9, 0x29, 0x74, 0x05, 0x1e, 0x39, 0x9a, 0x9e, 0x09, 0x48, - 0x30, 0x08, 0x11, 0xbd, 0x29, 0xc1, 0xc9, 0xd8, 0xa8, 0x1c, 0x5d, 0x80, 0xb9, 0x4d, 0x65, 0x63, - 0xb1, 0xd6, 0x68, 0xf8, 0xdf, 0x2c, 0xa8, 0x8d, 0x66, 0xa5, 0xb9, 0xd5, 0x08, 0xc9, 0xa6, 0x04, - 0xe7, 0x06, 0x11, 0xf9, 0x72, 0x39, 0x82, 0x86, 0x6b, 0x80, 0xd0, 0xd3, 0xbb, 0x12, 0x9c, 0x19, - 0x18, 0x85, 0xa3, 0x4b, 0xf0, 0xc0, 0x76, 0x4d, 0xa9, 0x2f, 0xbf, 0xaa, 0x6e, 0x6f, 0x34, 0xc3, - 0xbf, 0x22, 0xd9, 0xd7, 0xaa, 0x8b, 0x70, 0xe1, 0x48, 0x4a, 0xbf, 0x69, 0xc3, 0x08, 0x7b, 0xda, - 0xf7, 0x2d, 0x12, 0x14, 0x7b, 0x6c, 0x21, 0xba, 0x0f, 0x66, 0xd6, 0xea, 0x8d, 0x6a, 0xed, 0x46, - 0x65, 0xbb, 0xbe, 0xa1, 0xf4, 0xce, 0xd9, 0x0b, 0x30, 0xd7, 0x57, 0xbb, 0xb4, 0xb5, 0xb9, 0x5a, - 0x5f, 0xac, 0x34, 0x6b, 0x2a, 0xfb, 0xd0, 0x84, 0x74, 0xac, 0x8f, 0x68, 0xb5, 0xbe, 0x72, 0xa3, - 0xa9, 0x2e, 0xae, 0xd6, 0x6b, 0xeb, 0x4d, 0xb5, 0xd2, 0x6c, 0x56, 0x82, 0xe9, 0x5c, 0x7d, 0x79, - 0xe0, 0x01, 0xcf, 0xab, 0xa3, 0x1f, 0xf0, 0xe4, 0x47, 0x38, 0xfd, 0xf3, 0x9d, 0xbf, 0xf5, 0x04, - 0x3c, 0xc0, 0x2f, 0x26, 0x72, 0x3d, 0xed, 0x96, 0x61, 0xee, 0xf9, 0x37, 0x44, 0xf1, 0x67, 0x7e, - 0xce, 0xf3, 0x14, 0xbf, 0x05, 0x49, 0x94, 0x0e, 0xb9, 0x27, 0x6a, 0xe0, 0xf5, 0xa2, 0x43, 0xbf, - 0x0f, 0x18, 0x76, 0x4c, 0xf3, 0xa8, 0x3b, 0xa8, 0x86, 0xdc, 0x74, 0x15, 0x73, 0x47, 0xd5, 0xec, - 0xd1, 0xf7, 0x35, 0xcc, 0x1e, 0x79, 0xf8, 0xb5, 0xf4, 0x41, 0x09, 0x26, 0x6e, 0x18, 0xae, 0x67, - 0x39, 0x86, 0xae, 0xb5, 0x69, 0x20, 0xf1, 0xfc, 0xc8, 0x1f, 0xb4, 0x55, 0xb3, 0xc4, 0x8d, 0xf1, - 0x9b, 0xac, 0xf6, 0xc5, 0x37, 0x65, 0xe9, 0xdb, 0x5a, 0x9b, 0x7d, 0x4c, 0x16, 0xbe, 0x0a, 0xaf, - 0x57, 0xec, 0x21, 0xff, 0x1a, 0x46, 0x61, 0xbc, 0xe5, 0xc4, 0x8c, 0x54, 0xfa, 0x81, 0x04, 0x14, - 0xe9, 0x02, 0xc7, 0xa5, 0x0b, 0x62, 0xba, 0xe4, 0xba, 0x09, 0x29, 0x47, 0xf3, 0xf8, 0x32, 0xa4, - 0x7a, 0xfd, 0xd8, 0xd7, 0x5f, 0xb1, 0xb7, 0x50, 0x0c, 0xf4, 0x1e, 0xc8, 0x74, 0xb4, 0x03, 0x95, - 0xe2, 0x25, 0xde, 0x16, 0xde, 0x78, 0x47, 0x3b, 0x20, 0xed, 0x43, 0xdf, 0x00, 0x45, 0x02, 0xa9, - 0xef, 0x6b, 0xe6, 0x1e, 0x66, 0xc8, 0xc9, 0xb7, 0x85, 0x5c, 0xe8, 0x68, 0x07, 0x8b, 0x14, 0x8d, - 0xe0, 0xf3, 0x6b, 0xc2, 0x7e, 0x45, 0xe2, 0xab, 0x4b, 0x2a, 0x18, 0xa4, 0x81, 0xac, 0xfb, 0x4f, - 0xf4, 0xa5, 0x22, 0x69, 0x7b, 0x71, 0x90, 0xec, 0x7b, 0xc4, 0x5a, 0x2d, 0x90, 0xe6, 0x7d, 0xe6, - 0xad, 0x39, 0x89, 0xbd, 0xb5, 0xa8, 0xf7, 0x89, 0x3d, 0xc7, 0x56, 0xcd, 0x2a, 0x8d, 0x6f, 0x12, - 0x43, 0xe3, 0x9b, 0x82, 0x88, 0x6f, 0x18, 0x20, 0x30, 0x6e, 0x52, 0xcf, 0xfb, 0xf0, 0x09, 0x09, - 0x72, 0x4b, 0xa1, 0xab, 0x3b, 0x67, 0x60, 0xbc, 0x63, 0x99, 0xc6, 0x2d, 0xec, 0xf8, 0x59, 0x77, - 0xf6, 0x48, 0x62, 0x10, 0xf6, 0x0b, 0x90, 0xde, 0xa1, 0xb8, 0x40, 0x45, 0x3c, 0x13, 0xae, 0x3b, - 0x78, 0xc7, 0x35, 0x84, 0x9c, 0x15, 0xf1, 0x88, 0x1e, 0x06, 0xd9, 0xc5, 0x7a, 0xd7, 0x31, 0xbc, - 0x43, 0x55, 0xb7, 0x4c, 0x4f, 0xd3, 0x3d, 0xbe, 0x58, 0x2b, 0x8a, 0xf2, 0x45, 0x56, 0x4c, 0x40, - 0x5a, 0xd8, 0xd3, 0x8c, 0x36, 0x3b, 0x8c, 0x96, 0x55, 0xc4, 0x23, 0x6f, 0xea, 0xdd, 0xf1, 0xf0, - 0x52, 0x65, 0x11, 0x64, 0xcb, 0xc6, 0x4e, 0x64, 0xd7, 0x9d, 0x69, 0xe3, 0xcc, 0x6f, 0x7f, 0xfa, - 0xb1, 0x69, 0x2e, 0x70, 0xbe, 0x5f, 0xcb, 0xbe, 0xc0, 0x52, 0x8a, 0x82, 0x43, 0x6c, 0xc7, 0xbf, - 0x1a, 0xc9, 0xb3, 0x77, 0x77, 0x82, 0xbb, 0x8b, 0xa6, 0xfb, 0x84, 0x5a, 0x31, 0x0f, 0xab, 0x33, - 0xbf, 0x11, 0x40, 0xf3, 0xc5, 0xcc, 0x26, 0x5d, 0xb8, 0x84, 0x73, 0xee, 0x14, 0x86, 0x84, 0x77, - 0xaf, 0x6b, 0x46, 0x5b, 0xfc, 0x58, 0xae, 0xc2, 0x9f, 0x50, 0xd9, 0xcf, 0x23, 0xa5, 0x68, 0xb4, - 0x5c, 0x1a, 0xa4, 0x1b, 0x55, 0xcb, 0x6c, 0x45, 0xd3, 0x47, 0x68, 0x11, 0xd2, 0x9e, 0x75, 0x0b, - 0x9b, 0x5c, 0x40, 0xd5, 0x47, 0x8e, 0x71, 0xcf, 0x9d, 0xc2, 0x59, 0xd1, 0xd7, 0x81, 0xdc, 0xc2, - 0x6d, 0xbc, 0xc7, 0x3e, 0x36, 0xdd, 0xd7, 0x1c, 0xcc, 0x6e, 0x3d, 0xb8, 0xa7, 0x5b, 0xec, 0x8a, - 0x3e, 0x54, 0x83, 0x22, 0xa1, 0xcd, 0xe8, 0xe5, 0xb0, 0xe3, 0xfe, 0x16, 0x71, 0x6c, 0x1f, 0x43, - 0x9a, 0x17, 0xb6, 0x3e, 0x91, 0xcb, 0x64, 0x1f, 0x06, 0xb9, 0x6b, 0xee, 0x58, 0x26, 0xfd, 0x8d, - 0x49, 0x1e, 0x61, 0x67, 0xd8, 0xde, 0x8b, 0x5f, 0xce, 0xf7, 0x5e, 0x36, 0x61, 0x22, 0x20, 0xa5, - 0x33, 0x24, 0x7b, 0xdc, 0x19, 0x52, 0xf0, 0x01, 0x08, 0x09, 0x5a, 0x03, 0x08, 0xe6, 0x20, 0xcd, - 0xfc, 0xe7, 0x06, 0x8f, 0x58, 0x30, 0x9b, 0xc3, 0x9d, 0x09, 0x01, 0x20, 0x13, 0xa6, 0x3a, 0x86, - 0xa9, 0xba, 0xb8, 0xbd, 0xab, 0x72, 0xc9, 0x11, 0xdc, 0x1c, 0x15, 0xff, 0x8b, 0xc7, 0x18, 0xcd, - 0xdf, 0xfd, 0xf4, 0x63, 0xc5, 0xe0, 0xfa, 0xbf, 0xf9, 0xc7, 0x17, 0x9e, 0x7c, 0x5a, 0x99, 0xec, - 0x18, 0x66, 0x03, 0xb7, 0x77, 0x97, 0x7c, 0x60, 0xf4, 0x3c, 0x9c, 0x0d, 0x04, 0x62, 0x99, 0xea, - 0xbe, 0xd5, 0x6e, 0xa9, 0x0e, 0xde, 0x55, 0x75, 0x7a, 0x79, 0x61, 0x9e, 0x8a, 0xf1, 0xb4, 0x4f, - 0xb2, 0x61, 0xde, 0xb0, 0xda, 0x2d, 0x05, 0xef, 0x2e, 0x92, 0x6a, 0x74, 0x01, 0x02, 0x69, 0xa8, - 0x46, 0xcb, 0x9d, 0x29, 0xcc, 0x27, 0x2f, 0xa5, 0x94, 0xbc, 0x5f, 0x58, 0x6f, 0xb9, 0xe5, 0xcc, - 0xb7, 0x7f, 0x6c, 0xee, 0xc4, 0x17, 0x3e, 0x36, 0x77, 0xa2, 0xb4, 0x4c, 0x6f, 0x37, 0xe3, 0x53, - 0x0b, 0xbb, 0xe8, 0x3a, 0x64, 0x35, 0xf1, 0xc0, 0x3e, 0x5a, 0x3a, 0x62, 0x6a, 0x06, 0xa4, 0xa5, - 0x4f, 0x4a, 0x90, 0x5e, 0xda, 0xde, 0xd4, 0x0c, 0x07, 0xd5, 0x60, 0x32, 0xd0, 0xd5, 0x51, 0x67, - 0x79, 0xa0, 0xde, 0x62, 0x9a, 0xaf, 0x0f, 0x3a, 0xa2, 0x93, 0xad, 0x9e, 0xff, 0xed, 0x4f, 0x3f, - 0x76, 0x3f, 0x87, 0xd9, 0xee, 0x39, 0xad, 0x23, 0xf0, 0x7a, 0x4f, 0xf1, 0x84, 0xfa, 0x7c, 0x13, - 0xc6, 0x59, 0x53, 0x5d, 0xf4, 0x12, 0x8c, 0xd9, 0xe4, 0x0f, 0x9e, 0xc0, 0x3d, 0x37, 0x50, 0xe7, - 0x29, 0x7d, 0x58, 0x43, 0x18, 0x5f, 0xe9, 0x3b, 0x13, 0x00, 0x4b, 0xdb, 0xdb, 0x4d, 0xc7, 0xb0, - 0xdb, 0xd8, 0x7b, 0xa7, 0xfa, 0xbe, 0x05, 0x27, 0x43, 0xdf, 0x96, 0x3b, 0xfa, 0xf1, 0xfb, 0x3f, - 0x15, 0x7c, 0x65, 0xee, 0xe8, 0xb1, 0xb0, 0x2d, 0xd7, 0xf3, 0x61, 0x93, 0xc7, 0x87, 0x5d, 0x72, - 0xbd, 0x7e, 0xc9, 0xbe, 0x02, 0xb9, 0x40, 0x18, 0x2e, 0xaa, 0x43, 0xc6, 0xe3, 0x7f, 0x73, 0x01, - 0x97, 0x06, 0x0b, 0x58, 0xb0, 0x85, 0x85, 0xec, 0xb3, 0x97, 0xfe, 0x4a, 0x02, 0x08, 0xcd, 0x91, - 0xbf, 0x99, 0x3a, 0x86, 0xea, 0x90, 0xe6, 0xc6, 0x39, 0x79, 0xcf, 0x57, 0x8c, 0x32, 0x80, 0x90, - 0x50, 0xbf, 0x3b, 0x01, 0x53, 0x5b, 0x62, 0xf6, 0xfe, 0xcd, 0x97, 0xc1, 0x16, 0x8c, 0x63, 0xd3, - 0x73, 0x0c, 0x7f, 0x03, 0xe2, 0xf1, 0x41, 0x63, 0x1e, 0xd3, 0xa9, 0x9a, 0xe9, 0x39, 0x87, 0x61, - 0x0d, 0x10, 0x58, 0x21, 0x79, 0x7c, 0x38, 0x09, 0x33, 0x83, 0x58, 0xd1, 0x45, 0x28, 0xea, 0x0e, - 0xa6, 0x05, 0xd1, 0x6f, 0xe8, 0x26, 0x44, 0x31, 0x77, 0x3b, 0x0a, 0x90, 0x40, 0x8d, 0x28, 0x17, - 0x21, 0xbd, 0xb7, 0xc8, 0x6c, 0x22, 0x40, 0xa0, 0x8e, 0xa7, 0x09, 0x45, 0x71, 0xf2, 0x7e, 0x47, - 0x6b, 0x6b, 0xa6, 0x2e, 0x22, 0xd8, 0x63, 0xf9, 0x7c, 0x71, 0x7a, 0xbf, 0xca, 0x20, 0x50, 0x0d, - 0xc6, 0x05, 0x5a, 0xea, 0xf8, 0x68, 0x82, 0x17, 0x9d, 0x87, 0x7c, 0xd8, 0x31, 0xd0, 0x68, 0x24, - 0xa5, 0xe4, 0x42, 0x7e, 0x61, 0x98, 0xe7, 0x49, 0x1f, 0xe9, 0x79, 0x78, 0xc0, 0xf7, 0xc3, 0x49, - 0x98, 0x54, 0x70, 0xeb, 0x6f, 0xff, 0xb0, 0x6c, 0x02, 0xb0, 0xa9, 0x4a, 0x2c, 0x29, 0x1f, 0x99, - 0x7b, 0x98, 0xef, 0x59, 0x06, 0xb2, 0xe4, 0x7a, 0x5f, 0xad, 0x11, 0xfa, 0xbd, 0x04, 0xe4, 0xc3, - 0x23, 0xf4, 0x77, 0xd2, 0x69, 0xa1, 0xf5, 0xc0, 0x4c, 0xb1, 0x6f, 0x07, 0x1e, 0x1e, 0x64, 0xa6, - 0xfa, 0xb4, 0x79, 0x88, 0x7d, 0xfa, 0x7c, 0x12, 0xd2, 0xfc, 0x0c, 0xcf, 0x46, 0x5f, 0x6c, 0x3b, - 0xf4, 0x03, 0xea, 0x82, 0xf8, 0x06, 0x3d, 0x36, 0xb4, 0x7d, 0x10, 0x26, 0xc8, 0x1a, 0x39, 0x72, - 0x30, 0x48, 0xba, 0x54, 0xa0, 0x4b, 0xdd, 0xe0, 0x60, 0x2c, 0x9a, 0x83, 0x1c, 0x21, 0x0b, 0xec, - 0x30, 0xa1, 0x81, 0x8e, 0x76, 0x50, 0x63, 0x25, 0xe8, 0x31, 0x40, 0xfb, 0x7e, 0xe2, 0x42, 0x0d, - 0x04, 0x41, 0xe8, 0x26, 0x83, 0x1a, 0x41, 0x7e, 0x3f, 0x00, 0x69, 0x85, 0xca, 0x6e, 0xd5, 0xe6, - 0x77, 0x96, 0x93, 0x92, 0x25, 0x7a, 0xb3, 0xf6, 0xb7, 0x48, 0x2c, 0x44, 0xee, 0x59, 0x49, 0xf3, - 0x15, 0x4a, 0x73, 0x84, 0x49, 0xf1, 0x17, 0x6f, 0xcd, 0xcd, 0x1e, 0x6a, 0x9d, 0x76, 0xb9, 0x14, - 0x83, 0x53, 0x8a, 0x5b, 0xdc, 0x93, 0xc0, 0x39, 0xba, 0x12, 0x47, 0x75, 0x90, 0x6f, 0xe1, 0x43, - 0xd5, 0xe1, 0x3f, 0xca, 0xae, 0xee, 0x62, 0x71, 0x87, 0xc1, 0x99, 0x85, 0x98, 0x3b, 0xce, 0x17, - 0x16, 0x2d, 0xc3, 0xe4, 0xfb, 0x13, 0x13, 0xb7, 0xf0, 0xa1, 0xc2, 0xf9, 0x96, 0x31, 0x2e, 0x3f, - 0x40, 0x66, 0xca, 0x9b, 0x9f, 0xff, 0x99, 0xcb, 0x67, 0x43, 0xf7, 0x75, 0x1f, 0xf8, 0x39, 0x32, - 0x36, 0xbc, 0x24, 0xe8, 0x45, 0x81, 0x03, 0x0a, 0x1d, 0x04, 0x83, 0xd0, 0x3a, 0x41, 0x3a, 0x7a, - 0xfd, 0x11, 0xf0, 0x47, 0xd6, 0x1f, 0xa1, 0xe9, 0xf9, 0x62, 0x60, 0xff, 0x13, 0xc3, 0x7a, 0x13, - 0xd6, 0x4c, 0xce, 0x44, 0x67, 0xfd, 0x89, 0xd2, 0xbf, 0x97, 0xe0, 0x4c, 0x9f, 0x26, 0xfb, 0x4d, - 0xd6, 0x01, 0x39, 0xa1, 0x4a, 0xaa, 0x11, 0x62, 0x2f, 0xf0, 0xde, 0x26, 0xc6, 0xa4, 0xd3, 0xe7, - 0x04, 0xde, 0x19, 0x47, 0xc6, 0xad, 0xd8, 0xaf, 0x4b, 0x30, 0x1d, 0x6e, 0x80, 0xdf, 0x95, 0x06, - 0xe4, 0xc3, 0xaf, 0xe6, 0x9d, 0x78, 0x60, 0x94, 0x4e, 0x84, 0xdb, 0x1f, 0x01, 0x41, 0xdb, 0x81, - 0xb5, 0x60, 0x99, 0xb9, 0xab, 0x23, 0x0b, 0x45, 0x34, 0x2c, 0xd6, 0x6a, 0xb0, 0xb1, 0xf9, 0x63, - 0x09, 0x52, 0x9b, 0x96, 0xd5, 0x46, 0xef, 0x83, 0x49, 0xd3, 0xf2, 0x54, 0x32, 0xb3, 0x70, 0x4b, - 0xe5, 0x69, 0x03, 0x66, 0x89, 0x6b, 0x47, 0xca, 0xea, 0x8f, 0xde, 0x9a, 0xeb, 0xe7, 0x8c, 0xbb, - 0x33, 0xbf, 0x68, 0x5a, 0x5e, 0x95, 0x12, 0x35, 0x59, 0x66, 0x61, 0x17, 0x0a, 0xd1, 0xd7, 0x31, - 0x6b, 0x5d, 0x19, 0xf6, 0xba, 0xc2, 0xd0, 0x57, 0xe5, 0x77, 0x42, 0xef, 0x61, 0xb7, 0x83, 0xff, - 0x19, 0x19, 0xb9, 0x6f, 0x00, 0x79, 0xbb, 0xf7, 0xa4, 0xc9, 0x32, 0x8c, 0x8b, 0x93, 0x25, 0xd2, - 0xa8, 0xa7, 0x56, 0xc2, 0xf2, 0xe4, 0xcc, 0x34, 0xf5, 0xf9, 0x99, 0x04, 0x9c, 0x59, 0xb4, 0x4c, - 0x97, 0x27, 0x79, 0xf8, 0xac, 0x66, 0x79, 0xda, 0x43, 0xf4, 0xf0, 0x80, 0x14, 0x54, 0xbe, 0x3f, - 0xd1, 0xb4, 0x0d, 0x45, 0xe2, 0x5e, 0x75, 0xcb, 0x7c, 0x9b, 0x79, 0xa6, 0x82, 0xd5, 0x6e, 0xf1, - 0x16, 0xdd, 0xc2, 0x87, 0x04, 0xd7, 0xc4, 0x77, 0x22, 0xb8, 0xc9, 0x7b, 0xc3, 0x35, 0xf1, 0x9d, - 0x10, 0x6e, 0xb0, 0x99, 0x99, 0x8a, 0x6c, 0x66, 0x5e, 0x87, 0x24, 0x31, 0x85, 0x63, 0xc7, 0x30, - 0x1e, 0x84, 0x21, 0xe4, 0xd2, 0x1a, 0x70, 0x86, 0x67, 0x09, 0xdc, 0x8d, 0x5d, 0x2a, 0x51, 0x4c, - 0x3b, 0xf4, 0x32, 0x3e, 0x8c, 0x49, 0x19, 0xe4, 0x47, 0x4a, 0x19, 0x5c, 0xfe, 0x79, 0x09, 0x20, - 0xc8, 0x97, 0xa1, 0x47, 0xe1, 0x74, 0x75, 0x63, 0x7d, 0x29, 0xd8, 0xd7, 0x09, 0xfd, 0x70, 0x90, - 0xb8, 0xc3, 0xcb, 0xb5, 0xb1, 0x6e, 0xec, 0x1a, 0xb8, 0x85, 0x1e, 0x82, 0xe9, 0x28, 0x35, 0x79, - 0xaa, 0x2d, 0xc9, 0xd2, 0x6c, 0xfe, 0xcd, 0xbb, 0xf3, 0x19, 0xb6, 0x3e, 0xc0, 0x2d, 0x74, 0x09, - 0x4e, 0xf6, 0xd3, 0xd5, 0xd7, 0x57, 0xe4, 0xc4, 0x6c, 0xe1, 0xcd, 0xbb, 0xf3, 0x59, 0x7f, 0x21, - 0x81, 0x4a, 0x80, 0xc2, 0x94, 0x1c, 0x2f, 0x39, 0x0b, 0x6f, 0xde, 0x9d, 0x4f, 0xb3, 0x29, 0xc3, - 0x37, 0x84, 0xbe, 0x1e, 0xa0, 0x6e, 0xee, 0x3a, 0x9a, 0x4e, 0x4d, 0xc3, 0x2c, 0x9c, 0xaa, 0xaf, - 0x2f, 0x2b, 0x95, 0xc5, 0x66, 0x7d, 0x63, 0xbd, 0xe7, 0xf7, 0x8e, 0xa2, 0x75, 0x4b, 0x1b, 0x5b, - 0xd5, 0xd5, 0x9a, 0xda, 0xa8, 0xaf, 0xac, 0xb3, 0xdd, 0xdb, 0x48, 0xdd, 0x7b, 0xd7, 0x9b, 0xf5, - 0xb5, 0x9a, 0x9c, 0xa8, 0x5e, 0x1f, 0xb8, 0xd1, 0x73, 0x5f, 0x64, 0x32, 0x06, 0xee, 0x28, 0xf2, - 0x43, 0x12, 0xff, 0x2b, 0x00, 0x00, 0xff, 0xff, 0x8c, 0x47, 0x9f, 0x20, 0x33, 0xa5, 0x00, 0x00, + 0x95, 0x87, 0x53, 0x89, 0x63, 0x3b, 0x15, 0x67, 0xe3, 0xaa, 0x24, 0x2e, 0x57, 0x59, 0xb1, 0x77, + 0x5d, 0xe5, 0x8d, 0x77, 0xed, 0xd8, 0xce, 0xae, 0xcb, 0x95, 0xad, 0xa4, 0x52, 0xf7, 0xd5, 0x0f, + 0xa0, 0x41, 0x80, 0x23, 0x69, 0xed, 0xd8, 0xf9, 0x67, 0x86, 0x7d, 0xef, 0x39, 0xbf, 0xbe, 0xf7, + 0xdc, 0x73, 0xcf, 0x39, 0xf7, 0xdc, 0xdb, 0x17, 0xf0, 0xfb, 0x55, 0x98, 0xdf, 0xb3, 0xac, 0xbd, + 0x36, 0xbe, 0x62, 0x3b, 0x96, 0x67, 0xed, 0x74, 0x77, 0xaf, 0xb4, 0xb0, 0xab, 0x3b, 0x86, 0xed, + 0x59, 0xce, 0x02, 0x2d, 0x43, 0x45, 0x46, 0xb1, 0x20, 0x28, 0x4a, 0x6b, 0x30, 0xb9, 0x6c, 0xb4, + 0xf1, 0x92, 0x4f, 0xd8, 0xc0, 0x1e, 0x7a, 0x06, 0x52, 0xbb, 0x46, 0x1b, 0xcf, 0x48, 0xf3, 0xc9, + 0x4b, 0xb9, 0x6b, 0x0f, 0x2c, 0xf4, 0x30, 0x2d, 0x44, 0x39, 0x36, 0x49, 0xb1, 0x42, 0x39, 0x4a, + 0xff, 0x33, 0x05, 0x53, 0x31, 0xb5, 0x08, 0x41, 0xca, 0xd4, 0x3a, 0x04, 0x51, 0xba, 0x94, 0x55, + 0xe8, 0xdf, 0x68, 0x06, 0xc6, 0x6d, 0x4d, 0xbf, 0xa5, 0xed, 0xe1, 0x99, 0x04, 0x2d, 0x16, 0x8f, + 0xe8, 0x1c, 0x40, 0x0b, 0xdb, 0xd8, 0x6c, 0x61, 0x53, 0x3f, 0x9c, 0x49, 0xce, 0x27, 0x2f, 0x65, + 0x95, 0x50, 0x09, 0x7a, 0x04, 0x26, 0xed, 0xee, 0x4e, 0xdb, 0xd0, 0xd5, 0x10, 0x19, 0xcc, 0x27, + 0x2f, 0x8d, 0x29, 0x32, 0xab, 0x58, 0x0a, 0x88, 0x2f, 0x42, 0xf1, 0x0e, 0xd6, 0x6e, 0x85, 0x49, + 0x73, 0x94, 0x74, 0x82, 0x14, 0x87, 0x08, 0x17, 0x21, 0xdf, 0xc1, 0xae, 0xab, 0xed, 0x61, 0xd5, + 0x3b, 0xb4, 0xf1, 0x4c, 0x8a, 0xf6, 0x7e, 0xbe, 0xaf, 0xf7, 0xbd, 0x3d, 0xcf, 0x71, 0xae, 0xe6, + 0xa1, 0x8d, 0x51, 0x05, 0xb2, 0xd8, 0xec, 0x76, 0x18, 0xc2, 0xd8, 0x00, 0xf9, 0xd5, 0xcc, 0x6e, + 0xa7, 0x17, 0x25, 0x43, 0xd8, 0x38, 0xc4, 0xb8, 0x8b, 0x9d, 0xdb, 0x86, 0x8e, 0x67, 0xd2, 0x14, + 0xe0, 0x62, 0x1f, 0x40, 0x83, 0xd5, 0xf7, 0x62, 0x08, 0x3e, 0xb4, 0x08, 0x59, 0x7c, 0xe0, 0x61, + 0xd3, 0x35, 0x2c, 0x73, 0x66, 0x9c, 0x82, 0x3c, 0x18, 0x33, 0x8a, 0xb8, 0xdd, 0xea, 0x85, 0x08, + 0xf8, 0xd0, 0x75, 0x18, 0xb7, 0x6c, 0xcf, 0xb0, 0x4c, 0x77, 0x26, 0x33, 0x2f, 0x5d, 0xca, 0x5d, + 0xbb, 0x2f, 0x56, 0x11, 0x36, 0x18, 0x8d, 0x22, 0x88, 0x51, 0x1d, 0x64, 0xd7, 0xea, 0x3a, 0x3a, + 0x56, 0x75, 0xab, 0x85, 0x55, 0xc3, 0xdc, 0xb5, 0x66, 0xb2, 0x14, 0x60, 0xae, 0xbf, 0x23, 0x94, + 0x70, 0xd1, 0x6a, 0xe1, 0xba, 0xb9, 0x6b, 0x29, 0x13, 0x6e, 0xe4, 0x19, 0x9d, 0x82, 0xb4, 0x7b, + 0x68, 0x7a, 0xda, 0xc1, 0x4c, 0x9e, 0x6a, 0x08, 0x7f, 0x22, 0xaa, 0x83, 0x5b, 0x06, 0x79, 0xdd, + 0x4c, 0x81, 0xa9, 0x0e, 0x7f, 0x2c, 0xfd, 0x52, 0x1a, 0x8a, 0xa3, 0x28, 0xdf, 0x73, 0x30, 0xb6, + 0x4b, 0xfa, 0x3f, 0x93, 0x38, 0x8e, 0x74, 0x18, 0x4f, 0x54, 0xbc, 0xe9, 0x7b, 0x14, 0x6f, 0x05, + 0x72, 0x26, 0x76, 0x3d, 0xdc, 0x62, 0xba, 0x92, 0x1c, 0x51, 0xdb, 0x80, 0x31, 0xf5, 0x2b, 0x5b, + 0xea, 0x9e, 0x94, 0xed, 0x15, 0x28, 0xfa, 0x4d, 0x52, 0x1d, 0xcd, 0xdc, 0x13, 0x5a, 0x7b, 0x65, + 0x58, 0x4b, 0x16, 0x6a, 0x82, 0x4f, 0x21, 0x6c, 0xca, 0x04, 0x8e, 0x3c, 0xa3, 0x25, 0x00, 0xcb, + 0xc4, 0xd6, 0xae, 0xda, 0xc2, 0x7a, 0x7b, 0x26, 0x33, 0x40, 0x4a, 0x1b, 0x84, 0xa4, 0x4f, 0x4a, + 0x16, 0x2b, 0xd5, 0xdb, 0xe8, 0xd9, 0x40, 0x09, 0xc7, 0x07, 0xe8, 0xd0, 0x1a, 0x9b, 0x7e, 0x7d, + 0x7a, 0xb8, 0x05, 0x13, 0x0e, 0x26, 0x33, 0x02, 0xb7, 0x78, 0xcf, 0xb2, 0xb4, 0x11, 0x0b, 0x43, + 0x7b, 0xa6, 0x70, 0x36, 0xd6, 0xb1, 0x82, 0x13, 0x7e, 0x44, 0x17, 0xc0, 0x2f, 0x50, 0xa9, 0x5a, + 0x01, 0xb5, 0x4f, 0x79, 0x51, 0xb8, 0xae, 0x75, 0xf0, 0xec, 0x1b, 0x30, 0x11, 0x15, 0x0f, 0x9a, + 0x86, 0x31, 0xd7, 0xd3, 0x1c, 0x8f, 0x6a, 0xe1, 0x98, 0xc2, 0x1e, 0x90, 0x0c, 0x49, 0x6c, 0xb6, + 0xa8, 0xfd, 0x1b, 0x53, 0xc8, 0x9f, 0xe8, 0x6b, 0x82, 0x0e, 0x27, 0x69, 0x87, 0x1f, 0xea, 0x1f, + 0xd1, 0x08, 0x72, 0x6f, 0xbf, 0x67, 0x9f, 0x86, 0x42, 0xa4, 0x03, 0xa3, 0xbe, 0xba, 0xf4, 0x7f, + 0xc3, 0xc9, 0x58, 0x68, 0xf4, 0x0a, 0x4c, 0x77, 0x4d, 0xc3, 0xf4, 0xb0, 0x63, 0x3b, 0x98, 0x68, + 0x2c, 0x7b, 0xd5, 0xcc, 0x1f, 0x8e, 0x0f, 0xd0, 0xb9, 0xad, 0x30, 0x35, 0x43, 0x51, 0xa6, 0xba, + 0xfd, 0x85, 0x97, 0xb3, 0x99, 0xcf, 0x8f, 0xcb, 0xef, 0x7f, 0xff, 0xfb, 0xdf, 0x9f, 0x28, 0xfd, + 0x4a, 0x1a, 0xa6, 0xe3, 0xe6, 0x4c, 0xec, 0xf4, 0x3d, 0x05, 0x69, 0xb3, 0xdb, 0xd9, 0xc1, 0x0e, + 0x15, 0xd2, 0x98, 0xc2, 0x9f, 0x50, 0x05, 0xc6, 0xda, 0xda, 0x0e, 0x6e, 0xcf, 0xa4, 0xe6, 0xa5, + 0x4b, 0x13, 0xd7, 0x1e, 0x19, 0x69, 0x56, 0x2e, 0xac, 0x12, 0x16, 0x85, 0x71, 0xa2, 0x17, 0x21, + 0xc5, 0x8d, 0x37, 0x41, 0xb8, 0x3c, 0x1a, 0x02, 0x99, 0x4b, 0x0a, 0xe5, 0x43, 0x67, 0x21, 0x4b, + 0xfe, 0x67, 0xba, 0x91, 0xa6, 0x6d, 0xce, 0x90, 0x02, 0xa2, 0x17, 0x68, 0x16, 0x32, 0x74, 0x9a, + 0xb4, 0xb0, 0x70, 0x7a, 0xfe, 0x33, 0x51, 0xac, 0x16, 0xde, 0xd5, 0xba, 0x6d, 0x4f, 0xbd, 0xad, + 0xb5, 0xbb, 0x98, 0x2a, 0x7c, 0x56, 0xc9, 0xf3, 0xc2, 0x6d, 0x52, 0x86, 0xe6, 0x20, 0xc7, 0x66, + 0x95, 0x61, 0xb6, 0xf0, 0x01, 0xb5, 0xab, 0x63, 0x0a, 0x9b, 0x68, 0x75, 0x52, 0x42, 0x5e, 0xff, + 0xba, 0x6b, 0x99, 0x42, 0x35, 0xe9, 0x2b, 0x48, 0x01, 0x7d, 0xfd, 0xd3, 0xbd, 0x26, 0xfd, 0xfe, + 0xf8, 0xee, 0xf5, 0xcd, 0xa5, 0x8b, 0x50, 0xa4, 0x14, 0x4f, 0xf0, 0xa1, 0xd7, 0xda, 0x33, 0x93, + 0xf3, 0xd2, 0xa5, 0x8c, 0x32, 0xc1, 0x8a, 0x37, 0x78, 0x69, 0xe9, 0xe7, 0x13, 0x90, 0xa2, 0x86, + 0xa5, 0x08, 0xb9, 0xe6, 0xab, 0x9b, 0x35, 0x75, 0x69, 0x63, 0xab, 0xba, 0x5a, 0x93, 0x25, 0x34, + 0x01, 0x40, 0x0b, 0x96, 0x57, 0x37, 0x2a, 0x4d, 0x39, 0xe1, 0x3f, 0xd7, 0xd7, 0x9b, 0xd7, 0x9f, + 0x94, 0x93, 0x3e, 0xc3, 0x16, 0x2b, 0x48, 0x85, 0x09, 0x9e, 0xb8, 0x26, 0x8f, 0x21, 0x19, 0xf2, + 0x0c, 0xa0, 0xfe, 0x4a, 0x6d, 0xe9, 0xfa, 0x93, 0x72, 0x3a, 0x5a, 0xf2, 0xc4, 0x35, 0x79, 0x1c, + 0x15, 0x20, 0x4b, 0x4b, 0xaa, 0x1b, 0x1b, 0xab, 0x72, 0xc6, 0xc7, 0x6c, 0x34, 0x95, 0xfa, 0xfa, + 0x8a, 0x9c, 0xf5, 0x31, 0x57, 0x94, 0x8d, 0xad, 0x4d, 0x19, 0x7c, 0x84, 0xb5, 0x5a, 0xa3, 0x51, + 0x59, 0xa9, 0xc9, 0x39, 0x9f, 0xa2, 0xfa, 0x6a, 0xb3, 0xd6, 0x90, 0xf3, 0x91, 0x66, 0x3d, 0x71, + 0x4d, 0x2e, 0xf8, 0xaf, 0xa8, 0xad, 0x6f, 0xad, 0xc9, 0x13, 0x68, 0x12, 0x0a, 0xec, 0x15, 0xa2, + 0x11, 0xc5, 0x9e, 0xa2, 0xeb, 0x4f, 0xca, 0x72, 0xd0, 0x10, 0x86, 0x32, 0x19, 0x29, 0xb8, 0xfe, + 0xa4, 0x8c, 0x4a, 0x8b, 0x30, 0x46, 0xd5, 0x10, 0x21, 0x98, 0x58, 0xad, 0x54, 0x6b, 0xab, 0xea, + 0xc6, 0x66, 0xb3, 0xbe, 0xb1, 0x5e, 0x59, 0x95, 0xa5, 0xa0, 0x4c, 0xa9, 0xbd, 0x67, 0xab, 0xae, + 0xd4, 0x96, 0xe4, 0x44, 0xb8, 0x6c, 0xb3, 0x56, 0x69, 0xd6, 0x96, 0xe4, 0x64, 0x49, 0x87, 0xe9, + 0x38, 0x83, 0x1a, 0x3b, 0x85, 0x42, 0xba, 0x90, 0x18, 0xa0, 0x0b, 0x14, 0xab, 0x57, 0x17, 0x4a, + 0x9f, 0x4b, 0xc0, 0x54, 0x8c, 0x53, 0x89, 0x7d, 0xc9, 0x4b, 0x30, 0xc6, 0x74, 0x99, 0xb9, 0xd9, + 0x87, 0x63, 0xbd, 0x13, 0xd5, 0xec, 0x3e, 0x57, 0x4b, 0xf9, 0xc2, 0x41, 0x48, 0x72, 0x40, 0x10, + 0x42, 0x20, 0xfa, 0x14, 0xf6, 0xeb, 0xfb, 0x8c, 0x3f, 0xf3, 0x8f, 0xd7, 0x47, 0xf1, 0x8f, 0xb4, + 0xec, 0x78, 0x4e, 0x60, 0x2c, 0xc6, 0x09, 0x3c, 0x07, 0x93, 0x7d, 0x40, 0x23, 0x1b, 0xe3, 0x6f, + 0x96, 0x60, 0x66, 0x90, 0x70, 0x86, 0x98, 0xc4, 0x44, 0xc4, 0x24, 0x3e, 0xd7, 0x2b, 0xc1, 0xf3, + 0x83, 0x07, 0xa1, 0x6f, 0xac, 0x3f, 0x2e, 0xc1, 0xa9, 0xf8, 0x60, 0x33, 0xb6, 0x0d, 0x2f, 0x42, + 0xba, 0x83, 0xbd, 0x7d, 0x4b, 0x84, 0x55, 0x0f, 0xc5, 0x38, 0x6b, 0x52, 0xdd, 0x3b, 0xd8, 0x9c, + 0x2b, 0xec, 0xed, 0x93, 0x83, 0x22, 0x46, 0xd6, 0x9a, 0xbe, 0x96, 0x7e, 0x47, 0x02, 0x4e, 0xc6, + 0x82, 0xc7, 0x36, 0xf4, 0x7e, 0x00, 0xc3, 0xb4, 0xbb, 0x1e, 0x0b, 0x9d, 0x98, 0x25, 0xce, 0xd2, + 0x12, 0x6a, 0xbc, 0x88, 0x95, 0xed, 0x7a, 0x7e, 0x7d, 0x92, 0xd6, 0x03, 0x2b, 0xa2, 0x04, 0xcf, + 0x04, 0x0d, 0x4d, 0xd1, 0x86, 0x9e, 0x1b, 0xd0, 0xd3, 0x3e, 0xc5, 0x7c, 0x1c, 0x64, 0xbd, 0x6d, + 0x60, 0xd3, 0x53, 0x5d, 0xcf, 0xc1, 0x5a, 0xc7, 0x30, 0xf7, 0xa8, 0xab, 0xc9, 0x94, 0xc7, 0x76, + 0xb5, 0xb6, 0x8b, 0x95, 0x22, 0xab, 0x6e, 0x88, 0x5a, 0xc2, 0x41, 0x15, 0xc8, 0x09, 0x71, 0xa4, + 0x23, 0x1c, 0xac, 0xda, 0xe7, 0x28, 0x7d, 0x6f, 0x16, 0x72, 0xa1, 0xd0, 0x1c, 0x9d, 0x87, 0xfc, + 0xeb, 0xda, 0x6d, 0x4d, 0x15, 0xcb, 0x2d, 0x26, 0x89, 0x1c, 0x29, 0xdb, 0xe4, 0x4b, 0xae, 0xc7, + 0x61, 0x9a, 0x92, 0x58, 0x5d, 0x0f, 0x3b, 0xaa, 0xde, 0xd6, 0x5c, 0x97, 0x0a, 0x2d, 0x43, 0x49, + 0x11, 0xa9, 0xdb, 0x20, 0x55, 0x8b, 0xa2, 0x06, 0x3d, 0x05, 0x53, 0x94, 0xa3, 0xd3, 0x6d, 0x7b, + 0x86, 0xdd, 0xc6, 0x2a, 0x59, 0x00, 0xba, 0xd4, 0xe5, 0xf8, 0x2d, 0x9b, 0x24, 0x14, 0x6b, 0x9c, + 0x80, 0xb4, 0xc8, 0x45, 0x4b, 0x70, 0x3f, 0x65, 0xdb, 0xc3, 0x26, 0x76, 0x34, 0x0f, 0xab, 0xf8, + 0x7d, 0x5d, 0xad, 0xed, 0xaa, 0x9a, 0xd9, 0x52, 0xf7, 0x35, 0x77, 0x7f, 0x66, 0x9a, 0x00, 0x54, + 0x13, 0x33, 0x92, 0x72, 0x86, 0x10, 0xae, 0x70, 0xba, 0x1a, 0x25, 0xab, 0x98, 0xad, 0x1b, 0x9a, + 0xbb, 0x8f, 0xca, 0x70, 0x8a, 0xa2, 0xb8, 0x9e, 0x63, 0x98, 0x7b, 0xaa, 0xbe, 0x8f, 0xf5, 0x5b, + 0x6a, 0xd7, 0xdb, 0x7d, 0x66, 0xe6, 0x6c, 0xf8, 0xfd, 0xb4, 0x85, 0x0d, 0x4a, 0xb3, 0x48, 0x48, + 0xb6, 0xbc, 0xdd, 0x67, 0x50, 0x03, 0xf2, 0x64, 0x30, 0x3a, 0xc6, 0x1b, 0x58, 0xdd, 0xb5, 0x1c, + 0xea, 0x43, 0x27, 0x62, 0x4c, 0x53, 0x48, 0x82, 0x0b, 0x1b, 0x9c, 0x61, 0xcd, 0x6a, 0xe1, 0xf2, + 0x58, 0x63, 0xb3, 0x56, 0x5b, 0x52, 0x72, 0x02, 0x65, 0xd9, 0x72, 0x88, 0x42, 0xed, 0x59, 0xbe, + 0x80, 0x73, 0x4c, 0xa1, 0xf6, 0x2c, 0x21, 0xde, 0xa7, 0x60, 0x4a, 0xd7, 0x59, 0x9f, 0x0d, 0x5d, + 0xe5, 0xcb, 0x34, 0x77, 0x46, 0x8e, 0x08, 0x4b, 0xd7, 0x57, 0x18, 0x01, 0xd7, 0x71, 0x17, 0x3d, + 0x0b, 0x27, 0x03, 0x61, 0x85, 0x19, 0x27, 0xfb, 0x7a, 0xd9, 0xcb, 0xfa, 0x14, 0x4c, 0xd9, 0x87, + 0xfd, 0x8c, 0x28, 0xf2, 0x46, 0xfb, 0xb0, 0x97, 0xed, 0x69, 0x98, 0xb6, 0xf7, 0xed, 0x7e, 0xbe, + 0xcb, 0x61, 0x3e, 0x64, 0xef, 0xdb, 0xbd, 0x8c, 0x0f, 0xd2, 0x35, 0xbb, 0x83, 0x75, 0xcd, 0xc3, + 0xad, 0x99, 0xd3, 0x61, 0xf2, 0x50, 0x05, 0x5a, 0x00, 0x59, 0xd7, 0x55, 0x6c, 0x6a, 0x3b, 0x6d, + 0xac, 0x6a, 0x0e, 0x36, 0x35, 0x77, 0x66, 0x8e, 0x12, 0xa7, 0x3c, 0xa7, 0x8b, 0x95, 0x09, 0x5d, + 0xaf, 0xd1, 0xca, 0x0a, 0xad, 0x43, 0x97, 0x61, 0xd2, 0xda, 0x79, 0x5d, 0x67, 0x1a, 0xa9, 0xda, + 0x0e, 0xde, 0x35, 0x0e, 0x66, 0x1e, 0xa0, 0xe2, 0x2d, 0x92, 0x0a, 0xaa, 0x8f, 0x9b, 0xb4, 0x18, + 0x3d, 0x0c, 0xb2, 0xee, 0xee, 0x6b, 0x8e, 0x4d, 0x4d, 0xb2, 0x6b, 0x6b, 0x3a, 0x9e, 0x79, 0x90, + 0x91, 0xb2, 0xf2, 0x75, 0x51, 0x4c, 0x66, 0x84, 0x7b, 0xc7, 0xd8, 0xf5, 0x04, 0xe2, 0x45, 0x36, + 0x23, 0x68, 0x19, 0x47, 0xbb, 0x04, 0x32, 0x91, 0x44, 0xe4, 0xc5, 0x97, 0x28, 0xd9, 0x84, 0xbd, + 0x6f, 0x87, 0xdf, 0x7b, 0x01, 0x0a, 0x84, 0x32, 0x78, 0xe9, 0xc3, 0x2c, 0x70, 0xb3, 0xf7, 0x43, + 0x6f, 0x7c, 0x12, 0x4e, 0x11, 0xa2, 0x0e, 0xf6, 0xb4, 0x96, 0xe6, 0x69, 0x21, 0xea, 0x47, 0x29, + 0x35, 0x11, 0xfb, 0x1a, 0xaf, 0x8c, 0xb4, 0xd3, 0xe9, 0xee, 0x1c, 0xfa, 0x8a, 0xf5, 0x18, 0x6b, + 0x27, 0x29, 0x13, 0xaa, 0xf5, 0xae, 0x05, 0xe7, 0xa5, 0x32, 0xe4, 0xc3, 0x7a, 0x8f, 0xb2, 0xc0, + 0x34, 0x5f, 0x96, 0x48, 0x10, 0xb4, 0xb8, 0xb1, 0x44, 0xc2, 0x97, 0xd7, 0x6a, 0x72, 0x82, 0x84, + 0x51, 0xab, 0xf5, 0x66, 0x4d, 0x55, 0xb6, 0xd6, 0x9b, 0xf5, 0xb5, 0x9a, 0x9c, 0x0c, 0x05, 0xf6, + 0x37, 0x53, 0x99, 0x87, 0xe4, 0x8b, 0xa5, 0x5f, 0x4e, 0xc2, 0x44, 0x74, 0xa5, 0x86, 0x9e, 0x87, + 0xd3, 0x22, 0xe1, 0xe2, 0x62, 0x4f, 0xbd, 0x63, 0x38, 0x74, 0x42, 0x76, 0x34, 0xe6, 0x1c, 0x7d, + 0xfd, 0x99, 0xe6, 0x54, 0x0d, 0xec, 0xbd, 0xd7, 0x70, 0xc8, 0x74, 0xeb, 0x68, 0x1e, 0x5a, 0x85, + 0x39, 0xd3, 0x52, 0x5d, 0x4f, 0x33, 0x5b, 0x9a, 0xd3, 0x52, 0x83, 0x54, 0x97, 0xaa, 0xe9, 0x3a, + 0x76, 0x5d, 0x8b, 0x39, 0x42, 0x1f, 0xe5, 0x3e, 0xd3, 0x6a, 0x70, 0xe2, 0xc0, 0x43, 0x54, 0x38, + 0x69, 0x8f, 0xfa, 0x26, 0x07, 0xa9, 0xef, 0x59, 0xc8, 0x76, 0x34, 0x5b, 0xc5, 0xa6, 0xe7, 0x1c, + 0xd2, 0xf8, 0x3c, 0xa3, 0x64, 0x3a, 0x9a, 0x5d, 0x23, 0xcf, 0x68, 0x1b, 0x1e, 0x0a, 0x48, 0xd5, + 0x36, 0xde, 0xd3, 0xf4, 0x43, 0x95, 0x06, 0xe3, 0x34, 0x6d, 0xa0, 0xea, 0x96, 0xb9, 0xdb, 0x36, + 0x74, 0xcf, 0xa5, 0xf6, 0x81, 0xd9, 0xb8, 0x52, 0xc0, 0xb1, 0x4a, 0x19, 0x6e, 0xba, 0x96, 0x49, + 0x63, 0xf0, 0x45, 0x41, 0xfd, 0x55, 0x59, 0x7e, 0xdd, 0x4c, 0x65, 0x52, 0xf2, 0xd8, 0xcd, 0x54, + 0x66, 0x4c, 0x4e, 0xdf, 0x4c, 0x65, 0xd2, 0xf2, 0xf8, 0xcd, 0x54, 0x26, 0x23, 0x67, 0x6f, 0xa6, + 0x32, 0x59, 0x19, 0x4a, 0xbf, 0x90, 0x81, 0x7c, 0x78, 0x65, 0x40, 0x16, 0x5a, 0x3a, 0xf5, 0x8d, + 0x12, 0xb5, 0x9e, 0x17, 0x8e, 0x5c, 0x47, 0x2c, 0x2c, 0x12, 0xa7, 0x59, 0x4e, 0xb3, 0x30, 0x5c, + 0x61, 0x9c, 0x24, 0x60, 0x21, 0x6a, 0x8d, 0x59, 0xd8, 0x93, 0x51, 0xf8, 0x13, 0x5a, 0x81, 0xf4, + 0xeb, 0x2e, 0xc5, 0x4e, 0x53, 0xec, 0x07, 0x8e, 0xc6, 0xbe, 0xd9, 0xa0, 0xe0, 0xd9, 0x9b, 0x0d, + 0x75, 0x7d, 0x43, 0x59, 0xab, 0xac, 0x2a, 0x9c, 0x1d, 0x9d, 0x81, 0x54, 0x5b, 0x7b, 0xe3, 0x30, + 0xea, 0x5e, 0x69, 0x11, 0x5a, 0x80, 0x62, 0xd7, 0xbc, 0x8d, 0x1d, 0x63, 0xd7, 0x20, 0x43, 0x45, + 0xa8, 0x8a, 0x61, 0xaa, 0x89, 0xa0, 0x76, 0x95, 0xd0, 0x8f, 0xa8, 0x1e, 0x67, 0x20, 0x75, 0x07, + 0x6b, 0xb7, 0xa2, 0x4e, 0x90, 0x16, 0xa1, 0x4b, 0x90, 0x6f, 0xe1, 0x9d, 0xee, 0x9e, 0xea, 0xe0, + 0x96, 0xa6, 0x7b, 0x51, 0xd3, 0x9f, 0xa3, 0x55, 0x0a, 0xad, 0x41, 0x2f, 0x43, 0x96, 0x8c, 0x91, + 0x49, 0xc7, 0x78, 0x92, 0x8a, 0xe0, 0xb1, 0xa3, 0x45, 0xc0, 0x87, 0x58, 0x30, 0x29, 0x01, 0x3f, + 0x5a, 0x86, 0xb4, 0xa7, 0x39, 0x7b, 0xd8, 0xa3, 0x96, 0x7f, 0x22, 0x26, 0xf9, 0x11, 0x83, 0xd4, + 0xa4, 0x1c, 0x74, 0x4d, 0xcb, 0xb9, 0xdf, 0x45, 0x2b, 0x73, 0x05, 0xc6, 0xa8, 0x7a, 0x20, 0x00, + 0xae, 0x20, 0xf2, 0x09, 0x94, 0x81, 0xd4, 0xe2, 0x86, 0x42, 0x2c, 0x8d, 0x0c, 0x79, 0x56, 0xaa, + 0x6e, 0xd6, 0x6b, 0x8b, 0x35, 0x39, 0x51, 0x7a, 0x0a, 0xd2, 0x6c, 0xcc, 0x89, 0x15, 0xf2, 0x47, + 0x5d, 0x3e, 0xc1, 0x1f, 0x39, 0x86, 0x24, 0x6a, 0xb7, 0xd6, 0xaa, 0x35, 0x45, 0x4e, 0x94, 0xb6, + 0xa0, 0xd8, 0x23, 0x27, 0x74, 0x12, 0x26, 0x95, 0x5a, 0xb3, 0xb6, 0x4e, 0xd6, 0x59, 0xea, 0xd6, + 0xfa, 0xcb, 0xeb, 0x1b, 0xef, 0x5d, 0x97, 0x4f, 0x44, 0x8b, 0x85, 0x49, 0x93, 0xd0, 0x34, 0xc8, + 0x41, 0x71, 0x63, 0x63, 0x4b, 0xa1, 0xad, 0xf9, 0xae, 0x04, 0xc8, 0xbd, 0x52, 0x43, 0xa7, 0x61, + 0xaa, 0x59, 0x51, 0x56, 0x6a, 0x4d, 0x95, 0xad, 0x1d, 0x7d, 0xe8, 0x69, 0x90, 0xc3, 0x15, 0xcb, + 0x75, 0xba, 0x34, 0x9e, 0x83, 0xb3, 0xe1, 0xd2, 0xda, 0x2b, 0xcd, 0xda, 0x7a, 0x83, 0xbe, 0xbc, + 0xb2, 0xbe, 0x42, 0xec, 0x6b, 0x0f, 0x9e, 0x58, 0xad, 0x26, 0x49, 0x53, 0xa3, 0x78, 0xb5, 0xd5, + 0x25, 0x39, 0xd5, 0x5b, 0xbc, 0xb1, 0x5e, 0xdb, 0x58, 0x96, 0xc7, 0x7a, 0xdf, 0x4e, 0x57, 0xb0, + 0x69, 0x34, 0x0b, 0xa7, 0x7a, 0x4b, 0xd5, 0xda, 0x7a, 0x53, 0x79, 0x55, 0x1e, 0xef, 0x7d, 0x71, + 0xa3, 0xa6, 0x6c, 0xd7, 0x17, 0x6b, 0x72, 0x06, 0x9d, 0x02, 0x14, 0x6d, 0x51, 0xf3, 0xc6, 0xc6, + 0x92, 0x9c, 0xed, 0xb3, 0x28, 0x25, 0x17, 0xf2, 0xe1, 0x65, 0xe4, 0x57, 0x27, 0x97, 0xf4, 0xc1, + 0x04, 0xe4, 0x42, 0xcb, 0x42, 0x12, 0xcf, 0x6b, 0xed, 0xb6, 0x75, 0x47, 0xd5, 0xda, 0x86, 0xe6, + 0x72, 0x7b, 0x03, 0xb4, 0xa8, 0x42, 0x4a, 0x46, 0x9d, 0xdf, 0xa3, 0x5b, 0xf8, 0xf4, 0x5f, 0x47, + 0x0b, 0x3f, 0x26, 0xa7, 0x4b, 0x1f, 0x95, 0x40, 0xee, 0x5d, 0xef, 0xf5, 0x74, 0x5f, 0x1a, 0xd4, + 0xfd, 0xaf, 0xca, 0xd8, 0x7d, 0x44, 0x82, 0x89, 0xe8, 0x22, 0xaf, 0xa7, 0x79, 0xe7, 0xff, 0x4a, + 0x9b, 0xf7, 0x7b, 0x09, 0x28, 0x44, 0x96, 0x76, 0xa3, 0xb6, 0xee, 0x7d, 0x30, 0x69, 0xb4, 0x70, + 0xc7, 0xb6, 0x3c, 0x6c, 0xea, 0x87, 0x6a, 0x1b, 0xdf, 0xc6, 0xed, 0x99, 0x12, 0x35, 0xca, 0x57, + 0x8e, 0x5e, 0x3c, 0x2e, 0xd4, 0x03, 0xbe, 0x55, 0xc2, 0x56, 0x9e, 0xaa, 0x2f, 0xd5, 0xd6, 0x36, + 0x37, 0x9a, 0xb5, 0xf5, 0xc5, 0x57, 0x85, 0x75, 0x51, 0x64, 0xa3, 0x87, 0xec, 0x5d, 0x34, 0xda, + 0x9b, 0x20, 0xf7, 0x36, 0x8a, 0xd8, 0x8a, 0x98, 0x66, 0xc9, 0x27, 0xd0, 0x14, 0x14, 0xd7, 0x37, + 0xd4, 0x46, 0x7d, 0xa9, 0xa6, 0xd6, 0x96, 0x97, 0x6b, 0x8b, 0xcd, 0x06, 0x4b, 0x07, 0xfa, 0xd4, + 0x4d, 0x39, 0x11, 0x16, 0xf1, 0x87, 0x92, 0x30, 0x15, 0xd3, 0x12, 0x54, 0xe1, 0x0b, 0x79, 0x96, + 0x5b, 0x78, 0x6c, 0x94, 0xd6, 0x2f, 0x90, 0x50, 0x7a, 0x53, 0x73, 0x3c, 0xbe, 0xee, 0x7f, 0x18, + 0x88, 0x94, 0x4c, 0x8f, 0x78, 0x76, 0x87, 0xa7, 0x59, 0xd9, 0xea, 0xbe, 0x18, 0x94, 0xb3, 0x4c, + 0xeb, 0xa3, 0x80, 0x6c, 0xcb, 0x35, 0x3c, 0xe3, 0x36, 0x56, 0x0d, 0x53, 0xe4, 0x64, 0xc9, 0x6a, + 0x3f, 0xa5, 0xc8, 0xa2, 0xa6, 0x6e, 0x7a, 0x3e, 0xb5, 0x89, 0xf7, 0xb4, 0x1e, 0x6a, 0x12, 0x79, + 0x24, 0x15, 0x59, 0xd4, 0xf8, 0xd4, 0xe7, 0x21, 0xdf, 0xb2, 0xba, 0x64, 0x09, 0xc4, 0xe8, 0x88, + 0xb5, 0x90, 0x94, 0x1c, 0x2b, 0xf3, 0x49, 0xf8, 0xe2, 0x36, 0x48, 0x06, 0xe7, 0x95, 0x1c, 0x2b, + 0x63, 0x24, 0x17, 0xa1, 0xa8, 0xed, 0xed, 0x39, 0x04, 0x5c, 0x00, 0xb1, 0xe5, 0xfa, 0x84, 0x5f, + 0x4c, 0x09, 0x67, 0x6f, 0x42, 0x46, 0xc8, 0x81, 0x44, 0xb0, 0x44, 0x12, 0xaa, 0xcd, 0x72, 0x50, + 0x89, 0x4b, 0x59, 0x25, 0x63, 0x8a, 0xca, 0xf3, 0x90, 0x37, 0x5c, 0x35, 0xd8, 0xdb, 0x4a, 0xcc, + 0x27, 0x2e, 0x65, 0x94, 0x9c, 0xe1, 0xfa, 0xfb, 0x02, 0xa5, 0x8f, 0x27, 0x60, 0x22, 0xba, 0x6b, + 0x87, 0x96, 0x20, 0xd3, 0xb6, 0x74, 0x8d, 0xaa, 0x16, 0xdb, 0x32, 0xbe, 0x34, 0x64, 0xa3, 0x6f, + 0x61, 0x95, 0xd3, 0x2b, 0x3e, 0xe7, 0xec, 0x6f, 0x4a, 0x90, 0x11, 0xc5, 0xe8, 0x14, 0xa4, 0x6c, + 0xcd, 0xdb, 0xa7, 0x70, 0x63, 0xd5, 0x84, 0x2c, 0x29, 0xf4, 0x99, 0x94, 0xbb, 0xb6, 0x66, 0x52, + 0x15, 0xe0, 0xe5, 0xe4, 0x99, 0x8c, 0x6b, 0x1b, 0x6b, 0x2d, 0x9a, 0x0b, 0xb0, 0x3a, 0x1d, 0x6c, + 0x7a, 0xae, 0x18, 0x57, 0x5e, 0xbe, 0xc8, 0x8b, 0xd1, 0x23, 0x30, 0xe9, 0x39, 0x9a, 0xd1, 0x8e, + 0xd0, 0xa6, 0x28, 0xad, 0x2c, 0x2a, 0x7c, 0xe2, 0x32, 0x9c, 0x11, 0xb8, 0x2d, 0xec, 0x69, 0xfa, + 0x3e, 0x6e, 0x05, 0x4c, 0x69, 0x9a, 0xf3, 0x3b, 0xcd, 0x09, 0x96, 0x78, 0xbd, 0xe0, 0x2d, 0x7d, + 0x26, 0x01, 0x93, 0x22, 0x7b, 0xd1, 0xf2, 0x85, 0xb5, 0x06, 0xa0, 0x99, 0xa6, 0xe5, 0x85, 0xc5, + 0xd5, 0xaf, 0xca, 0x7d, 0x7c, 0x0b, 0x15, 0x9f, 0x49, 0x09, 0x01, 0xcc, 0x7e, 0x41, 0x02, 0x08, + 0xaa, 0x06, 0xca, 0x6d, 0x0e, 0x72, 0x7c, 0x4f, 0x96, 0x6e, 0xec, 0xb3, 0x84, 0x17, 0xb0, 0xa2, + 0x65, 0xa3, 0x4d, 0xd3, 0x92, 0x3b, 0x78, 0xcf, 0x30, 0xf9, 0x7e, 0x0a, 0x7b, 0x10, 0x69, 0xc9, + 0x54, 0xb0, 0x3d, 0xa5, 0x40, 0xc6, 0xc5, 0x1d, 0xcd, 0xf4, 0x0c, 0x9d, 0xef, 0x90, 0x5c, 0x3f, + 0x56, 0xe3, 0x17, 0x1a, 0x9c, 0x5b, 0xf1, 0x71, 0x4a, 0x97, 0x20, 0x23, 0x4a, 0x49, 0xe0, 0xb7, + 0xbe, 0xb1, 0x5e, 0x93, 0x4f, 0xa0, 0x71, 0x48, 0x36, 0x6a, 0x4d, 0x59, 0x22, 0xcb, 0xce, 0xca, + 0x6a, 0xbd, 0xd2, 0x90, 0x13, 0xd5, 0xff, 0x07, 0xa6, 0x74, 0xab, 0xd3, 0xfb, 0xc2, 0xaa, 0xdc, + 0x93, 0xf2, 0x73, 0x6f, 0x48, 0xaf, 0x3d, 0xc6, 0x89, 0xf6, 0xac, 0xb6, 0x66, 0xee, 0x2d, 0x58, + 0xce, 0x5e, 0x70, 0x2c, 0x82, 0xac, 0x0e, 0xdc, 0xd0, 0xe1, 0x08, 0x7b, 0xe7, 0x2f, 0x25, 0xe9, + 0x47, 0x13, 0xc9, 0x95, 0xcd, 0xea, 0x4f, 0x26, 0x66, 0x57, 0x18, 0xe3, 0xa6, 0xe8, 0x8e, 0x82, + 0x77, 0xdb, 0x58, 0x27, 0x8d, 0x87, 0x3f, 0x7e, 0x04, 0xa6, 0xf7, 0xac, 0x3d, 0x8b, 0x22, 0x5d, + 0x21, 0x7f, 0xf1, 0x73, 0x15, 0x59, 0xbf, 0x74, 0x76, 0xe8, 0x21, 0x8c, 0xf2, 0x3a, 0x4c, 0x71, + 0x62, 0x95, 0x6e, 0xdf, 0xb2, 0xe4, 0x02, 0x3a, 0x32, 0xb3, 0x3d, 0xf3, 0xb3, 0x7f, 0x40, 0xa3, + 0x12, 0x65, 0x92, 0xb3, 0x92, 0x3a, 0x96, 0x7f, 0x28, 0x2b, 0x70, 0x32, 0x82, 0xc7, 0x6c, 0x04, + 0x76, 0x86, 0x20, 0xfe, 0x2b, 0x8e, 0x38, 0x15, 0x42, 0x6c, 0x70, 0xd6, 0xf2, 0x22, 0x14, 0x8e, + 0x83, 0xf5, 0xab, 0x1c, 0x2b, 0x8f, 0xc3, 0x20, 0x2b, 0x50, 0xa4, 0x20, 0x7a, 0xd7, 0xf5, 0xac, + 0x0e, 0x35, 0xc0, 0x47, 0xc3, 0xfc, 0xeb, 0x3f, 0x60, 0x93, 0x76, 0x82, 0xb0, 0x2d, 0xfa, 0x5c, + 0xe5, 0x32, 0xd0, 0x1d, 0xeb, 0x16, 0xd6, 0xdb, 0x43, 0x10, 0x7e, 0x8d, 0x37, 0xc4, 0xa7, 0x2f, + 0x6f, 0xc3, 0x34, 0xf9, 0x9b, 0xda, 0xc7, 0x70, 0x4b, 0x86, 0xa7, 0xc1, 0x67, 0xfe, 0xfd, 0x37, + 0x33, 0xbb, 0x30, 0xe5, 0x03, 0x84, 0xda, 0x14, 0x1a, 0xc5, 0x3d, 0xec, 0x79, 0xd8, 0x71, 0x55, + 0xad, 0x1d, 0xd7, 0xbc, 0x50, 0x1e, 0x71, 0xe6, 0x87, 0xbe, 0x18, 0x1d, 0xc5, 0x15, 0xc6, 0x59, + 0x69, 0xb7, 0xcb, 0x5b, 0x70, 0x3a, 0x46, 0x2b, 0x46, 0xc0, 0xfc, 0x10, 0xc7, 0x9c, 0xee, 0xd3, + 0x0c, 0x02, 0xbb, 0x09, 0xa2, 0xdc, 0x1f, 0xcb, 0x11, 0x30, 0x3f, 0xcc, 0x31, 0x11, 0xe7, 0x15, + 0x43, 0x4a, 0x10, 0x6f, 0xc2, 0xe4, 0x6d, 0xec, 0xec, 0x58, 0x2e, 0xcf, 0xdd, 0x8e, 0x00, 0xf7, + 0x11, 0x0e, 0x57, 0xe4, 0x8c, 0x34, 0x99, 0x4b, 0xb0, 0x9e, 0x85, 0xcc, 0xae, 0xa6, 0xe3, 0x11, + 0x20, 0xee, 0x72, 0x88, 0x71, 0x42, 0x4f, 0x58, 0x2b, 0x90, 0xdf, 0xb3, 0xb8, 0x8b, 0x1c, 0xce, + 0xfe, 0x51, 0xce, 0x9e, 0x13, 0x3c, 0x1c, 0xc2, 0xb6, 0xec, 0x6e, 0x9b, 0xf8, 0xcf, 0xe1, 0x10, + 0x3f, 0x2c, 0x20, 0x04, 0x0f, 0x87, 0x38, 0x86, 0x58, 0x3f, 0x26, 0x20, 0xdc, 0x90, 0x3c, 0x5f, + 0x82, 0x9c, 0x65, 0xb6, 0x0f, 0x2d, 0x73, 0x94, 0x46, 0xfc, 0x08, 0x47, 0x00, 0xce, 0x42, 0x00, + 0x9e, 0x83, 0xec, 0xa8, 0x03, 0xf1, 0xe3, 0x5f, 0x14, 0xd3, 0x43, 0x8c, 0xc0, 0x0a, 0x14, 0x85, + 0x81, 0x32, 0x2c, 0x73, 0x04, 0x88, 0x9f, 0xe0, 0x10, 0x13, 0x21, 0x36, 0xde, 0x0d, 0x0f, 0xbb, + 0xde, 0x1e, 0x1e, 0x05, 0xe4, 0xe3, 0xa2, 0x1b, 0x9c, 0x85, 0x8b, 0x72, 0x07, 0x9b, 0xfa, 0xfe, + 0x68, 0x08, 0x9f, 0x10, 0xa2, 0x14, 0x3c, 0x04, 0x62, 0x11, 0x0a, 0x1d, 0xcd, 0x71, 0xf7, 0xb5, + 0xf6, 0x48, 0xc3, 0xf1, 0x49, 0x8e, 0x91, 0xf7, 0x99, 0xb8, 0x44, 0xba, 0xe6, 0x71, 0x60, 0x7e, + 0x52, 0x48, 0x24, 0xc4, 0xc6, 0xa7, 0x9e, 0xeb, 0xd1, 0x44, 0xf7, 0x71, 0xd0, 0x7e, 0x4a, 0x4c, + 0x3d, 0xc6, 0xbb, 0x16, 0x46, 0x7c, 0x0e, 0xb2, 0xae, 0xf1, 0xc6, 0x48, 0x30, 0x7f, 0x5f, 0x8c, + 0x34, 0x65, 0x20, 0xcc, 0xaf, 0xc2, 0x99, 0x58, 0x37, 0x31, 0x02, 0xd8, 0x3f, 0xe0, 0x60, 0xa7, + 0x62, 0x5c, 0x05, 0x37, 0x09, 0xc7, 0x85, 0xfc, 0x69, 0x61, 0x12, 0x70, 0x0f, 0xd6, 0x26, 0x59, + 0xb4, 0xb8, 0xda, 0xee, 0xf1, 0xa4, 0xf6, 0x0f, 0x85, 0xd4, 0x18, 0x6f, 0x44, 0x6a, 0x4d, 0x38, + 0xc5, 0x11, 0x8f, 0x37, 0xae, 0x3f, 0x23, 0x0c, 0x2b, 0xe3, 0xde, 0x8a, 0x8e, 0xee, 0xd7, 0xc2, + 0xac, 0x2f, 0x4e, 0x11, 0x1d, 0xbb, 0x6a, 0x47, 0xb3, 0x47, 0x40, 0xfe, 0x59, 0x8e, 0x2c, 0x2c, + 0xbe, 0x1f, 0x5e, 0xbb, 0x6b, 0x9a, 0x4d, 0xc0, 0x5f, 0x81, 0x19, 0x01, 0xde, 0x35, 0x1d, 0xac, + 0x5b, 0x7b, 0xa6, 0xf1, 0x06, 0x6e, 0x8d, 0x00, 0xfd, 0x8f, 0x7a, 0x86, 0x6a, 0x2b, 0xc4, 0x4e, + 0x90, 0xeb, 0x20, 0xfb, 0xb1, 0x8a, 0x6a, 0x74, 0x6c, 0xcb, 0xf1, 0x86, 0x20, 0x7e, 0x4a, 0x8c, + 0x94, 0xcf, 0x57, 0xa7, 0x6c, 0xe5, 0x1a, 0xb0, 0xd3, 0x1f, 0xa3, 0xaa, 0xe4, 0xa7, 0x39, 0x50, + 0x21, 0xe0, 0xe2, 0x86, 0x43, 0xb7, 0x3a, 0xb6, 0xe6, 0x8c, 0x62, 0xff, 0x7e, 0x4e, 0x18, 0x0e, + 0xce, 0xc2, 0x0d, 0x07, 0x89, 0xe8, 0x88, 0xb7, 0x1f, 0x01, 0xe1, 0xe7, 0x85, 0xe1, 0x10, 0x3c, + 0x1c, 0x42, 0x04, 0x0c, 0x23, 0x40, 0xfc, 0x82, 0x80, 0x10, 0x3c, 0x04, 0xe2, 0x3d, 0x81, 0xa3, + 0x75, 0xf0, 0x9e, 0xe1, 0x7a, 0x0e, 0x0b, 0xc9, 0x8f, 0x86, 0xfa, 0xc5, 0x2f, 0x46, 0x83, 0x30, + 0x25, 0xc4, 0x4a, 0x2c, 0x11, 0xdf, 0xfa, 0xa0, 0x4b, 0xb6, 0xe1, 0x0d, 0xfb, 0x25, 0x61, 0x89, + 0x42, 0x6c, 0xa4, 0x6d, 0xa1, 0x08, 0x91, 0x88, 0x5d, 0x27, 0x0b, 0x95, 0x11, 0xe0, 0xfe, 0x71, + 0x4f, 0xe3, 0x1a, 0x82, 0x97, 0x60, 0x86, 0xe2, 0x9f, 0xae, 0x79, 0x0b, 0x1f, 0x8e, 0xa4, 0x9d, + 0xbf, 0xdc, 0x13, 0xff, 0x6c, 0x31, 0x4e, 0x66, 0x43, 0x8a, 0x3d, 0xf1, 0x14, 0x1a, 0x76, 0xd6, + 0x6f, 0xe6, 0x9b, 0xbe, 0xc4, 0xfb, 0x1b, 0x0d, 0xa7, 0xca, 0xab, 0x44, 0xc9, 0xa3, 0x41, 0xcf, + 0x70, 0xb0, 0x6f, 0xfe, 0x92, 0xaf, 0xe7, 0x91, 0x98, 0xa7, 0xbc, 0x0c, 0x85, 0x48, 0xc0, 0x33, + 0x1c, 0xea, 0x5b, 0x38, 0x54, 0x3e, 0x1c, 0xef, 0x94, 0x9f, 0x82, 0x14, 0x09, 0x5e, 0x86, 0xb3, + 0x7f, 0x2b, 0x67, 0xa7, 0xe4, 0xe5, 0x17, 0x20, 0x23, 0x82, 0x96, 0xe1, 0xac, 0xdf, 0xc6, 0x59, + 0x7d, 0x16, 0xc2, 0x2e, 0x02, 0x96, 0xe1, 0xec, 0xff, 0x9f, 0x60, 0x17, 0x2c, 0x84, 0x7d, 0x74, + 0x11, 0xfe, 0xf3, 0xef, 0x4c, 0x71, 0xa7, 0x23, 0x64, 0xf7, 0x1c, 0x8c, 0xf3, 0x48, 0x65, 0x38, + 0xf7, 0x77, 0xf0, 0x97, 0x0b, 0x8e, 0xf2, 0xd3, 0x30, 0x36, 0xa2, 0xc0, 0xbf, 0x9b, 0xb3, 0x32, + 0xfa, 0xf2, 0x22, 0xe4, 0x42, 0xd1, 0xc9, 0x70, 0xf6, 0xef, 0xe1, 0xec, 0x61, 0x2e, 0xd2, 0x74, + 0x1e, 0x9d, 0x0c, 0x07, 0xf8, 0xff, 0x45, 0xd3, 0x39, 0x07, 0x11, 0x9b, 0x08, 0x4c, 0x86, 0x73, + 0x7f, 0x40, 0x48, 0x5d, 0xb0, 0x94, 0x5f, 0x82, 0xac, 0xef, 0x6c, 0x86, 0xf3, 0x7f, 0x2f, 0xe7, + 0x0f, 0x78, 0x88, 0x04, 0x42, 0xce, 0x6e, 0x38, 0xc4, 0xdf, 0x11, 0x12, 0x08, 0x71, 0x91, 0x69, + 0xd4, 0x1b, 0xc0, 0x0c, 0x47, 0xfa, 0x3e, 0x31, 0x8d, 0x7a, 0xe2, 0x17, 0x32, 0x9a, 0xd4, 0xe6, + 0x0f, 0x87, 0xf8, 0x7e, 0x31, 0x9a, 0x94, 0x9e, 0x34, 0xa3, 0x37, 0x22, 0x18, 0x8e, 0xf1, 0x83, + 0xa2, 0x19, 0x3d, 0x01, 0x41, 0x79, 0x13, 0x50, 0x7f, 0x34, 0x30, 0x1c, 0xef, 0x83, 0x1c, 0x6f, + 0xb2, 0x2f, 0x18, 0x28, 0xbf, 0x17, 0x4e, 0xc5, 0x47, 0x02, 0xc3, 0x51, 0x7f, 0xe8, 0x4b, 0x3d, + 0x6b, 0xb7, 0x70, 0x20, 0x50, 0x6e, 0x06, 0x2e, 0x25, 0x1c, 0x05, 0x0c, 0x87, 0xfd, 0xd0, 0x97, + 0xa2, 0x86, 0x3b, 0x1c, 0x04, 0x94, 0x2b, 0x00, 0x81, 0x03, 0x1e, 0x8e, 0xf5, 0x11, 0x8e, 0x15, + 0x62, 0x22, 0x53, 0x83, 0xfb, 0xdf, 0xe1, 0xfc, 0x77, 0xc5, 0xd4, 0xe0, 0x1c, 0x64, 0x6a, 0x08, + 0xd7, 0x3b, 0x9c, 0xfb, 0xa3, 0x62, 0x6a, 0x08, 0x16, 0xa2, 0xd9, 0x21, 0xef, 0x36, 0x1c, 0xe1, + 0x47, 0x84, 0x66, 0x87, 0xb8, 0xca, 0xeb, 0x30, 0xd9, 0xe7, 0x10, 0x87, 0x43, 0xfd, 0x28, 0x87, + 0x92, 0x7b, 0xfd, 0x61, 0xd8, 0x79, 0x71, 0x67, 0x38, 0x1c, 0xed, 0xc7, 0x7a, 0x9c, 0x17, 0xf7, + 0x85, 0xe5, 0xe7, 0x20, 0x63, 0x76, 0xdb, 0x6d, 0x32, 0x79, 0xd0, 0xd1, 0xe7, 0x73, 0x67, 0xfe, + 0xcb, 0x57, 0xb8, 0x74, 0x04, 0x43, 0xf9, 0x29, 0x18, 0xc3, 0x9d, 0x1d, 0xdc, 0x1a, 0xc6, 0xf9, + 0x47, 0x5f, 0x11, 0x06, 0x93, 0x50, 0x97, 0x5f, 0x02, 0x60, 0xa9, 0x11, 0xba, 0x71, 0x3e, 0x84, + 0xf7, 0x0b, 0x5f, 0xe1, 0x07, 0xe2, 0x02, 0x96, 0x00, 0x80, 0x1d, 0xaf, 0x3b, 0x1a, 0xe0, 0x8b, + 0x51, 0x00, 0x3a, 0x22, 0xcf, 0xc2, 0xf8, 0xeb, 0xae, 0x65, 0x7a, 0xda, 0xde, 0x30, 0xee, 0x3f, + 0xe6, 0xdc, 0x82, 0x9e, 0x08, 0xac, 0x63, 0x39, 0xd8, 0xd3, 0xf6, 0xdc, 0x61, 0xbc, 0x7f, 0xc2, + 0x79, 0x7d, 0x06, 0xc2, 0xac, 0x6b, 0xae, 0x37, 0x4a, 0xbf, 0xff, 0xab, 0x60, 0x16, 0x0c, 0xa4, + 0xd1, 0xe4, 0xef, 0x5b, 0xf8, 0x70, 0x18, 0xef, 0x9f, 0x8a, 0x46, 0x73, 0xfa, 0xf2, 0x0b, 0x90, + 0x25, 0x7f, 0xb2, 0x53, 0xae, 0x43, 0x98, 0xff, 0x8c, 0x33, 0x07, 0x1c, 0xe4, 0xcd, 0xae, 0xd7, + 0xf2, 0x8c, 0xe1, 0xc2, 0xfe, 0x73, 0x3e, 0xd2, 0x82, 0xbe, 0x5c, 0x81, 0x9c, 0xeb, 0xb5, 0x5a, + 0x5d, 0x1e, 0x9f, 0x0e, 0x61, 0xff, 0x6f, 0x5f, 0xf1, 0x53, 0x16, 0x3e, 0x0f, 0x19, 0xed, 0x3b, + 0xb7, 0x3c, 0xdb, 0xa2, 0xfb, 0x2d, 0xc3, 0x10, 0xbe, 0xc4, 0x11, 0x42, 0x2c, 0xe5, 0x45, 0xc8, + 0x93, 0xbe, 0x38, 0xd8, 0xc6, 0x74, 0x73, 0x6c, 0x08, 0xc4, 0x97, 0xb9, 0x00, 0x22, 0x4c, 0xd5, + 0x6f, 0xfc, 0xb5, 0xcf, 0x9e, 0x93, 0x3e, 0xf3, 0xd9, 0x73, 0xd2, 0xef, 0x7d, 0xf6, 0x9c, 0xf4, + 0x81, 0xcf, 0x9d, 0x3b, 0xf1, 0x99, 0xcf, 0x9d, 0x3b, 0xf1, 0xdb, 0x9f, 0x3b, 0x77, 0x22, 0x3e, + 0x4b, 0x0c, 0x2b, 0xd6, 0x8a, 0xc5, 0xf2, 0xc3, 0xaf, 0x3d, 0xb8, 0x67, 0x78, 0xfb, 0xdd, 0x9d, + 0x05, 0xdd, 0xea, 0x5c, 0xd1, 0x2d, 0xb7, 0x63, 0xb9, 0x57, 0xa2, 0x79, 0x5d, 0xfa, 0x17, 0xfc, + 0x0f, 0x89, 0xac, 0x99, 0xa3, 0xe9, 0x5c, 0xcd, 0x3c, 0x1c, 0xf4, 0x31, 0xdd, 0x75, 0x48, 0x56, + 0xcc, 0x43, 0x74, 0x86, 0x19, 0x38, 0xb5, 0xeb, 0xb4, 0xf9, 0x51, 0xcb, 0x71, 0xf2, 0xbc, 0xe5, + 0xb4, 0xd1, 0x74, 0x70, 0x1e, 0x5a, 0xba, 0x94, 0xe7, 0x87, 0x9c, 0xab, 0xdf, 0x23, 0x1d, 0xaf, + 0x27, 0x99, 0x8a, 0x79, 0x48, 0x3b, 0xb2, 0x29, 0xbd, 0xf6, 0xe8, 0xd0, 0x3c, 0xf7, 0x2d, 0xd3, + 0xba, 0x63, 0x92, 0x66, 0xdb, 0x3b, 0x22, 0xc7, 0x7d, 0xae, 0x37, 0xc7, 0xfd, 0x5e, 0xdc, 0x6e, + 0xbf, 0x4c, 0xe8, 0x9a, 0x84, 0x65, 0x27, 0xcd, 0x4e, 0xf5, 0xc3, 0xf7, 0x25, 0xe0, 0x5c, 0x5f, + 0x3a, 0x9b, 0x2b, 0xc1, 0x20, 0x21, 0x94, 0x21, 0xb3, 0x24, 0x74, 0x6b, 0x06, 0xc6, 0x5d, 0xac, + 0x5b, 0x66, 0xcb, 0xa5, 0x82, 0x48, 0x2a, 0xe2, 0x91, 0x08, 0xc2, 0xd4, 0x4c, 0xcb, 0xe5, 0x87, + 0x95, 0xd9, 0x43, 0xf5, 0xc3, 0xc7, 0x14, 0x44, 0x41, 0xbc, 0x49, 0x48, 0xe3, 0xea, 0x88, 0xd2, + 0x10, 0x9d, 0x88, 0x64, 0xfe, 0x47, 0x95, 0xca, 0x0f, 0x26, 0x60, 0xae, 0x57, 0x2a, 0x64, 0x66, + 0xb9, 0x9e, 0xd6, 0xb1, 0x07, 0x89, 0xe5, 0x39, 0xc8, 0x36, 0x05, 0xcd, 0xb1, 0xe5, 0x72, 0xf7, + 0x98, 0x72, 0x99, 0xf0, 0x5f, 0x25, 0x04, 0x73, 0x6d, 0x44, 0xc1, 0xf8, 0xfd, 0xb8, 0x27, 0xc9, + 0x7c, 0x38, 0x0b, 0x67, 0xd8, 0x74, 0x52, 0xd9, 0x54, 0x62, 0x0f, 0x5c, 0x26, 0xf9, 0x70, 0xd5, + 0xf0, 0x7d, 0x92, 0xd2, 0xcb, 0x30, 0x55, 0x27, 0xd6, 0x82, 0xac, 0x82, 0x82, 0x1d, 0x9e, 0xd8, + 0xf3, 0xdc, 0xf3, 0x91, 0x80, 0x9f, 0xef, 0x6f, 0x85, 0x8b, 0x4a, 0xdf, 0x24, 0x81, 0xdc, 0xd0, + 0xb5, 0xb6, 0xe6, 0xbc, 0x5d, 0x28, 0xf4, 0x34, 0x00, 0x3b, 0xee, 0xe1, 0x7f, 0xb8, 0x37, 0x71, + 0x6d, 0x66, 0x21, 0xdc, 0xb9, 0x05, 0xf6, 0x26, 0x7a, 0x82, 0x2a, 0x4b, 0x69, 0xc9, 0x9f, 0x97, + 0x5f, 0x01, 0x08, 0x2a, 0xd0, 0x59, 0x38, 0xdd, 0x58, 0xac, 0xac, 0x56, 0x14, 0x71, 0x48, 0xa8, + 0xb1, 0x59, 0x5b, 0xac, 0x2f, 0xd7, 0x6b, 0x4b, 0xf2, 0x09, 0x74, 0x0a, 0x50, 0xb8, 0xd2, 0x3f, + 0xd4, 0x74, 0x12, 0x26, 0xc3, 0xe5, 0xec, 0x2b, 0x95, 0x44, 0xf9, 0x06, 0x14, 0xd9, 0x11, 0x7a, + 0x55, 0x6b, 0xb5, 0x70, 0x4b, 0x35, 0x4c, 0x34, 0xe4, 0x44, 0xfa, 0xcc, 0xaf, 0xff, 0xc7, 0x31, + 0xda, 0xb5, 0x02, 0x63, 0xac, 0x10, 0xbe, 0xba, 0x49, 0x62, 0x4e, 0xa3, 0x63, 0xb7, 0x31, 0xdd, + 0xc3, 0x54, 0x0d, 0x21, 0xff, 0xe1, 0xe1, 0x0c, 0xc1, 0x4b, 0x5e, 0xca, 0x2a, 0x53, 0x01, 0xbb, + 0x3f, 0x7a, 0xe5, 0x97, 0x41, 0x16, 0x47, 0x3d, 0xfd, 0x06, 0x0e, 0x45, 0xfc, 0x0d, 0xde, 0x42, + 0x91, 0xcd, 0x10, 0x4d, 0x5c, 0x85, 0x49, 0x4d, 0xd7, 0xb1, 0x1d, 0x69, 0xdf, 0x10, 0x0f, 0x22, + 0x7a, 0x2b, 0x73, 0xce, 0xa0, 0x69, 0x4f, 0x43, 0xda, 0xa5, 0x83, 0x32, 0x0c, 0x42, 0x34, 0x87, + 0x93, 0x97, 0x6b, 0x30, 0xc1, 0xd4, 0xc0, 0xef, 0xd1, 0x10, 0x80, 0x7f, 0xc3, 0x01, 0xf2, 0x94, + 0x4d, 0xf4, 0xc6, 0x84, 0x49, 0x12, 0xd7, 0x6a, 0x0e, 0x0e, 0xf5, 0xe6, 0xe8, 0x2c, 0xca, 0x3f, + 0xf9, 0xd4, 0xe3, 0x74, 0xdf, 0xf8, 0x7c, 0x54, 0xe9, 0x62, 0x26, 0x8b, 0x22, 0x73, 0xec, 0xa0, + 0xbf, 0x18, 0x26, 0xc4, 0xfb, 0x78, 0xbf, 0x8f, 0x7e, 0xd9, 0x3f, 0xe5, 0x2f, 0x3b, 0x17, 0xa7, + 0xe1, 0xa1, 0x37, 0x15, 0x38, 0x2a, 0xab, 0x28, 0x57, 0xa1, 0xb0, 0x6b, 0xb4, 0x43, 0xc3, 0x7d, + 0xf4, 0x5b, 0xfe, 0xd9, 0xa7, 0x1e, 0x67, 0x13, 0x8d, 0x30, 0x71, 0xd1, 0x54, 0x6b, 0x83, 0xac, + 0xde, 0x6b, 0x8f, 0xf4, 0xfb, 0x6f, 0xf6, 0xdf, 0x63, 0x14, 0xfd, 0xb9, 0x70, 0x53, 0x03, 0xeb, + 0x94, 0x82, 0x49, 0xad, 0x63, 0x98, 0xd6, 0x15, 0xfa, 0x2f, 0xb7, 0x4a, 0x63, 0xf4, 0x61, 0x84, + 0x6d, 0xdb, 0xeb, 0xcc, 0x58, 0x0c, 0xd7, 0xdb, 0x3f, 0xfb, 0xae, 0x9f, 0x18, 0x0b, 0x0c, 0x4a, + 0x79, 0x2d, 0xd0, 0x7d, 0x6c, 0xea, 0x56, 0x6b, 0xa4, 0x3c, 0xce, 0x9f, 0x0b, 0x0c, 0x91, 0x01, + 0xac, 0x71, 0xd6, 0xf2, 0xf3, 0x90, 0xf1, 0x61, 0x86, 0xc5, 0x6e, 0x02, 0xc4, 0xe7, 0x20, 0x91, + 0x1b, 0x53, 0xda, 0x51, 0xe2, 0xf4, 0x2f, 0x09, 0x7e, 0x66, 0xc3, 0xd6, 0x49, 0x6f, 0x56, 0x60, + 0xa2, 0x65, 0x99, 0x9e, 0x6a, 0x75, 0x0c, 0x0f, 0x77, 0x6c, 0x6f, 0x68, 0xe4, 0xfb, 0x65, 0x06, + 0x92, 0x51, 0x0a, 0x84, 0x6f, 0x43, 0xb0, 0x91, 0x96, 0xb0, 0x2f, 0x19, 0x47, 0x69, 0xc9, 0x5f, + 0xf8, 0x2d, 0xa1, 0x3c, 0xa4, 0x25, 0xf7, 0xa4, 0x1d, 0x6e, 0xeb, 0x16, 0x77, 0x77, 0xde, 0x01, + 0xd3, 0x02, 0x5f, 0x3b, 0x3e, 0x9e, 0x84, 0x73, 0x9c, 0x78, 0x47, 0x73, 0xf1, 0x95, 0xdb, 0x57, + 0x77, 0xb0, 0xa7, 0x5d, 0xbd, 0xa2, 0x5b, 0x86, 0x88, 0x75, 0xa6, 0xb8, 0x3b, 0x23, 0xf5, 0x0b, + 0xbc, 0x7e, 0x36, 0xf6, 0x40, 0xc0, 0xec, 0x60, 0x37, 0x38, 0xdb, 0xaf, 0x83, 0xa5, 0x36, 0xa4, + 0x16, 0x2d, 0xc3, 0x24, 0xde, 0xbf, 0x85, 0x4d, 0xab, 0xc3, 0x1d, 0x12, 0x7b, 0x40, 0x37, 0x20, + 0xad, 0x75, 0xac, 0xae, 0xe9, 0x31, 0x67, 0x54, 0x7d, 0xfc, 0xd7, 0xde, 0x9a, 0x3b, 0xf1, 0x3b, + 0x6f, 0xcd, 0x9d, 0x64, 0xb0, 0x6e, 0xeb, 0xd6, 0x82, 0x61, 0x5d, 0xe9, 0x68, 0xde, 0x3e, 0x31, + 0x01, 0xbf, 0xf5, 0xe9, 0xc7, 0x80, 0xbf, 0xaf, 0x6e, 0x7a, 0x9f, 0xf8, 0xc3, 0x9f, 0xb9, 0x2c, + 0x29, 0x9c, 0xbf, 0x9c, 0xfa, 0xfc, 0xc7, 0xe6, 0xa4, 0x92, 0x0d, 0xe3, 0x4b, 0x58, 0x3f, 0xe2, + 0x85, 0xf5, 0x9e, 0x17, 0x5e, 0xe5, 0x2f, 0x3c, 0xdb, 0xff, 0x42, 0x76, 0xa4, 0x71, 0x09, 0xeb, + 0xa1, 0xd7, 0x2e, 0x61, 0x3d, 0xfa, 0xc6, 0xea, 0xd2, 0x6f, 0xff, 0xfe, 0xb9, 0x13, 0xef, 0xff, + 0xec, 0xb9, 0x13, 0x03, 0x87, 0xac, 0x34, 0x7c, 0xc8, 0xfc, 0x91, 0xfa, 0x64, 0x8a, 0x8c, 0x54, + 0x07, 0x7b, 0x3b, 0xbb, 0xde, 0x15, 0xdd, 0x39, 0xb4, 0x3d, 0xeb, 0xca, 0xed, 0xab, 0x64, 0xe6, + 0x5a, 0xbb, 0x7c, 0xa4, 0x90, 0xa8, 0x5f, 0x60, 0xf5, 0x0b, 0xb7, 0x07, 0x0c, 0x54, 0x69, 0x17, + 0xc6, 0x36, 0x09, 0x23, 0x11, 0x85, 0x67, 0x79, 0x5a, 0x9b, 0x47, 0x64, 0xec, 0x81, 0x94, 0xb2, + 0x2f, 0x6d, 0x13, 0xac, 0xd4, 0x10, 0x1f, 0xd9, 0xb6, 0xb1, 0xb6, 0xcb, 0x3e, 0x58, 0x4a, 0xd2, + 0x50, 0x3e, 0x43, 0x0a, 0xe8, 0xb7, 0x49, 0xd3, 0x30, 0xa6, 0x75, 0xd9, 0xa1, 0xa2, 0x24, 0x89, + 0xf1, 0xe9, 0x43, 0x69, 0x15, 0xc6, 0xf9, 0xd9, 0x02, 0x24, 0x43, 0xf2, 0x16, 0x3e, 0xa4, 0xef, + 0xc9, 0x2b, 0xe4, 0x4f, 0x74, 0x05, 0xc6, 0x68, 0xeb, 0xf9, 0x97, 0x98, 0x67, 0x16, 0xfa, 0x9b, + 0xbf, 0x40, 0x5b, 0xa9, 0x30, 0xba, 0xd2, 0x4d, 0xc8, 0x2c, 0x59, 0x44, 0x81, 0xa2, 0x70, 0x59, + 0x06, 0x47, 0x1b, 0x6d, 0x77, 0xf9, 0xf0, 0x29, 0xec, 0x01, 0x9d, 0x82, 0x34, 0xfb, 0x82, 0x8d, + 0x9f, 0x8c, 0xe2, 0x4f, 0xa5, 0x45, 0x18, 0xa7, 0xd8, 0x1b, 0x36, 0x89, 0x87, 0xfc, 0x43, 0xfd, + 0x59, 0xfe, 0x3d, 0x33, 0x87, 0x4f, 0x04, 0xad, 0x45, 0x90, 0x6a, 0x69, 0x9e, 0xc6, 0x3b, 0x4e, + 0xff, 0x2e, 0xbd, 0x04, 0x19, 0x0e, 0xe2, 0xa2, 0x27, 0x20, 0x69, 0xd9, 0x2e, 0x3f, 0xdb, 0x74, + 0x76, 0x60, 0x5f, 0x36, 0xec, 0x6a, 0x8a, 0x28, 0x96, 0x42, 0xa8, 0xab, 0x6b, 0x03, 0x55, 0xe3, + 0x89, 0x88, 0x6a, 0x88, 0x61, 0x17, 0x7f, 0x68, 0xb6, 0x71, 0xa5, 0x5f, 0x19, 0x7c, 0x5d, 0xf9, + 0xef, 0x12, 0xdc, 0x1f, 0xa3, 0x2b, 0xb7, 0xf0, 0xa1, 0x7b, 0x6c, 0x55, 0x79, 0x05, 0xb2, 0x9b, + 0xf4, 0x76, 0x91, 0x97, 0xf1, 0x21, 0x9a, 0x85, 0x71, 0xdc, 0xba, 0xf6, 0xd4, 0x53, 0x57, 0x9f, + 0x65, 0x03, 0x79, 0xe3, 0x84, 0x22, 0x0a, 0xd0, 0x39, 0xc8, 0xba, 0x58, 0xb7, 0xaf, 0x3d, 0x75, + 0xfd, 0xd6, 0x55, 0x26, 0xb8, 0x1b, 0x27, 0x94, 0xa0, 0xa8, 0x9c, 0x21, 0x93, 0xe2, 0xf3, 0x3f, + 0x32, 0x27, 0x55, 0xc7, 0x20, 0xe9, 0x76, 0x3b, 0xef, 0x56, 0xe7, 0xff, 0x22, 0x0d, 0xe7, 0xfd, + 0x6a, 0x66, 0xf6, 0x6e, 0x5f, 0xbd, 0x72, 0x5b, 0x6b, 0x1b, 0x2d, 0x2d, 0xb8, 0x13, 0x66, 0xd2, + 0x17, 0x00, 0x25, 0x19, 0xd8, 0xff, 0xd9, 0xa3, 0x05, 0x59, 0xfa, 0xb4, 0x04, 0xf9, 0x6d, 0x81, + 0xdd, 0xc0, 0x1e, 0x7a, 0x1e, 0xc0, 0x7f, 0x97, 0x50, 0x87, 0xfb, 0x16, 0xfa, 0xde, 0xb6, 0xe0, + 0x33, 0x29, 0x21, 0x7a, 0xf4, 0x0c, 0x64, 0x6c, 0xc7, 0xb2, 0x2d, 0x97, 0x7f, 0xd1, 0x3a, 0x8c, + 0xd7, 0xa7, 0x46, 0x8f, 0x02, 0xa2, 0x93, 0x57, 0xbd, 0x6d, 0x79, 0x86, 0xb9, 0xa7, 0xda, 0xd6, + 0x1d, 0x7e, 0x51, 0x40, 0x52, 0x91, 0x69, 0xcd, 0x36, 0xad, 0xd8, 0x24, 0xe5, 0xa5, 0x4f, 0x49, + 0x90, 0xf5, 0x51, 0xc8, 0xca, 0x4c, 0x6b, 0xb5, 0x1c, 0xec, 0xba, 0x7c, 0x7e, 0x8a, 0x47, 0xf4, + 0x3c, 0x8c, 0xdb, 0xdd, 0x1d, 0x55, 0xcc, 0x85, 0xdc, 0xb5, 0xfb, 0x63, 0x35, 0x5b, 0x28, 0x08, + 0xd7, 0xed, 0xb4, 0xdd, 0xdd, 0x21, 0xea, 0x72, 0x1e, 0xf2, 0x31, 0xad, 0xc9, 0xdd, 0x0e, 0x1a, + 0x42, 0x6f, 0xb5, 0xe1, 0x5d, 0x50, 0x6d, 0xc7, 0xb0, 0x1c, 0xc3, 0x3b, 0xa4, 0x47, 0xef, 0x92, + 0x8a, 0x2c, 0x2a, 0x36, 0x79, 0x79, 0xa9, 0x0d, 0xc5, 0x06, 0x0d, 0xb4, 0x83, 0xa6, 0x5f, 0x0f, + 0x1a, 0x28, 0x8d, 0xd0, 0xc0, 0x81, 0x4d, 0x4b, 0xf4, 0x35, 0xed, 0xf2, 0x7f, 0x92, 0x20, 0x57, + 0x6d, 0x5b, 0xfa, 0xad, 0xfa, 0xd2, 0x72, 0x5b, 0xdb, 0x43, 0x57, 0xe1, 0x64, 0x75, 0x75, 0x63, + 0xf1, 0x65, 0xb5, 0xbe, 0xa4, 0x2e, 0xaf, 0x56, 0x56, 0x82, 0xc3, 0xbe, 0xb3, 0xa7, 0xde, 0xbc, + 0x3b, 0x8f, 0x42, 0xb4, 0x5b, 0x26, 0x5d, 0x58, 0xa2, 0x2b, 0x30, 0x1d, 0x65, 0xa9, 0x54, 0x1b, + 0xb5, 0xf5, 0xa6, 0x2c, 0xcd, 0x9e, 0x7c, 0xf3, 0xee, 0xfc, 0x64, 0x88, 0xa3, 0xb2, 0xe3, 0x62, + 0xd3, 0xeb, 0x67, 0x58, 0xdc, 0x58, 0x5b, 0xab, 0x37, 0xe5, 0x44, 0x1f, 0xc3, 0xa2, 0xd5, 0xe9, + 0x18, 0x1e, 0x7a, 0x18, 0x26, 0xa3, 0x0c, 0xeb, 0xf5, 0x55, 0x39, 0x39, 0x8b, 0xde, 0xbc, 0x3b, + 0x3f, 0x11, 0xa2, 0x5e, 0x37, 0xda, 0xb3, 0x99, 0x6f, 0xff, 0xb1, 0x73, 0x27, 0x3e, 0xf1, 0xf7, + 0xce, 0x49, 0xd5, 0xd5, 0x81, 0x33, 0xef, 0xda, 0xe8, 0x33, 0x4f, 0x4c, 0x2d, 0x7f, 0xe2, 0x7d, + 0x34, 0x01, 0x73, 0x7e, 0xed, 0x6d, 0xec, 0xb8, 0x86, 0x65, 0x92, 0xd9, 0xc2, 0xd4, 0xd6, 0x0f, + 0x26, 0xf8, 0xe0, 0x70, 0x82, 0xc1, 0x86, 0xe7, 0x05, 0x48, 0x56, 0x6c, 0x1b, 0xcd, 0xd2, 0x19, + 0xe1, 0x59, 0xba, 0xc5, 0x9c, 0x54, 0x4a, 0xf1, 0x9f, 0x49, 0x9d, 0x6b, 0xed, 0x7a, 0x77, 0x34, + 0xc7, 0xbf, 0x58, 0x42, 0x3c, 0x97, 0x9e, 0x85, 0xec, 0xa2, 0x65, 0xba, 0xd8, 0x74, 0xbb, 0x34, + 0xc1, 0xb0, 0x43, 0x84, 0xc1, 0x11, 0xd8, 0x03, 0x31, 0xf2, 0x9a, 0x6d, 0x53, 0xce, 0x94, 0x42, + 0xfe, 0xe4, 0x8e, 0x7b, 0x7d, 0xa0, 0x78, 0x9e, 0x1c, 0x5d, 0x3c, 0x81, 0x00, 0x7c, 0x01, 0x7d, + 0xff, 0xfd, 0x21, 0xb3, 0xec, 0x5b, 0xa6, 0xb0, 0x78, 0x62, 0xac, 0xd2, 0x10, 0xa7, 0x3f, 0x3b, + 0xdc, 0xd6, 0xcd, 0x0e, 0x1b, 0x95, 0x01, 0x96, 0x6f, 0x58, 0xba, 0xa7, 0xf4, 0x2c, 0x14, 0x36, + 0x35, 0xc7, 0x6b, 0x60, 0xef, 0x06, 0xd6, 0x5a, 0xd8, 0x89, 0x46, 0x13, 0x05, 0x11, 0x4d, 0x20, + 0x48, 0xd1, 0x90, 0x81, 0x39, 0x53, 0xfa, 0x77, 0xc9, 0x80, 0x14, 0x3d, 0x7b, 0xed, 0x47, 0x1a, + 0x9c, 0x83, 0x45, 0x1a, 0x64, 0xb8, 0x0e, 0x3d, 0xec, 0x8a, 0x84, 0x21, 0x7d, 0x40, 0x4f, 0x89, + 0x78, 0x21, 0x39, 0x24, 0x5e, 0xe0, 0x56, 0x88, 0x47, 0x0d, 0x1d, 0x18, 0xe7, 0x13, 0xc1, 0x6f, + 0x89, 0x14, 0xb4, 0x04, 0xad, 0x43, 0xd1, 0xd6, 0x1c, 0x8f, 0x7e, 0x8c, 0xb9, 0x4f, 0xbb, 0xc1, + 0x2d, 0xdd, 0x7c, 0x8c, 0xe1, 0x8d, 0x74, 0x97, 0xbf, 0xa6, 0x60, 0x87, 0x0b, 0x4b, 0x9f, 0x4f, + 0x41, 0x9a, 0x8b, 0xe3, 0x45, 0x18, 0xe7, 0x02, 0xe7, 0xb6, 0xe9, 0xdc, 0x42, 0x8c, 0xfa, 0x2f, + 0xf8, 0x6a, 0xca, 0x01, 0x05, 0x13, 0x7a, 0x08, 0x32, 0xfa, 0xbe, 0x66, 0x98, 0xaa, 0xd1, 0xe2, + 0x31, 0x69, 0xee, 0xb3, 0x6f, 0xcd, 0x8d, 0x2f, 0x92, 0xb2, 0xfa, 0x92, 0x32, 0x4e, 0x2b, 0xeb, + 0x2d, 0x12, 0xe3, 0xec, 0x63, 0x63, 0x6f, 0xdf, 0xe3, 0x06, 0x96, 0x3f, 0xa1, 0x67, 0x20, 0x45, + 0x86, 0x8c, 0x7f, 0xac, 0x3f, 0xdb, 0xb7, 0xd8, 0xf0, 0xf3, 0x65, 0xd5, 0x0c, 0x79, 0xf1, 0x07, + 0xfe, 0xf3, 0x9c, 0xa4, 0x50, 0x0e, 0xb4, 0x04, 0x85, 0xb6, 0xe6, 0x7a, 0x2a, 0x9d, 0x27, 0xe4, + 0xf5, 0x63, 0x1c, 0xa2, 0x5f, 0x24, 0x5c, 0xb6, 0xbc, 0xed, 0x39, 0xc2, 0xc6, 0x8a, 0x5a, 0xe8, + 0x12, 0xc8, 0x14, 0x45, 0xa7, 0xa6, 0x8a, 0xc5, 0x8d, 0x69, 0x2a, 0xfa, 0x09, 0x52, 0xce, 0x2c, + 0x18, 0x8d, 0x1e, 0xcf, 0x42, 0x96, 0x7e, 0x1f, 0x4c, 0x49, 0xd8, 0xa1, 0xff, 0x0c, 0x29, 0xa0, + 0x95, 0x17, 0xa1, 0x18, 0x78, 0x48, 0x46, 0x92, 0x61, 0x28, 0x41, 0x31, 0x25, 0x7c, 0x1c, 0xa6, + 0x4d, 0x7c, 0x40, 0x3f, 0x43, 0x88, 0x50, 0x67, 0x29, 0x35, 0x22, 0x75, 0xdb, 0x51, 0x8e, 0x07, + 0x61, 0x42, 0x17, 0xd2, 0x67, 0xb4, 0x40, 0x69, 0x0b, 0x7e, 0x29, 0x25, 0x3b, 0x03, 0x19, 0xcd, + 0xb6, 0x19, 0x41, 0x8e, 0x3b, 0x48, 0xdb, 0xa6, 0x55, 0x97, 0x61, 0x92, 0xf6, 0xd1, 0xc1, 0x6e, + 0xb7, 0xed, 0x71, 0x90, 0x3c, 0xa5, 0x29, 0x92, 0x0a, 0x85, 0x95, 0x53, 0xda, 0x0b, 0x50, 0xc0, + 0xb7, 0x8d, 0x16, 0x36, 0x75, 0xcc, 0xe8, 0x0a, 0x94, 0x2e, 0x2f, 0x0a, 0x29, 0xd1, 0xc3, 0xe0, + 0xfb, 0x3d, 0x55, 0x38, 0xe5, 0x09, 0x86, 0x27, 0xca, 0x2b, 0xac, 0xb8, 0x34, 0x03, 0xa9, 0x25, + 0xcd, 0xd3, 0x88, 0x1d, 0xf3, 0x0e, 0x58, 0xac, 0x91, 0x57, 0xc8, 0x9f, 0xa5, 0x5f, 0x4a, 0x42, + 0x6a, 0xdb, 0xf2, 0x30, 0x7a, 0x32, 0x14, 0xdb, 0x4e, 0xc4, 0xaa, 0x74, 0xc3, 0xd8, 0x33, 0x71, + 0x6b, 0xcd, 0xdd, 0x0b, 0xdd, 0xe6, 0x13, 0x28, 0x54, 0x22, 0xa2, 0x50, 0xd3, 0x30, 0xe6, 0x58, + 0x5d, 0xb3, 0x25, 0xce, 0xcb, 0xd3, 0x07, 0xb4, 0x0c, 0x19, 0x5f, 0x4f, 0x52, 0x43, 0xf5, 0xa4, + 0x48, 0xf4, 0x84, 0xa8, 0x31, 0x2f, 0x50, 0xc6, 0x77, 0xb8, 0xba, 0x54, 0x21, 0xeb, 0x5b, 0x18, + 0x5f, 0xe1, 0x46, 0xd1, 0xd9, 0x80, 0x8d, 0x84, 0x13, 0xfe, 0xe8, 0xfb, 0xe2, 0x63, 0x3a, 0x27, + 0xfb, 0x15, 0x5c, 0x7e, 0x11, 0xc5, 0xe2, 0x57, 0x0b, 0x8d, 0xd3, 0x8e, 0x05, 0x8a, 0xc5, 0xae, + 0x17, 0xba, 0x0f, 0xb2, 0xae, 0xb1, 0x67, 0x6a, 0x5e, 0xd7, 0xc1, 0x5c, 0xf7, 0x82, 0x02, 0x52, + 0x1b, 0x7c, 0x3c, 0xc2, 0x74, 0x2d, 0x74, 0xe3, 0xd9, 0x15, 0x98, 0x0a, 0xee, 0x1a, 0x0b, 0x50, + 0x98, 0x9e, 0x21, 0xbf, 0xaa, 0x21, 0x6a, 0x4a, 0xff, 0x42, 0x82, 0x34, 0x77, 0xee, 0xc1, 0x38, + 0x48, 0xf1, 0xe3, 0x90, 0x18, 0x34, 0x0e, 0xc9, 0xb7, 0x35, 0x0e, 0xe0, 0xb7, 0xd3, 0xe5, 0x37, + 0xc8, 0xc4, 0x45, 0xa1, 0xac, 0x91, 0x0d, 0x63, 0x8f, 0xcf, 0xfd, 0x10, 0x57, 0xe9, 0x2d, 0x89, + 0xb8, 0x5f, 0x5e, 0x8f, 0xaa, 0x50, 0x10, 0x2d, 0x53, 0x77, 0xdb, 0xda, 0x1e, 0x57, 0xc7, 0x73, + 0x83, 0x9b, 0x47, 0x62, 0x16, 0x25, 0xc7, 0x5b, 0x44, 0xa3, 0xaf, 0xd8, 0x91, 0x4d, 0x0c, 0x18, + 0xd9, 0x88, 0x2a, 0x25, 0xef, 0x4d, 0x95, 0x22, 0x83, 0x9e, 0xea, 0x19, 0xf4, 0xd2, 0xe7, 0x24, + 0x7e, 0xd9, 0x59, 0x8b, 0x7d, 0xfc, 0xf2, 0x57, 0x36, 0x5a, 0x5f, 0xcb, 0xf5, 0xab, 0x85, 0x5b, + 0x6a, 0xdf, 0xb0, 0x3d, 0x10, 0x03, 0x19, 0x6d, 0x75, 0x30, 0x7c, 0x48, 0xc0, 0x34, 0x82, 0x61, + 0xfc, 0xb9, 0x04, 0x4c, 0xf6, 0xd1, 0xff, 0x0d, 0x1c, 0xce, 0xe8, 0x1c, 0x1e, 0x1b, 0x71, 0x0e, + 0xa7, 0x07, 0xce, 0xe1, 0x9f, 0x4b, 0xd0, 0xcc, 0x80, 0x6d, 0xb9, 0x5a, 0xfb, 0xab, 0x62, 0x83, + 0xcf, 0x42, 0xd6, 0xb6, 0xda, 0x2a, 0xab, 0x61, 0x5f, 0x2e, 0x65, 0x6c, 0xab, 0xad, 0xf4, 0xa9, + 0xda, 0xd8, 0x3b, 0x65, 0xa0, 0xd3, 0xef, 0xc0, 0x30, 0x8c, 0xf7, 0xce, 0x2a, 0x0f, 0xf2, 0x4c, + 0x16, 0x3c, 0x82, 0xba, 0x4a, 0x84, 0x40, 0x63, 0x32, 0xa9, 0x37, 0xe6, 0xf3, 0xdb, 0xcd, 0x48, + 0x15, 0x4e, 0x48, 0x58, 0x58, 0xbc, 0xd1, 0x9f, 0x56, 0xea, 0xb1, 0x5c, 0x0a, 0x27, 0x2c, 0x7d, + 0x50, 0x02, 0x58, 0x25, 0xc2, 0xa5, 0x3d, 0x26, 0xc1, 0x8f, 0x4b, 0x1b, 0xa1, 0x46, 0xde, 0x3d, + 0x37, 0x70, 0xe0, 0x78, 0x0b, 0xf2, 0x6e, 0xb8, 0xe9, 0x4b, 0x50, 0x08, 0x14, 0xdc, 0xc5, 0xa2, + 0x39, 0x73, 0x47, 0x2d, 0xe7, 0x1b, 0xd8, 0x53, 0xf2, 0xb7, 0x43, 0x4f, 0xa5, 0x7f, 0x29, 0x41, + 0x96, 0xb6, 0x6a, 0x0d, 0x7b, 0x5a, 0x64, 0x20, 0xa5, 0xb7, 0x31, 0x90, 0xf7, 0x03, 0x30, 0x1c, + 0xd7, 0x78, 0x03, 0x73, 0xfd, 0xca, 0xd2, 0x92, 0x86, 0xf1, 0x06, 0x46, 0x4f, 0xfb, 0x52, 0x4f, + 0x0e, 0x91, 0xba, 0x58, 0xef, 0x73, 0xd9, 0x9f, 0x86, 0x71, 0x7a, 0x33, 0xe7, 0x81, 0xcb, 0x97, + 0xf0, 0x69, 0xb3, 0xdb, 0x69, 0x1e, 0xb8, 0xa5, 0x5b, 0x30, 0xde, 0x3c, 0x60, 0x19, 0xc7, 0xb3, + 0x90, 0x75, 0x2c, 0x8b, 0x47, 0x83, 0x2c, 0x10, 0xcf, 0x90, 0x02, 0x1a, 0xfc, 0x88, 0x24, 0x5b, + 0x22, 0x48, 0xb2, 0x05, 0x69, 0xc2, 0xe4, 0x68, 0x69, 0x42, 0xb2, 0x6e, 0x2f, 0x44, 0x66, 0x14, + 0x7a, 0x14, 0x4e, 0x37, 0xea, 0x2b, 0xeb, 0xb5, 0x25, 0x75, 0xad, 0xb1, 0xd2, 0x73, 0x3b, 0xc1, + 0x6c, 0xf1, 0xcd, 0xbb, 0xf3, 0x39, 0xbe, 0x60, 0x1f, 0x44, 0xbd, 0xa9, 0xd4, 0xb6, 0x37, 0x9a, + 0x35, 0x59, 0x62, 0xd4, 0x9b, 0x0e, 0xbe, 0x6d, 0x79, 0xec, 0xee, 0xdb, 0xc7, 0xe1, 0x4c, 0x0c, + 0xb5, 0xbf, 0x6c, 0x9f, 0x7c, 0xf3, 0xee, 0x7c, 0x61, 0xd3, 0xc1, 0x4c, 0xd5, 0x28, 0xc7, 0x02, + 0xcc, 0xf4, 0x73, 0x6c, 0x6c, 0x6e, 0x34, 0x2a, 0xab, 0xf2, 0xfc, 0xac, 0xfc, 0xe6, 0xdd, 0xf9, + 0xbc, 0xb0, 0x1d, 0x84, 0xfe, 0xdd, 0x5f, 0xb7, 0xa7, 0xfa, 0xcf, 0x3b, 0xdc, 0x71, 0x34, 0xdb, + 0xc6, 0x8e, 0x3b, 0x68, 0x63, 0xff, 0x02, 0xe4, 0x96, 0x42, 0xdf, 0xed, 0xfa, 0x27, 0x3c, 0x24, + 0xfa, 0x4d, 0x2f, 0x7b, 0x28, 0x95, 0x00, 0x96, 0xdb, 0x96, 0xe6, 0xc5, 0xd0, 0x24, 0x42, 0x34, + 0x75, 0xd3, 0xbb, 0xfe, 0x64, 0x0c, 0x4d, 0x52, 0xd0, 0x5c, 0x80, 0xdc, 0xd6, 0x20, 0xa2, 0x54, + 0x14, 0xe8, 0x89, 0x6b, 0x31, 0x34, 0x63, 0x3d, 0x40, 0xb1, 0x44, 0x05, 0x41, 0x74, 0x1e, 0xb2, + 0x55, 0xcb, 0x6a, 0xc7, 0x90, 0x64, 0x42, 0x38, 0x8d, 0xd0, 0x27, 0xc9, 0x11, 0xa2, 0x6c, 0xa8, + 0x41, 0x55, 0xb2, 0x6e, 0x8d, 0xa1, 0xf1, 0xcf, 0xc0, 0x1c, 0xfb, 0xe8, 0xc7, 0x7b, 0xf9, 0xb8, + 0x1c, 0xf7, 0xe8, 0x87, 0x18, 0xcf, 0x7b, 0x3b, 0xfa, 0x91, 0x0f, 0x6d, 0x3d, 0xf8, 0x59, 0x06, + 0x5b, 0x73, 0xb4, 0x8e, 0x7b, 0xdc, 0x74, 0xea, 0x90, 0x93, 0x35, 0xb3, 0x43, 0x34, 0x91, 0xac, + 0x6c, 0x8a, 0xfe, 0x82, 0x79, 0x93, 0x36, 0x01, 0x3d, 0x19, 0xce, 0xee, 0xe4, 0x06, 0xc7, 0x21, + 0x8c, 0x5c, 0x64, 0x7f, 0x5e, 0x80, 0x8c, 0x58, 0x78, 0x71, 0xdb, 0x7c, 0x3e, 0x2e, 0x5a, 0xe2, + 0x24, 0x9c, 0xd7, 0x67, 0x41, 0x5f, 0x03, 0x59, 0xdf, 0x52, 0x73, 0xd3, 0x54, 0x3a, 0xca, 0xb6, + 0x73, 0x80, 0x80, 0x09, 0x95, 0x83, 0xf4, 0x40, 0x6a, 0x60, 0xc6, 0x61, 0x9b, 0x51, 0x70, 0x6e, + 0x3f, 0x35, 0xf0, 0x14, 0xa4, 0xb4, 0x1d, 0xdd, 0xe0, 0xee, 0xfc, 0xfe, 0x18, 0xc6, 0x4a, 0x75, + 0xb1, 0xce, 0xb8, 0xe8, 0x85, 0x1c, 0x94, 0x9c, 0x34, 0xda, 0x3d, 0x34, 0xf5, 0x7d, 0xc7, 0x32, + 0x0f, 0xb9, 0x07, 0x8f, 0x6b, 0x74, 0x43, 0xd0, 0x88, 0x46, 0xfb, 0x4c, 0xa4, 0xd1, 0xbb, 0x38, + 0xf0, 0xde, 0xf1, 0x8d, 0x5e, 0x66, 0x14, 0xa2, 0xd1, 0x9c, 0xa1, 0x54, 0xe7, 0xf9, 0x54, 0x3e, + 0x6c, 0xf4, 0x5a, 0xa9, 0x03, 0x95, 0x65, 0x7a, 0xd8, 0x84, 0xcf, 0x74, 0xb4, 0x03, 0x3a, 0x69, + 0x88, 0x2b, 0x21, 0x95, 0x7b, 0xfc, 0xe2, 0x92, 0xa4, 0x92, 0xee, 0x68, 0x07, 0x2b, 0x9a, 0x7b, + 0x33, 0x95, 0x49, 0xca, 0xa9, 0xd2, 0x27, 0x49, 0xf8, 0x1d, 0x19, 0x1a, 0xf4, 0x08, 0x20, 0xc2, + 0xa1, 0xed, 0x61, 0x95, 0x38, 0x21, 0x3a, 0xc8, 0x02, 0xb7, 0xd8, 0xd1, 0x0e, 0x2a, 0x7b, 0x78, + 0xbd, 0xdb, 0xa1, 0x0d, 0x70, 0xd1, 0x1a, 0xc8, 0x82, 0x58, 0x28, 0xa0, 0x1f, 0x2f, 0xf4, 0x5d, + 0x94, 0xcc, 0x09, 0x58, 0x40, 0xf3, 0x41, 0x12, 0xd0, 0x4c, 0x30, 0x3c, 0xff, 0xc8, 0x57, 0xa4, + 0x2b, 0xc9, 0x68, 0x57, 0x4a, 0x2f, 0x41, 0xb1, 0x47, 0x0b, 0x50, 0x09, 0x0a, 0x3c, 0x6b, 0x4d, + 0x8f, 0xd3, 0xb0, 0xb5, 0x7b, 0x56, 0xc9, 0xb1, 0xe4, 0x34, 0x9d, 0x7d, 0xe5, 0xcc, 0x2f, 0x7e, + 0x6c, 0x4e, 0xa2, 0x5b, 0x97, 0x8f, 0x40, 0x21, 0xa2, 0x06, 0x22, 0x71, 0x29, 0x05, 0x89, 0xcb, + 0x80, 0xf8, 0x35, 0xc8, 0x13, 0x57, 0x8a, 0x5b, 0x9c, 0xf6, 0x21, 0x28, 0x32, 0x5f, 0xdf, 0x2b, + 0x6b, 0x16, 0xc3, 0xaf, 0x09, 0x81, 0x97, 0x44, 0x50, 0x1f, 0x15, 0x7b, 0x4e, 0x50, 0xad, 0x68, + 0x6e, 0xe9, 0x07, 0x24, 0x28, 0xf6, 0xe8, 0x06, 0x7a, 0x01, 0xb2, 0xb6, 0x83, 0x75, 0x23, 0x94, + 0xe6, 0x3a, 0x42, 0x84, 0x29, 0x2a, 0xbe, 0x80, 0x83, 0x84, 0x49, 0xe2, 0x9c, 0x40, 0x0b, 0xb7, + 0xb5, 0xc3, 0xe1, 0xa3, 0xc0, 0x20, 0xc4, 0xad, 0xf5, 0x4b, 0x84, 0xa9, 0xf4, 0xab, 0x12, 0x14, + 0x22, 0x4a, 0x87, 0x5a, 0x70, 0x3f, 0x71, 0xd1, 0xe1, 0xb3, 0xe9, 0xfc, 0xfe, 0xbd, 0xd0, 0x1a, + 0x2d, 0x77, 0xed, 0x6c, 0xdf, 0x7b, 0x02, 0x47, 0x43, 0x83, 0x1b, 0x49, 0x99, 0x25, 0x38, 0xc1, + 0x11, 0x75, 0x76, 0x51, 0xdf, 0x0d, 0x16, 0x8c, 0x6f, 0x00, 0xb2, 0x77, 0xbc, 0x5e, 0xe8, 0xc4, + 0xa8, 0xd0, 0x32, 0x61, 0x0e, 0x03, 0x96, 0x1a, 0x00, 0xc1, 0xc4, 0x45, 0x95, 0x51, 0x3a, 0x91, + 0x3c, 0xaa, 0x85, 0xe5, 0xc4, 0x8c, 0x54, 0xdd, 0xfc, 0xc4, 0x67, 0xcf, 0x49, 0xef, 0x4a, 0xe8, + 0xf0, 0xbb, 0x0d, 0xb8, 0x2f, 0x20, 0xdd, 0xd1, 0x8d, 0xde, 0x84, 0xb6, 0xec, 0x1b, 0x07, 0x52, + 0x4b, 0xdc, 0xc2, 0xd1, 0xfb, 0x69, 0x43, 0xd3, 0xdd, 0x43, 0x1c, 0xd1, 0x28, 0xe9, 0xf0, 0x7b, + 0xcc, 0x76, 0xff, 0xbb, 0x2c, 0x8c, 0x2b, 0xf8, 0x7d, 0x5d, 0xec, 0x7a, 0xe8, 0x09, 0x48, 0x61, + 0x7d, 0xdf, 0xea, 0xdf, 0x72, 0xe2, 0xbd, 0x5c, 0xa8, 0xe9, 0xfb, 0x16, 0x27, 0xbe, 0x71, 0x42, + 0xa1, 0xc4, 0xe8, 0x3a, 0x8c, 0xed, 0xb6, 0xbb, 0x3c, 0x11, 0x1e, 0x71, 0x53, 0x82, 0x6b, 0x99, + 0x54, 0x07, 0x6c, 0x8c, 0x9c, 0xbc, 0x8c, 0xfe, 0x9c, 0x40, 0x72, 0xd0, 0xcb, 0xe8, 0xaf, 0x08, + 0x04, 0x2f, 0x23, 0xc4, 0x68, 0x11, 0xc0, 0x30, 0x0d, 0x4f, 0xa5, 0x39, 0x62, 0xee, 0x26, 0x4a, + 0x71, 0xac, 0x86, 0x47, 0xf3, 0xc9, 0x01, 0x7f, 0xd6, 0x10, 0x65, 0xa4, 0xc5, 0xef, 0xeb, 0x62, + 0x47, 0xb8, 0x8a, 0x98, 0x16, 0xbf, 0x87, 0x54, 0x87, 0x5a, 0x4c, 0xc9, 0x89, 0x6b, 0x65, 0x97, + 0x93, 0x7a, 0x07, 0xfc, 0xca, 0xed, 0xf9, 0x7e, 0x56, 0x7a, 0x37, 0x69, 0xf3, 0x20, 0x60, 0x1e, + 0xd7, 0x59, 0x09, 0x7a, 0xd6, 0x5f, 0xc2, 0xe5, 0x7a, 0xd7, 0x4c, 0x3e, 0x33, 0x5b, 0xc1, 0xf9, + 0xbc, 0x9c, 0x01, 0x6d, 0xc0, 0x44, 0xdb, 0x70, 0x3d, 0xd5, 0x35, 0x35, 0xdb, 0xdd, 0xb7, 0x3c, + 0x97, 0xe6, 0x62, 0x73, 0xd7, 0x1e, 0xea, 0x87, 0x58, 0x35, 0x5c, 0xaf, 0x21, 0xc8, 0x02, 0xa4, + 0x42, 0x3b, 0x5c, 0x4e, 0x00, 0xad, 0xdd, 0x5d, 0xec, 0xf8, 0x88, 0x34, 0x69, 0x1b, 0x0b, 0xb8, + 0x41, 0xe8, 0x04, 0x67, 0x08, 0xd0, 0x0a, 0x97, 0xa3, 0xaf, 0x83, 0xa9, 0xb6, 0xa5, 0xb5, 0x7c, + 0x3c, 0x55, 0xdf, 0xef, 0x9a, 0xb7, 0x68, 0x8a, 0x37, 0x77, 0xed, 0x72, 0x4c, 0x33, 0x2d, 0xad, + 0x25, 0x98, 0x17, 0x09, 0x69, 0x80, 0x3c, 0xd9, 0xee, 0xad, 0x43, 0x2a, 0x4c, 0x6b, 0xb6, 0xdd, + 0x3e, 0xec, 0x85, 0x2f, 0x52, 0xf8, 0x47, 0xfa, 0xe1, 0x2b, 0x84, 0x7a, 0x00, 0x3e, 0xd2, 0xfa, + 0x2a, 0xd1, 0x16, 0xc8, 0xb6, 0x83, 0xe9, 0x77, 0xab, 0x36, 0x5f, 0xa4, 0xd0, 0x5b, 0xfd, 0x72, + 0xd7, 0x2e, 0xf5, 0x83, 0x6f, 0x32, 0x4a, 0xb1, 0x9a, 0x09, 0x90, 0x8b, 0x76, 0xb4, 0x86, 0xc1, + 0x5a, 0x3a, 0xa6, 0xb7, 0x8e, 0x72, 0xd8, 0xc9, 0xc1, 0xb0, 0x94, 0x32, 0x16, 0x36, 0x52, 0x83, + 0x96, 0x21, 0xc7, 0xb2, 0x5a, 0x2a, 0x31, 0x91, 0xf4, 0x36, 0xc0, 0xdc, 0xb5, 0x0b, 0x31, 0xd3, + 0x95, 0x12, 0x6d, 0x5b, 0x1e, 0x0e, 0xc0, 0x00, 0xfb, 0x85, 0x68, 0x07, 0x4e, 0xd2, 0x9b, 0x11, + 0x0f, 0xd5, 0xa8, 0x3d, 0x9e, 0x99, 0xa2, 0x88, 0x8f, 0xf6, 0x23, 0x6e, 0x53, 0xf2, 0xed, 0xb0, + 0x61, 0x0e, 0xa0, 0xa7, 0x6e, 0xf7, 0xd7, 0x12, 0x4d, 0xdb, 0x35, 0x4c, 0xad, 0x6d, 0xbc, 0x81, + 0x59, 0xf0, 0x42, 0x2f, 0x05, 0x8e, 0xd5, 0xb4, 0x65, 0x4e, 0x47, 0x83, 0x99, 0x90, 0xa6, 0xed, + 0x86, 0xcb, 0xab, 0xe3, 0x7c, 0xc9, 0xe1, 0xdf, 0x72, 0x39, 0x2e, 0x67, 0xd8, 0xcd, 0x96, 0x37, + 0x53, 0x19, 0x90, 0x73, 0xa5, 0x8b, 0x90, 0x0b, 0xd9, 0x29, 0x34, 0x03, 0xe3, 0xdc, 0xa9, 0x8a, + 0x03, 0xfc, 0xfc, 0xb1, 0x34, 0x01, 0xf9, 0xb0, 0x69, 0x2a, 0x7d, 0x40, 0x82, 0x5c, 0xc8, 0xe8, + 0x10, 0xce, 0xf0, 0x46, 0x57, 0x36, 0x88, 0x53, 0x2f, 0x88, 0xa8, 0x42, 0xd4, 0xb3, 0xcd, 0xd6, + 0x3c, 0x2d, 0xe4, 0x41, 0x0d, 0x9a, 0x83, 0x9c, 0x7d, 0xcd, 0xf6, 0x49, 0x92, 0x94, 0x04, 0xec, + 0x6b, 0xb6, 0x20, 0x38, 0x0f, 0x79, 0xd2, 0x75, 0x35, 0x1c, 0x2e, 0x67, 0x95, 0x1c, 0x29, 0xe3, + 0x24, 0xa5, 0xdf, 0x4c, 0x80, 0xdc, 0x6b, 0xcc, 0xfc, 0x0d, 0x30, 0xe9, 0xd8, 0x1b, 0x60, 0x67, + 0x7a, 0xb7, 0xde, 0x82, 0xdd, 0xb6, 0x35, 0x90, 0x83, 0x3d, 0x23, 0xe6, 0x7b, 0x8e, 0x88, 0xff, + 0x7b, 0xd6, 0x2a, 0x4a, 0x51, 0xef, 0x59, 0xbc, 0xac, 0x44, 0xce, 0x8b, 0xa4, 0xfc, 0x23, 0xae, + 0xbd, 0xfa, 0x24, 0x68, 0xb6, 0xec, 0x96, 0xe6, 0x61, 0x91, 0x72, 0x0f, 0x1d, 0x1d, 0x79, 0x08, + 0x8a, 0x9a, 0x6d, 0xab, 0xae, 0xa7, 0x79, 0x98, 0x07, 0x7a, 0x2c, 0x91, 0x59, 0xd0, 0x6c, 0xbb, + 0x41, 0x4a, 0x59, 0xa0, 0xf7, 0x20, 0x4c, 0x10, 0x0b, 0x6f, 0x68, 0x6d, 0x11, 0x45, 0xa4, 0x59, + 0x3c, 0xc8, 0x4b, 0x79, 0x24, 0xd2, 0x82, 0x7c, 0xd8, 0xb8, 0xfb, 0xa9, 0x19, 0x29, 0x94, 0x9a, + 0x41, 0xfc, 0xe2, 0x25, 0x26, 0x21, 0x71, 0x59, 0x55, 0xfc, 0x66, 0xe4, 0x34, 0x4d, 0xe3, 0xdc, + 0x66, 0xb9, 0xd7, 0x8c, 0xc2, 0x1e, 0x4a, 0xaf, 0xc2, 0x44, 0xd4, 0x0f, 0xa0, 0x09, 0x48, 0x78, + 0x07, 0xfc, 0x2d, 0x09, 0xef, 0x00, 0x5d, 0xe5, 0xd9, 0xd3, 0x24, 0xcd, 0x9e, 0xde, 0x3f, 0xd0, + 0x8f, 0x04, 0xa9, 0xd3, 0x9b, 0xa9, 0x4c, 0x42, 0x4e, 0x96, 0x8a, 0x50, 0x88, 0x78, 0x89, 0xd2, + 0x29, 0x98, 0x8e, 0xb3, 0xf9, 0x25, 0x03, 0xa6, 0xe3, 0x4c, 0x37, 0xba, 0x0e, 0x19, 0xdf, 0xe8, + 0xf7, 0x65, 0xdb, 0xc4, 0xdb, 0x7d, 0x26, 0x9f, 0x36, 0xb2, 0x5b, 0x98, 0x88, 0xec, 0x16, 0x96, + 0xbe, 0x11, 0x66, 0x06, 0xd9, 0xf3, 0x9e, 0xed, 0x83, 0x94, 0x2f, 0xb8, 0x53, 0x90, 0xe6, 0xf7, + 0x03, 0x27, 0x68, 0x9a, 0x82, 0x3f, 0x11, 0x81, 0x32, 0xdb, 0x9e, 0x64, 0xd9, 0x0b, 0xfa, 0x50, + 0x52, 0xe1, 0xcc, 0x40, 0x93, 0x3e, 0x78, 0xb7, 0x9d, 0x01, 0xf1, 0xdd, 0x76, 0xfa, 0x40, 0x7f, + 0x85, 0x08, 0x9b, 0x22, 0x09, 0x98, 0x55, 0xf8, 0x53, 0xe9, 0x43, 0x49, 0x38, 0x15, 0x6f, 0xd7, + 0xd1, 0x3c, 0xe4, 0xc9, 0xe2, 0xc1, 0x8b, 0xae, 0x33, 0xa0, 0xa3, 0x1d, 0x34, 0xf9, 0x22, 0x83, + 0xef, 0x54, 0x26, 0xfc, 0x9d, 0x4a, 0xb4, 0x0d, 0x93, 0x6d, 0x4b, 0xd7, 0xda, 0x6a, 0x68, 0xa7, + 0x98, 0x4f, 0xa7, 0x07, 0x06, 0xd9, 0x69, 0xb1, 0x17, 0x41, 0x4c, 0x10, 0x9f, 0x08, 0x45, 0x0a, + 0xb2, 0xea, 0xef, 0x2a, 0xa3, 0x1a, 0xe4, 0x3a, 0x86, 0xbb, 0x83, 0xf7, 0xb5, 0xdb, 0x86, 0xe5, + 0xf0, 0x79, 0x15, 0xa3, 0x3d, 0x6b, 0x01, 0x91, 0xd8, 0xc2, 0x0e, 0xf1, 0x85, 0x06, 0x65, 0x2c, + 0x76, 0x6b, 0x3d, 0x7d, 0x6c, 0xcb, 0x32, 0x68, 0x93, 0x7a, 0x7c, 0xe0, 0x26, 0x75, 0xdc, 0x8e, + 0x70, 0x26, 0x7e, 0x47, 0xf8, 0x4d, 0x3a, 0x38, 0x71, 0xde, 0xb1, 0x7f, 0x93, 0x18, 0x35, 0x61, + 0x9a, 0xf3, 0xb7, 0x22, 0xd2, 0xef, 0x3b, 0x77, 0x16, 0x0d, 0xba, 0x42, 0x52, 0x47, 0x82, 0x7f, + 0xb0, 0xe0, 0x93, 0xf7, 0x28, 0x78, 0x71, 0x54, 0x23, 0x15, 0x3a, 0xaa, 0xf1, 0xbf, 0xd9, 0x60, + 0x7c, 0x6b, 0x52, 0x6c, 0x9e, 0x85, 0x02, 0x8b, 0xd8, 0x33, 0x28, 0x83, 0xf6, 0x7a, 0x44, 0xc7, + 0x92, 0xc7, 0xee, 0x18, 0x1f, 0xed, 0xd4, 0xf0, 0xd1, 0x1e, 0x7b, 0x27, 0x47, 0x3b, 0x7d, 0x8f, + 0xa3, 0xfd, 0xae, 0x8e, 0xc3, 0x47, 0x24, 0x98, 0x1d, 0x1c, 0x8e, 0xc5, 0x0e, 0xc8, 0xb1, 0x76, + 0x27, 0x07, 0x79, 0xbc, 0x07, 0x61, 0xa2, 0x27, 0x5a, 0x64, 0xca, 0x5c, 0x88, 0x2c, 0xd7, 0x4b, + 0xdf, 0x96, 0x84, 0xe9, 0xb8, 0x80, 0x2e, 0x66, 0xc6, 0x2a, 0x30, 0xd5, 0xc2, 0xba, 0xd1, 0xba, + 0xe7, 0x09, 0x3b, 0xc9, 0xd9, 0xff, 0xcf, 0x7c, 0x8d, 0xd1, 0x93, 0x1f, 0x07, 0xc8, 0x28, 0xd8, + 0xb5, 0x49, 0x80, 0xc6, 0x7e, 0xed, 0x4e, 0xc7, 0xb6, 0x17, 0xa4, 0xb5, 0x62, 0xd7, 0x0d, 0x9c, + 0x44, 0xf0, 0x91, 0xf5, 0xb3, 0xcf, 0x87, 0x9e, 0xe4, 0x69, 0x82, 0x81, 0x0b, 0x7e, 0x16, 0x7e, + 0xfb, 0xac, 0x2c, 0x4f, 0xf0, 0xb4, 0xc8, 0x13, 0x24, 0x07, 0xad, 0x7e, 0x79, 0x30, 0xee, 0xf3, + 0xf1, 0x44, 0xc1, 0x93, 0x3c, 0x51, 0x90, 0x1a, 0xf4, 0x3a, 0x16, 0xb3, 0x07, 0xaf, 0x33, 0xd8, + 0x45, 0xa6, 0xe1, 0x4c, 0x41, 0x7a, 0x50, 0x57, 0x43, 0xc1, 0x75, 0xd0, 0xd5, 0x20, 0x55, 0xf0, + 0xb4, 0x48, 0x15, 0x8c, 0x0f, 0x6a, 0x34, 0x8f, 0x26, 0x83, 0x46, 0xb3, 0x5c, 0xc1, 0x8b, 0xa1, + 0x5c, 0x41, 0xb6, 0x37, 0x0d, 0xdf, 0x97, 0x2b, 0xf0, 0xb9, 0xfd, 0x64, 0x41, 0xd9, 0x4f, 0x16, + 0xe4, 0x07, 0x66, 0x1a, 0x78, 0x18, 0xe8, 0x33, 0x8b, 0x6c, 0xc1, 0x66, 0x5f, 0xb6, 0x80, 0x2d, + 0xee, 0x2f, 0x0e, 0xcd, 0x16, 0xf8, 0x50, 0x3d, 0xe9, 0x82, 0xcd, 0xbe, 0x74, 0xc1, 0xc4, 0x20, + 0xc4, 0x9e, 0x98, 0x33, 0x40, 0x8c, 0xe6, 0x0b, 0xbe, 0x3e, 0x3e, 0x5f, 0x30, 0x70, 0x41, 0x1f, + 0x13, 0x5f, 0xfa, 0xd0, 0x31, 0x09, 0x83, 0x6f, 0x1c, 0x90, 0x30, 0x90, 0x07, 0x2d, 0x6c, 0xe3, + 0xa2, 0x4b, 0xff, 0x05, 0x71, 0x19, 0x83, 0xed, 0x98, 0x8c, 0x01, 0x5b, 0xda, 0x3f, 0x3c, 0x42, + 0xc6, 0xc0, 0x87, 0xee, 0x4b, 0x19, 0x6c, 0xc7, 0xa4, 0x0c, 0xd0, 0x60, 0xdc, 0x9e, 0xa0, 0x28, + 0x8c, 0x1b, 0xcd, 0x19, 0xac, 0x44, 0x73, 0x06, 0x53, 0x47, 0xc7, 0xa2, 0xcc, 0xb5, 0xfb, 0x68, + 0xe1, 0xa4, 0x81, 0x3e, 0x28, 0x69, 0xc0, 0xd6, 0xf5, 0x8f, 0x8d, 0x98, 0x34, 0xf0, 0xb1, 0x63, + 0xb3, 0x06, 0x9b, 0x7d, 0x59, 0x83, 0x93, 0x83, 0x14, 0xae, 0xc7, 0xc9, 0x04, 0x0a, 0x37, 0x30, + 0x6d, 0xc0, 0x7e, 0x16, 0x83, 0xfd, 0x20, 0x06, 0xc8, 0xb9, 0x9b, 0xa9, 0x4c, 0x4e, 0xce, 0x97, + 0x1e, 0x26, 0x61, 0x4d, 0x8f, 0xdd, 0x23, 0x8b, 0x08, 0xec, 0x38, 0x96, 0x23, 0xf6, 0x40, 0xe9, + 0x43, 0xe9, 0x12, 0xe4, 0xc3, 0x26, 0xee, 0x88, 0x14, 0x43, 0x11, 0x0a, 0x11, 0xab, 0x56, 0xfa, + 0x45, 0x09, 0xf2, 0x61, 0x7b, 0x15, 0x59, 0x80, 0x66, 0xf9, 0x02, 0x34, 0x94, 0x78, 0x48, 0x44, + 0x13, 0x0f, 0x73, 0x90, 0x23, 0x8b, 0xb0, 0x9e, 0x9c, 0x82, 0x66, 0xfb, 0x39, 0x05, 0x71, 0x70, + 0x93, 0xa5, 0x27, 0xb8, 0x9f, 0x62, 0xa7, 0x16, 0x8a, 0xfe, 0x21, 0x56, 0x9e, 0xe6, 0x7f, 0x0c, + 0xa6, 0x42, 0xb4, 0xfe, 0xe2, 0x8e, 0x2d, 0xaf, 0x65, 0x9f, 0xba, 0xc2, 0x57, 0x79, 0xbf, 0x2a, + 0xc1, 0x64, 0x9f, 0xb9, 0x8c, 0xcd, 0x1b, 0x48, 0xef, 0x54, 0xde, 0x20, 0x71, 0xef, 0x79, 0x83, + 0xf0, 0x72, 0x35, 0x19, 0x5d, 0xae, 0xfe, 0xa5, 0x04, 0x85, 0x88, 0xd9, 0x26, 0x83, 0xa0, 0x5b, + 0x2d, 0xb1, 0x63, 0x4e, 0xff, 0x26, 0x71, 0x4a, 0xdb, 0xda, 0xe3, 0xcb, 0x44, 0xf2, 0x27, 0xa1, + 0xf2, 0x1d, 0x51, 0x96, 0xbb, 0x19, 0x7f, 0xed, 0x39, 0x16, 0xfe, 0xa6, 0x8c, 0x7f, 0x67, 0x95, + 0x0e, 0xbe, 0xb3, 0xf2, 0x37, 0xca, 0xc7, 0x43, 0x1b, 0xe5, 0xe8, 0x59, 0xc8, 0xd2, 0x5d, 0x00, + 0xd5, 0xb2, 0x83, 0x1f, 0xe6, 0x1d, 0xfc, 0x8d, 0x95, 0x4b, 0x3f, 0x12, 0x60, 0x1f, 0x66, 0x05, + 0x51, 0x48, 0x36, 0x12, 0x85, 0xdc, 0x07, 0x59, 0xd2, 0x7c, 0xf6, 0x73, 0x44, 0xc0, 0xaf, 0x1a, + 0x11, 0x05, 0xa5, 0x9f, 0x4a, 0x40, 0xb1, 0xc7, 0xeb, 0xc4, 0x76, 0x3e, 0xee, 0xc4, 0xca, 0x68, + 0x02, 0x39, 0x07, 0xb0, 0xa7, 0xb9, 0xea, 0x1d, 0xcd, 0xf4, 0x70, 0x8b, 0x4b, 0x25, 0x54, 0x82, + 0x66, 0x21, 0x43, 0x9e, 0xba, 0x2e, 0x6e, 0xf1, 0x0c, 0x8d, 0xff, 0x8c, 0xea, 0x90, 0xc6, 0xb7, + 0xe9, 0x75, 0xdc, 0xec, 0x52, 0xfb, 0xd3, 0x31, 0xe6, 0x89, 0xd4, 0x57, 0x67, 0xc8, 0x70, 0xff, + 0xd1, 0x5b, 0x73, 0x32, 0x23, 0x7f, 0xd4, 0xff, 0x80, 0x55, 0xe1, 0x00, 0x51, 0x31, 0x64, 0x7a, + 0xc4, 0x40, 0xd3, 0x85, 0x79, 0xb1, 0xf6, 0x27, 0x42, 0x65, 0x5f, 0xe2, 0x28, 0x85, 0x0e, 0xee, + 0xd8, 0x96, 0xd5, 0x56, 0xd9, 0x3c, 0xaf, 0xc0, 0x44, 0xd4, 0xc9, 0xb2, 0xdf, 0x0a, 0xf4, 0x34, + 0xc3, 0x54, 0x23, 0xb1, 0x71, 0x9e, 0x15, 0xb2, 0x79, 0x75, 0x33, 0x95, 0x91, 0xe4, 0x04, 0x4f, + 0xd7, 0xbc, 0x07, 0x4e, 0xc6, 0xfa, 0x58, 0xf4, 0x0c, 0x64, 0x03, 0xff, 0xcc, 0xbe, 0xa7, 0x3a, + 0x2a, 0x0f, 0x13, 0x10, 0x97, 0xb6, 0xe1, 0x64, 0xac, 0x93, 0x45, 0x2f, 0x40, 0x9a, 0x9d, 0xd7, + 0xe6, 0x67, 0xf2, 0x1e, 0x1c, 0xee, 0x9d, 0xbb, 0x6d, 0x4f, 0xe1, 0x4c, 0xa5, 0xab, 0x70, 0x66, + 0xa0, 0x97, 0x0d, 0xb2, 0x29, 0x52, 0x28, 0x9b, 0x52, 0xfa, 0x69, 0x09, 0x66, 0x07, 0x7b, 0x4e, + 0x54, 0xed, 0x69, 0xd0, 0xe5, 0x11, 0xfd, 0x6e, 0xa8, 0x55, 0x64, 0xb9, 0xe1, 0xe0, 0x5d, 0xec, + 0xe9, 0xfb, 0xcc, 0x85, 0x33, 0xa3, 0x50, 0x50, 0x0a, 0xbc, 0x94, 0xf2, 0xb8, 0x8c, 0xec, 0x75, + 0xac, 0x7b, 0x2a, 0x1b, 0x54, 0x97, 0xff, 0xd4, 0x78, 0x81, 0x95, 0x36, 0x58, 0x61, 0xe9, 0x11, + 0x38, 0x3d, 0xc0, 0x17, 0xc7, 0x1c, 0x37, 0x7f, 0x8d, 0x10, 0xc7, 0x3a, 0x58, 0xf4, 0x12, 0xa4, + 0x5d, 0x4f, 0xf3, 0xba, 0x2e, 0xef, 0xd9, 0xc5, 0xa1, 0xbe, 0xb9, 0x41, 0xc9, 0x15, 0xce, 0x56, + 0x7a, 0x0e, 0x50, 0xbf, 0xa7, 0x8d, 0x59, 0x5b, 0x49, 0x71, 0x6b, 0xab, 0x1d, 0x38, 0x7b, 0x84, + 0x4f, 0x45, 0x8b, 0x3d, 0x8d, 0x7b, 0x64, 0x24, 0x97, 0xdc, 0xd3, 0xc0, 0x3f, 0x49, 0xc0, 0xc9, + 0x58, 0xd7, 0x1a, 0x9a, 0xa5, 0xd2, 0xdb, 0x9d, 0xa5, 0x2f, 0x00, 0x78, 0x07, 0xe2, 0x23, 0x03, + 0x6e, 0xed, 0xe3, 0xd6, 0x13, 0x07, 0x58, 0xa7, 0x06, 0x8b, 0x28, 0x46, 0xd6, 0xe3, 0x7f, 0x91, + 0xc5, 0x7f, 0x68, 0x3d, 0xdb, 0xa5, 0x9e, 0xc0, 0xe5, 0x4b, 0xbd, 0x91, 0x7d, 0x46, 0xb0, 0xf0, + 0x65, 0xc5, 0x2e, 0x7a, 0x0d, 0x4e, 0xf7, 0x78, 0x34, 0x1f, 0x3b, 0x35, 0xb2, 0x63, 0x3b, 0x19, + 0x75, 0x6c, 0x02, 0x3b, 0xec, 0x95, 0xc6, 0xa2, 0x5e, 0xe9, 0x35, 0x80, 0x60, 0x61, 0x1b, 0x9c, + 0x87, 0x95, 0xc2, 0xe7, 0x61, 0xaf, 0xc3, 0x18, 0xd1, 0x04, 0x21, 0xaa, 0x18, 0x83, 0x41, 0x86, + 0x34, 0xb4, 0x32, 0x66, 0xe4, 0xa5, 0xd7, 0x85, 0xb6, 0x85, 0x73, 0x8c, 0x03, 0xde, 0xf1, 0x62, + 0xf4, 0x1d, 0xa5, 0xc1, 0xe9, 0xca, 0xf8, 0x77, 0xfd, 0x5f, 0x30, 0x46, 0x87, 0x3f, 0xf6, 0x03, + 0xe4, 0x6f, 0x00, 0xd0, 0x3c, 0xcf, 0x31, 0x76, 0xba, 0xc1, 0x1b, 0xe6, 0x07, 0xe8, 0x4f, 0x45, + 0x10, 0x56, 0xef, 0xe3, 0x8a, 0x34, 0x1d, 0xf0, 0x86, 0x94, 0x29, 0x84, 0x58, 0x5a, 0x87, 0x89, + 0x28, 0x6f, 0xfc, 0x17, 0xd5, 0xc1, 0xbd, 0x4d, 0xe2, 0x5c, 0x5b, 0xe0, 0xc8, 0xf9, 0x5d, 0x6a, + 0xf4, 0xa1, 0xf4, 0x4d, 0x09, 0xc8, 0x87, 0xb5, 0xef, 0x6f, 0xa1, 0xb3, 0x2c, 0x7d, 0x9b, 0x04, + 0x19, 0xbf, 0xff, 0x47, 0x7c, 0x0d, 0x10, 0x7c, 0x5b, 0xef, 0xe7, 0xe0, 0xd9, 0xae, 0x47, 0xd2, + 0xdf, 0xf5, 0x78, 0xde, 0x77, 0x08, 0x03, 0x17, 0xf3, 0x61, 0x69, 0x8b, 0x73, 0xb8, 0xdc, 0x41, + 0x3d, 0x37, 0xda, 0xc7, 0xbd, 0xd3, 0x30, 0x16, 0xfe, 0x2e, 0x97, 0x3d, 0x94, 0x70, 0xe8, 0xb8, + 0x12, 0x9b, 0x8d, 0xe1, 0xaf, 0x80, 0xa5, 0xe3, 0x7f, 0x05, 0xec, 0xbf, 0x26, 0x11, 0x7e, 0xcd, + 0xdf, 0x95, 0x20, 0x23, 0xe6, 0x05, 0x7a, 0x29, 0x7c, 0x98, 0x4e, 0x9c, 0xcc, 0x19, 0x6c, 0x97, + 0xf8, 0x0b, 0x42, 0x67, 0xe9, 0xfa, 0x3e, 0x49, 0x48, 0x1e, 0xfb, 0x93, 0x04, 0x1e, 0x87, 0x7c, + 0x59, 0x02, 0xb9, 0x77, 0xde, 0xbe, 0xfd, 0xf6, 0xf5, 0xfb, 0xab, 0x64, 0x8c, 0xbf, 0x1a, 0xf4, + 0xa1, 0x41, 0x6a, 0xd0, 0x87, 0x06, 0xfd, 0xfd, 0x1e, 0xbb, 0xd7, 0x7e, 0x7f, 0x6b, 0x02, 0x72, + 0xa1, 0x1c, 0x1f, 0x7a, 0x2a, 0xf2, 0xd5, 0xc2, 0xf9, 0x23, 0x13, 0x82, 0xa1, 0xcf, 0x16, 0x22, + 0x92, 0x4a, 0xdc, 0x83, 0xa4, 0xde, 0xf9, 0x8f, 0x19, 0xe3, 0xbf, 0x8c, 0x1f, 0x1b, 0xf0, 0x65, + 0xfc, 0xff, 0x2b, 0x41, 0xc6, 0x4f, 0xbe, 0x1c, 0x77, 0x4f, 0xee, 0x14, 0xa4, 0x79, 0xec, 0xc5, + 0x36, 0xe5, 0xf8, 0x53, 0x6c, 0x76, 0x74, 0x16, 0x32, 0xe2, 0x77, 0x51, 0xb9, 0x87, 0xf3, 0x9f, + 0x2f, 0xef, 0x40, 0x2e, 0xb4, 0xad, 0x89, 0xce, 0xc0, 0xc9, 0xc5, 0x1b, 0xb5, 0xc5, 0x97, 0xd5, + 0xe6, 0x2b, 0xbd, 0xbf, 0xad, 0xd7, 0x57, 0xa5, 0xd4, 0xe8, 0xb3, 0x2c, 0xa1, 0xd3, 0x30, 0x15, + 0xad, 0x62, 0x15, 0x89, 0xd9, 0xd4, 0xb7, 0xff, 0xd8, 0xb9, 0x13, 0x97, 0xbf, 0x2c, 0xc1, 0x54, + 0x4c, 0x94, 0x8b, 0xce, 0xc3, 0xfd, 0x1b, 0xcb, 0xcb, 0x35, 0x45, 0x6d, 0xac, 0x57, 0x36, 0x1b, + 0x37, 0x36, 0x9a, 0xaa, 0x52, 0x6b, 0x6c, 0xad, 0x36, 0x43, 0x2f, 0x9d, 0x87, 0xfb, 0xe2, 0x49, + 0x2a, 0x8b, 0x8b, 0xb5, 0xcd, 0x26, 0xfb, 0x71, 0xbf, 0x01, 0x14, 0xd5, 0x0d, 0xa5, 0x29, 0x27, + 0x06, 0x43, 0x28, 0xb5, 0x9b, 0xb5, 0xc5, 0xa6, 0x9c, 0x44, 0x17, 0xe1, 0xc2, 0x51, 0x14, 0xea, + 0xf2, 0x86, 0xb2, 0x56, 0x69, 0xca, 0xa9, 0xa1, 0x84, 0x8d, 0xda, 0xfa, 0x52, 0x4d, 0x91, 0xc7, + 0x78, 0xbf, 0x3f, 0x96, 0x80, 0x99, 0x41, 0xc1, 0x34, 0xc1, 0xaa, 0x6c, 0x6e, 0xae, 0xbe, 0x1a, + 0x60, 0x2d, 0xde, 0xd8, 0x5a, 0x7f, 0xb9, 0x5f, 0x04, 0x0f, 0x41, 0xe9, 0x28, 0x42, 0x5f, 0x10, + 0x0f, 0xc2, 0xf9, 0x23, 0xe9, 0xb8, 0x38, 0x86, 0x90, 0x29, 0xb5, 0xa6, 0xf2, 0xaa, 0x9c, 0x44, + 0x0b, 0x70, 0x79, 0x28, 0x99, 0x5f, 0x27, 0xa7, 0xd0, 0x15, 0x78, 0xe4, 0x68, 0x7a, 0x26, 0x20, + 0xc1, 0x20, 0x44, 0xf4, 0xa6, 0x04, 0x27, 0x63, 0xa3, 0x72, 0x74, 0x01, 0xe6, 0x36, 0x95, 0x8d, + 0xc5, 0x5a, 0xa3, 0xe1, 0x7f, 0xb3, 0xa0, 0x36, 0x9a, 0x95, 0xe6, 0x56, 0x23, 0x24, 0x9b, 0x12, + 0x9c, 0x1b, 0x44, 0xe4, 0xcb, 0xe5, 0x08, 0x1a, 0xae, 0x01, 0x42, 0x4f, 0xef, 0x4a, 0x70, 0x66, + 0x60, 0x14, 0x8e, 0x2e, 0xc1, 0x03, 0xdb, 0x35, 0xa5, 0xbe, 0xfc, 0xaa, 0xba, 0xbd, 0xd1, 0x0c, + 0xff, 0x8a, 0x64, 0x5f, 0xab, 0x2e, 0xc2, 0x85, 0x23, 0x29, 0xfd, 0xa6, 0x0d, 0x23, 0xec, 0x69, + 0xdf, 0xb7, 0x48, 0x50, 0xec, 0xb1, 0x85, 0xe8, 0x3e, 0x98, 0x59, 0xab, 0x37, 0xaa, 0xb5, 0x1b, + 0x95, 0xed, 0xfa, 0x86, 0xd2, 0x3b, 0x67, 0x2f, 0xc0, 0x5c, 0x5f, 0xed, 0xd2, 0xd6, 0xe6, 0x6a, + 0x7d, 0xb1, 0xd2, 0xac, 0xa9, 0xec, 0x43, 0x13, 0xd2, 0xb1, 0x3e, 0xa2, 0xd5, 0xfa, 0xca, 0x8d, + 0xa6, 0xba, 0xb8, 0x5a, 0xaf, 0xad, 0x37, 0xd5, 0x4a, 0xb3, 0x59, 0x09, 0xa6, 0x73, 0xf5, 0xe5, + 0x81, 0x07, 0x3c, 0xaf, 0x8e, 0x7e, 0xc0, 0x93, 0x1f, 0xe1, 0xf4, 0xcf, 0x77, 0xfe, 0x87, 0x27, + 0xe0, 0x01, 0x7e, 0x31, 0x91, 0xeb, 0x69, 0xb7, 0x0c, 0x73, 0xcf, 0xbf, 0x21, 0x8a, 0x3f, 0xf3, + 0x73, 0x9e, 0xa7, 0xf8, 0x2d, 0x48, 0xa2, 0x74, 0xc8, 0x3d, 0x51, 0x03, 0xaf, 0x17, 0x1d, 0xfa, + 0x7d, 0xc0, 0xb0, 0x63, 0x9a, 0x47, 0xdd, 0x41, 0x35, 0xe4, 0xa6, 0xab, 0x98, 0x3b, 0xaa, 0x66, + 0x8f, 0xbe, 0xaf, 0x61, 0xf6, 0xc8, 0xc3, 0xaf, 0xa5, 0x0f, 0x4a, 0x30, 0x71, 0xc3, 0x70, 0x3d, + 0xcb, 0x31, 0x74, 0xad, 0x4d, 0x03, 0x89, 0xe7, 0x47, 0xfe, 0xa0, 0xad, 0x9a, 0x25, 0x6e, 0x8c, + 0xdf, 0x64, 0xb5, 0x2f, 0xbe, 0x29, 0x4b, 0xdf, 0xd6, 0xda, 0xec, 0x63, 0xb2, 0xf0, 0x55, 0x78, + 0xbd, 0x62, 0x0f, 0xf9, 0xd7, 0x30, 0x0a, 0xe3, 0x2d, 0x27, 0x66, 0xa4, 0xd2, 0x0f, 0x24, 0xa0, + 0x48, 0x17, 0x38, 0x2e, 0x5d, 0x10, 0xd3, 0x25, 0xd7, 0x4d, 0x48, 0x39, 0x9a, 0xc7, 0x97, 0x21, + 0xd5, 0xeb, 0xc7, 0xbe, 0xfe, 0x8a, 0xbd, 0x85, 0x62, 0xa0, 0xf7, 0x40, 0xa6, 0xa3, 0x1d, 0xa8, + 0x14, 0x2f, 0xf1, 0xb6, 0xf0, 0xc6, 0x3b, 0xda, 0x01, 0x69, 0x1f, 0xfa, 0x06, 0x28, 0x12, 0x48, + 0x7d, 0x5f, 0x33, 0xf7, 0x30, 0x43, 0x4e, 0xbe, 0x2d, 0xe4, 0x42, 0x47, 0x3b, 0x58, 0xa4, 0x68, + 0x04, 0x9f, 0x5f, 0x13, 0xf6, 0x2b, 0x12, 0x5f, 0x5d, 0x52, 0xc1, 0x20, 0x0d, 0x64, 0xdd, 0x7f, + 0xa2, 0x2f, 0x15, 0x49, 0xdb, 0x8b, 0x83, 0x64, 0xdf, 0x23, 0xd6, 0x6a, 0x81, 0x34, 0xef, 0x33, + 0x6f, 0xcd, 0x49, 0xec, 0xad, 0x45, 0xbd, 0x4f, 0xec, 0x39, 0xb6, 0x6a, 0x56, 0x69, 0x7c, 0x93, + 0x18, 0x1a, 0xdf, 0x14, 0x44, 0x7c, 0xc3, 0x00, 0x81, 0x71, 0x93, 0x7a, 0xde, 0x87, 0x4f, 0x48, + 0x90, 0x5b, 0x0a, 0x5d, 0xdd, 0x39, 0x03, 0xe3, 0x1d, 0xcb, 0x34, 0x6e, 0x61, 0xc7, 0xcf, 0xba, + 0xb3, 0x47, 0x12, 0x83, 0xb0, 0x5f, 0x80, 0xf4, 0x0e, 0xc5, 0x05, 0x2a, 0xe2, 0x99, 0x70, 0xdd, + 0xc1, 0x3b, 0xae, 0x21, 0xe4, 0xac, 0x88, 0x47, 0xf4, 0x30, 0xc8, 0x2e, 0xd6, 0xbb, 0x8e, 0xe1, + 0x1d, 0xaa, 0xba, 0x65, 0x7a, 0x9a, 0xee, 0xf1, 0xc5, 0x5a, 0x51, 0x94, 0x2f, 0xb2, 0x62, 0x02, + 0xd2, 0xc2, 0x9e, 0x66, 0xb4, 0xd9, 0x61, 0xb4, 0xac, 0x22, 0x1e, 0x79, 0x53, 0xef, 0x8e, 0x87, + 0x97, 0x2a, 0x8b, 0x20, 0x5b, 0x36, 0x76, 0x22, 0xbb, 0xee, 0x4c, 0x1b, 0x67, 0x7e, 0xeb, 0xd3, + 0x8f, 0x4d, 0x73, 0x81, 0xf3, 0xfd, 0x5a, 0xf6, 0x05, 0x96, 0x52, 0x14, 0x1c, 0x62, 0x3b, 0xfe, + 0xd5, 0x48, 0x9e, 0xbd, 0xbb, 0x13, 0xdc, 0x5d, 0x34, 0xdd, 0x27, 0xd4, 0x8a, 0x79, 0x58, 0x9d, + 0xf9, 0x8d, 0x00, 0x9a, 0x2f, 0x66, 0x36, 0xe9, 0xc2, 0x25, 0x9c, 0x73, 0xa7, 0x30, 0x24, 0xbc, + 0x7b, 0x5d, 0x33, 0xda, 0xe2, 0xc7, 0x72, 0x15, 0xfe, 0x84, 0xca, 0x7e, 0x1e, 0x29, 0x45, 0xa3, + 0xe5, 0xd2, 0x20, 0xdd, 0xa8, 0x5a, 0x66, 0x2b, 0x9a, 0x3e, 0x42, 0x8b, 0x90, 0xf6, 0xac, 0x5b, + 0xd8, 0xe4, 0x02, 0xaa, 0x3e, 0x72, 0x8c, 0x7b, 0xee, 0x14, 0xce, 0x8a, 0xbe, 0x0e, 0xe4, 0x16, + 0x6e, 0xe3, 0x3d, 0xf6, 0xb1, 0xe9, 0xbe, 0xe6, 0x60, 0x76, 0xeb, 0xc1, 0x3d, 0xdd, 0x62, 0x57, + 0xf4, 0xa1, 0x1a, 0x14, 0x09, 0x6d, 0x46, 0x2f, 0x87, 0x1d, 0xf7, 0xb7, 0x88, 0x63, 0xfb, 0x18, + 0xd2, 0xbc, 0xb0, 0xf5, 0x89, 0x5c, 0x26, 0xfb, 0x30, 0xc8, 0x5d, 0x73, 0xc7, 0x32, 0xe9, 0x6f, + 0x4c, 0xf2, 0x08, 0x3b, 0xc3, 0xf6, 0x5e, 0xfc, 0x72, 0xbe, 0xf7, 0xb2, 0x09, 0x13, 0x01, 0x29, + 0x9d, 0x21, 0xd9, 0xe3, 0xce, 0x90, 0x82, 0x0f, 0x40, 0x48, 0xd0, 0x1a, 0x40, 0x30, 0x07, 0x69, + 0xe6, 0x3f, 0x37, 0x78, 0xc4, 0x82, 0xd9, 0x1c, 0xee, 0x4c, 0x08, 0x00, 0x99, 0x30, 0xd5, 0x31, + 0x4c, 0xd5, 0xc5, 0xed, 0x5d, 0x95, 0x4b, 0x8e, 0xe0, 0xe6, 0xa8, 0xf8, 0x5f, 0x3c, 0xc6, 0x68, + 0xfe, 0xce, 0xa7, 0x1f, 0x2b, 0x06, 0xd7, 0xff, 0xcd, 0x3f, 0xbe, 0xf0, 0xe4, 0xd3, 0xca, 0x64, + 0xc7, 0x30, 0x1b, 0xb8, 0xbd, 0xbb, 0xe4, 0x03, 0xa3, 0xe7, 0xe1, 0x6c, 0x20, 0x10, 0xcb, 0x54, + 0xf7, 0xad, 0x76, 0x4b, 0x75, 0xf0, 0xae, 0xaa, 0xd3, 0xcb, 0x0b, 0xf3, 0x54, 0x8c, 0xa7, 0x7d, + 0x92, 0x0d, 0xf3, 0x86, 0xd5, 0x6e, 0x29, 0x78, 0x77, 0x91, 0x54, 0xa3, 0x0b, 0x10, 0x48, 0x43, + 0x35, 0x5a, 0xee, 0x4c, 0x61, 0x3e, 0x79, 0x29, 0xa5, 0xe4, 0xfd, 0xc2, 0x7a, 0xcb, 0x2d, 0x67, + 0xbe, 0xfd, 0x63, 0x73, 0x27, 0x3e, 0xff, 0xb1, 0xb9, 0x13, 0xa5, 0x65, 0x7a, 0xbb, 0x19, 0x9f, + 0x5a, 0xd8, 0x45, 0xd7, 0x21, 0xab, 0x89, 0x07, 0xf6, 0xd1, 0xd2, 0x11, 0x53, 0x33, 0x20, 0x2d, + 0x7d, 0x52, 0x82, 0xf4, 0xd2, 0xf6, 0xa6, 0x66, 0x38, 0xa8, 0x06, 0x93, 0x81, 0xae, 0x8e, 0x3a, + 0xcb, 0x03, 0xf5, 0x16, 0xd3, 0x7c, 0x7d, 0xd0, 0x11, 0x9d, 0x6c, 0xf5, 0xfc, 0x6f, 0x7d, 0xfa, + 0xb1, 0xfb, 0x39, 0xcc, 0x76, 0xcf, 0x69, 0x1d, 0x81, 0xd7, 0x7b, 0x8a, 0x27, 0xd4, 0xe7, 0x9b, + 0x30, 0xce, 0x9a, 0xea, 0xa2, 0x97, 0x60, 0xcc, 0x26, 0x7f, 0xf0, 0x04, 0xee, 0xb9, 0x81, 0x3a, + 0x4f, 0xe9, 0xc3, 0x1a, 0xc2, 0xf8, 0x4a, 0xdf, 0x99, 0x00, 0x58, 0xda, 0xde, 0x6e, 0x3a, 0x86, + 0xdd, 0xc6, 0xde, 0x3b, 0xd5, 0xf7, 0x2d, 0x38, 0x19, 0xfa, 0xb6, 0xdc, 0xd1, 0x8f, 0xdf, 0xff, + 0xa9, 0xe0, 0x2b, 0x73, 0x47, 0x8f, 0x85, 0x6d, 0xb9, 0x9e, 0x0f, 0x9b, 0x3c, 0x3e, 0xec, 0x92, + 0xeb, 0xf5, 0x4b, 0xf6, 0x15, 0xc8, 0x05, 0xc2, 0x70, 0x51, 0x1d, 0x32, 0x1e, 0xff, 0x9b, 0x0b, + 0xb8, 0x34, 0x58, 0xc0, 0x82, 0x2d, 0x2c, 0x64, 0x9f, 0xbd, 0xf4, 0x97, 0x12, 0x40, 0x68, 0x8e, + 0xfc, 0xf5, 0xd4, 0x31, 0x54, 0x87, 0x34, 0x37, 0xce, 0xc9, 0x7b, 0xbe, 0x62, 0x94, 0x01, 0x84, + 0x84, 0xfa, 0xdd, 0x09, 0x98, 0xda, 0x12, 0xb3, 0xf7, 0xaf, 0xbf, 0x0c, 0xb6, 0x60, 0x1c, 0x9b, + 0x9e, 0x63, 0xf8, 0x1b, 0x10, 0x8f, 0x0f, 0x1a, 0xf3, 0x98, 0x4e, 0xd5, 0x4c, 0xcf, 0x39, 0x0c, + 0x6b, 0x80, 0xc0, 0x0a, 0xc9, 0xe3, 0xc3, 0x49, 0x98, 0x19, 0xc4, 0x8a, 0x2e, 0x42, 0x51, 0x77, + 0x30, 0x2d, 0x88, 0x7e, 0x43, 0x37, 0x21, 0x8a, 0xb9, 0xdb, 0x51, 0x80, 0x04, 0x6a, 0x44, 0xb9, + 0x08, 0xe9, 0xbd, 0x45, 0x66, 0x13, 0x01, 0x02, 0x75, 0x3c, 0x4d, 0x28, 0x8a, 0x93, 0xf7, 0x3b, + 0x5a, 0x5b, 0x33, 0x75, 0x11, 0xc1, 0x1e, 0xcb, 0xe7, 0x8b, 0xd3, 0xfb, 0x55, 0x06, 0x81, 0x6a, + 0x30, 0x2e, 0xd0, 0x52, 0xc7, 0x47, 0x13, 0xbc, 0xe8, 0x3c, 0xe4, 0xc3, 0x8e, 0x81, 0x46, 0x23, + 0x29, 0x25, 0x17, 0xf2, 0x0b, 0xc3, 0x3c, 0x4f, 0xfa, 0x48, 0xcf, 0xc3, 0x03, 0xbe, 0x1f, 0x4e, + 0xc2, 0xa4, 0x82, 0x5b, 0x7f, 0xf3, 0x87, 0x65, 0x13, 0x80, 0x4d, 0x55, 0x62, 0x49, 0xf9, 0xc8, + 0xdc, 0xc3, 0x7c, 0xcf, 0x32, 0x90, 0x25, 0xd7, 0xfb, 0x6a, 0x8d, 0xd0, 0xef, 0x26, 0x20, 0x1f, + 0x1e, 0xa1, 0xbf, 0x95, 0x4e, 0x0b, 0xad, 0x07, 0x66, 0x8a, 0x7d, 0x3b, 0xf0, 0xf0, 0x20, 0x33, + 0xd5, 0xa7, 0xcd, 0x43, 0xec, 0xd3, 0x17, 0x92, 0x90, 0xe6, 0x67, 0x78, 0x36, 0xfa, 0x62, 0xdb, + 0xa1, 0x1f, 0x50, 0x17, 0xc4, 0x37, 0xe8, 0xb1, 0xa1, 0xed, 0x83, 0x30, 0x41, 0xd6, 0xc8, 0x91, + 0x83, 0x41, 0xd2, 0xa5, 0x02, 0x5d, 0xea, 0x06, 0x07, 0x63, 0xd1, 0x1c, 0xe4, 0x08, 0x59, 0x60, + 0x87, 0x09, 0x0d, 0x74, 0xb4, 0x83, 0x1a, 0x2b, 0x41, 0x57, 0x01, 0xed, 0xfb, 0x89, 0x0b, 0x35, + 0x10, 0x84, 0x74, 0xa9, 0x40, 0x6f, 0x13, 0x98, 0x0c, 0x6a, 0x05, 0xcb, 0xfd, 0x00, 0xa4, 0x25, + 0x2a, 0xbb, 0x59, 0x9b, 0xdf, 0x5b, 0x4e, 0x4a, 0x96, 0xe8, 0xed, 0xda, 0xdf, 0x22, 0xb1, 0x30, + 0xb9, 0x67, 0x35, 0xcd, 0x57, 0x29, 0xcd, 0x11, 0x26, 0xc6, 0x9f, 0xbf, 0x35, 0x37, 0x7b, 0xa8, + 0x75, 0xda, 0xe5, 0x52, 0x0c, 0x4e, 0x29, 0x6e, 0x81, 0x4f, 0x82, 0xe7, 0xe8, 0x6a, 0x1c, 0xd5, + 0x41, 0xbe, 0x85, 0x0f, 0x55, 0x87, 0xff, 0x30, 0xbb, 0xba, 0x8b, 0xc5, 0x3d, 0x06, 0x67, 0x16, + 0x62, 0xee, 0x39, 0x5f, 0x58, 0xb4, 0x0c, 0x93, 0xef, 0x51, 0x4c, 0xdc, 0xc2, 0x87, 0x0a, 0xe7, + 0x5b, 0xc6, 0xb8, 0xfc, 0x00, 0x99, 0x2d, 0x6f, 0xfe, 0xe1, 0xcf, 0x5c, 0x3e, 0x1b, 0xba, 0xb3, + 0xfb, 0xc0, 0xcf, 0x93, 0xb1, 0x21, 0x26, 0x81, 0x2f, 0x0a, 0x9c, 0x50, 0xe8, 0x30, 0x18, 0x84, + 0xd6, 0x0a, 0xd2, 0xd1, 0x6b, 0x90, 0x80, 0x3f, 0xb2, 0x06, 0x09, 0x4d, 0xd1, 0x17, 0x03, 0x1f, + 0x90, 0x18, 0xd6, 0x9b, 0xb0, 0x76, 0x72, 0x26, 0x3a, 0xf3, 0x4f, 0x94, 0xfe, 0xad, 0x04, 0x67, + 0xfa, 0xb4, 0xd9, 0x6f, 0xb2, 0x0e, 0xc8, 0x09, 0x55, 0x52, 0xad, 0x10, 0xfb, 0x81, 0xf7, 0x36, + 0x39, 0x26, 0x9d, 0x3e, 0x47, 0xf0, 0xce, 0x38, 0x33, 0x6e, 0xc9, 0x7e, 0x5d, 0x82, 0xe9, 0x70, + 0x03, 0xfc, 0xae, 0x34, 0x20, 0x1f, 0x7e, 0x35, 0xef, 0xc4, 0x03, 0xa3, 0x74, 0x22, 0xdc, 0xfe, + 0x08, 0x08, 0xda, 0x0e, 0x2c, 0x06, 0xcb, 0xce, 0x5d, 0x1d, 0x59, 0x28, 0xa2, 0x61, 0xb1, 0x96, + 0x83, 0x8d, 0xcd, 0x17, 0x24, 0x48, 0x6d, 0x5a, 0x56, 0x1b, 0xbd, 0x0f, 0x26, 0x4d, 0xcb, 0x53, + 0xc9, 0xcc, 0xc2, 0x2d, 0x95, 0xa7, 0x0e, 0x98, 0x35, 0xae, 0x1d, 0x29, 0xab, 0x3f, 0x7a, 0x6b, + 0xae, 0x9f, 0x33, 0xee, 0xde, 0xfc, 0xa2, 0x69, 0x79, 0x55, 0x4a, 0xd4, 0x64, 0xd9, 0x85, 0x5d, + 0x28, 0x44, 0x5f, 0xc7, 0x2c, 0x76, 0x65, 0xd8, 0xeb, 0x0a, 0x43, 0x5f, 0x95, 0xdf, 0x09, 0xbd, + 0x87, 0xdd, 0x10, 0xfe, 0xa7, 0x64, 0xe4, 0xbe, 0x01, 0xe4, 0xed, 0xde, 0xd3, 0x26, 0xcb, 0x30, + 0x2e, 0x4e, 0x97, 0x48, 0xa3, 0x9e, 0x5c, 0x09, 0xcb, 0x93, 0x33, 0xd3, 0xf4, 0xe7, 0x67, 0x12, + 0x70, 0x66, 0xd1, 0x32, 0x5d, 0x9e, 0xe8, 0xe1, 0xb3, 0x9a, 0xe5, 0x6a, 0x0f, 0xd1, 0xc3, 0x03, + 0xd2, 0x50, 0xf9, 0xfe, 0x64, 0xd3, 0x36, 0x14, 0x89, 0x8b, 0xd5, 0x2d, 0xf3, 0x6d, 0xe6, 0x9a, + 0x0a, 0x56, 0xbb, 0xc5, 0x5b, 0x74, 0x0b, 0x1f, 0x12, 0x5c, 0x13, 0xdf, 0x89, 0xe0, 0x26, 0xef, + 0x0d, 0xd7, 0xc4, 0x77, 0x42, 0xb8, 0xc1, 0x86, 0x66, 0x2a, 0xb2, 0xa1, 0x79, 0x1d, 0x92, 0xc4, + 0x14, 0x8e, 0x1d, 0xc3, 0x78, 0x10, 0x86, 0x90, 0x5b, 0x6b, 0xc0, 0x19, 0x9e, 0x29, 0x70, 0x37, + 0x76, 0xa9, 0x44, 0x31, 0xed, 0xd0, 0xcb, 0xf8, 0x30, 0x26, 0x6d, 0x90, 0x1f, 0x29, 0x6d, 0x70, + 0xf9, 0xe7, 0x25, 0x80, 0x20, 0x67, 0x86, 0x1e, 0x85, 0xd3, 0xd5, 0x8d, 0xf5, 0xa5, 0x60, 0x6f, + 0x27, 0xf4, 0xe3, 0x41, 0xe2, 0x1e, 0x2f, 0xd7, 0xc6, 0xba, 0xb1, 0x6b, 0xe0, 0x16, 0x7a, 0x08, + 0xa6, 0xa3, 0xd4, 0xe4, 0xa9, 0xb6, 0x24, 0x4b, 0xb3, 0xf9, 0x37, 0xef, 0xce, 0x67, 0xd8, 0x1a, + 0x01, 0xb7, 0xd0, 0x25, 0x38, 0xd9, 0x4f, 0x57, 0x5f, 0x5f, 0x91, 0x13, 0xb3, 0x85, 0x37, 0xef, + 0xce, 0x67, 0xfd, 0xc5, 0x04, 0x2a, 0x01, 0x0a, 0x53, 0x72, 0xbc, 0xe4, 0x2c, 0xbc, 0x79, 0x77, + 0x3e, 0xcd, 0xa6, 0x0c, 0xdf, 0x14, 0xfa, 0x7a, 0x80, 0xba, 0xb9, 0xeb, 0x68, 0x3a, 0x35, 0x0d, + 0xb3, 0x70, 0xaa, 0xbe, 0xbe, 0xac, 0x54, 0x16, 0x9b, 0xf5, 0x8d, 0xf5, 0x9e, 0xdf, 0x3c, 0x8a, + 0xd6, 0x2d, 0x6d, 0x6c, 0x55, 0x57, 0x6b, 0x6a, 0xa3, 0xbe, 0xb2, 0xce, 0x76, 0x70, 0x23, 0x75, + 0xef, 0x5d, 0x6f, 0xd6, 0xd7, 0x6a, 0x72, 0xa2, 0x7a, 0x7d, 0xe0, 0x66, 0xcf, 0x7d, 0x91, 0xc9, + 0x18, 0xb8, 0xa3, 0xc8, 0x8f, 0x49, 0xfc, 0xaf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf9, 0xcf, 0xe7, + 0x8d, 0x37, 0xa5, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) From ef731f99ced29c529438c1b84ba63c40c4c5a445 Mon Sep 17 00:00:00 2001 From: Aaron Craelius Date: Wed, 10 Jul 2024 18:21:58 +0200 Subject: [PATCH 04/12] proto-gen, fixes --- .../internal/appconfig/buf.gen.pulsar.yaml | 5 ++++ depinject/internal/appconfig/buf.gen.yaml | 9 ------ depinject/internal/appconfig/buf.yaml | 2 ++ depinject/internal/appconfig/registry.go | 28 +++++++++++++++++-- .../internal/appconfig/testpb/test.proto | 2 +- .../internal/appconfig/testpb/test.pulsar.go | 14 ++++------ .../{buf.gen.yaml => buf.gen.gogo.yaml} | 0 depinject/internal/appconfiggogo/buf.yaml | 2 ++ .../internal/appconfiggogo/testpb/test.pb.go | 25 ++++++++--------- .../internal/appconfiggogo/testpb/test.proto | 2 +- 10 files changed, 52 insertions(+), 37 deletions(-) create mode 100644 depinject/internal/appconfig/buf.gen.pulsar.yaml delete mode 100644 depinject/internal/appconfig/buf.gen.yaml rename depinject/internal/appconfiggogo/{buf.gen.yaml => buf.gen.gogo.yaml} (100%) diff --git a/depinject/internal/appconfig/buf.gen.pulsar.yaml b/depinject/internal/appconfig/buf.gen.pulsar.yaml new file mode 100644 index 000000000000..1866261857af --- /dev/null +++ b/depinject/internal/appconfig/buf.gen.pulsar.yaml @@ -0,0 +1,5 @@ +version: v1 +plugins: + - name: go-pulsar + out: . + opt: paths=source_relative diff --git a/depinject/internal/appconfig/buf.gen.yaml b/depinject/internal/appconfig/buf.gen.yaml deleted file mode 100644 index 1fe5c3e73ba4..000000000000 --- a/depinject/internal/appconfig/buf.gen.yaml +++ /dev/null @@ -1,9 +0,0 @@ -version: v1 -managed: - enabled: true - go_package_prefix: - default: cosmossdk.io/depinject/internal/appconfig -plugins: - - name: go-pulsar - out: . - opt: paths=source_relative diff --git a/depinject/internal/appconfig/buf.yaml b/depinject/internal/appconfig/buf.yaml index ac1df238ebec..fffe6eb932cf 100644 --- a/depinject/internal/appconfig/buf.yaml +++ b/depinject/internal/appconfig/buf.yaml @@ -1,4 +1,6 @@ version: v1 +deps: + - buf.build/cosmos/cosmos-sdk lint: use: - DEFAULT diff --git a/depinject/internal/appconfig/registry.go b/depinject/internal/appconfig/registry.go index a03a3e859a43..c56debe385e0 100644 --- a/depinject/internal/appconfig/registry.go +++ b/depinject/internal/appconfig/registry.go @@ -4,11 +4,13 @@ import ( "fmt" "reflect" + appv1alpha1 "cosmossdk.io/api/cosmos/app/v1alpha1" gogoproto "github.com/cosmos/gogoproto/proto" protov2 "google.golang.org/protobuf/proto" "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/types/dynamicpb" - appv1alpha1 "cosmossdk.io/api/cosmos/app/v1alpha1" + "cosmossdk.io/depinject/appconfig/v1alpha1" ) // ModuleRegistry is the registry of module initializers indexed by their golang @@ -30,12 +32,19 @@ type ModuleInitializer struct { func ModulesByModuleTypeName() (map[string]*ModuleInitializer, error) { res := map[string]*ModuleInitializer{} + // we use a dynamic extension descriptor here to avoid importing the api module + moduleExt, err := gogoproto.HybridResolver.FindDescriptorByName(protoreflect.FullName(v1alpha1.E_Module.Name)) + if err != nil { + return nil, err + } + moduleExtType := dynamicpb.NewExtensionType(moduleExt.(protoreflect.ExtensionDescriptor)) + for _, initializer := range ModuleRegistry { // as of gogoproto v1.5.0 this should work with either gogoproto or golang v2 proto fullName := gogoproto.MessageName(initializer.ConfigProtoMessage) if desc, err := gogoproto.HybridResolver.FindDescriptorByName(protoreflect.FullName(fullName)); err == nil { - modDesc := protov2.GetExtension(desc.Options(), appv1alpha1.E_Module).(*appv1alpha1.ModuleDescriptor) + modDesc := protov2.GetExtension(desc.Options(), moduleExtType) if modDesc == nil { return nil, fmt.Errorf( "protobuf type %s registered as a module should have the option %s", @@ -43,7 +52,20 @@ func ModulesByModuleTypeName() (map[string]*ModuleInitializer, error) { appv1alpha1.E_Module.TypeDescriptor().FullName()) } - if modDesc.GoImport == "" { + modDescMsg := modDesc.(protoreflect.Message) + + // we convert the returned descriptor to the concrete gogo type we have in v1alpha1 + var modDescGogo v1alpha1.ModuleDescriptor + bz, err := protov2.Marshal(modDescMsg.Interface()) + if err != nil { + return nil, err + } + err = gogoproto.Unmarshal(bz, &modDescGogo) + if err != nil { + return nil, err + } + + if modDescGogo.GoImport == "" { return nil, fmt.Errorf( "protobuf type %s registered as a module should have ModuleDescriptor.go_import specified", fullName, diff --git a/depinject/internal/appconfig/testpb/test.proto b/depinject/internal/appconfig/testpb/test.proto index 25f7eefeea0f..ac1a8939e0ec 100644 --- a/depinject/internal/appconfig/testpb/test.proto +++ b/depinject/internal/appconfig/testpb/test.proto @@ -4,7 +4,7 @@ package testpb; import "cosmos/app/v1alpha1/module.proto"; -option go_package = "cosmossdk.io/depinject/internal/appconfig"; +option go_package = "cosmossdk.io/depinject/internal/appconfig/testpb"; message TestRuntimeModule { option (cosmos.app.v1alpha1.module) = { diff --git a/depinject/internal/appconfig/testpb/test.pulsar.go b/depinject/internal/appconfig/testpb/test.pulsar.go index 90dcab61cc2b..2163a1fd6346 100644 --- a/depinject/internal/appconfig/testpb/test.pulsar.go +++ b/depinject/internal/appconfig/testpb/test.pulsar.go @@ -2,7 +2,7 @@ package testpb import ( - _ "cosmossdk.io/api/cosmos/app/v1alpha1" + _ "cosmossdk.io/depinject/appconfig/v1alpha1" fmt "fmt" runtime "github.com/cosmos/cosmos-proto/runtime" protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -2344,14 +2344,10 @@ var file_testpb_test_proto_rawDesc = []byte{ 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x22, 0x1e, 0x0a, 0x14, 0x54, 0x65, 0x73, 0x74, 0x4e, 0x6f, 0x47, 0x6f, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x3a, 0x06, 0xba, 0xc0, 0x96, 0xda, - 0x01, 0x00, 0x42, 0x72, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, - 0x42, 0x09, 0x54, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x21, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x63, 0x6f, 0x72, 0x65, - 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, - 0xa2, 0x02, 0x03, 0x54, 0x58, 0x58, 0xaa, 0x02, 0x06, 0x54, 0x65, 0x73, 0x74, 0x70, 0x62, 0xca, - 0x02, 0x06, 0x54, 0x65, 0x73, 0x74, 0x70, 0x62, 0xe2, 0x02, 0x12, 0x54, 0x65, 0x73, 0x74, 0x70, - 0x62, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x06, - 0x54, 0x65, 0x73, 0x74, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x01, 0x00, 0x42, 0x32, 0x5a, 0x30, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, + 0x69, 0x6f, 0x2f, 0x64, 0x65, 0x70, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x2f, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x61, 0x70, 0x70, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, + 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/depinject/internal/appconfiggogo/buf.gen.yaml b/depinject/internal/appconfiggogo/buf.gen.gogo.yaml similarity index 100% rename from depinject/internal/appconfiggogo/buf.gen.yaml rename to depinject/internal/appconfiggogo/buf.gen.gogo.yaml diff --git a/depinject/internal/appconfiggogo/buf.yaml b/depinject/internal/appconfiggogo/buf.yaml index ac1df238ebec..fffe6eb932cf 100644 --- a/depinject/internal/appconfiggogo/buf.yaml +++ b/depinject/internal/appconfiggogo/buf.yaml @@ -1,4 +1,6 @@ version: v1 +deps: + - buf.build/cosmos/cosmos-sdk lint: use: - DEFAULT diff --git a/depinject/internal/appconfiggogo/testpb/test.pb.go b/depinject/internal/appconfiggogo/testpb/test.pb.go index 583a24afe3eb..64cb974281db 100644 --- a/depinject/internal/appconfiggogo/testpb/test.pb.go +++ b/depinject/internal/appconfiggogo/testpb/test.pb.go @@ -4,7 +4,7 @@ package testpb import ( - _ "cosmossdk.io/api/cosmos/app/v1alpha1" + _ "cosmossdk.io/depinject/appconfig/v1alpha1" fmt "fmt" proto "github.com/cosmos/gogoproto/proto" io "io" @@ -66,22 +66,19 @@ func init() { func init() { proto.RegisterFile("testpb/test.proto", fileDescriptor_41c67e33ca9d1f26) } var fileDescriptor_41c67e33ca9d1f26 = []byte{ - // 240 bytes of a gzipped FileDescriptorProto + // 186 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x2c, 0x49, 0x2d, 0x2e, 0x29, 0x48, 0xd2, 0x07, 0x51, 0x7a, 0x05, 0x45, 0xf9, 0x25, 0xf9, 0x42, 0x6c, 0x10, 0x21, 0x29, 0x85, 0xe4, 0xfc, 0xe2, 0xdc, 0xfc, 0x62, 0xfd, 0xc4, 0x82, 0x02, 0xfd, 0x32, 0xc3, 0xc4, 0x9c, - 0x82, 0x8c, 0x44, 0x43, 0xfd, 0xdc, 0xfc, 0x94, 0xd2, 0x9c, 0x54, 0x88, 0x4a, 0x25, 0x6b, 0x2e, - 0xbe, 0x90, 0xd4, 0xe2, 0x12, 0x5f, 0xb0, 0x98, 0x7b, 0x7e, 0x7a, 0xbe, 0x95, 0xe6, 0xae, 0x03, - 0xd3, 0x6e, 0x31, 0x2a, 0x73, 0x29, 0x42, 0xf4, 0x16, 0xa7, 0x64, 0xeb, 0x65, 0xe6, 0xeb, 0x27, - 0xe7, 0x17, 0xa5, 0xea, 0x67, 0xe6, 0x95, 0xa4, 0x16, 0xe5, 0x25, 0xe6, 0xe8, 0x43, 0x8c, 0x77, - 0x9a, 0xcb, 0x78, 0xe2, 0x91, 0x1c, 0xe3, 0x85, 0x47, 0x72, 0x8c, 0x0f, 0x1e, 0xc9, 0x31, 0x4e, - 0x78, 0x2c, 0xc7, 0x70, 0xe1, 0xb1, 0x1c, 0xc3, 0x8d, 0xc7, 0x72, 0x0c, 0x5c, 0x5c, 0xc9, 0xf9, - 0xb9, 0x7a, 0x50, 0x65, 0x9c, 0x20, 0x1b, 0x02, 0x40, 0xd6, 0x05, 0x30, 0x46, 0x99, 0xa0, 0x18, - 0x9b, 0x92, 0x5a, 0x90, 0x99, 0x97, 0x95, 0x9a, 0x5c, 0x82, 0x30, 0x3b, 0xb1, 0xa0, 0x20, 0x39, - 0x3f, 0x2f, 0x2d, 0x33, 0x3d, 0x3d, 0x3f, 0x3d, 0x1f, 0x6a, 0xd3, 0x22, 0x26, 0xe6, 0x90, 0x88, - 0x88, 0x55, 0x4c, 0x6c, 0x21, 0x60, 0xee, 0x29, 0x18, 0xe3, 0x11, 0x93, 0x10, 0x84, 0x11, 0xe3, - 0x1e, 0xe0, 0xe4, 0x9b, 0x5a, 0x92, 0x98, 0x92, 0x58, 0x92, 0xf8, 0x0a, 0x26, 0x9b, 0xc4, 0x06, - 0xf6, 0xa3, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0x2e, 0x9f, 0x4d, 0x9e, 0x22, 0x01, 0x00, 0x00, + 0x82, 0x8c, 0x44, 0x43, 0xfd, 0xdc, 0xfc, 0x94, 0xd2, 0x9c, 0x54, 0x88, 0x4a, 0x25, 0x4f, 0x2e, + 0xbe, 0x90, 0xd4, 0xe2, 0x12, 0x5f, 0xb0, 0x98, 0x7b, 0x7e, 0x7a, 0xbe, 0x95, 0xf9, 0xae, 0x03, + 0xd3, 0x6e, 0x31, 0x1a, 0x72, 0xe9, 0x43, 0xf4, 0x16, 0xa7, 0x64, 0xeb, 0x65, 0xe6, 0xeb, 0x27, + 0xe7, 0x17, 0xa5, 0xea, 0x67, 0xe6, 0x95, 0xa4, 0x16, 0xe5, 0x25, 0xe6, 0x80, 0xcc, 0x4b, 0xce, + 0xcf, 0x4b, 0xcb, 0x4c, 0x4f, 0xcf, 0x4f, 0xcf, 0xd7, 0x87, 0x58, 0xe6, 0xe4, 0x77, 0xe2, 0x91, + 0x1c, 0xe3, 0x85, 0x47, 0x72, 0x8c, 0x0f, 0x1e, 0xc9, 0x31, 0x4e, 0x78, 0x2c, 0xc7, 0x70, 0xe1, + 0xb1, 0x1c, 0xc3, 0x8d, 0xc7, 0x72, 0x0c, 0x51, 0x26, 0x28, 0x46, 0xa5, 0xa4, 0x16, 0x64, 0xe6, + 0x65, 0xa5, 0x26, 0x97, 0xe0, 0x37, 0x2f, 0x89, 0x0d, 0xec, 0x42, 0x63, 0x40, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x1e, 0xdb, 0x22, 0xe2, 0xe0, 0x00, 0x00, 0x00, } func (m *TestModuleGogo) Marshal() (dAtA []byte, err error) { diff --git a/depinject/internal/appconfiggogo/testpb/test.proto b/depinject/internal/appconfiggogo/testpb/test.proto index bc8909efce0a..4b2154571d2e 100644 --- a/depinject/internal/appconfiggogo/testpb/test.proto +++ b/depinject/internal/appconfiggogo/testpb/test.proto @@ -4,7 +4,7 @@ package testpb; import "cosmos/app/v1alpha1/module.proto"; -option go_package = "cosmossdk.io/depinject/internal/appconfiggogo"; +option go_package = "cosmossdk.io/depinject/internal/appconfiggogo/testpb"; message TestModuleGogo { option (cosmos.app.v1alpha1.module) = { From c737437436d502e25b996ea7ec2b2923cb3bcbfd Mon Sep 17 00:00:00 2001 From: Aaron Craelius Date: Wed, 10 Jul 2024 18:44:23 +0200 Subject: [PATCH 05/12] WIP --- depinject/appconfig/config.go | 10 ++-- depinject/go.mod | 3 +- depinject/go.sum | 2 - depinject/internal/appconfig/registry.go | 65 ++++++++++++++---------- 4 files changed, 46 insertions(+), 34 deletions(-) diff --git a/depinject/appconfig/config.go b/depinject/appconfig/config.go index 41250b34bf74..ba540866efc9 100644 --- a/depinject/appconfig/config.go +++ b/depinject/appconfig/config.go @@ -14,8 +14,6 @@ import ( "google.golang.org/protobuf/types/known/anypb" "sigs.k8s.io/yaml" - appv1alpha1 "cosmossdk.io/api/cosmos/app/v1alpha1" - "cosmossdk.io/depinject" "cosmossdk.io/depinject/appconfig/v1alpha1" internal "cosmossdk.io/depinject/internal/appconfig" @@ -112,10 +110,14 @@ func Compose(appConfig gogoproto.Message) depinject.Config { init, ok := modules[msgName] if !ok { if msgDesc, err := gogoproto.HybridResolver.FindDescriptorByName(protoreflect.FullName(msgName)); err == nil { - modDesc := protov2.GetExtension(msgDesc.Options(), appv1alpha1.E_Module).(*appv1alpha1.ModuleDescriptor) + modDesc, err := internal.GetModuleDescriptor(msgDesc) + if err != nil { + return depinject.Error(err) + } + if modDesc == nil { return depinject.Error(fmt.Errorf("no module registered for type URL %s and that protobuf type does not have the option %s\n\n%s", - module.Config.TypeUrl, appv1alpha1.E_Module.TypeDescriptor().FullName(), dumpRegisteredModules(modules))) + module.Config.TypeUrl, v1alpha1.E_Module.Name, dumpRegisteredModules(modules))) } return depinject.Error(fmt.Errorf("no module registered for type URL %s, did you forget to import %s: find more information on how to make a module ready for app wiring: https://docs.cosmos.network/main/building-modules/depinject\n\n%s", diff --git a/depinject/go.mod b/depinject/go.mod index ddcb8c004388..086dbfc14784 100644 --- a/depinject/go.mod +++ b/depinject/go.mod @@ -3,11 +3,11 @@ module cosmossdk.io/depinject go 1.20 require ( - cosmossdk.io/api v0.7.5 github.com/cosmos/cosmos-proto v1.0.0-beta.5 github.com/cosmos/gogoproto v1.5.0 github.com/stretchr/testify v1.9.0 golang.org/x/exp v0.0.0-20231006140011-7918f672742d + google.golang.org/grpc v1.64.1 google.golang.org/protobuf v1.34.2 gotest.tools/v3 v3.5.1 sigs.k8s.io/yaml v1.4.0 @@ -24,7 +24,6 @@ require ( golang.org/x/sys v0.22.0 // indirect golang.org/x/text v0.16.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240709173604-40e1e62336c5 // indirect - google.golang.org/grpc v1.64.1 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/depinject/go.sum b/depinject/go.sum index 4c51608691ae..aff372bf6fa8 100644 --- a/depinject/go.sum +++ b/depinject/go.sum @@ -1,5 +1,3 @@ -cosmossdk.io/api v0.7.5 h1:eMPTReoNmGUm8DeiQL9DyM8sYDjEhWzL1+nLbI9DqtQ= -cosmossdk.io/api v0.7.5/go.mod h1:IcxpYS5fMemZGqyYtErK7OqvdM0C8kdW3dq8Q/XIG38= github.com/cosmos/cosmos-proto v1.0.0-beta.5 h1:eNcayDLpip+zVLRLYafhzLvQlSmyab+RC5W7ZfmxJLA= github.com/cosmos/cosmos-proto v1.0.0-beta.5/go.mod h1:hQGLpiIUloJBMdQMMWb/4wRApmI9hjHH05nefC0Ojec= github.com/cosmos/gogoproto v1.5.0 h1:SDVwzEqZDDBoslaeZg+dGE55hdzHfgUA40pEanMh52o= diff --git a/depinject/internal/appconfig/registry.go b/depinject/internal/appconfig/registry.go index c56debe385e0..7a40cdecea43 100644 --- a/depinject/internal/appconfig/registry.go +++ b/depinject/internal/appconfig/registry.go @@ -4,11 +4,9 @@ import ( "fmt" "reflect" - appv1alpha1 "cosmossdk.io/api/cosmos/app/v1alpha1" gogoproto "github.com/cosmos/gogoproto/proto" protov2 "google.golang.org/protobuf/proto" "google.golang.org/protobuf/reflect/protoreflect" - "google.golang.org/protobuf/types/dynamicpb" "cosmossdk.io/depinject/appconfig/v1alpha1" ) @@ -32,40 +30,24 @@ type ModuleInitializer struct { func ModulesByModuleTypeName() (map[string]*ModuleInitializer, error) { res := map[string]*ModuleInitializer{} - // we use a dynamic extension descriptor here to avoid importing the api module - moduleExt, err := gogoproto.HybridResolver.FindDescriptorByName(protoreflect.FullName(v1alpha1.E_Module.Name)) - if err != nil { - return nil, err - } - moduleExtType := dynamicpb.NewExtensionType(moduleExt.(protoreflect.ExtensionDescriptor)) - for _, initializer := range ModuleRegistry { // as of gogoproto v1.5.0 this should work with either gogoproto or golang v2 proto fullName := gogoproto.MessageName(initializer.ConfigProtoMessage) if desc, err := gogoproto.HybridResolver.FindDescriptorByName(protoreflect.FullName(fullName)); err == nil { - modDesc := protov2.GetExtension(desc.Options(), moduleExtType) - if modDesc == nil { - return nil, fmt.Errorf( - "protobuf type %s registered as a module should have the option %s", - fullName, - appv1alpha1.E_Module.TypeDescriptor().FullName()) - } - - modDescMsg := modDesc.(protoreflect.Message) - - // we convert the returned descriptor to the concrete gogo type we have in v1alpha1 - var modDescGogo v1alpha1.ModuleDescriptor - bz, err := protov2.Marshal(modDescMsg.Interface()) + modDesc, err := GetModuleDescriptor(desc) if err != nil { return nil, err } - err = gogoproto.Unmarshal(bz, &modDescGogo) - if err != nil { - return nil, err + + if modDesc == nil { + return nil, fmt.Errorf( + "protobuf type %s registered as a module should have the option %s", + desc.FullName(), + v1alpha1.E_Module.Name) } - if modDescGogo.GoImport == "" { + if modDesc.GoImport == "" { return nil, fmt.Errorf( "protobuf type %s registered as a module should have ModuleDescriptor.go_import specified", fullName, @@ -82,3 +64,34 @@ func ModulesByModuleTypeName() (map[string]*ModuleInitializer, error) { return res, nil } + +// GetModuleDescriptor returns the cosmos.app.v1alpha1.ModuleDescriptor or nil if one isn't found. +// Errors are returned in unexpected cases. +func GetModuleDescriptor(desc protoreflect.Descriptor) (*v1alpha1.ModuleDescriptor, error) { + var modDesc protov2.Message + // we range over the extensions to retrieve the module extension dynamically without needing to import the api module + protov2.RangeExtensions(desc.Options(), func(extensionType protoreflect.ExtensionType, value any) bool { + if string(extensionType.TypeDescriptor().FullName()) == v1alpha1.E_Module.Name { + modDesc = value.(protov2.Message) + return false + } + return true + }) + + if modDesc == nil { + return nil, nil + } + + // we convert the returned descriptor to the concrete gogo type we have in v1alpha1 to have a concrete type here + var modDescGogo v1alpha1.ModuleDescriptor + bz, err := protov2.Marshal(modDesc) + if err != nil { + return nil, err + } + err = gogoproto.Unmarshal(bz, &modDescGogo) + if err != nil { + return nil, err + } + + return &modDescGogo, nil +} From 2324fb2ed92e0aee9dbc04a2f1c8fe26ec2c0c9a Mon Sep 17 00:00:00 2001 From: Aaron Craelius Date: Wed, 10 Jul 2024 18:45:14 +0200 Subject: [PATCH 06/12] cleanup --- api/cosmos/app/v1/config.pulsar.go | 2085 ---------------------------- 1 file changed, 2085 deletions(-) delete mode 100644 api/cosmos/app/v1/config.pulsar.go diff --git a/api/cosmos/app/v1/config.pulsar.go b/api/cosmos/app/v1/config.pulsar.go deleted file mode 100644 index e7db1f9d4330..000000000000 --- a/api/cosmos/app/v1/config.pulsar.go +++ /dev/null @@ -1,2085 +0,0 @@ -// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. -package appv1 - -import ( - fmt "fmt" - runtime "github.com/cosmos/cosmos-proto/runtime" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoiface "google.golang.org/protobuf/runtime/protoiface" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - anypb "google.golang.org/protobuf/types/known/anypb" - io "io" - reflect "reflect" - sync "sync" -) - -var _ protoreflect.List = (*_Config_1_list)(nil) - -type _Config_1_list struct { - list *[]*ModuleConfig -} - -func (x *_Config_1_list) Len() int { - if x.list == nil { - return 0 - } - return len(*x.list) -} - -func (x *_Config_1_list) Get(i int) protoreflect.Value { - return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) -} - -func (x *_Config_1_list) Set(i int, value protoreflect.Value) { - valueUnwrapped := value.Message() - concreteValue := valueUnwrapped.Interface().(*ModuleConfig) - (*x.list)[i] = concreteValue -} - -func (x *_Config_1_list) Append(value protoreflect.Value) { - valueUnwrapped := value.Message() - concreteValue := valueUnwrapped.Interface().(*ModuleConfig) - *x.list = append(*x.list, concreteValue) -} - -func (x *_Config_1_list) AppendMutable() protoreflect.Value { - v := new(ModuleConfig) - *x.list = append(*x.list, v) - return protoreflect.ValueOfMessage(v.ProtoReflect()) -} - -func (x *_Config_1_list) Truncate(n int) { - for i := n; i < len(*x.list); i++ { - (*x.list)[i] = nil - } - *x.list = (*x.list)[:n] -} - -func (x *_Config_1_list) NewElement() protoreflect.Value { - v := new(ModuleConfig) - return protoreflect.ValueOfMessage(v.ProtoReflect()) -} - -func (x *_Config_1_list) IsValid() bool { - return x.list != nil -} - -var _ protoreflect.List = (*_Config_2_list)(nil) - -type _Config_2_list struct { - list *[]*GolangBinding -} - -func (x *_Config_2_list) Len() int { - if x.list == nil { - return 0 - } - return len(*x.list) -} - -func (x *_Config_2_list) Get(i int) protoreflect.Value { - return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) -} - -func (x *_Config_2_list) Set(i int, value protoreflect.Value) { - valueUnwrapped := value.Message() - concreteValue := valueUnwrapped.Interface().(*GolangBinding) - (*x.list)[i] = concreteValue -} - -func (x *_Config_2_list) Append(value protoreflect.Value) { - valueUnwrapped := value.Message() - concreteValue := valueUnwrapped.Interface().(*GolangBinding) - *x.list = append(*x.list, concreteValue) -} - -func (x *_Config_2_list) AppendMutable() protoreflect.Value { - v := new(GolangBinding) - *x.list = append(*x.list, v) - return protoreflect.ValueOfMessage(v.ProtoReflect()) -} - -func (x *_Config_2_list) Truncate(n int) { - for i := n; i < len(*x.list); i++ { - (*x.list)[i] = nil - } - *x.list = (*x.list)[:n] -} - -func (x *_Config_2_list) NewElement() protoreflect.Value { - v := new(GolangBinding) - return protoreflect.ValueOfMessage(v.ProtoReflect()) -} - -func (x *_Config_2_list) IsValid() bool { - return x.list != nil -} - -var ( - md_Config protoreflect.MessageDescriptor - fd_Config_modules protoreflect.FieldDescriptor - fd_Config_golang_bindings protoreflect.FieldDescriptor -) - -func init() { - file_cosmos_app_v1_config_proto_init() - md_Config = File_cosmos_app_v1_config_proto.Messages().ByName("Config") - fd_Config_modules = md_Config.Fields().ByName("modules") - fd_Config_golang_bindings = md_Config.Fields().ByName("golang_bindings") -} - -var _ protoreflect.Message = (*fastReflection_Config)(nil) - -type fastReflection_Config Config - -func (x *Config) ProtoReflect() protoreflect.Message { - return (*fastReflection_Config)(x) -} - -func (x *Config) slowProtoReflect() protoreflect.Message { - mi := &file_cosmos_app_v1_config_proto_msgTypes[0] - 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_Config_messageType fastReflection_Config_messageType -var _ protoreflect.MessageType = fastReflection_Config_messageType{} - -type fastReflection_Config_messageType struct{} - -func (x fastReflection_Config_messageType) Zero() protoreflect.Message { - return (*fastReflection_Config)(nil) -} -func (x fastReflection_Config_messageType) New() protoreflect.Message { - return new(fastReflection_Config) -} -func (x fastReflection_Config_messageType) Descriptor() protoreflect.MessageDescriptor { - return md_Config -} - -// Descriptor returns message descriptor, which contains only the protobuf -// type information for the message. -func (x *fastReflection_Config) Descriptor() protoreflect.MessageDescriptor { - return md_Config -} - -// 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_Config) Type() protoreflect.MessageType { - return _fastReflection_Config_messageType -} - -// New returns a newly allocated and mutable empty message. -func (x *fastReflection_Config) New() protoreflect.Message { - return new(fastReflection_Config) -} - -// Interface unwraps the message reflection interface and -// returns the underlying ProtoMessage interface. -func (x *fastReflection_Config) Interface() protoreflect.ProtoMessage { - return (*Config)(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_Config) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { - if len(x.Modules) != 0 { - value := protoreflect.ValueOfList(&_Config_1_list{list: &x.Modules}) - if !f(fd_Config_modules, value) { - return - } - } - if len(x.GolangBindings) != 0 { - value := protoreflect.ValueOfList(&_Config_2_list{list: &x.GolangBindings}) - if !f(fd_Config_golang_bindings, 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_Config) Has(fd protoreflect.FieldDescriptor) bool { - switch fd.FullName() { - case "cosmos.app.v1.Config.modules": - return len(x.Modules) != 0 - case "cosmos.app.v1.Config.golang_bindings": - return len(x.GolangBindings) != 0 - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.app.v1.Config")) - } - panic(fmt.Errorf("message cosmos.app.v1.Config 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_Config) Clear(fd protoreflect.FieldDescriptor) { - switch fd.FullName() { - case "cosmos.app.v1.Config.modules": - x.Modules = nil - case "cosmos.app.v1.Config.golang_bindings": - x.GolangBindings = nil - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.app.v1.Config")) - } - panic(fmt.Errorf("message cosmos.app.v1.Config 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_Config) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { - switch descriptor.FullName() { - case "cosmos.app.v1.Config.modules": - if len(x.Modules) == 0 { - return protoreflect.ValueOfList(&_Config_1_list{}) - } - listValue := &_Config_1_list{list: &x.Modules} - return protoreflect.ValueOfList(listValue) - case "cosmos.app.v1.Config.golang_bindings": - if len(x.GolangBindings) == 0 { - return protoreflect.ValueOfList(&_Config_2_list{}) - } - listValue := &_Config_2_list{list: &x.GolangBindings} - return protoreflect.ValueOfList(listValue) - default: - if descriptor.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.app.v1.Config")) - } - panic(fmt.Errorf("message cosmos.app.v1.Config 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_Config) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { - switch fd.FullName() { - case "cosmos.app.v1.Config.modules": - lv := value.List() - clv := lv.(*_Config_1_list) - x.Modules = *clv.list - case "cosmos.app.v1.Config.golang_bindings": - lv := value.List() - clv := lv.(*_Config_2_list) - x.GolangBindings = *clv.list - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.app.v1.Config")) - } - panic(fmt.Errorf("message cosmos.app.v1.Config 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_Config) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { - switch fd.FullName() { - case "cosmos.app.v1.Config.modules": - if x.Modules == nil { - x.Modules = []*ModuleConfig{} - } - value := &_Config_1_list{list: &x.Modules} - return protoreflect.ValueOfList(value) - case "cosmos.app.v1.Config.golang_bindings": - if x.GolangBindings == nil { - x.GolangBindings = []*GolangBinding{} - } - value := &_Config_2_list{list: &x.GolangBindings} - return protoreflect.ValueOfList(value) - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.app.v1.Config")) - } - panic(fmt.Errorf("message cosmos.app.v1.Config 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_Config) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { - switch fd.FullName() { - case "cosmos.app.v1.Config.modules": - list := []*ModuleConfig{} - return protoreflect.ValueOfList(&_Config_1_list{list: &list}) - case "cosmos.app.v1.Config.golang_bindings": - list := []*GolangBinding{} - return protoreflect.ValueOfList(&_Config_2_list{list: &list}) - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.app.v1.Config")) - } - panic(fmt.Errorf("message cosmos.app.v1.Config 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_Config) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { - switch d.FullName() { - default: - panic(fmt.Errorf("%s is not a oneof field in cosmos.app.v1.Config", 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_Config) 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_Config) 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_Config) 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_Config) ProtoMethods() *protoiface.Methods { - size := func(input protoiface.SizeInput) protoiface.SizeOutput { - x := input.Message.Interface().(*Config) - if x == nil { - return protoiface.SizeOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Size: 0, - } - } - options := runtime.SizeInputToOptions(input) - _ = options - var n int - var l int - _ = l - if len(x.Modules) > 0 { - for _, e := range x.Modules { - l = options.Size(e) - n += 1 + l + runtime.Sov(uint64(l)) - } - } - if len(x.GolangBindings) > 0 { - for _, e := range x.GolangBindings { - l = options.Size(e) - 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().(*Config) - 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.GolangBindings) > 0 { - for iNdEx := len(x.GolangBindings) - 1; iNdEx >= 0; iNdEx-- { - encoded, err := options.Marshal(x.GolangBindings[iNdEx]) - if err != nil { - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, err - } - i -= len(encoded) - copy(dAtA[i:], encoded) - i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) - i-- - dAtA[i] = 0x12 - } - } - if len(x.Modules) > 0 { - for iNdEx := len(x.Modules) - 1; iNdEx >= 0; iNdEx-- { - encoded, err := options.Marshal(x.Modules[iNdEx]) - if err != nil { - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, err - } - i -= len(encoded) - copy(dAtA[i:], encoded) - i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) - i-- - dAtA[i] = 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().(*Config) - 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: Config: wiretype end group for non-group") - } - if fieldNum <= 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Config: 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 Modules", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - x.Modules = append(x.Modules, &ModuleConfig{}) - if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Modules[len(x.Modules)-1]); err != nil { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field GolangBindings", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - x.GolangBindings = append(x.GolangBindings, &GolangBinding{}) - if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.GolangBindings[len(x.GolangBindings)-1]); 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 _ protoreflect.List = (*_ModuleConfig_3_list)(nil) - -type _ModuleConfig_3_list struct { - list *[]*GolangBinding -} - -func (x *_ModuleConfig_3_list) Len() int { - if x.list == nil { - return 0 - } - return len(*x.list) -} - -func (x *_ModuleConfig_3_list) Get(i int) protoreflect.Value { - return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) -} - -func (x *_ModuleConfig_3_list) Set(i int, value protoreflect.Value) { - valueUnwrapped := value.Message() - concreteValue := valueUnwrapped.Interface().(*GolangBinding) - (*x.list)[i] = concreteValue -} - -func (x *_ModuleConfig_3_list) Append(value protoreflect.Value) { - valueUnwrapped := value.Message() - concreteValue := valueUnwrapped.Interface().(*GolangBinding) - *x.list = append(*x.list, concreteValue) -} - -func (x *_ModuleConfig_3_list) AppendMutable() protoreflect.Value { - v := new(GolangBinding) - *x.list = append(*x.list, v) - return protoreflect.ValueOfMessage(v.ProtoReflect()) -} - -func (x *_ModuleConfig_3_list) Truncate(n int) { - for i := n; i < len(*x.list); i++ { - (*x.list)[i] = nil - } - *x.list = (*x.list)[:n] -} - -func (x *_ModuleConfig_3_list) NewElement() protoreflect.Value { - v := new(GolangBinding) - return protoreflect.ValueOfMessage(v.ProtoReflect()) -} - -func (x *_ModuleConfig_3_list) IsValid() bool { - return x.list != nil -} - -var ( - md_ModuleConfig protoreflect.MessageDescriptor - fd_ModuleConfig_name protoreflect.FieldDescriptor - fd_ModuleConfig_config protoreflect.FieldDescriptor - fd_ModuleConfig_golang_bindings protoreflect.FieldDescriptor -) - -func init() { - file_cosmos_app_v1_config_proto_init() - md_ModuleConfig = File_cosmos_app_v1_config_proto.Messages().ByName("ModuleConfig") - fd_ModuleConfig_name = md_ModuleConfig.Fields().ByName("name") - fd_ModuleConfig_config = md_ModuleConfig.Fields().ByName("config") - fd_ModuleConfig_golang_bindings = md_ModuleConfig.Fields().ByName("golang_bindings") -} - -var _ protoreflect.Message = (*fastReflection_ModuleConfig)(nil) - -type fastReflection_ModuleConfig ModuleConfig - -func (x *ModuleConfig) ProtoReflect() protoreflect.Message { - return (*fastReflection_ModuleConfig)(x) -} - -func (x *ModuleConfig) slowProtoReflect() protoreflect.Message { - mi := &file_cosmos_app_v1_config_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_ModuleConfig_messageType fastReflection_ModuleConfig_messageType -var _ protoreflect.MessageType = fastReflection_ModuleConfig_messageType{} - -type fastReflection_ModuleConfig_messageType struct{} - -func (x fastReflection_ModuleConfig_messageType) Zero() protoreflect.Message { - return (*fastReflection_ModuleConfig)(nil) -} -func (x fastReflection_ModuleConfig_messageType) New() protoreflect.Message { - return new(fastReflection_ModuleConfig) -} -func (x fastReflection_ModuleConfig_messageType) Descriptor() protoreflect.MessageDescriptor { - return md_ModuleConfig -} - -// Descriptor returns message descriptor, which contains only the protobuf -// type information for the message. -func (x *fastReflection_ModuleConfig) Descriptor() protoreflect.MessageDescriptor { - return md_ModuleConfig -} - -// 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_ModuleConfig) Type() protoreflect.MessageType { - return _fastReflection_ModuleConfig_messageType -} - -// New returns a newly allocated and mutable empty message. -func (x *fastReflection_ModuleConfig) New() protoreflect.Message { - return new(fastReflection_ModuleConfig) -} - -// Interface unwraps the message reflection interface and -// returns the underlying ProtoMessage interface. -func (x *fastReflection_ModuleConfig) Interface() protoreflect.ProtoMessage { - return (*ModuleConfig)(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_ModuleConfig) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { - if x.Name != "" { - value := protoreflect.ValueOfString(x.Name) - if !f(fd_ModuleConfig_name, value) { - return - } - } - if x.Config != nil { - value := protoreflect.ValueOfMessage(x.Config.ProtoReflect()) - if !f(fd_ModuleConfig_config, value) { - return - } - } - if len(x.GolangBindings) != 0 { - value := protoreflect.ValueOfList(&_ModuleConfig_3_list{list: &x.GolangBindings}) - if !f(fd_ModuleConfig_golang_bindings, 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_ModuleConfig) Has(fd protoreflect.FieldDescriptor) bool { - switch fd.FullName() { - case "cosmos.app.v1.ModuleConfig.name": - return x.Name != "" - case "cosmos.app.v1.ModuleConfig.config": - return x.Config != nil - case "cosmos.app.v1.ModuleConfig.golang_bindings": - return len(x.GolangBindings) != 0 - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.app.v1.ModuleConfig")) - } - panic(fmt.Errorf("message cosmos.app.v1.ModuleConfig 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_ModuleConfig) Clear(fd protoreflect.FieldDescriptor) { - switch fd.FullName() { - case "cosmos.app.v1.ModuleConfig.name": - x.Name = "" - case "cosmos.app.v1.ModuleConfig.config": - x.Config = nil - case "cosmos.app.v1.ModuleConfig.golang_bindings": - x.GolangBindings = nil - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.app.v1.ModuleConfig")) - } - panic(fmt.Errorf("message cosmos.app.v1.ModuleConfig 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_ModuleConfig) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { - switch descriptor.FullName() { - case "cosmos.app.v1.ModuleConfig.name": - value := x.Name - return protoreflect.ValueOfString(value) - case "cosmos.app.v1.ModuleConfig.config": - value := x.Config - return protoreflect.ValueOfMessage(value.ProtoReflect()) - case "cosmos.app.v1.ModuleConfig.golang_bindings": - if len(x.GolangBindings) == 0 { - return protoreflect.ValueOfList(&_ModuleConfig_3_list{}) - } - listValue := &_ModuleConfig_3_list{list: &x.GolangBindings} - return protoreflect.ValueOfList(listValue) - default: - if descriptor.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.app.v1.ModuleConfig")) - } - panic(fmt.Errorf("message cosmos.app.v1.ModuleConfig 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_ModuleConfig) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { - switch fd.FullName() { - case "cosmos.app.v1.ModuleConfig.name": - x.Name = value.Interface().(string) - case "cosmos.app.v1.ModuleConfig.config": - x.Config = value.Message().Interface().(*anypb.Any) - case "cosmos.app.v1.ModuleConfig.golang_bindings": - lv := value.List() - clv := lv.(*_ModuleConfig_3_list) - x.GolangBindings = *clv.list - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.app.v1.ModuleConfig")) - } - panic(fmt.Errorf("message cosmos.app.v1.ModuleConfig 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_ModuleConfig) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { - switch fd.FullName() { - case "cosmos.app.v1.ModuleConfig.config": - if x.Config == nil { - x.Config = new(anypb.Any) - } - return protoreflect.ValueOfMessage(x.Config.ProtoReflect()) - case "cosmos.app.v1.ModuleConfig.golang_bindings": - if x.GolangBindings == nil { - x.GolangBindings = []*GolangBinding{} - } - value := &_ModuleConfig_3_list{list: &x.GolangBindings} - return protoreflect.ValueOfList(value) - case "cosmos.app.v1.ModuleConfig.name": - panic(fmt.Errorf("field name of message cosmos.app.v1.ModuleConfig is not mutable")) - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.app.v1.ModuleConfig")) - } - panic(fmt.Errorf("message cosmos.app.v1.ModuleConfig 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_ModuleConfig) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { - switch fd.FullName() { - case "cosmos.app.v1.ModuleConfig.name": - return protoreflect.ValueOfString("") - case "cosmos.app.v1.ModuleConfig.config": - m := new(anypb.Any) - return protoreflect.ValueOfMessage(m.ProtoReflect()) - case "cosmos.app.v1.ModuleConfig.golang_bindings": - list := []*GolangBinding{} - return protoreflect.ValueOfList(&_ModuleConfig_3_list{list: &list}) - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.app.v1.ModuleConfig")) - } - panic(fmt.Errorf("message cosmos.app.v1.ModuleConfig 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_ModuleConfig) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { - switch d.FullName() { - default: - panic(fmt.Errorf("%s is not a oneof field in cosmos.app.v1.ModuleConfig", 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_ModuleConfig) 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_ModuleConfig) 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_ModuleConfig) 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_ModuleConfig) ProtoMethods() *protoiface.Methods { - size := func(input protoiface.SizeInput) protoiface.SizeOutput { - x := input.Message.Interface().(*ModuleConfig) - 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.Name) - if l > 0 { - n += 1 + l + runtime.Sov(uint64(l)) - } - if x.Config != nil { - l = options.Size(x.Config) - n += 1 + l + runtime.Sov(uint64(l)) - } - if len(x.GolangBindings) > 0 { - for _, e := range x.GolangBindings { - l = options.Size(e) - 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().(*ModuleConfig) - 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.GolangBindings) > 0 { - for iNdEx := len(x.GolangBindings) - 1; iNdEx >= 0; iNdEx-- { - encoded, err := options.Marshal(x.GolangBindings[iNdEx]) - if err != nil { - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, err - } - i -= len(encoded) - copy(dAtA[i:], encoded) - i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) - i-- - dAtA[i] = 0x1a - } - } - if x.Config != nil { - encoded, err := options.Marshal(x.Config) - 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.Name) > 0 { - i -= len(x.Name) - copy(dAtA[i:], x.Name) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Name))) - 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().(*ModuleConfig) - 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: ModuleConfig: wiretype end group for non-group") - } - if fieldNum <= 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: ModuleConfig: 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 Name", 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.Name = 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 Config", 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.Config == nil { - x.Config = &anypb.Any{} - } - if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Config); 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 GolangBindings", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - x.GolangBindings = append(x.GolangBindings, &GolangBinding{}) - if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.GolangBindings[len(x.GolangBindings)-1]); 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_GolangBinding protoreflect.MessageDescriptor - fd_GolangBinding_interface_type protoreflect.FieldDescriptor - fd_GolangBinding_implementation protoreflect.FieldDescriptor -) - -func init() { - file_cosmos_app_v1_config_proto_init() - md_GolangBinding = File_cosmos_app_v1_config_proto.Messages().ByName("GolangBinding") - fd_GolangBinding_interface_type = md_GolangBinding.Fields().ByName("interface_type") - fd_GolangBinding_implementation = md_GolangBinding.Fields().ByName("implementation") -} - -var _ protoreflect.Message = (*fastReflection_GolangBinding)(nil) - -type fastReflection_GolangBinding GolangBinding - -func (x *GolangBinding) ProtoReflect() protoreflect.Message { - return (*fastReflection_GolangBinding)(x) -} - -func (x *GolangBinding) slowProtoReflect() protoreflect.Message { - mi := &file_cosmos_app_v1_config_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -var _fastReflection_GolangBinding_messageType fastReflection_GolangBinding_messageType -var _ protoreflect.MessageType = fastReflection_GolangBinding_messageType{} - -type fastReflection_GolangBinding_messageType struct{} - -func (x fastReflection_GolangBinding_messageType) Zero() protoreflect.Message { - return (*fastReflection_GolangBinding)(nil) -} -func (x fastReflection_GolangBinding_messageType) New() protoreflect.Message { - return new(fastReflection_GolangBinding) -} -func (x fastReflection_GolangBinding_messageType) Descriptor() protoreflect.MessageDescriptor { - return md_GolangBinding -} - -// Descriptor returns message descriptor, which contains only the protobuf -// type information for the message. -func (x *fastReflection_GolangBinding) Descriptor() protoreflect.MessageDescriptor { - return md_GolangBinding -} - -// 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_GolangBinding) Type() protoreflect.MessageType { - return _fastReflection_GolangBinding_messageType -} - -// New returns a newly allocated and mutable empty message. -func (x *fastReflection_GolangBinding) New() protoreflect.Message { - return new(fastReflection_GolangBinding) -} - -// Interface unwraps the message reflection interface and -// returns the underlying ProtoMessage interface. -func (x *fastReflection_GolangBinding) Interface() protoreflect.ProtoMessage { - return (*GolangBinding)(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_GolangBinding) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { - if x.InterfaceType != "" { - value := protoreflect.ValueOfString(x.InterfaceType) - if !f(fd_GolangBinding_interface_type, value) { - return - } - } - if x.Implementation != "" { - value := protoreflect.ValueOfString(x.Implementation) - if !f(fd_GolangBinding_implementation, 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_GolangBinding) Has(fd protoreflect.FieldDescriptor) bool { - switch fd.FullName() { - case "cosmos.app.v1.GolangBinding.interface_type": - return x.InterfaceType != "" - case "cosmos.app.v1.GolangBinding.implementation": - return x.Implementation != "" - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.app.v1.GolangBinding")) - } - panic(fmt.Errorf("message cosmos.app.v1.GolangBinding 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_GolangBinding) Clear(fd protoreflect.FieldDescriptor) { - switch fd.FullName() { - case "cosmos.app.v1.GolangBinding.interface_type": - x.InterfaceType = "" - case "cosmos.app.v1.GolangBinding.implementation": - x.Implementation = "" - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.app.v1.GolangBinding")) - } - panic(fmt.Errorf("message cosmos.app.v1.GolangBinding 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_GolangBinding) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { - switch descriptor.FullName() { - case "cosmos.app.v1.GolangBinding.interface_type": - value := x.InterfaceType - return protoreflect.ValueOfString(value) - case "cosmos.app.v1.GolangBinding.implementation": - value := x.Implementation - return protoreflect.ValueOfString(value) - default: - if descriptor.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.app.v1.GolangBinding")) - } - panic(fmt.Errorf("message cosmos.app.v1.GolangBinding 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_GolangBinding) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { - switch fd.FullName() { - case "cosmos.app.v1.GolangBinding.interface_type": - x.InterfaceType = value.Interface().(string) - case "cosmos.app.v1.GolangBinding.implementation": - x.Implementation = value.Interface().(string) - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.app.v1.GolangBinding")) - } - panic(fmt.Errorf("message cosmos.app.v1.GolangBinding 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_GolangBinding) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { - switch fd.FullName() { - case "cosmos.app.v1.GolangBinding.interface_type": - panic(fmt.Errorf("field interface_type of message cosmos.app.v1.GolangBinding is not mutable")) - case "cosmos.app.v1.GolangBinding.implementation": - panic(fmt.Errorf("field implementation of message cosmos.app.v1.GolangBinding is not mutable")) - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.app.v1.GolangBinding")) - } - panic(fmt.Errorf("message cosmos.app.v1.GolangBinding 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_GolangBinding) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { - switch fd.FullName() { - case "cosmos.app.v1.GolangBinding.interface_type": - return protoreflect.ValueOfString("") - case "cosmos.app.v1.GolangBinding.implementation": - return protoreflect.ValueOfString("") - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.app.v1.GolangBinding")) - } - panic(fmt.Errorf("message cosmos.app.v1.GolangBinding 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_GolangBinding) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { - switch d.FullName() { - default: - panic(fmt.Errorf("%s is not a oneof field in cosmos.app.v1.GolangBinding", 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_GolangBinding) 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_GolangBinding) 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_GolangBinding) 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_GolangBinding) ProtoMethods() *protoiface.Methods { - size := func(input protoiface.SizeInput) protoiface.SizeOutput { - x := input.Message.Interface().(*GolangBinding) - 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.InterfaceType) - if l > 0 { - n += 1 + l + runtime.Sov(uint64(l)) - } - l = len(x.Implementation) - if l > 0 { - 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().(*GolangBinding) - 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.Implementation) > 0 { - i -= len(x.Implementation) - copy(dAtA[i:], x.Implementation) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Implementation))) - i-- - dAtA[i] = 0x12 - } - if len(x.InterfaceType) > 0 { - i -= len(x.InterfaceType) - copy(dAtA[i:], x.InterfaceType) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.InterfaceType))) - 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().(*GolangBinding) - 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: GolangBinding: wiretype end group for non-group") - } - if fieldNum <= 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: GolangBinding: 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 InterfaceType", 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.InterfaceType = 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 Implementation", 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.Implementation = 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 -// protoc (unknown) -// source: cosmos/app/v1/config.proto - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// Config represents the configuration for a Cosmos SDK ABCI app. -// It is intended that all state machine logic including the version of -// baseapp and tx handlers (and possibly even Tendermint) that an app needs -// can be described in a config object. For compatibility, the framework should -// allow a mixture of declarative and imperative app wiring, however, apps -// that strive for the maximum ease of maintainability should be able to describe -// their state machine with a config object alone. -type Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // modules are the module configurations for the app. - Modules []*ModuleConfig `protobuf:"bytes,1,rep,name=modules,proto3" json:"modules,omitempty"` - // golang_bindings specifies explicit interface to implementation type bindings which - // depinject uses to resolve interface inputs to provider functions. The scope of this - // field's configuration is global (not module specific). - GolangBindings []*GolangBinding `protobuf:"bytes,2,rep,name=golang_bindings,json=golangBindings,proto3" json:"golang_bindings,omitempty"` -} - -func (x *Config) Reset() { - *x = Config{} - if protoimpl.UnsafeEnabled { - mi := &file_cosmos_app_v1_config_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Config) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Config) ProtoMessage() {} - -// Deprecated: Use Config.ProtoReflect.Descriptor instead. -func (*Config) Descriptor() ([]byte, []int) { - return file_cosmos_app_v1_config_proto_rawDescGZIP(), []int{0} -} - -func (x *Config) GetModules() []*ModuleConfig { - if x != nil { - return x.Modules - } - return nil -} - -func (x *Config) GetGolangBindings() []*GolangBinding { - if x != nil { - return x.GolangBindings - } - return nil -} - -// ModuleConfig is a module configuration for an app. -type ModuleConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // name is the unique name of the module within the app. It should be a name - // that persists between different versions of a module so that modules - // can be smoothly upgraded to new versions. - // - // For example, for the module cosmos.bank.module.v1.Module, we may chose - // to simply name the module "bank" in the app. When we upgrade to - // cosmos.bank.module.v2.Module, the app-specific name "bank" stays the same - // and the framework knows that the v2 module should receive all the same state - // that the v1 module had. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // config is the config object for the module. Module config messages should - // define a ModuleDescriptor using the cosmos.app.v1alpha1.is_module extension, - // although this requirement shouldn't be considered stable. - Config *anypb.Any `protobuf:"bytes,2,opt,name=config,proto3" json:"config,omitempty"` - // golang_bindings specifies explicit interface to implementation type bindings which - // depinject uses to resolve interface inputs to provider functions. The scope of this - // field's configuration is module specific. - GolangBindings []*GolangBinding `protobuf:"bytes,3,rep,name=golang_bindings,json=golangBindings,proto3" json:"golang_bindings,omitempty"` -} - -func (x *ModuleConfig) Reset() { - *x = ModuleConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_cosmos_app_v1_config_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ModuleConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ModuleConfig) ProtoMessage() {} - -// Deprecated: Use ModuleConfig.ProtoReflect.Descriptor instead. -func (*ModuleConfig) Descriptor() ([]byte, []int) { - return file_cosmos_app_v1_config_proto_rawDescGZIP(), []int{1} -} - -func (x *ModuleConfig) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *ModuleConfig) GetConfig() *anypb.Any { - if x != nil { - return x.Config - } - return nil -} - -func (x *ModuleConfig) GetGolangBindings() []*GolangBinding { - if x != nil { - return x.GolangBindings - } - return nil -} - -// GolangBinding is an explicit interface type to implementing type binding for dependency injection. -type GolangBinding struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // interface_type is the interface type which will be bound to a specific implementation type - InterfaceType string `protobuf:"bytes,1,opt,name=interface_type,json=interfaceType,proto3" json:"interface_type,omitempty"` - // implementation is the implementing type which will be supplied when an input of type interface is requested - Implementation string `protobuf:"bytes,2,opt,name=implementation,proto3" json:"implementation,omitempty"` -} - -func (x *GolangBinding) Reset() { - *x = GolangBinding{} - if protoimpl.UnsafeEnabled { - mi := &file_cosmos_app_v1_config_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GolangBinding) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GolangBinding) ProtoMessage() {} - -// Deprecated: Use GolangBinding.ProtoReflect.Descriptor instead. -func (*GolangBinding) Descriptor() ([]byte, []int) { - return file_cosmos_app_v1_config_proto_rawDescGZIP(), []int{2} -} - -func (x *GolangBinding) GetInterfaceType() string { - if x != nil { - return x.InterfaceType - } - return "" -} - -func (x *GolangBinding) GetImplementation() string { - if x != nil { - return x.Implementation - } - return "" -} - -var File_cosmos_app_v1_config_proto protoreflect.FileDescriptor - -var file_cosmos_app_v1_config_proto_rawDesc = []byte{ - 0x0a, 0x1a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x76, 0x31, 0x2f, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0d, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x1a, 0x19, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x86, 0x01, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x35, 0x0a, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x2e, - 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, - 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x0f, 0x67, 0x6f, 0x6c, 0x61, - 0x6e, 0x67, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, - 0x0e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x22, - 0x97, 0x01, 0x0a, 0x0c, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 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, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x12, 0x45, 0x0a, 0x0f, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x5f, 0x62, 0x69, 0x6e, - 0x64, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x6f, 0x6c, 0x61, - 0x6e, 0x67, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x0e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, - 0x67, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x5e, 0x0a, 0x0d, 0x47, 0x6f, 0x6c, - 0x61, 0x6e, 0x67, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x6e, - 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6d, 0x70, 0x6c, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x9c, 0x01, 0x0a, 0x11, 0x63, 0x6f, - 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x76, 0x31, 0x42, - 0x0b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x24, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x76, 0x31, 0x3b, 0x61, - 0x70, 0x70, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x41, 0x58, 0xaa, 0x02, 0x0d, 0x43, 0x6f, 0x73, - 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x70, 0x70, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0d, 0x43, 0x6f, 0x73, - 0x6d, 0x6f, 0x73, 0x5c, 0x41, 0x70, 0x70, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x19, 0x43, 0x6f, 0x73, - 0x6d, 0x6f, 0x73, 0x5c, 0x41, 0x70, 0x70, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0f, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x3a, - 0x3a, 0x41, 0x70, 0x70, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_cosmos_app_v1_config_proto_rawDescOnce sync.Once - file_cosmos_app_v1_config_proto_rawDescData = file_cosmos_app_v1_config_proto_rawDesc -) - -func file_cosmos_app_v1_config_proto_rawDescGZIP() []byte { - file_cosmos_app_v1_config_proto_rawDescOnce.Do(func() { - file_cosmos_app_v1_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_cosmos_app_v1_config_proto_rawDescData) - }) - return file_cosmos_app_v1_config_proto_rawDescData -} - -var file_cosmos_app_v1_config_proto_msgTypes = make([]protoimpl.MessageInfo, 3) -var file_cosmos_app_v1_config_proto_goTypes = []interface{}{ - (*Config)(nil), // 0: cosmos.app.v1.Config - (*ModuleConfig)(nil), // 1: cosmos.app.v1.ModuleConfig - (*GolangBinding)(nil), // 2: cosmos.app.v1.GolangBinding - (*anypb.Any)(nil), // 3: google.protobuf.Any -} -var file_cosmos_app_v1_config_proto_depIdxs = []int32{ - 1, // 0: cosmos.app.v1.Config.modules:type_name -> cosmos.app.v1.ModuleConfig - 2, // 1: cosmos.app.v1.Config.golang_bindings:type_name -> cosmos.app.v1.GolangBinding - 3, // 2: cosmos.app.v1.ModuleConfig.config:type_name -> google.protobuf.Any - 2, // 3: cosmos.app.v1.ModuleConfig.golang_bindings:type_name -> cosmos.app.v1.GolangBinding - 4, // [4:4] is the sub-list for method output_type - 4, // [4:4] is the sub-list for method input_type - 4, // [4:4] is the sub-list for extension type_name - 4, // [4:4] is the sub-list for extension extendee - 0, // [0:4] is the sub-list for field type_name -} - -func init() { file_cosmos_app_v1_config_proto_init() } -func file_cosmos_app_v1_config_proto_init() { - if File_cosmos_app_v1_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_cosmos_app_v1_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Config); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_cosmos_app_v1_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ModuleConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_cosmos_app_v1_config_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GolangBinding); 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{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_cosmos_app_v1_config_proto_rawDesc, - NumEnums: 0, - NumMessages: 3, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_cosmos_app_v1_config_proto_goTypes, - DependencyIndexes: file_cosmos_app_v1_config_proto_depIdxs, - MessageInfos: file_cosmos_app_v1_config_proto_msgTypes, - }.Build() - File_cosmos_app_v1_config_proto = out.File - file_cosmos_app_v1_config_proto_rawDesc = nil - file_cosmos_app_v1_config_proto_goTypes = nil - file_cosmos_app_v1_config_proto_depIdxs = nil -} From 44c31534f1cb8f05aa64421e9c5947630cb50320 Mon Sep 17 00:00:00 2001 From: Aaron Craelius Date: Wed, 10 Jul 2024 18:53:36 +0200 Subject: [PATCH 07/12] WIP --- depinject/appconfig/config.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/depinject/appconfig/config.go b/depinject/appconfig/config.go index ba540866efc9..a63799b1a36a 100644 --- a/depinject/appconfig/config.go +++ b/depinject/appconfig/config.go @@ -68,6 +68,8 @@ func WrapAny(config protoreflect.ProtoMessage) *anypb.Any { func Compose(appConfig gogoproto.Message) depinject.Config { appConfigConcrete, ok := appConfig.(*v1alpha1.Config) if !ok { + // we convert any other proto type that was passed (such as an api module type) to the concrete + // type we're using here appConfigConcrete = &v1alpha1.Config{} bz, err := gogoproto.Marshal(appConfig) if err != nil { From 70bafd120930edb28055eb946068867ce5c991df Mon Sep 17 00:00:00 2001 From: Aaron Craelius Date: Wed, 10 Jul 2024 19:53:23 +0200 Subject: [PATCH 08/12] fix extension retrieval errors --- depinject/internal/appconfig/registry.go | 48 ++++++++++++++++-------- 1 file changed, 33 insertions(+), 15 deletions(-) diff --git a/depinject/internal/appconfig/registry.go b/depinject/internal/appconfig/registry.go index 7a40cdecea43..8a7a4c23d61a 100644 --- a/depinject/internal/appconfig/registry.go +++ b/depinject/internal/appconfig/registry.go @@ -5,7 +5,10 @@ import ( "reflect" gogoproto "github.com/cosmos/gogoproto/proto" + "github.com/cosmos/gogoproto/protoc-gen-gogo/descriptor" + "google.golang.org/protobuf/encoding/protowire" protov2 "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/reflect/protodesc" "google.golang.org/protobuf/reflect/protoreflect" "cosmossdk.io/depinject/appconfig/v1alpha1" @@ -35,6 +38,9 @@ func ModulesByModuleTypeName() (map[string]*ModuleInitializer, error) { fullName := gogoproto.MessageName(initializer.ConfigProtoMessage) if desc, err := gogoproto.HybridResolver.FindDescriptorByName(protoreflect.FullName(fullName)); err == nil { + dp := protodesc.ToDescriptorProto(desc.(protoreflect.MessageDescriptor)) + fmt.Printf("dp: %v\n", dp) + modDesc, err := GetModuleDescriptor(desc) if err != nil { return nil, err @@ -68,30 +74,42 @@ func ModulesByModuleTypeName() (map[string]*ModuleInitializer, error) { // GetModuleDescriptor returns the cosmos.app.v1alpha1.ModuleDescriptor or nil if one isn't found. // Errors are returned in unexpected cases. func GetModuleDescriptor(desc protoreflect.Descriptor) (*v1alpha1.ModuleDescriptor, error) { - var modDesc protov2.Message - // we range over the extensions to retrieve the module extension dynamically without needing to import the api module - protov2.RangeExtensions(desc.Options(), func(extensionType protoreflect.ExtensionType, value any) bool { - if string(extensionType.TypeDescriptor().FullName()) == v1alpha1.E_Module.Name { - modDesc = value.(protov2.Message) - return false - } - return true - }) + // we need to take a somewhat round about way to get the extension here + // our most complete type registry has a mix of gogoproto and protoreflect types + // so we start with a protoreflect descriptor, convert it to a gogo descriptor + // and then get the extension by its raw field value to avoid any unmarshaling errors - if modDesc == nil { + rawV2Desc := protodesc.ToDescriptorProto(desc.(protoreflect.MessageDescriptor)) + bz, err := protov2.Marshal(rawV2Desc) + if err != nil { + return nil, err + } + var gogoDesc descriptor.DescriptorProto + err = gogoproto.Unmarshal(bz, &gogoDesc) + if err != nil { + return nil, err + } + + opts := gogoDesc.Options + if !gogoproto.HasExtension(opts, v1alpha1.E_Module) { return nil, nil } - // we convert the returned descriptor to the concrete gogo type we have in v1alpha1 to have a concrete type here - var modDescGogo v1alpha1.ModuleDescriptor - bz, err := protov2.Marshal(modDesc) + bz, err = gogoproto.GetRawExtension(gogoproto.GetUnsafeExtensionsMap(opts), v1alpha1.E_Module.Field) if err != nil { return nil, err } - err = gogoproto.Unmarshal(bz, &modDescGogo) + + // we have to skip the field tag and length prefix itself to actually get the raw bytes we want + // this is really frustrating, but other methods caused runtime errors + _, _, n := protowire.ConsumeTag(bz) + bz, _ = protowire.ConsumeBytes(bz[n:]) + + var ext v1alpha1.ModuleDescriptor + err = gogoproto.Unmarshal(bz, &ext) if err != nil { return nil, err } - return &modDescGogo, nil + return &ext, nil } From 447ed19056d00b4e5be0879b0e55464077559084 Mon Sep 17 00:00:00 2001 From: Aaron Craelius Date: Wed, 10 Jul 2024 19:54:24 +0200 Subject: [PATCH 09/12] docs --- depinject/internal/appconfig/registry.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/depinject/internal/appconfig/registry.go b/depinject/internal/appconfig/registry.go index 8a7a4c23d61a..51b37ddf1262 100644 --- a/depinject/internal/appconfig/registry.go +++ b/depinject/internal/appconfig/registry.go @@ -101,7 +101,8 @@ func GetModuleDescriptor(desc protoreflect.Descriptor) (*v1alpha1.ModuleDescript } // we have to skip the field tag and length prefix itself to actually get the raw bytes we want - // this is really frustrating, but other methods caused runtime errors + // this is really overly complex, but other methods caused runtime errors because of validation + // that gogo does that appears simply not necessary _, _, n := protowire.ConsumeTag(bz) bz, _ = protowire.ConsumeBytes(bz[n:]) From fc5c51722feb394869e60f43895f989557a1a48f Mon Sep 17 00:00:00 2001 From: Aaron Craelius Date: Wed, 10 Jul 2024 21:14:28 +0200 Subject: [PATCH 10/12] go mod tidy --- orm/go.mod | 1 + orm/go.sum | 9 +++++++++ runtime/v2/go.mod | 1 + runtime/v2/go.sum | 8 ++++++++ 4 files changed, 19 insertions(+) diff --git a/orm/go.mod b/orm/go.mod index 6d94ca592acf..86c7619af94c 100644 --- a/orm/go.mod +++ b/orm/go.mod @@ -58,6 +58,7 @@ require ( github.com/rogpeppe/go-internal v1.12.0 // indirect github.com/spf13/cast v1.6.0 // indirect github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect + github.com/tendermint/go-amino v0.16.0 // indirect golang.org/x/net v0.27.0 // indirect golang.org/x/sys v0.22.0 // indirect golang.org/x/text v0.16.0 // indirect diff --git a/orm/go.sum b/orm/go.sum index b7d78aa2e5aa..ace3ac645255 100644 --- a/orm/go.sum +++ b/orm/go.sum @@ -63,6 +63,7 @@ github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69 github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= @@ -84,6 +85,9 @@ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= +github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= +github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= @@ -141,12 +145,15 @@ github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99 github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d h1:vfofYNRScrDdvS342BElfbETmL1Aiz3i2t0zfRj16Hs= github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d/go.mod h1:RRCYJbIwD5jmqPI9XoAFR0OcDxqUctll6zUj/+B4S48= +github.com/tendermint/go-amino v0.16.0 h1:GyhmgQKvqF82e2oZeuMSp9JTN0N09emoSZlb2lyGa2E= +github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoMC9Sphe2ZwGME= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= @@ -171,6 +178,7 @@ golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys= golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -217,6 +225,7 @@ golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 h1:RFiFrvy37/mpSpdySBDrUdipW/dHwsRwh3J3+A9VgT4= google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237/go.mod h1:Z5Iiy3jtmioajWHDGFk7CeugTyHtPvMHA4UTmUkyalE= google.golang.org/genproto/googleapis/rpc v0.0.0-20240709173604-40e1e62336c5 h1:SbSDUWW1PAO24TNpLdeheoYPd7kllICcLU52x6eD4kQ= diff --git a/runtime/v2/go.mod b/runtime/v2/go.mod index 1ae44abb4fe2..5da696e774e5 100644 --- a/runtime/v2/go.mod +++ b/runtime/v2/go.mod @@ -82,6 +82,7 @@ require ( github.com/spf13/cast v1.6.0 // indirect github.com/stretchr/testify v1.9.0 // indirect github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect + github.com/tendermint/go-amino v0.16.0 // indirect github.com/tidwall/btree v1.7.0 // indirect golang.org/x/crypto v0.25.0 // indirect golang.org/x/net v0.27.0 // indirect diff --git a/runtime/v2/go.sum b/runtime/v2/go.sum index 5ffc4256a190..069bd8c96bf4 100644 --- a/runtime/v2/go.sum +++ b/runtime/v2/go.sum @@ -77,6 +77,7 @@ github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69 github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= @@ -100,7 +101,10 @@ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= +github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= @@ -218,6 +222,8 @@ github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsT github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d h1:vfofYNRScrDdvS342BElfbETmL1Aiz3i2t0zfRj16Hs= github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d/go.mod h1:RRCYJbIwD5jmqPI9XoAFR0OcDxqUctll6zUj/+B4S48= +github.com/tendermint/go-amino v0.16.0 h1:GyhmgQKvqF82e2oZeuMSp9JTN0N09emoSZlb2lyGa2E= +github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoMC9Sphe2ZwGME= github.com/tidwall/btree v1.7.0 h1:L1fkJH/AuEh5zBnnBbmTwQ5Lt+bRJ5A8EWecslvo9iI= github.com/tidwall/btree v1.7.0/go.mod h1:twD9XRA5jj9VUQGELzDO4HPQTNJsoWWfYEL+EUQ2cKY= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= @@ -249,6 +255,7 @@ golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -297,6 +304,7 @@ golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 h1:RFiFrvy37/mpSpdySBDrUdipW/dHwsRwh3J3+A9VgT4= google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237/go.mod h1:Z5Iiy3jtmioajWHDGFk7CeugTyHtPvMHA4UTmUkyalE= google.golang.org/genproto/googleapis/rpc v0.0.0-20240709173604-40e1e62336c5 h1:SbSDUWW1PAO24TNpLdeheoYPd7kllICcLU52x6eD4kQ= From 70277ec5d3af61b10cd7ee1cc473724f1f779e10 Mon Sep 17 00:00:00 2001 From: Aaron Craelius Date: Mon, 15 Jul 2024 20:04:25 +0200 Subject: [PATCH 11/12] Update registry.go Co-authored-by: Marko --- depinject/internal/appconfig/registry.go | 1 - 1 file changed, 1 deletion(-) diff --git a/depinject/internal/appconfig/registry.go b/depinject/internal/appconfig/registry.go index 51b37ddf1262..991e6a682942 100644 --- a/depinject/internal/appconfig/registry.go +++ b/depinject/internal/appconfig/registry.go @@ -39,7 +39,6 @@ func ModulesByModuleTypeName() (map[string]*ModuleInitializer, error) { if desc, err := gogoproto.HybridResolver.FindDescriptorByName(protoreflect.FullName(fullName)); err == nil { dp := protodesc.ToDescriptorProto(desc.(protoreflect.MessageDescriptor)) - fmt.Printf("dp: %v\n", dp) modDesc, err := GetModuleDescriptor(desc) if err != nil { From f0edb82e1728758f89f365443c79d48598f8bd38 Mon Sep 17 00:00:00 2001 From: Matt Kocubinski Date: Thu, 18 Jul 2024 11:09:39 -0500 Subject: [PATCH 12/12] rm unused var --- depinject/internal/appconfig/registry.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/depinject/internal/appconfig/registry.go b/depinject/internal/appconfig/registry.go index 991e6a682942..87161353b66e 100644 --- a/depinject/internal/appconfig/registry.go +++ b/depinject/internal/appconfig/registry.go @@ -38,8 +38,6 @@ func ModulesByModuleTypeName() (map[string]*ModuleInitializer, error) { fullName := gogoproto.MessageName(initializer.ConfigProtoMessage) if desc, err := gogoproto.HybridResolver.FindDescriptorByName(protoreflect.FullName(fullName)); err == nil { - dp := protodesc.ToDescriptorProto(desc.(protoreflect.MessageDescriptor)) - modDesc, err := GetModuleDescriptor(desc) if err != nil { return nil, err