diff --git a/api/opinit/opchild/v1/tx.pulsar.go b/api/opinit/opchild/v1/tx.pulsar.go index f35b78b0..d7ada82c 100644 --- a/api/opinit/opchild/v1/tx.pulsar.go +++ b/api/opinit/opchild/v1/tx.pulsar.go @@ -2641,12 +2641,14 @@ func (x *fastReflection_MsgFinalizeTokenDeposit) ProtoMethods() *protoiface.Meth } var ( - md_MsgFinalizeTokenDepositResponse protoreflect.MessageDescriptor + md_MsgFinalizeTokenDepositResponse protoreflect.MessageDescriptor + fd_MsgFinalizeTokenDepositResponse_result protoreflect.FieldDescriptor ) func init() { file_opinit_opchild_v1_tx_proto_init() md_MsgFinalizeTokenDepositResponse = File_opinit_opchild_v1_tx_proto.Messages().ByName("MsgFinalizeTokenDepositResponse") + fd_MsgFinalizeTokenDepositResponse_result = md_MsgFinalizeTokenDepositResponse.Fields().ByName("result") } var _ protoreflect.Message = (*fastReflection_MsgFinalizeTokenDepositResponse)(nil) @@ -2714,6 +2716,12 @@ func (x *fastReflection_MsgFinalizeTokenDepositResponse) Interface() protoreflec // While iterating, mutating operations may only be performed // on the current field descriptor. func (x *fastReflection_MsgFinalizeTokenDepositResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Result != 0 { + value := protoreflect.ValueOfEnum((protoreflect.EnumNumber)(x.Result)) + if !f(fd_MsgFinalizeTokenDepositResponse_result, value) { + return + } + } } // Has reports whether a field is populated. @@ -2729,6 +2737,8 @@ func (x *fastReflection_MsgFinalizeTokenDepositResponse) Range(f func(protorefle // a repeated field is populated if it is non-empty. func (x *fastReflection_MsgFinalizeTokenDepositResponse) Has(fd protoreflect.FieldDescriptor) bool { switch fd.FullName() { + case "opinit.opchild.v1.MsgFinalizeTokenDepositResponse.result": + return x.Result != 0 default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: opinit.opchild.v1.MsgFinalizeTokenDepositResponse")) @@ -2745,6 +2755,8 @@ func (x *fastReflection_MsgFinalizeTokenDepositResponse) Has(fd protoreflect.Fie // Clear is a mutating operation and unsafe for concurrent use. func (x *fastReflection_MsgFinalizeTokenDepositResponse) Clear(fd protoreflect.FieldDescriptor) { switch fd.FullName() { + case "opinit.opchild.v1.MsgFinalizeTokenDepositResponse.result": + x.Result = 0 default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: opinit.opchild.v1.MsgFinalizeTokenDepositResponse")) @@ -2761,6 +2773,9 @@ func (x *fastReflection_MsgFinalizeTokenDepositResponse) Clear(fd protoreflect.F // of the value; to obtain a mutable reference, use Mutable. func (x *fastReflection_MsgFinalizeTokenDepositResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { switch descriptor.FullName() { + case "opinit.opchild.v1.MsgFinalizeTokenDepositResponse.result": + value := x.Result + return protoreflect.ValueOfEnum((protoreflect.EnumNumber)(value)) default: if descriptor.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: opinit.opchild.v1.MsgFinalizeTokenDepositResponse")) @@ -2781,6 +2796,8 @@ func (x *fastReflection_MsgFinalizeTokenDepositResponse) Get(descriptor protoref // Set is a mutating operation and unsafe for concurrent use. func (x *fastReflection_MsgFinalizeTokenDepositResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { switch fd.FullName() { + case "opinit.opchild.v1.MsgFinalizeTokenDepositResponse.result": + x.Result = (ResponseResultType)(value.Enum()) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: opinit.opchild.v1.MsgFinalizeTokenDepositResponse")) @@ -2801,6 +2818,8 @@ func (x *fastReflection_MsgFinalizeTokenDepositResponse) Set(fd protoreflect.Fie // Mutable is a mutating operation and unsafe for concurrent use. func (x *fastReflection_MsgFinalizeTokenDepositResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { + case "opinit.opchild.v1.MsgFinalizeTokenDepositResponse.result": + panic(fmt.Errorf("field result of message opinit.opchild.v1.MsgFinalizeTokenDepositResponse is not mutable")) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: opinit.opchild.v1.MsgFinalizeTokenDepositResponse")) @@ -2814,6 +2833,8 @@ func (x *fastReflection_MsgFinalizeTokenDepositResponse) Mutable(fd protoreflect // For lists, maps, and messages, this returns a new, empty, mutable value. func (x *fastReflection_MsgFinalizeTokenDepositResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { + case "opinit.opchild.v1.MsgFinalizeTokenDepositResponse.result": + return protoreflect.ValueOfEnum(0) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: opinit.opchild.v1.MsgFinalizeTokenDepositResponse")) @@ -2883,6 +2904,9 @@ func (x *fastReflection_MsgFinalizeTokenDepositResponse) ProtoMethods() *protoif var n int var l int _ = l + if x.Result != 0 { + n += 1 + runtime.Sov(uint64(x.Result)) + } if x.unknownFields != nil { n += len(x.unknownFields) } @@ -2912,6 +2936,11 @@ func (x *fastReflection_MsgFinalizeTokenDepositResponse) ProtoMethods() *protoif i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } + if x.Result != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.Result)) + i-- + dAtA[i] = 0x8 + } if input.Buf != nil { input.Buf = append(input.Buf, dAtA...) } else { @@ -2961,6 +2990,25 @@ func (x *fastReflection_MsgFinalizeTokenDepositResponse) ProtoMethods() *protoif return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgFinalizeTokenDepositResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { + case 1: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Result", wireType) + } + x.Result = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.Result |= ResponseResultType(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := runtime.Skip(dAtA[iNdEx:]) @@ -8774,6 +8822,8 @@ type MsgFinalizeTokenDepositResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + Result ResponseResultType `protobuf:"varint,1,opt,name=result,proto3,enum=opinit.opchild.v1.ResponseResultType" json:"result,omitempty"` } func (x *MsgFinalizeTokenDepositResponse) Reset() { @@ -8796,6 +8846,13 @@ func (*MsgFinalizeTokenDepositResponse) Descriptor() ([]byte, []int) { return file_opinit_opchild_v1_tx_proto_rawDescGZIP(), []int{5} } +func (x *MsgFinalizeTokenDepositResponse) GetResult() ResponseResultType { + if x != nil { + return x.Result + } + return ResponseResultType_RESPONSE_RESULT_TYPE_UNSPECIFIED +} + // MsgInitiateTokenWithdrawal is a message to withdraw a new token from L2 to L1. type MsgInitiateTokenWithdrawal struct { state protoimpl.MessageState @@ -9360,188 +9417,192 @@ var file_opinit_opchild_v1_tx_proto_rawDesc = []byte{ 0x01, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x2f, 0x82, 0xe7, 0xb0, 0x2a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x8a, 0xe7, 0xb0, 0x2a, 0x1f, 0x6f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x2f, 0x4d, 0x73, 0x67, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, - 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x22, 0x21, 0x0a, + 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x22, 0x60, 0x0a, 0x1f, 0x4d, 0x73, 0x67, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0xfb, 0x01, 0x0a, 0x1a, 0x4d, 0x73, 0x67, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x12, - 0x30, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, - 0x72, 0x12, 0x28, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, - 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x02, 0x74, 0x6f, 0x12, 0x4d, 0x0a, 0x06, 0x61, - 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 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, 0x1a, 0xc8, 0xde, 0x1f, 0x00, 0xf2, 0xde, 0x1f, 0x0d, - 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xa8, 0xe7, 0xb0, - 0x2a, 0x01, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x3a, 0x32, 0x82, 0xe7, 0xb0, 0x2a, - 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x8a, 0xe7, 0xb0, 0x2a, 0x22, 0x6f, 0x70, 0x63, 0x68, - 0x69, 0x6c, 0x64, 0x2f, 0x4d, 0x73, 0x67, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x22, 0x40, - 0x0a, 0x22, 0x4d, 0x73, 0x67, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, - 0x22, 0xba, 0x02, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x41, 0x64, 0x64, 0x56, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x6f, 0x72, 0x12, 0x4a, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2c, 0xf2, 0xde, 0x1f, 0x10, 0x79, 0x61, 0x6d, - 0x6c, 0x3a, 0x22, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 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, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, - 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x6f, 0x6e, 0x69, 0x6b, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x6d, 0x6f, 0x6e, 0x69, 0x6b, 0x65, 0x72, 0x12, 0x45, 0x0a, 0x11, 0x76, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, - 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x12, 0x46, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x04, 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, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x3a, 0x32, 0x88, 0xa0, 0x1f, 0x00, 0xe8, - 0xa0, 0x1f, 0x00, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, - 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x17, 0x6f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x2f, 0x4d, 0x73, - 0x67, 0x41, 0x64, 0x64, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x22, 0x19, 0x0a, - 0x17, 0x4d, 0x73, 0x67, 0x41, 0x64, 0x64, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xd6, 0x01, 0x0a, 0x12, 0x4d, 0x73, 0x67, - 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x12, - 0x4a, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x2c, 0xf2, 0xde, 0x1f, 0x10, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x61, 0x75, - 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 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, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x45, 0x0a, 0x11, 0x76, - 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, - 0x52, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x3a, 0x2d, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, - 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x1a, 0x6f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x2f, 0x4d, - 0x73, 0x67, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, - 0x72, 0x22, 0x1c, 0x0a, 0x1a, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x56, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0xbc, 0x01, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x73, 0x12, 0x4a, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x12, 0x3d, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x25, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x63, 0x68, 0x69, 0x6c, + 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, + 0xfb, 0x01, 0x0a, 0x1a, 0x4d, 0x73, 0x67, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x12, 0x30, + 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, + 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, + 0x12, 0x28, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, + 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x02, 0x74, 0x6f, 0x12, 0x4d, 0x0a, 0x06, 0x61, 0x6d, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 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, 0x1a, 0xc8, 0xde, 0x1f, 0x00, 0xf2, 0xde, 0x1f, 0x0d, 0x79, + 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xa8, 0xe7, 0xb0, 0x2a, + 0x01, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x3a, 0x32, 0x82, 0xe7, 0xb0, 0x2a, 0x06, + 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x8a, 0xe7, 0xb0, 0x2a, 0x22, 0x6f, 0x70, 0x63, 0x68, 0x69, + 0x6c, 0x64, 0x2f, 0x4d, 0x73, 0x67, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x22, 0x40, 0x0a, + 0x22, 0x4d, 0x73, 0x67, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x22, + 0xba, 0x02, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x41, 0x64, 0x64, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x6f, 0x72, 0x12, 0x4a, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2c, 0xf2, 0xde, 0x1f, 0x10, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 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, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, - 0x31, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, - 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x3a, 0x2a, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, - 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x17, 0x6f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x2f, 0x4d, - 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x19, - 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xbc, 0x02, 0x0a, 0x0f, 0x4d, 0x73, - 0x67, 0x53, 0x70, 0x65, 0x6e, 0x64, 0x46, 0x65, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x4a, 0x0a, - 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x2c, 0xf2, 0xde, 0x1f, 0x10, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x61, 0x75, 0x74, 0x68, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 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, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x36, 0x0a, 0x09, 0x72, 0x65, 0x63, - 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, - 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, - 0x74, 0x12, 0x79, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x03, 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, 0x46, 0xc8, 0xde, - 0x1f, 0x00, 0xf2, 0xde, 0x1f, 0x0d, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x61, 0x6d, 0x6f, 0x75, - 0x6e, 0x74, 0x22, 0xaa, 0xdf, 0x1f, 0x28, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, - 0x73, 0x64, 0x6b, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0xa8, - 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x3a, 0x2a, 0x82, 0xe7, - 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, - 0x17, 0x6f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x2f, 0x4d, 0x73, 0x67, 0x53, 0x70, 0x65, 0x6e, - 0x64, 0x46, 0x65, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x22, 0x19, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x53, - 0x70, 0x65, 0x6e, 0x64, 0x46, 0x65, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0xbb, 0x01, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x12, 0x41, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, - 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xf2, 0xde, 0x1f, 0x0d, 0x79, 0x61, 0x6d, - 0x6c, 0x3a, 0x22, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x22, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x06, 0x68, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x05, 0xa8, 0xe7, 0xb0, 0x2a, - 0x01, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1d, 0x0a, 0x04, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x01, 0xa8, 0xe7, 0xb0, - 0x2a, 0x01, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x27, 0x82, 0xe7, 0xb0, 0x2a, 0x06, 0x73, - 0x65, 0x6e, 0x64, 0x65, 0x72, 0x8a, 0xe7, 0xb0, 0x2a, 0x17, 0x6f, 0x70, 0x63, 0x68, 0x69, 0x6c, - 0x64, 0x2f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x61, 0x63, 0x6c, - 0x65, 0x22, 0x19, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, - 0x61, 0x63, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xba, 0x07, 0x0a, - 0x03, 0x4d, 0x73, 0x67, 0x12, 0x67, 0x0a, 0x0f, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x25, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, - 0x2e, 0x6f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x45, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x1a, 0x2d, - 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x2e, - 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x61, 0x0a, - 0x0d, 0x53, 0x65, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x23, + 0x18, 0x0a, 0x07, 0x6d, 0x6f, 0x6e, 0x69, 0x6b, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x6d, 0x6f, 0x6e, 0x69, 0x6b, 0x65, 0x72, 0x12, 0x45, 0x0a, 0x11, 0x76, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x12, 0x46, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x04, 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, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x3a, 0x32, 0x88, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, + 0x1f, 0x00, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x8a, 0xe7, 0xb0, 0x2a, 0x17, 0x6f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x2f, 0x4d, 0x73, 0x67, + 0x41, 0x64, 0x64, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x22, 0x19, 0x0a, 0x17, + 0x4d, 0x73, 0x67, 0x41, 0x64, 0x64, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xd6, 0x01, 0x0a, 0x12, 0x4d, 0x73, 0x67, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x4a, + 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x2c, 0xf2, 0xde, 0x1f, 0x10, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x61, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 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, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x45, 0x0a, 0x11, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, + 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x3a, 0x2d, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, + 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x1a, 0x6f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x2f, 0x4d, 0x73, + 0x67, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, + 0x22, 0x1c, 0x0a, 0x1a, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x56, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xbc, + 0x01, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x12, 0x4a, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2c, 0xf2, 0xde, 0x1f, 0x10, 0x79, 0x61, 0x6d, 0x6c, 0x3a, + 0x22, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 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, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x31, + 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x2e, - 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x53, 0x65, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x49, - 0x6e, 0x66, 0x6f, 0x1a, 0x2b, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x63, - 0x68, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x53, 0x65, 0x74, 0x42, 0x72, - 0x69, 0x64, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x76, 0x0a, 0x14, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x12, 0x2a, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, - 0x74, 0x2e, 0x6f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, - 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x44, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x1a, 0x32, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, - 0x63, 0x68, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x46, 0x69, 0x6e, 0x61, - 0x6c, 0x69, 0x7a, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7f, 0x0a, 0x17, 0x49, 0x6e, 0x69, 0x74, - 0x69, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, - 0x77, 0x61, 0x6c, 0x12, 0x2d, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x63, - 0x68, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x49, 0x6e, 0x69, 0x74, 0x69, + 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x3a, 0x2a, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, + 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x17, 0x6f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x2f, 0x4d, 0x73, + 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x19, 0x0a, + 0x17, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xbc, 0x02, 0x0a, 0x0f, 0x4d, 0x73, 0x67, + 0x53, 0x70, 0x65, 0x6e, 0x64, 0x46, 0x65, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x4a, 0x0a, 0x09, + 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x2c, 0xf2, 0xde, 0x1f, 0x10, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x61, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x22, 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, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x36, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x69, + 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, + 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, + 0x12, 0x79, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x03, 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, 0x46, 0xc8, 0xde, 0x1f, + 0x00, 0xf2, 0xde, 0x1f, 0x0d, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x61, 0x6d, 0x6f, 0x75, 0x6e, + 0x74, 0x22, 0xaa, 0xdf, 0x1f, 0x28, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, + 0x64, 0x6b, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0xa8, 0xe7, + 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x3a, 0x2a, 0x82, 0xe7, 0xb0, + 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x17, + 0x6f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x2f, 0x4d, 0x73, 0x67, 0x53, 0x70, 0x65, 0x6e, 0x64, + 0x46, 0x65, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x22, 0x19, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x53, 0x70, + 0x65, 0x6e, 0x64, 0x46, 0x65, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0xbb, 0x01, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x12, 0x41, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xf2, 0xde, 0x1f, 0x0d, 0x79, 0x61, 0x6d, 0x6c, + 0x3a, 0x22, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x22, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x06, 0x68, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x05, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, + 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1d, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x01, 0xa8, 0xe7, 0xb0, 0x2a, + 0x01, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x27, 0x82, 0xe7, 0xb0, 0x2a, 0x06, 0x73, 0x65, + 0x6e, 0x64, 0x65, 0x72, 0x8a, 0xe7, 0xb0, 0x2a, 0x17, 0x6f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, + 0x2f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, + 0x22, 0x19, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x61, + 0x63, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xba, 0x07, 0x0a, 0x03, + 0x4d, 0x73, 0x67, 0x12, 0x67, 0x0a, 0x0f, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x25, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, + 0x6f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x45, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x1a, 0x2d, 0x2e, + 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x2e, 0x76, + 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x61, 0x0a, 0x0d, + 0x53, 0x65, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x23, 0x2e, + 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x2e, 0x76, + 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x53, 0x65, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x49, 0x6e, + 0x66, 0x6f, 0x1a, 0x2b, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x63, 0x68, + 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x53, 0x65, 0x74, 0x42, 0x72, 0x69, + 0x64, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x76, 0x0a, 0x14, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x12, 0x2a, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, + 0x2e, 0x6f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x46, + 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x44, 0x65, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x1a, 0x32, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x63, + 0x68, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x46, 0x69, 0x6e, 0x61, 0x6c, + 0x69, 0x7a, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7f, 0x0a, 0x17, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, - 0x61, 0x6c, 0x1a, 0x35, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x63, 0x68, + 0x61, 0x6c, 0x12, 0x2d, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, - 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5e, 0x0a, 0x0c, 0x41, 0x64, 0x64, - 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x22, 0x2e, 0x6f, 0x70, 0x69, 0x6e, - 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, - 0x67, 0x41, 0x64, 0x64, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x1a, 0x2a, 0x2e, - 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x2e, 0x76, - 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x41, 0x64, 0x64, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, - 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x67, 0x0a, 0x0f, 0x52, 0x65, 0x6d, - 0x6f, 0x76, 0x65, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x25, 0x2e, 0x6f, + 0x6c, 0x1a, 0x35, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x63, 0x68, 0x69, + 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, + 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5e, 0x0a, 0x0c, 0x41, 0x64, 0x64, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x22, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, + 0x74, 0x2e, 0x6f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, + 0x41, 0x64, 0x64, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x1a, 0x2a, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, - 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x6f, 0x72, 0x1a, 0x2d, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x63, - 0x68, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x5e, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x12, 0x22, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x63, 0x68, - 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x2a, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, - 0x6f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x5e, 0x0a, 0x0c, 0x53, 0x70, 0x65, 0x6e, 0x64, 0x46, 0x65, 0x65, 0x50, 0x6f, - 0x6f, 0x6c, 0x12, 0x22, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x63, 0x68, - 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x53, 0x70, 0x65, 0x6e, 0x64, 0x46, - 0x65, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x1a, 0x2a, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, - 0x6f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x53, 0x70, - 0x65, 0x6e, 0x64, 0x46, 0x65, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x5e, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x61, 0x63, - 0x6c, 0x65, 0x12, 0x22, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x63, 0x68, - 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x1a, 0x2a, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, - 0x6f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0xc9, 0x01, 0xc8, 0xe1, 0x1e, 0x00, - 0x0a, 0x15, 0x63, 0x6f, 0x6d, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x63, - 0x68, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, - 0x50, 0x01, 0x5a, 0x3d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x69, - 0x6e, 0x69, 0x74, 0x69, 0x61, 0x2d, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x4f, 0x50, 0x69, 0x6e, 0x69, - 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2f, 0x6f, 0x70, 0x63, - 0x68, 0x69, 0x6c, 0x64, 0x2f, 0x76, 0x31, 0x3b, 0x6f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x76, - 0x31, 0xa2, 0x02, 0x03, 0x4f, 0x4f, 0x58, 0xaa, 0x02, 0x11, 0x4f, 0x70, 0x69, 0x6e, 0x69, 0x74, - 0x2e, 0x4f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x11, 0x4f, 0x70, - 0x69, 0x6e, 0x69, 0x74, 0x5c, 0x4f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5c, 0x56, 0x31, 0xe2, - 0x02, 0x1d, 0x4f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x5c, 0x4f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, - 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, - 0x02, 0x13, 0x4f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x3a, 0x3a, 0x4f, 0x70, 0x63, 0x68, 0x69, 0x6c, - 0x64, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x2e, 0x4d, 0x73, 0x67, 0x41, 0x64, 0x64, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x67, 0x0a, 0x0f, 0x52, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x25, 0x2e, 0x6f, 0x70, + 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, + 0x4d, 0x73, 0x67, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x6f, 0x72, 0x1a, 0x2d, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x63, 0x68, + 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x5e, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x12, 0x22, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x63, 0x68, 0x69, + 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x2a, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, + 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x5e, 0x0a, 0x0c, 0x53, 0x70, 0x65, 0x6e, 0x64, 0x46, 0x65, 0x65, 0x50, 0x6f, 0x6f, + 0x6c, 0x12, 0x22, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x63, 0x68, 0x69, + 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x53, 0x70, 0x65, 0x6e, 0x64, 0x46, 0x65, + 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x1a, 0x2a, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, + 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x53, 0x70, 0x65, + 0x6e, 0x64, 0x46, 0x65, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x5e, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x61, 0x63, 0x6c, + 0x65, 0x12, 0x22, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x63, 0x68, 0x69, + 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, + 0x72, 0x61, 0x63, 0x6c, 0x65, 0x1a, 0x2a, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, + 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0xc9, 0x01, 0xc8, 0xe1, 0x1e, 0x00, 0x0a, + 0x15, 0x63, 0x6f, 0x6d, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x63, 0x68, + 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, + 0x01, 0x5a, 0x3d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x69, 0x6e, + 0x69, 0x74, 0x69, 0x61, 0x2d, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x4f, 0x50, 0x69, 0x6e, 0x69, 0x74, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2f, 0x6f, 0x70, 0x63, 0x68, + 0x69, 0x6c, 0x64, 0x2f, 0x76, 0x31, 0x3b, 0x6f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x76, 0x31, + 0xa2, 0x02, 0x03, 0x4f, 0x4f, 0x58, 0xaa, 0x02, 0x11, 0x4f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, + 0x4f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x11, 0x4f, 0x70, 0x69, + 0x6e, 0x69, 0x74, 0x5c, 0x4f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5c, 0x56, 0x31, 0xe2, 0x02, + 0x1d, 0x4f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x5c, 0x4f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5c, + 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, + 0x13, 0x4f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x3a, 0x3a, 0x4f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, + 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -9579,39 +9640,41 @@ var file_opinit_opchild_v1_tx_proto_goTypes = []interface{}{ (*anypb.Any)(nil), // 18: google.protobuf.Any (*BridgeInfo)(nil), // 19: opinit.opchild.v1.BridgeInfo (*v1beta1.Coin)(nil), // 20: cosmos.base.v1beta1.Coin - (*Params)(nil), // 21: opinit.opchild.v1.Params + (ResponseResultType)(0), // 21: opinit.opchild.v1.ResponseResultType + (*Params)(nil), // 22: opinit.opchild.v1.Params } var file_opinit_opchild_v1_tx_proto_depIdxs = []int32{ 18, // 0: opinit.opchild.v1.MsgExecuteMessages.messages:type_name -> google.protobuf.Any 19, // 1: opinit.opchild.v1.MsgSetBridgeInfo.bridge_info:type_name -> opinit.opchild.v1.BridgeInfo 20, // 2: opinit.opchild.v1.MsgFinalizeTokenDeposit.amount:type_name -> cosmos.base.v1beta1.Coin - 20, // 3: opinit.opchild.v1.MsgInitiateTokenWithdrawal.amount:type_name -> cosmos.base.v1beta1.Coin - 18, // 4: opinit.opchild.v1.MsgAddValidator.pubkey:type_name -> google.protobuf.Any - 21, // 5: opinit.opchild.v1.MsgUpdateParams.params:type_name -> opinit.opchild.v1.Params - 20, // 6: opinit.opchild.v1.MsgSpendFeePool.amount:type_name -> cosmos.base.v1beta1.Coin - 0, // 7: opinit.opchild.v1.Msg.ExecuteMessages:input_type -> opinit.opchild.v1.MsgExecuteMessages - 2, // 8: opinit.opchild.v1.Msg.SetBridgeInfo:input_type -> opinit.opchild.v1.MsgSetBridgeInfo - 4, // 9: opinit.opchild.v1.Msg.FinalizeTokenDeposit:input_type -> opinit.opchild.v1.MsgFinalizeTokenDeposit - 6, // 10: opinit.opchild.v1.Msg.InitiateTokenWithdrawal:input_type -> opinit.opchild.v1.MsgInitiateTokenWithdrawal - 8, // 11: opinit.opchild.v1.Msg.AddValidator:input_type -> opinit.opchild.v1.MsgAddValidator - 10, // 12: opinit.opchild.v1.Msg.RemoveValidator:input_type -> opinit.opchild.v1.MsgRemoveValidator - 12, // 13: opinit.opchild.v1.Msg.UpdateParams:input_type -> opinit.opchild.v1.MsgUpdateParams - 14, // 14: opinit.opchild.v1.Msg.SpendFeePool:input_type -> opinit.opchild.v1.MsgSpendFeePool - 16, // 15: opinit.opchild.v1.Msg.UpdateOracle:input_type -> opinit.opchild.v1.MsgUpdateOracle - 1, // 16: opinit.opchild.v1.Msg.ExecuteMessages:output_type -> opinit.opchild.v1.MsgExecuteMessagesResponse - 3, // 17: opinit.opchild.v1.Msg.SetBridgeInfo:output_type -> opinit.opchild.v1.MsgSetBridgeInfoResponse - 5, // 18: opinit.opchild.v1.Msg.FinalizeTokenDeposit:output_type -> opinit.opchild.v1.MsgFinalizeTokenDepositResponse - 7, // 19: opinit.opchild.v1.Msg.InitiateTokenWithdrawal:output_type -> opinit.opchild.v1.MsgInitiateTokenWithdrawalResponse - 9, // 20: opinit.opchild.v1.Msg.AddValidator:output_type -> opinit.opchild.v1.MsgAddValidatorResponse - 11, // 21: opinit.opchild.v1.Msg.RemoveValidator:output_type -> opinit.opchild.v1.MsgRemoveValidatorResponse - 13, // 22: opinit.opchild.v1.Msg.UpdateParams:output_type -> opinit.opchild.v1.MsgUpdateParamsResponse - 15, // 23: opinit.opchild.v1.Msg.SpendFeePool:output_type -> opinit.opchild.v1.MsgSpendFeePoolResponse - 17, // 24: opinit.opchild.v1.Msg.UpdateOracle:output_type -> opinit.opchild.v1.MsgUpdateOracleResponse - 16, // [16:25] is the sub-list for method output_type - 7, // [7:16] is the sub-list for method input_type - 7, // [7:7] is the sub-list for extension type_name - 7, // [7:7] is the sub-list for extension extendee - 0, // [0:7] is the sub-list for field type_name + 21, // 3: opinit.opchild.v1.MsgFinalizeTokenDepositResponse.result:type_name -> opinit.opchild.v1.ResponseResultType + 20, // 4: opinit.opchild.v1.MsgInitiateTokenWithdrawal.amount:type_name -> cosmos.base.v1beta1.Coin + 18, // 5: opinit.opchild.v1.MsgAddValidator.pubkey:type_name -> google.protobuf.Any + 22, // 6: opinit.opchild.v1.MsgUpdateParams.params:type_name -> opinit.opchild.v1.Params + 20, // 7: opinit.opchild.v1.MsgSpendFeePool.amount:type_name -> cosmos.base.v1beta1.Coin + 0, // 8: opinit.opchild.v1.Msg.ExecuteMessages:input_type -> opinit.opchild.v1.MsgExecuteMessages + 2, // 9: opinit.opchild.v1.Msg.SetBridgeInfo:input_type -> opinit.opchild.v1.MsgSetBridgeInfo + 4, // 10: opinit.opchild.v1.Msg.FinalizeTokenDeposit:input_type -> opinit.opchild.v1.MsgFinalizeTokenDeposit + 6, // 11: opinit.opchild.v1.Msg.InitiateTokenWithdrawal:input_type -> opinit.opchild.v1.MsgInitiateTokenWithdrawal + 8, // 12: opinit.opchild.v1.Msg.AddValidator:input_type -> opinit.opchild.v1.MsgAddValidator + 10, // 13: opinit.opchild.v1.Msg.RemoveValidator:input_type -> opinit.opchild.v1.MsgRemoveValidator + 12, // 14: opinit.opchild.v1.Msg.UpdateParams:input_type -> opinit.opchild.v1.MsgUpdateParams + 14, // 15: opinit.opchild.v1.Msg.SpendFeePool:input_type -> opinit.opchild.v1.MsgSpendFeePool + 16, // 16: opinit.opchild.v1.Msg.UpdateOracle:input_type -> opinit.opchild.v1.MsgUpdateOracle + 1, // 17: opinit.opchild.v1.Msg.ExecuteMessages:output_type -> opinit.opchild.v1.MsgExecuteMessagesResponse + 3, // 18: opinit.opchild.v1.Msg.SetBridgeInfo:output_type -> opinit.opchild.v1.MsgSetBridgeInfoResponse + 5, // 19: opinit.opchild.v1.Msg.FinalizeTokenDeposit:output_type -> opinit.opchild.v1.MsgFinalizeTokenDepositResponse + 7, // 20: opinit.opchild.v1.Msg.InitiateTokenWithdrawal:output_type -> opinit.opchild.v1.MsgInitiateTokenWithdrawalResponse + 9, // 21: opinit.opchild.v1.Msg.AddValidator:output_type -> opinit.opchild.v1.MsgAddValidatorResponse + 11, // 22: opinit.opchild.v1.Msg.RemoveValidator:output_type -> opinit.opchild.v1.MsgRemoveValidatorResponse + 13, // 23: opinit.opchild.v1.Msg.UpdateParams:output_type -> opinit.opchild.v1.MsgUpdateParamsResponse + 15, // 24: opinit.opchild.v1.Msg.SpendFeePool:output_type -> opinit.opchild.v1.MsgSpendFeePoolResponse + 17, // 25: opinit.opchild.v1.Msg.UpdateOracle:output_type -> opinit.opchild.v1.MsgUpdateOracleResponse + 17, // [17:26] is the sub-list for method output_type + 8, // [8:17] is the sub-list for method input_type + 8, // [8:8] is the sub-list for extension type_name + 8, // [8:8] is the sub-list for extension extendee + 0, // [0:8] is the sub-list for field type_name } func init() { file_opinit_opchild_v1_tx_proto_init() } diff --git a/api/opinit/opchild/v1/types.pulsar.go b/api/opinit/opchild/v1/types.pulsar.go index 4d7ba7bf..74887de6 100644 --- a/api/opinit/opchild/v1/types.pulsar.go +++ b/api/opinit/opchild/v1/types.pulsar.go @@ -3766,6 +3766,59 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) +// ResponseResultType defines the possible outcomes of the execution of a message +type ResponseResultType int32 + +const ( + // Default zero value enumeration + ResponseResultType_RESPONSE_RESULT_TYPE_UNSPECIFIED ResponseResultType = 0 + // The message did not execute msg operation (because, for example, deposit had already been finalized) + ResponseResultType_RESPONSE_RESULT_TYPE_NOOP ResponseResultType = 1 + // The message was executed successfully + ResponseResultType_RESPONSE_RESULT_TYPE_SUCCESS ResponseResultType = 2 +) + +// Enum value maps for ResponseResultType. +var ( + ResponseResultType_name = map[int32]string{ + 0: "RESPONSE_RESULT_TYPE_UNSPECIFIED", + 1: "RESPONSE_RESULT_TYPE_NOOP", + 2: "RESPONSE_RESULT_TYPE_SUCCESS", + } + ResponseResultType_value = map[string]int32{ + "RESPONSE_RESULT_TYPE_UNSPECIFIED": 0, + "RESPONSE_RESULT_TYPE_NOOP": 1, + "RESPONSE_RESULT_TYPE_SUCCESS": 2, + } +) + +func (x ResponseResultType) Enum() *ResponseResultType { + p := new(ResponseResultType) + *p = x + return p +} + +func (x ResponseResultType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ResponseResultType) Descriptor() protoreflect.EnumDescriptor { + return file_opinit_opchild_v1_types_proto_enumTypes[0].Descriptor() +} + +func (ResponseResultType) Type() protoreflect.EnumType { + return &file_opinit_opchild_v1_types_proto_enumTypes[0] +} + +func (x ResponseResultType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ResponseResultType.Descriptor instead. +func (ResponseResultType) EnumDescriptor() ([]byte, []int) { + return file_opinit_opchild_v1_types_proto_rawDescGZIP(), []int{0} +} + // Params defines the set of opchild parameters. type Params struct { state protoimpl.MessageState @@ -4227,20 +4280,31 @@ var file_opinit_opchild_v1_types_proto_rawDesc = []byte{ 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x05, 0x63, 0x6f, 0x69, 0x6e, 0x73, - 0x42, 0xd0, 0x01, 0xc8, 0xe1, 0x1e, 0x00, 0xa8, 0xe2, 0x1e, 0x01, 0x0a, 0x15, 0x63, 0x6f, 0x6d, - 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x2e, - 0x76, 0x31, 0x42, 0x0a, 0x54, 0x79, 0x70, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, - 0x5a, 0x3d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x69, 0x6e, 0x69, - 0x74, 0x69, 0x61, 0x2d, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x4f, 0x50, 0x69, 0x6e, 0x69, 0x74, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2f, 0x6f, 0x70, 0x63, 0x68, 0x69, - 0x6c, 0x64, 0x2f, 0x76, 0x31, 0x3b, 0x6f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x76, 0x31, 0xa2, - 0x02, 0x03, 0x4f, 0x4f, 0x58, 0xaa, 0x02, 0x11, 0x4f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x4f, - 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x11, 0x4f, 0x70, 0x69, 0x6e, - 0x69, 0x74, 0x5c, 0x4f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1d, - 0x4f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x5c, 0x4f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5c, 0x56, - 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x13, - 0x4f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x3a, 0x3a, 0x4f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x3a, - 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x2a, 0xa9, 0x01, 0x0a, 0x12, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x35, 0x0a, 0x20, 0x52, 0x45, 0x53, 0x50, 0x4f, + 0x4e, 0x53, 0x45, 0x5f, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x1a, 0x0f, 0x8a, + 0x9d, 0x20, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x12, 0x27, + 0x0a, 0x19, 0x52, 0x45, 0x53, 0x50, 0x4f, 0x4e, 0x53, 0x45, 0x5f, 0x52, 0x45, 0x53, 0x55, 0x4c, + 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x4f, 0x50, 0x10, 0x01, 0x1a, 0x08, 0x8a, + 0x9d, 0x20, 0x04, 0x4e, 0x4f, 0x4f, 0x50, 0x12, 0x2d, 0x0a, 0x1c, 0x52, 0x45, 0x53, 0x50, 0x4f, + 0x4e, 0x53, 0x45, 0x5f, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x02, 0x1a, 0x0b, 0x8a, 0x9d, 0x20, 0x07, 0x53, + 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x1a, 0x04, 0x88, 0xa3, 0x1e, 0x00, 0x42, 0xd0, 0x01, 0xc8, + 0xe1, 0x1e, 0x00, 0xa8, 0xe2, 0x1e, 0x01, 0x0a, 0x15, 0x63, 0x6f, 0x6d, 0x2e, 0x6f, 0x70, 0x69, + 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x42, 0x0a, + 0x54, 0x79, 0x70, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3d, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x2d, + 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x4f, 0x50, 0x69, 0x6e, 0x69, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2f, 0x6f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x2f, 0x76, + 0x31, 0x3b, 0x6f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x4f, 0x4f, + 0x58, 0xaa, 0x02, 0x11, 0x4f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x4f, 0x70, 0x63, 0x68, 0x69, + 0x6c, 0x64, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x11, 0x4f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x5c, 0x4f, + 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1d, 0x4f, 0x70, 0x69, 0x6e, + 0x69, 0x74, 0x5c, 0x4f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, + 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x13, 0x4f, 0x70, 0x69, 0x6e, + 0x69, 0x74, 0x3a, 0x3a, 0x4f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x3a, 0x3a, 0x56, 0x31, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -4255,27 +4319,29 @@ func file_opinit_opchild_v1_types_proto_rawDescGZIP() []byte { return file_opinit_opchild_v1_types_proto_rawDescData } +var file_opinit_opchild_v1_types_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_opinit_opchild_v1_types_proto_msgTypes = make([]protoimpl.MessageInfo, 6) var file_opinit_opchild_v1_types_proto_goTypes = []interface{}{ - (*Params)(nil), // 0: opinit.opchild.v1.Params - (*Validator)(nil), // 1: opinit.opchild.v1.Validator - (*ValidatorUpdates)(nil), // 2: opinit.opchild.v1.ValidatorUpdates - (*BridgeInfo)(nil), // 3: opinit.opchild.v1.BridgeInfo - (*PendingDeposits)(nil), // 4: opinit.opchild.v1.PendingDeposits - (*CoinsWrapper)(nil), // 5: opinit.opchild.v1.CoinsWrapper - (*v1beta1.DecCoin)(nil), // 6: cosmos.base.v1beta1.DecCoin - (*anypb.Any)(nil), // 7: google.protobuf.Any - (*abci.ValidatorUpdate)(nil), // 8: tendermint.abci.ValidatorUpdate - (*v1.BridgeConfig)(nil), // 9: opinit.ophost.v1.BridgeConfig - (*v1beta1.Coin)(nil), // 10: cosmos.base.v1beta1.Coin + (ResponseResultType)(0), // 0: opinit.opchild.v1.ResponseResultType + (*Params)(nil), // 1: opinit.opchild.v1.Params + (*Validator)(nil), // 2: opinit.opchild.v1.Validator + (*ValidatorUpdates)(nil), // 3: opinit.opchild.v1.ValidatorUpdates + (*BridgeInfo)(nil), // 4: opinit.opchild.v1.BridgeInfo + (*PendingDeposits)(nil), // 5: opinit.opchild.v1.PendingDeposits + (*CoinsWrapper)(nil), // 6: opinit.opchild.v1.CoinsWrapper + (*v1beta1.DecCoin)(nil), // 7: cosmos.base.v1beta1.DecCoin + (*anypb.Any)(nil), // 8: google.protobuf.Any + (*abci.ValidatorUpdate)(nil), // 9: tendermint.abci.ValidatorUpdate + (*v1.BridgeConfig)(nil), // 10: opinit.ophost.v1.BridgeConfig + (*v1beta1.Coin)(nil), // 11: cosmos.base.v1beta1.Coin } var file_opinit_opchild_v1_types_proto_depIdxs = []int32{ - 6, // 0: opinit.opchild.v1.Params.min_gas_prices:type_name -> cosmos.base.v1beta1.DecCoin - 7, // 1: opinit.opchild.v1.Validator.consensus_pubkey:type_name -> google.protobuf.Any - 8, // 2: opinit.opchild.v1.ValidatorUpdates.updates:type_name -> tendermint.abci.ValidatorUpdate - 9, // 3: opinit.opchild.v1.BridgeInfo.bridge_config:type_name -> opinit.ophost.v1.BridgeConfig - 10, // 4: opinit.opchild.v1.PendingDeposits.coins:type_name -> cosmos.base.v1beta1.Coin - 10, // 5: opinit.opchild.v1.CoinsWrapper.coins:type_name -> cosmos.base.v1beta1.Coin + 7, // 0: opinit.opchild.v1.Params.min_gas_prices:type_name -> cosmos.base.v1beta1.DecCoin + 8, // 1: opinit.opchild.v1.Validator.consensus_pubkey:type_name -> google.protobuf.Any + 9, // 2: opinit.opchild.v1.ValidatorUpdates.updates:type_name -> tendermint.abci.ValidatorUpdate + 10, // 3: opinit.opchild.v1.BridgeInfo.bridge_config:type_name -> opinit.ophost.v1.BridgeConfig + 11, // 4: opinit.opchild.v1.PendingDeposits.coins:type_name -> cosmos.base.v1beta1.Coin + 11, // 5: opinit.opchild.v1.CoinsWrapper.coins:type_name -> cosmos.base.v1beta1.Coin 6, // [6:6] is the sub-list for method output_type 6, // [6:6] is the sub-list for method input_type 6, // [6:6] is the sub-list for extension type_name @@ -4367,13 +4433,14 @@ func file_opinit_opchild_v1_types_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_opinit_opchild_v1_types_proto_rawDesc, - NumEnums: 0, + NumEnums: 1, NumMessages: 6, NumExtensions: 0, NumServices: 0, }, GoTypes: file_opinit_opchild_v1_types_proto_goTypes, DependencyIndexes: file_opinit_opchild_v1_types_proto_depIdxs, + EnumInfos: file_opinit_opchild_v1_types_proto_enumTypes, MessageInfos: file_opinit_opchild_v1_types_proto_msgTypes, }.Build() File_opinit_opchild_v1_types_proto = out.File diff --git a/proto/opinit/opchild/v1/tx.proto b/proto/opinit/opchild/v1/tx.proto index 31791840..e240b98a 100644 --- a/proto/opinit/opchild/v1/tx.proto +++ b/proto/opinit/opchild/v1/tx.proto @@ -126,7 +126,9 @@ message MsgFinalizeTokenDeposit { } // MsgFinalizeTokenDepositResponse returns deposit result data -message MsgFinalizeTokenDepositResponse {} +message MsgFinalizeTokenDepositResponse { + ResponseResultType result = 1; +} // MsgInitiateTokenWithdrawal is a message to withdraw a new token from L2 to L1. message MsgInitiateTokenWithdrawal { diff --git a/proto/opinit/opchild/v1/types.proto b/proto/opinit/opchild/v1/types.proto index cedd2b33..075bb475 100644 --- a/proto/opinit/opchild/v1/types.proto +++ b/proto/opinit/opchild/v1/types.proto @@ -120,4 +120,16 @@ message CoinsWrapper { (amino.dont_omitempty) = true, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins" ]; +} + +// ResponseResultType defines the possible outcomes of the execution of a message +enum ResponseResultType { + option (gogoproto.goproto_enum_prefix) = false; + + // Default zero value enumeration + RESPONSE_RESULT_TYPE_UNSPECIFIED = 0 [(gogoproto.enumvalue_customname) = "UNSPECIFIED"]; + // The message did not execute msg operation (because, for example, deposit had already been finalized) + RESPONSE_RESULT_TYPE_NOOP = 1 [(gogoproto.enumvalue_customname) = "NOOP"]; + // The message was executed successfully + RESPONSE_RESULT_TYPE_SUCCESS = 2 [(gogoproto.enumvalue_customname) = "SUCCESS"]; } \ No newline at end of file diff --git a/x/opchild/ante/ante.go b/x/opchild/ante/ante.go new file mode 100644 index 00000000..3ac29efe --- /dev/null +++ b/x/opchild/ante/ante.go @@ -0,0 +1,42 @@ +package ante + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/initia-labs/OPinit/x/opchild/keeper" + "github.com/initia-labs/OPinit/x/opchild/types" +) + +type RedundantBridgeDecorator struct { + ms keeper.MsgServer +} + +func NewRedundantBridgeDecorator(k keeper.Keeper) RedundantBridgeDecorator { + return RedundantBridgeDecorator{ + ms: keeper.NewMsgServerImpl(k), + } +} + +func (rbd RedundantBridgeDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (sdk.Context, error) { + if (ctx.IsCheckTx() || ctx.IsReCheckTx()) && !simulate { + redundancies := 0 + packetMsgs := 0 + for _, m := range tx.GetMsgs() { + switch msg := m.(type) { + case *types.MsgFinalizeTokenDeposit: + response, err := rbd.ms.FinalizeTokenDeposit(ctx, msg) + if err != nil { + return ctx, err + } + if response.Result == types.NOOP { + redundancies++ + } + packetMsgs++ + } + } + + if redundancies == packetMsgs && packetMsgs > 0 { + return ctx, types.ErrRedundantTx + } + } + return next(ctx, tx, simulate) +} diff --git a/x/opchild/ante/ante_test.go b/x/opchild/ante/ante_test.go index f3065cff..a6e963f3 100644 --- a/x/opchild/ante/ante_test.go +++ b/x/opchild/ante/ante_test.go @@ -4,9 +4,13 @@ import ( "context" "testing" + "github.com/initia-labs/OPinit/x/opchild/types" + "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" + "google.golang.org/protobuf/reflect/protoreflect" "cosmossdk.io/log" + "cosmossdk.io/math" "cosmossdk.io/simapp" dbm "github.com/cosmos/cosmos-db" @@ -22,6 +26,10 @@ import ( xauthsigning "github.com/cosmos/cosmos-sdk/x/auth/signing" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" simcli "github.com/cosmos/cosmos-sdk/x/simulation/client/cli" + + errorsmod "cosmossdk.io/errors" + + "github.com/initia-labs/OPinit/x/opchild/ante" ) // AnteTestSuite is a test suite to be used with ante handler tests. @@ -122,3 +130,67 @@ func (suite *AnteTestSuite) CreateTestTx( func TestAnteTestSuite(t *testing.T) { suite.Run(t, new(AnteTestSuite)) } + +var _ sdk.Tx = testTx{} + +type testTx struct { + msgs []sdk.Msg +} + +func (t testTx) GetMsgsV2() ([]protoreflect.ProtoMessage, error) { + return nil, nil +} + +func (t testTx) GetMsgs() []sdk.Msg { + return t.msgs +} + +func TestRedundantTx(t *testing.T) { + ctx, input := createTestInput(t, true) + rbd := ante.NewRedundantBridgeDecorator(input.OPChildKeeper) + + // input.Faucet.Mint(ctx, addrs[0], sdk.NewCoin(testDenoms[0], math.NewInt(100000))) + + tx := testTx{ + msgs: []sdk.Msg{ + types.NewMsgFinalizeTokenDeposit( + addrsStr[0], addrsStr[0], addrsStr[1], sdk.NewCoin(testDenoms[0], math.NewInt(100)), 1, 1, "l1_test0", []byte(""), + ), + types.NewMsgFinalizeTokenDeposit( + addrsStr[0], addrsStr[0], addrsStr[1], sdk.NewCoin(testDenoms[0], math.NewInt(100)), 2, 1, "l1_test0", []byte(""), + ), + }, + } + + sdkCtx := sdk.UnwrapSDKContext(ctx) + _, err := rbd.AnteHandle(sdkCtx, tx, false, func(ctx sdk.Context, tx sdk.Tx, simulate bool) (sdk.Context, error) { return sdk.Context{}, nil }) + require.NoError(t, err) + + _, err = rbd.AnteHandle(sdkCtx, tx, false, func(ctx sdk.Context, tx sdk.Tx, simulate bool) (sdk.Context, error) { return sdk.Context{}, nil }) + require.True(t, errorsmod.IsOf(err, types.ErrRedundantTx)) + + tx = testTx{ + msgs: []sdk.Msg{ + types.NewMsgFinalizeTokenDeposit( + addrsStr[0], addrsStr[0], addrsStr[1], sdk.NewCoin(testDenoms[0], math.NewInt(100)), 2, 1, "l1_test0", []byte(""), + ), + types.NewMsgFinalizeTokenDeposit( + addrsStr[0], addrsStr[0], addrsStr[1], sdk.NewCoin(testDenoms[0], math.NewInt(100)), 3, 1, "l1_test0", []byte(""), + ), + }, + } + + _, err = rbd.AnteHandle(sdkCtx, tx, false, func(ctx sdk.Context, tx sdk.Tx, simulate bool) (sdk.Context, error) { return sdk.Context{}, nil }) + require.NoError(t, err) + + tx = testTx{ + msgs: []sdk.Msg{ + types.NewMsgFinalizeTokenDeposit( + addrsStr[0], addrsStr[0], addrsStr[1], sdk.NewCoin(testDenoms[0], math.NewInt(100)), 4, 1, "l1_test0", []byte(""), + ), + }, + } + + _, err = rbd.AnteHandle(sdkCtx, tx, false, func(ctx sdk.Context, tx sdk.Tx, simulate bool) (sdk.Context, error) { return sdk.Context{}, nil }) + require.NoError(t, err) +} diff --git a/x/opchild/ante/common_test.go b/x/opchild/ante/common_test.go new file mode 100644 index 00000000..d077a741 --- /dev/null +++ b/x/opchild/ante/common_test.go @@ -0,0 +1,359 @@ +package ante_test + +import ( + "context" + "encoding/binary" + "testing" + "time" + + "github.com/stretchr/testify/require" + + "github.com/cometbft/cometbft/crypto" + "github.com/cometbft/cometbft/crypto/ed25519" + "github.com/cometbft/cometbft/crypto/secp256k1" + tmproto "github.com/cometbft/cometbft/proto/tendermint/types" + + "cosmossdk.io/log" + "cosmossdk.io/math" + "cosmossdk.io/store" + "cosmossdk.io/store/metrics" + storetypes "cosmossdk.io/store/types" + "cosmossdk.io/x/tx/signing" + dbm "github.com/cosmos/cosmos-db" + + "github.com/cosmos/cosmos-sdk/baseapp" + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/codec" + codecaddress "github.com/cosmos/cosmos-sdk/codec/address" + codectypes "github.com/cosmos/cosmos-sdk/codec/types" + "github.com/cosmos/cosmos-sdk/runtime" + "github.com/cosmos/cosmos-sdk/std" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/module" + "github.com/cosmos/cosmos-sdk/x/auth" + authcodec "github.com/cosmos/cosmos-sdk/x/auth/codec" + authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" + "github.com/cosmos/cosmos-sdk/x/auth/tx" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + "github.com/cosmos/cosmos-sdk/x/bank" + bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" + banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" + distributiontypes "github.com/cosmos/cosmos-sdk/x/distribution/types" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" + "github.com/cosmos/gogoproto/proto" + + opchild "github.com/initia-labs/OPinit/x/opchild" + opchildkeeper "github.com/initia-labs/OPinit/x/opchild/keeper" + opchildtypes "github.com/initia-labs/OPinit/x/opchild/types" + oraclekeeper "github.com/skip-mev/slinky/x/oracle/keeper" + oracletypes "github.com/skip-mev/slinky/x/oracle/types" +) + +var ModuleBasics = module.NewBasicManager( + auth.AppModuleBasic{}, + bank.AppModuleBasic{}, + opchild.AppModuleBasic{}, +) + +var ( + pubKeys = []crypto.PubKey{ + secp256k1.GenPrivKey().PubKey(), + secp256k1.GenPrivKey().PubKey(), + secp256k1.GenPrivKey().PubKey(), + secp256k1.GenPrivKey().PubKey(), + secp256k1.GenPrivKey().PubKey(), + } + + addrs = []sdk.AccAddress{ + sdk.AccAddress(pubKeys[0].Address()), + sdk.AccAddress(pubKeys[1].Address()), + sdk.AccAddress(pubKeys[2].Address()), + sdk.AccAddress(pubKeys[3].Address()), + sdk.AccAddress(pubKeys[4].Address()), + } + + addrsStr = []string{ + addrs[0].String(), + addrs[1].String(), + addrs[2].String(), + addrs[3].String(), + addrs[4].String(), + } + + valAddrs = []sdk.ValAddress{ + sdk.ValAddress(pubKeys[0].Address()), + sdk.ValAddress(pubKeys[1].Address()), + sdk.ValAddress(pubKeys[2].Address()), + sdk.ValAddress(pubKeys[3].Address()), + sdk.ValAddress(pubKeys[4].Address()), + } + + valAddrsStr = []string{ + valAddrs[0].String(), + valAddrs[1].String(), + valAddrs[2].String(), + valAddrs[3].String(), + valAddrs[4].String(), + } + + testDenoms = []string{ + "test1", + "test2", + "test3", + "test4", + "test5", + } + + initiaSupply = math.NewInt(100_000_000_000) +) + +type EncodingConfig struct { + InterfaceRegistry codectypes.InterfaceRegistry + Marshaler codec.Codec + TxConfig client.TxConfig + Amino *codec.LegacyAmino +} + +func MakeTestCodec(t testing.TB) codec.Codec { + return MakeEncodingConfig(t).Marshaler +} + +func MakeEncodingConfig(_ testing.TB) EncodingConfig { + interfaceRegistry, _ := codectypes.NewInterfaceRegistryWithOptions(codectypes.InterfaceRegistryOptions{ + ProtoFiles: proto.HybridResolver, + SigningOptions: signing.Options{ + AddressCodec: codecaddress.NewBech32Codec(sdk.GetConfig().GetBech32AccountAddrPrefix()), + ValidatorAddressCodec: codecaddress.NewBech32Codec(sdk.GetConfig().GetBech32ValidatorAddrPrefix()), + }, + }) + appCodec := codec.NewProtoCodec(interfaceRegistry) + legacyAmino := codec.NewLegacyAmino() + txConfig := tx.NewTxConfig(appCodec, tx.DefaultSignModes) + + std.RegisterInterfaces(interfaceRegistry) + std.RegisterLegacyAminoCodec(legacyAmino) + + ModuleBasics.RegisterLegacyAminoCodec(legacyAmino) + ModuleBasics.RegisterInterfaces(interfaceRegistry) + + return EncodingConfig{ + InterfaceRegistry: interfaceRegistry, + Marshaler: appCodec, + TxConfig: txConfig, + Amino: legacyAmino, + } +} + +func initialTotalSupply() sdk.Coins { + faucetBalance := sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, initiaSupply)) + for _, testDenom := range testDenoms { + faucetBalance = faucetBalance.Add(sdk.NewCoin(testDenom, initiaSupply)) + } + + return faucetBalance +} + +type TestFaucet struct { + t testing.TB + bankKeeper bankkeeper.Keeper + sender sdk.AccAddress + balance sdk.Coins + minterModuleName string +} + +func NewTestFaucet(t testing.TB, ctx context.Context, bankKeeper bankkeeper.Keeper, minterModuleName string, initiaSupply ...sdk.Coin) *TestFaucet { + require.NotEmpty(t, initiaSupply) + r := &TestFaucet{t: t, bankKeeper: bankKeeper, minterModuleName: minterModuleName} + _, _, addr := keyPubAddr() + r.sender = addr + r.Mint(ctx, addr, initiaSupply...) + r.balance = initiaSupply + return r +} + +func (f *TestFaucet) Mint(parentCtx context.Context, addr sdk.AccAddress, amounts ...sdk.Coin) { + amounts = sdk.Coins(amounts).Sort() + require.NotEmpty(f.t, amounts) + ctx := sdk.UnwrapSDKContext(parentCtx).WithEventManager(sdk.NewEventManager()) // discard all faucet related events + err := f.bankKeeper.MintCoins(ctx, f.minterModuleName, amounts) + require.NoError(f.t, err) + err = f.bankKeeper.SendCoinsFromModuleToAccount(ctx, f.minterModuleName, addr, amounts) + require.NoError(f.t, err) + f.balance = f.balance.Add(amounts...) +} + +func (f *TestFaucet) Fund(parentCtx context.Context, receiver sdk.AccAddress, amounts ...sdk.Coin) { + require.NotEmpty(f.t, amounts) + // ensure faucet is always filled + if !f.balance.IsAllGTE(amounts) { + f.Mint(parentCtx, f.sender, amounts...) + } + ctx := sdk.UnwrapSDKContext(parentCtx).WithEventManager(sdk.NewEventManager()) // discard all faucet related events + err := f.bankKeeper.SendCoins(ctx, f.sender, receiver, amounts) + require.NoError(f.t, err) + f.balance = f.balance.Sub(amounts...) +} + +func (f *TestFaucet) NewFundedAccount(ctx context.Context, amounts ...sdk.Coin) sdk.AccAddress { + _, _, addr := keyPubAddr() + f.Fund(ctx, addr, amounts...) + return addr +} + +type TestKeepers struct { + AccountKeeper authkeeper.AccountKeeper + BankKeeper bankkeeper.Keeper + OPChildKeeper opchildkeeper.Keeper + OracleKeeper *oraclekeeper.Keeper + BridgeHook *bridgeHook + EncodingConfig EncodingConfig + Faucet *TestFaucet +} + +// createDefaultTestInput common settings for createTestInput +func createDefaultTestInput(t testing.TB) (context.Context, TestKeepers) { + return createTestInput(t, false) +} + +// createTestInput encoders can be nil to accept the defaults, or set it to override some of the message handlers (like default) +func createTestInput(t testing.TB, isCheckTx bool) (context.Context, TestKeepers) { + return _createTestInput(t, isCheckTx, dbm.NewMemDB()) +} + +var keyCounter uint64 + +// we need to make this deterministic (same every test run), as encoded address size and thus gas cost, +// depends on the actual bytes (due to ugly CanonicalAddress encoding) +func keyPubAddr() (crypto.PrivKey, crypto.PubKey, sdk.AccAddress) { + keyCounter++ + seed := make([]byte, 8) + binary.BigEndian.PutUint64(seed, keyCounter) + + key := ed25519.GenPrivKeyFromSecret(seed) + pub := key.PubKey() + addr := sdk.AccAddress(pub.Address()) + return key, pub, addr +} + +// encoders can be nil to accept the defaults, or set it to override some of the message handlers (like default) +func _createTestInput( + t testing.TB, + isCheckTx bool, + db dbm.DB, +) (context.Context, TestKeepers) { + keys := storetypes.NewKVStoreKeys( + authtypes.StoreKey, banktypes.StoreKey, opchildtypes.StoreKey, oracletypes.StoreKey, + ) + ms := store.NewCommitMultiStore(db, log.NewNopLogger(), metrics.NewNoOpMetrics()) + for _, v := range keys { + ms.MountStoreWithDB(v, storetypes.StoreTypeIAVL, db) + } + memKeys := storetypes.NewMemoryStoreKeys() + for _, v := range memKeys { + ms.MountStoreWithDB(v, storetypes.StoreTypeMemory, db) + } + + require.NoError(t, ms.LoadLatestVersion()) + + ctx := sdk.NewContext(ms, tmproto.Header{ + Height: 1234567, + Time: time.Date(2020, time.April, 22, 12, 0, 0, 0, time.UTC), + }, isCheckTx, log.NewNopLogger()) + + encodingConfig := MakeEncodingConfig(t) + appCodec := encodingConfig.Marshaler + + maccPerms := map[string][]string{ // module account permissions + authtypes.FeeCollectorName: nil, + distributiontypes.ModuleName: nil, + stakingtypes.BondedPoolName: {authtypes.Burner, authtypes.Staking}, + stakingtypes.NotBondedPoolName: {authtypes.Burner, authtypes.Staking}, + opchildtypes.ModuleName: {authtypes.Burner, authtypes.Minter}, + + // for testing + authtypes.Minter: {authtypes.Minter, authtypes.Burner}, + } + accountKeeper := authkeeper.NewAccountKeeper( + appCodec, + runtime.NewKVStoreService(keys[authtypes.StoreKey]), // target store + authtypes.ProtoBaseAccount, // prototype + maccPerms, + authcodec.NewBech32Codec(sdk.GetConfig().GetBech32AccountAddrPrefix()), + sdk.GetConfig().GetBech32AccountAddrPrefix(), + authtypes.NewModuleAddress(opchildtypes.ModuleName).String(), + ) + blockedAddrs := make(map[string]bool) + for acc := range maccPerms { + blockedAddrs[authtypes.NewModuleAddress(acc).String()] = true + } + + bankKeeper := bankkeeper.NewBaseKeeper( + appCodec, + runtime.NewKVStoreService(keys[banktypes.StoreKey]), + accountKeeper, + blockedAddrs, + authtypes.NewModuleAddress(opchildtypes.ModuleName).String(), + ctx.Logger(), + ) + bankKeeper.SetParams(ctx, banktypes.DefaultParams()) + + msgRouter := baseapp.NewMsgServiceRouter() + msgRouter.SetInterfaceRegistry(encodingConfig.InterfaceRegistry) + + oracleKeeper := oraclekeeper.NewKeeper( + runtime.NewKVStoreService(keys[oracletypes.StoreKey]), + appCodec, + nil, + authtypes.NewModuleAddress(opchildtypes.ModuleName), + ) + + bridgeHook := &bridgeHook{} + opchildKeeper := opchildkeeper.NewKeeper( + appCodec, + runtime.NewKVStoreService(keys[opchildtypes.StoreKey]), + accountKeeper, + bankKeeper, + bridgeHook.Hook, + &oracleKeeper, + msgRouter, + authtypes.NewModuleAddress(opchildtypes.ModuleName).String(), + authcodec.NewBech32Codec(sdk.GetConfig().GetBech32AccountAddrPrefix()), + authcodec.NewBech32Codec(sdk.GetConfig().GetBech32ValidatorAddrPrefix()), + authcodec.NewBech32Codec(sdk.GetConfig().GetBech32ConsensusAddrPrefix()), + ctx.Logger(), + ) + + opchildParams := opchildtypes.DefaultParams() + opchildParams.Admin = addrs[0].String() + opchildParams.BridgeExecutors = []string{addrs[0].String()} + require.NoError(t, opchildKeeper.SetParams(ctx, opchildParams)) + + // register handlers to msg router + opchildtypes.RegisterMsgServer(msgRouter, opchildkeeper.NewMsgServerImpl(*opchildKeeper)) + + faucet := NewTestFaucet(t, ctx, bankKeeper, authtypes.Minter, initialTotalSupply()...) + + keepers := TestKeepers{ + AccountKeeper: accountKeeper, + BankKeeper: bankKeeper, + OPChildKeeper: *opchildKeeper, + OracleKeeper: &oracleKeeper, + BridgeHook: bridgeHook, + EncodingConfig: encodingConfig, + Faucet: faucet, + } + return ctx, keepers +} + +type bridgeHook struct { + msgBytes []byte + err error +} + +func (h *bridgeHook) Hook(ctx context.Context, sender sdk.AccAddress, msgBytes []byte) error { + if h.err == nil { + h.msgBytes = msgBytes + } + + return h.err +} diff --git a/x/opchild/keeper/msg_server.go b/x/opchild/keeper/msg_server.go index 6d1386ed..b27283de 100644 --- a/x/opchild/keeper/msg_server.go +++ b/x/opchild/keeper/msg_server.go @@ -386,7 +386,7 @@ func (ms MsgServer) FinalizeTokenDeposit(ctx context.Context, req *types.MsgFina if req.Sequence < finalizedL1Sequence { // No op instead of returning an error - return &types.MsgFinalizeTokenDepositResponse{}, nil + return &types.MsgFinalizeTokenDepositResponse{Result: types.NOOP}, nil } else if req.Sequence > finalizedL1Sequence { return nil, types.ErrInvalidSequence } @@ -455,7 +455,7 @@ func (ms MsgServer) FinalizeTokenDeposit(ctx context.Context, req *types.MsgFina } sdkCtx.EventManager().EmitEvent(event) - return &types.MsgFinalizeTokenDepositResponse{}, nil + return &types.MsgFinalizeTokenDepositResponse{Result: types.SUCCESS}, nil } // safeDepositToken deposits the token to the recipient address diff --git a/x/opchild/types/errors.go b/x/opchild/types/errors.go index ede4b238..4eb89db0 100644 --- a/x/opchild/types/errors.go +++ b/x/opchild/types/errors.go @@ -27,4 +27,7 @@ var ( ErrMaxValidatorsExceeded = errorsmod.Register(ModuleName, 20, "max validators exceeded") ErrMaxValidatorsLowerThanCurrent = errorsmod.Register(ModuleName, 21, "max validators cannot be lower than current number of validators") ErrNonL1Token = errorsmod.Register(ModuleName, 22, "token is not from L1") + + // Antehandler error + ErrRedundantTx = errorsmod.Register(ModuleName, 23, "tx messages are all redundant") ) diff --git a/x/opchild/types/tx.pb.go b/x/opchild/types/tx.pb.go index 159cf430..058c9478 100644 --- a/x/opchild/types/tx.pb.go +++ b/x/opchild/types/tx.pb.go @@ -246,6 +246,7 @@ var xxx_messageInfo_MsgFinalizeTokenDeposit proto.InternalMessageInfo // MsgFinalizeTokenDepositResponse returns deposit result data type MsgFinalizeTokenDepositResponse struct { + Result ResponseResultType `protobuf:"varint,1,opt,name=result,proto3,enum=opinit.opchild.v1.ResponseResultType" json:"result,omitempty"` } func (m *MsgFinalizeTokenDepositResponse) Reset() { *m = MsgFinalizeTokenDepositResponse{} } @@ -786,81 +787,83 @@ func init() { func init() { proto.RegisterFile("opinit/opchild/v1/tx.proto", fileDescriptor_1ee96a503651b6e4) } var fileDescriptor_1ee96a503651b6e4 = []byte{ - // 1177 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x57, 0x4f, 0x6f, 0xe3, 0x44, - 0x14, 0x8f, 0x93, 0x36, 0x6d, 0xa7, 0xbb, 0x6a, 0x6b, 0x55, 0xd4, 0xb5, 0x68, 0x52, 0x8c, 0x10, - 0x21, 0x6c, 0xec, 0x6d, 0x10, 0x1c, 0x72, 0xa2, 0x61, 0xb7, 0x52, 0x59, 0x45, 0x5b, 0xa5, 0xfc, - 0x91, 0x38, 0x50, 0x4d, 0xe2, 0xa9, 0x33, 0x6a, 0xec, 0x31, 0x9e, 0x49, 0x68, 0xb8, 0x80, 0x38, - 0x21, 0x4e, 0x7c, 0x84, 0x3d, 0x20, 0x84, 0x38, 0xf5, 0xc0, 0x69, 0xe1, 0x03, 0x54, 0x7b, 0x5a, - 0x71, 0x40, 0x9c, 0x0a, 0xb4, 0x87, 0x72, 0xde, 0x2b, 0x17, 0x64, 0xcf, 0xc4, 0x71, 0x1c, 0xbb, - 0xe9, 0xa2, 0xc2, 0xa5, 0xcd, 0xbc, 0xf7, 0x9b, 0x37, 0xef, 0xf7, 0xde, 0x9b, 0xf7, 0xc6, 0x40, - 0x25, 0x2e, 0x76, 0x30, 0x33, 0x88, 0xdb, 0xee, 0xe0, 0xae, 0x69, 0xf4, 0xb7, 0x0c, 0x76, 0xac, - 0xbb, 0x1e, 0x61, 0x44, 0x5e, 0xe1, 0x3a, 0x5d, 0xe8, 0xf4, 0xfe, 0x96, 0xba, 0x02, 0x6d, 0xec, - 0x10, 0x23, 0xf8, 0xcb, 0x51, 0x6a, 0xa1, 0x4d, 0xa8, 0x4d, 0xa8, 0xd1, 0x82, 0x14, 0x19, 0xfd, - 0xad, 0x16, 0x62, 0x70, 0xcb, 0x68, 0x13, 0xec, 0x08, 0xfd, 0x9a, 0xd0, 0xdb, 0xd4, 0xf2, 0xad, - 0xdb, 0xd4, 0x12, 0x8a, 0x75, 0xae, 0x38, 0x08, 0x56, 0x06, 0x5f, 0x08, 0xd5, 0xaa, 0x45, 0x2c, - 0xc2, 0xe5, 0xfe, 0xaf, 0xe1, 0x06, 0x8b, 0x10, 0xab, 0x8b, 0x8c, 0x60, 0xd5, 0xea, 0x1d, 0x1a, - 0xd0, 0x19, 0x08, 0xd5, 0x46, 0x02, 0x8d, 0x81, 0x8b, 0x84, 0x3d, 0xed, 0x5b, 0x09, 0xc8, 0x0d, - 0x6a, 0xdd, 0x3f, 0x46, 0xed, 0x1e, 0x43, 0x0d, 0x44, 0x29, 0xb4, 0x10, 0x95, 0xef, 0x82, 0x3c, - 0x45, 0x8e, 0x89, 0x3c, 0x45, 0xda, 0x94, 0x4a, 0x0b, 0x75, 0xe5, 0x97, 0x1f, 0x2b, 0xab, 0xc2, - 0x91, 0x6d, 0xd3, 0xf4, 0x10, 0xa5, 0xfb, 0xcc, 0xc3, 0x8e, 0xd5, 0x14, 0x38, 0xf9, 0x2e, 0x98, - 0xb7, 0xc5, 0x6e, 0x25, 0xbb, 0x99, 0x2b, 0x2d, 0x56, 0x57, 0x75, 0xee, 0x95, 0x3e, 0xf4, 0x4a, - 0xdf, 0x76, 0x06, 0xcd, 0x10, 0x55, 0x2b, 0x7f, 0x79, 0x79, 0x52, 0x16, 0xdb, 0xbf, 0xbe, 0x3c, - 0x29, 0xab, 0x43, 0x17, 0x27, 0xfd, 0xd1, 0x5e, 0x04, 0xea, 0xa4, 0xb4, 0x89, 0xa8, 0x4b, 0x1c, - 0x8a, 0xb4, 0x27, 0x12, 0x58, 0x6e, 0x50, 0x6b, 0x1f, 0xb1, 0xba, 0x87, 0x4d, 0x0b, 0xed, 0x3a, - 0x87, 0x44, 0xde, 0x8e, 0x51, 0x78, 0xed, 0xd9, 0x59, 0xf1, 0xf6, 0x00, 0xda, 0xdd, 0x9a, 0xc6, - 0xe5, 0xda, 0x54, 0x4e, 0xbb, 0x60, 0xb1, 0x15, 0x18, 0x3c, 0xc0, 0xce, 0x21, 0x51, 0xb2, 0x9b, - 0x52, 0x69, 0xb1, 0xba, 0xa1, 0x4f, 0x24, 0x5f, 0x1f, 0x1d, 0x5b, 0x5f, 0x38, 0x3d, 0x2b, 0x66, - 0xbe, 0xbf, 0x3c, 0x29, 0x4b, 0x4d, 0xd0, 0x0a, 0xc5, 0xb5, 0x52, 0x8c, 0xac, 0x12, 0x21, 0x3b, - 0xe6, 0xb7, 0xa6, 0x02, 0x25, 0x2e, 0x0b, 0x89, 0x7e, 0x97, 0x03, 0x6b, 0x0d, 0x6a, 0xed, 0x60, - 0x07, 0x76, 0xf1, 0x67, 0xe8, 0x3d, 0x72, 0x84, 0x9c, 0x7b, 0xc8, 0x25, 0x14, 0xb3, 0x9b, 0xe0, - 0x7b, 0x07, 0xcc, 0x1c, 0x7a, 0xc4, 0x0e, 0x88, 0x5e, 0x95, 0xf3, 0x00, 0x25, 0x97, 0x40, 0x96, - 0x11, 0x25, 0x37, 0x05, 0x9b, 0x65, 0x44, 0x6e, 0x80, 0x3c, 0xb4, 0x49, 0xcf, 0x61, 0xca, 0x4c, - 0x10, 0xc2, 0x75, 0x5d, 0x40, 0xfd, 0x9b, 0xa1, 0x8b, 0x9b, 0xa1, 0xbf, 0x43, 0xb0, 0x53, 0x57, - 0xfd, 0xf0, 0x8d, 0x3c, 0xe7, 0xdb, 0x34, 0x1e, 0x4f, 0x61, 0x44, 0x56, 0xc1, 0x3c, 0x45, 0x9f, - 0xf4, 0x90, 0xd3, 0x46, 0xca, 0xec, 0xa6, 0x54, 0x9a, 0x69, 0x86, 0x6b, 0xf9, 0x05, 0x90, 0xef, - 0x20, 0x6c, 0x75, 0x98, 0x92, 0x0f, 0x34, 0x62, 0x25, 0x6f, 0x00, 0xe0, 0x1f, 0x76, 0x60, 0x22, - 0x87, 0xd8, 0xca, 0x9c, 0xef, 0x74, 0x73, 0xc1, 0x97, 0xdc, 0xf3, 0x05, 0xf2, 0x06, 0x98, 0x31, - 0x21, 0x83, 0xca, 0xfc, 0xa6, 0x54, 0xba, 0x15, 0xe4, 0x50, 0xe2, 0x67, 0x06, 0xe2, 0x9a, 0x11, - 0xcb, 0x5e, 0x31, 0x92, 0xbd, 0xa4, 0x64, 0x68, 0x2f, 0x81, 0x62, 0x8a, 0x2a, 0xcc, 0xe5, 0xdf, - 0x52, 0x50, 0xd3, 0xbb, 0x0e, 0x66, 0x18, 0x32, 0x8e, 0xf9, 0x10, 0xb3, 0x8e, 0xe9, 0xc1, 0x4f, - 0x61, 0xf7, 0x5f, 0xdc, 0x40, 0x9e, 0x8f, 0xec, 0xff, 0x9e, 0x8f, 0x5a, 0x35, 0x16, 0x1d, 0x2d, - 0x12, 0x9d, 0x14, 0x7a, 0xda, 0xdb, 0x40, 0x4b, 0xd7, 0x0e, 0x63, 0x34, 0x96, 0x69, 0x69, 0x3c, - 0xd3, 0xda, 0xe3, 0x2c, 0x58, 0x6a, 0x50, 0x6b, 0xdb, 0x34, 0x3f, 0x80, 0x5d, 0x6c, 0x42, 0x46, - 0x3c, 0xf9, 0x5d, 0xb0, 0x00, 0x7b, 0xac, 0x43, 0x3c, 0xcc, 0x06, 0x22, 0x6e, 0x77, 0x9e, 0x9d, - 0x15, 0x97, 0x85, 0xf3, 0x43, 0x55, 0xfa, 0x4d, 0x18, 0x6d, 0x97, 0x15, 0x30, 0x67, 0x13, 0x07, - 0x1f, 0x21, 0x8f, 0xc7, 0xb4, 0x39, 0x5c, 0xca, 0xf7, 0xc1, 0x4a, 0x7f, 0x78, 0xe4, 0x01, 0xe4, - 0xfb, 0xa7, 0xde, 0x83, 0xe5, 0x70, 0x8b, 0x90, 0xcb, 0x3b, 0x20, 0xef, 0xf6, 0x5a, 0x47, 0x68, - 0x20, 0xb2, 0x90, 0xd8, 0x2f, 0xeb, 0xca, 0x93, 0x91, 0xc5, 0xb6, 0x37, 0x70, 0x19, 0xd1, 0xf7, - 0x7a, 0xad, 0x07, 0x68, 0xd0, 0x14, 0xbb, 0x6b, 0xd5, 0xaf, 0x1e, 0x15, 0x33, 0x7f, 0x3d, 0x2a, - 0x66, 0xfc, 0x34, 0x8c, 0x08, 0xf8, 0x99, 0x58, 0x8b, 0x64, 0x22, 0x1a, 0x28, 0x6d, 0x3d, 0xe8, - 0x23, 0x51, 0x51, 0x58, 0x97, 0xbf, 0xf2, 0x89, 0xd0, 0x44, 0x36, 0xe9, 0xa3, 0xff, 0x26, 0xb4, - 0x89, 0x01, 0xcc, 0x3e, 0x6f, 0x00, 0x6b, 0x95, 0x49, 0xc2, 0xd1, 0x19, 0x12, 0x63, 0x20, 0x66, - 0x48, 0x4c, 0x1a, 0xd2, 0xfe, 0x59, 0x0a, 0xca, 0xe9, 0x7d, 0xd7, 0x84, 0x0c, 0xed, 0x41, 0x0f, - 0xda, 0xf4, 0x46, 0x39, 0x6f, 0x81, 0xbc, 0x1b, 0x58, 0x15, 0x63, 0x64, 0x3d, 0x61, 0x8c, 0xf0, - 0x63, 0x9b, 0x02, 0xc8, 0x07, 0x64, 0x7a, 0x42, 0xa3, 0xae, 0x8a, 0x84, 0x46, 0x45, 0x23, 0x66, - 0xfc, 0xa2, 0xec, 0xbb, 0xc8, 0x31, 0x77, 0x10, 0xda, 0x23, 0xa4, 0x7b, 0xa3, 0xcc, 0xde, 0x02, - 0x0b, 0x1e, 0x6a, 0x63, 0x17, 0x23, 0x87, 0x4d, 0xcd, 0xe2, 0x08, 0x2a, 0x0f, 0xc2, 0x2e, 0x94, - 0x0b, 0xde, 0x0b, 0x57, 0x74, 0xa1, 0x9d, 0xc4, 0x2e, 0xf4, 0xc3, 0xef, 0xc5, 0x92, 0x85, 0x59, - 0xa7, 0xd7, 0xd2, 0xdb, 0xc4, 0x16, 0xef, 0x24, 0xf1, 0xaf, 0x42, 0xcd, 0x23, 0xf1, 0xd0, 0xf1, - 0x2d, 0xd0, 0xf1, 0x8e, 0x35, 0x25, 0xb2, 0xd1, 0x50, 0x89, 0xc8, 0x46, 0x45, 0x61, 0x64, 0x7f, - 0x8a, 0xd6, 0xcc, 0x43, 0x0f, 0xb6, 0xbb, 0xe8, 0x26, 0xc6, 0xf0, 0x46, 0x38, 0xc3, 0xfc, 0x68, - 0xce, 0xd4, 0x67, 0x85, 0xf3, 0xe1, 0x28, 0xe3, 0xb3, 0x2a, 0x97, 0x3c, 0xab, 0x5e, 0x8d, 0x75, - 0xe3, 0xc9, 0x92, 0xe1, 0x9e, 0x8e, 0x95, 0x0c, 0x17, 0x0d, 0x89, 0x55, 0x1f, 0xcf, 0x81, 0x5c, - 0x83, 0x5a, 0xb2, 0x05, 0x96, 0xe2, 0x2f, 0xc3, 0x57, 0x12, 0xea, 0x76, 0xf2, 0x69, 0xa6, 0x56, - 0xae, 0x05, 0x0b, 0x1b, 0x3d, 0x04, 0xb7, 0xc7, 0x5f, 0x6f, 0x2f, 0x27, 0xef, 0x1f, 0x03, 0xa9, - 0xaf, 0x5f, 0x03, 0x14, 0x1e, 0xd1, 0x07, 0xab, 0x89, 0xef, 0xa6, 0x72, 0xb2, 0x91, 0x24, 0xac, - 0x5a, 0xbd, 0x3e, 0x36, 0x3c, 0xf7, 0x73, 0xb0, 0x96, 0x36, 0xe3, 0x53, 0x82, 0x94, 0x02, 0x57, - 0xdf, 0x7c, 0x2e, 0x78, 0xe8, 0xc0, 0xc7, 0xe0, 0xd6, 0xd8, 0x90, 0xd4, 0x92, 0xcd, 0x44, 0x31, - 0x6a, 0x79, 0x3a, 0x26, 0xb4, 0x6f, 0x81, 0xa5, 0xf8, 0xb0, 0x48, 0x29, 0x92, 0x18, 0x2c, 0xad, - 0x48, 0x52, 0x5a, 0xb4, 0x4f, 0x64, 0xac, 0x3d, 0xa7, 0x10, 0x89, 0x62, 0xd2, 0x88, 0x24, 0x35, - 0x4a, 0xdf, 0xfe, 0x58, 0x93, 0x4c, 0xb1, 0x1f, 0xc5, 0xa4, 0xd9, 0x4f, 0x6a, 0x17, 0x23, 0xff, - 0x45, 0xab, 0xb8, 0xd2, 0x7f, 0x8e, 0xb9, 0xda, 0xff, 0xf1, 0x5b, 0xab, 0xce, 0x7e, 0xe1, 0xb7, - 0x81, 0xfa, 0x83, 0xd3, 0x3f, 0x0b, 0x99, 0xd3, 0xf3, 0x82, 0xf4, 0xf4, 0xbc, 0x20, 0xfd, 0x71, - 0x5e, 0x90, 0xbe, 0xb9, 0x28, 0x64, 0x9e, 0x5e, 0x14, 0x32, 0xbf, 0x5d, 0x14, 0x32, 0x1f, 0x55, - 0x22, 0x1d, 0x13, 0x07, 0x95, 0x53, 0xe9, 0xc2, 0x16, 0x35, 0x1e, 0xee, 0x05, 0x9f, 0x89, 0xc7, - 0xe1, 0x87, 0x62, 0xd0, 0x3c, 0x5b, 0xf9, 0xe0, 0x31, 0xf2, 0xc6, 0x3f, 0x01, 0x00, 0x00, 0xff, - 0xff, 0x04, 0xb3, 0x09, 0x7a, 0x0e, 0x0f, 0x00, 0x00, + // 1206 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x57, 0x41, 0x6f, 0xe3, 0xc4, + 0x17, 0x8f, 0x93, 0x6e, 0xda, 0x4e, 0x77, 0xff, 0x6d, 0xad, 0xea, 0x5f, 0xd7, 0xa2, 0x49, 0x65, + 0x84, 0x08, 0x61, 0x63, 0x6f, 0x83, 0xe0, 0x10, 0x09, 0x89, 0x86, 0xdd, 0x4a, 0x65, 0x15, 0x6d, + 0xe5, 0x2e, 0x20, 0x71, 0xa0, 0x4c, 0xe2, 0xa9, 0x33, 0x6a, 0xec, 0x31, 0x9e, 0x49, 0x68, 0xb8, + 0x80, 0x38, 0x21, 0x4e, 0x7c, 0x84, 0x3d, 0x20, 0x84, 0x38, 0xf5, 0xc0, 0x69, 0xe1, 0x03, 0x54, + 0x7b, 0x5a, 0x71, 0x40, 0x9c, 0x0a, 0xb4, 0x87, 0x72, 0xde, 0x2b, 0x17, 0x64, 0xcf, 0xc4, 0x71, + 0x12, 0xbb, 0xe9, 0xa2, 0xc2, 0xa5, 0xcd, 0xbc, 0xf7, 0x9b, 0x37, 0xef, 0xf7, 0xde, 0x9b, 0xf7, + 0xc6, 0x40, 0x25, 0x1e, 0x76, 0x31, 0x33, 0x88, 0xd7, 0x6a, 0xe3, 0x8e, 0x65, 0xf4, 0x36, 0x0d, + 0x76, 0xa4, 0x7b, 0x3e, 0x61, 0x44, 0x5e, 0xe6, 0x3a, 0x5d, 0xe8, 0xf4, 0xde, 0xa6, 0xba, 0x0c, + 0x1d, 0xec, 0x12, 0x23, 0xfc, 0xcb, 0x51, 0x6a, 0xa1, 0x45, 0xa8, 0x43, 0xa8, 0xd1, 0x84, 0x14, + 0x19, 0xbd, 0xcd, 0x26, 0x62, 0x70, 0xd3, 0x68, 0x11, 0xec, 0x0a, 0xfd, 0xaa, 0xd0, 0x3b, 0xd4, + 0x0e, 0xac, 0x3b, 0xd4, 0x16, 0x8a, 0x35, 0xae, 0xd8, 0x0f, 0x57, 0x06, 0x5f, 0x08, 0xd5, 0x8a, + 0x4d, 0x6c, 0xc2, 0xe5, 0xc1, 0xaf, 0xc1, 0x06, 0x9b, 0x10, 0xbb, 0x83, 0x8c, 0x70, 0xd5, 0xec, + 0x1e, 0x18, 0xd0, 0xed, 0x0b, 0xd5, 0x7a, 0x02, 0x8d, 0xbe, 0x87, 0x84, 0x3d, 0xed, 0x1b, 0x09, + 0xc8, 0x0d, 0x6a, 0xdf, 0x3b, 0x42, 0xad, 0x2e, 0x43, 0x0d, 0x44, 0x29, 0xb4, 0x11, 0x95, 0xef, + 0x80, 0x3c, 0x45, 0xae, 0x85, 0x7c, 0x45, 0xda, 0x90, 0x4a, 0xf3, 0x75, 0xe5, 0xe7, 0x1f, 0x2a, + 0x2b, 0xc2, 0x91, 0x2d, 0xcb, 0xf2, 0x11, 0xa5, 0x7b, 0xcc, 0xc7, 0xae, 0x6d, 0x0a, 0x9c, 0x7c, + 0x07, 0xcc, 0x39, 0x62, 0xb7, 0x92, 0xdd, 0xc8, 0x95, 0x16, 0xaa, 0x2b, 0x3a, 0xf7, 0x4a, 0x1f, + 0x78, 0xa5, 0x6f, 0xb9, 0x7d, 0x33, 0x42, 0xd5, 0xca, 0x5f, 0x5c, 0x1c, 0x97, 0xc5, 0xf6, 0xaf, + 0x2e, 0x8e, 0xcb, 0xea, 0xc0, 0xc5, 0x49, 0x7f, 0xb4, 0x17, 0x80, 0x3a, 0x29, 0x35, 0x11, 0xf5, + 0x88, 0x4b, 0x91, 0xf6, 0x44, 0x02, 0x4b, 0x0d, 0x6a, 0xef, 0x21, 0x56, 0xf7, 0xb1, 0x65, 0xa3, + 0x1d, 0xf7, 0x80, 0xc8, 0x5b, 0x63, 0x14, 0x5e, 0x79, 0x76, 0x5a, 0xbc, 0xd5, 0x87, 0x4e, 0xa7, + 0xa6, 0x71, 0xb9, 0x36, 0x95, 0xd3, 0x0e, 0x58, 0x68, 0x86, 0x06, 0xf7, 0xb1, 0x7b, 0x40, 0x94, + 0xec, 0x86, 0x54, 0x5a, 0xa8, 0xae, 0xeb, 0x13, 0xc9, 0xd7, 0x87, 0xc7, 0xd6, 0xe7, 0x4f, 0x4e, + 0x8b, 0x99, 0xef, 0x2e, 0x8e, 0xcb, 0x92, 0x09, 0x9a, 0x91, 0xb8, 0x56, 0x1a, 0x23, 0xab, 0xc4, + 0xc8, 0x8e, 0xf8, 0xad, 0xa9, 0x40, 0x19, 0x97, 0x45, 0x44, 0xbf, 0xcd, 0x81, 0xd5, 0x06, 0xb5, + 0xb7, 0xb1, 0x0b, 0x3b, 0xf8, 0x53, 0xf4, 0x90, 0x1c, 0x22, 0xf7, 0x2e, 0xf2, 0x08, 0xc5, 0xec, + 0x3a, 0xf8, 0xde, 0x06, 0x33, 0x07, 0x3e, 0x71, 0x42, 0xa2, 0x97, 0xe5, 0x3c, 0x44, 0xc9, 0x25, + 0x90, 0x65, 0x44, 0xc9, 0x4d, 0xc1, 0x66, 0x19, 0x91, 0x1b, 0x20, 0x0f, 0x1d, 0xd2, 0x75, 0x99, + 0x32, 0x13, 0x86, 0x70, 0x4d, 0x17, 0xd0, 0xe0, 0x66, 0xe8, 0xe2, 0x66, 0xe8, 0x6f, 0x13, 0xec, + 0xd6, 0xd5, 0x20, 0x7c, 0x43, 0xcf, 0xf9, 0x36, 0x8d, 0xc7, 0x53, 0x18, 0x91, 0x55, 0x30, 0x47, + 0xd1, 0xc7, 0x5d, 0xe4, 0xb6, 0x90, 0x72, 0x63, 0x43, 0x2a, 0xcd, 0x98, 0xd1, 0x5a, 0xfe, 0x3f, + 0xc8, 0xb7, 0x11, 0xb6, 0xdb, 0x4c, 0xc9, 0x87, 0x1a, 0xb1, 0x92, 0xd7, 0x01, 0x08, 0x0e, 0xdb, + 0xb7, 0x90, 0x4b, 0x1c, 0x65, 0x36, 0x70, 0xda, 0x9c, 0x0f, 0x24, 0x77, 0x03, 0x81, 0xbc, 0x0e, + 0x66, 0x2c, 0xc8, 0xa0, 0x32, 0xb7, 0x21, 0x95, 0x6e, 0x86, 0x39, 0x94, 0xf8, 0x99, 0xa1, 0xb8, + 0x66, 0x8c, 0x65, 0xaf, 0x18, 0xcb, 0x5e, 0x52, 0x32, 0xb4, 0x8f, 0x40, 0x31, 0x45, 0x35, 0xc8, + 0xa5, 0xfc, 0x26, 0xc8, 0xfb, 0x88, 0x76, 0x3b, 0x2c, 0xcc, 0xd7, 0xff, 0xaa, 0x2f, 0x25, 0xd4, + 0xd5, 0x00, 0x6c, 0x86, 0xc0, 0x87, 0x7d, 0x0f, 0x99, 0x62, 0x93, 0xf6, 0x97, 0x14, 0x5e, 0x89, + 0x1d, 0x17, 0x33, 0x0c, 0x19, 0x3f, 0xe2, 0x7d, 0xcc, 0xda, 0x96, 0x0f, 0x3f, 0x81, 0x9d, 0x7f, + 0x70, 0x81, 0x79, 0x3a, 0xb3, 0xff, 0x79, 0x3a, 0x6b, 0xd5, 0xb1, 0xe0, 0x6a, 0xb1, 0xe0, 0xa6, + 0xd0, 0xd3, 0xde, 0x02, 0x5a, 0xba, 0x36, 0x0a, 0x71, 0xbc, 0x50, 0xa4, 0xd1, 0x42, 0xd1, 0x1e, + 0x67, 0xc1, 0x62, 0x83, 0xda, 0x5b, 0x96, 0xf5, 0x1e, 0xec, 0x60, 0x0b, 0x32, 0xe2, 0xcb, 0xef, + 0x80, 0x79, 0xd8, 0x65, 0x6d, 0xe2, 0x63, 0xd6, 0x17, 0x71, 0xbb, 0xfd, 0xec, 0xb4, 0xb8, 0x24, + 0x9c, 0x1f, 0xa8, 0xd2, 0x2f, 0xd2, 0x70, 0xbb, 0xac, 0x80, 0x59, 0x87, 0xb8, 0xf8, 0x10, 0xf9, + 0x3c, 0xa6, 0xe6, 0x60, 0x29, 0xdf, 0x03, 0xcb, 0xbd, 0xc1, 0x91, 0xfb, 0x90, 0xef, 0x9f, 0x7a, + 0x8d, 0x96, 0xa2, 0x2d, 0x42, 0x2e, 0x6f, 0x83, 0xbc, 0xd7, 0x6d, 0x1e, 0xa2, 0xbe, 0xc8, 0x42, + 0x62, 0xbb, 0xad, 0x2b, 0x4f, 0x86, 0x16, 0x5b, 0x7e, 0xdf, 0x63, 0x44, 0xdf, 0xed, 0x36, 0xef, + 0xa3, 0xbe, 0x29, 0x76, 0xd7, 0xaa, 0x5f, 0x3e, 0x2a, 0x66, 0xfe, 0x7c, 0x54, 0xcc, 0x04, 0x69, + 0x18, 0x12, 0x08, 0x32, 0xb1, 0x1a, 0xcb, 0x44, 0x3c, 0x50, 0xda, 0x5a, 0xd8, 0x86, 0xe2, 0xa2, + 0xa8, 0x45, 0xfd, 0xc2, 0x07, 0x8a, 0x89, 0x1c, 0xd2, 0x43, 0xff, 0x4e, 0x68, 0x13, 0x03, 0x98, + 0x7d, 0xde, 0x00, 0xd6, 0x2a, 0x93, 0x84, 0xe3, 0x23, 0x68, 0x8c, 0x81, 0x18, 0x41, 0x63, 0xd2, + 0x88, 0xf6, 0x4f, 0x52, 0x58, 0x4e, 0xef, 0x7a, 0x16, 0x64, 0x68, 0x17, 0xfa, 0xd0, 0xa1, 0xd7, + 0xca, 0x79, 0x13, 0xe4, 0xbd, 0xd0, 0xaa, 0x98, 0x42, 0x6b, 0x09, 0xdd, 0x82, 0x1f, 0x6b, 0x0a, + 0x20, 0x9f, 0xaf, 0xe9, 0x09, 0x8d, 0xbb, 0x2a, 0x12, 0x1a, 0x17, 0x0d, 0x99, 0xf1, 0x8b, 0xb2, + 0xe7, 0x21, 0xd7, 0xda, 0x46, 0x68, 0x97, 0x90, 0xce, 0xb5, 0x32, 0x7b, 0x03, 0xcc, 0xfb, 0xa8, + 0x85, 0x3d, 0x8c, 0x5c, 0x36, 0x35, 0x8b, 0x43, 0xa8, 0xdc, 0x8f, 0xba, 0x50, 0x2e, 0x7c, 0x6e, + 0x5c, 0xd2, 0x85, 0xb6, 0x13, 0xbb, 0xd0, 0xf7, 0xbf, 0x15, 0x4b, 0x36, 0x66, 0xed, 0x6e, 0x53, + 0x6f, 0x11, 0x47, 0x3c, 0xb3, 0xc4, 0xbf, 0x0a, 0xb5, 0x0e, 0xc5, 0x3b, 0x29, 0xb0, 0x40, 0x47, + 0x3b, 0xd6, 0x94, 0xc8, 0xc6, 0x43, 0x25, 0x22, 0x1b, 0x17, 0x45, 0x91, 0xfd, 0x31, 0x5e, 0x33, + 0x0f, 0x7c, 0xd8, 0xea, 0xa0, 0xeb, 0x98, 0xe2, 0xeb, 0xd1, 0x08, 0x0c, 0xa2, 0x39, 0x53, 0xbf, + 0x21, 0x9c, 0x8f, 0x26, 0x21, 0x1f, 0x75, 0xb9, 0xe4, 0x51, 0xf7, 0xf2, 0x58, 0x37, 0x9e, 0x2c, + 0x19, 0xee, 0xe9, 0x48, 0xc9, 0x70, 0xd1, 0x80, 0x58, 0xf5, 0xf1, 0x2c, 0xc8, 0x35, 0xa8, 0x2d, + 0xdb, 0x60, 0x71, 0xfc, 0x61, 0x99, 0x34, 0xe5, 0x26, 0x5f, 0x76, 0x6a, 0xe5, 0x4a, 0xb0, 0xa8, + 0xd1, 0x43, 0x70, 0x6b, 0xf4, 0xf1, 0xf7, 0x62, 0xf2, 0xfe, 0x11, 0x90, 0xfa, 0xea, 0x15, 0x40, + 0xd1, 0x11, 0x3d, 0xb0, 0x92, 0xf8, 0xec, 0x2a, 0x27, 0x1b, 0x49, 0xc2, 0xaa, 0xd5, 0xab, 0x63, + 0xa3, 0x73, 0x3f, 0x03, 0xab, 0x69, 0x33, 0x3e, 0x25, 0x48, 0x29, 0x70, 0xf5, 0xf5, 0xe7, 0x82, + 0x47, 0x0e, 0x7c, 0x08, 0x6e, 0x8e, 0x0c, 0x49, 0x2d, 0xd9, 0x4c, 0x1c, 0xa3, 0x96, 0xa7, 0x63, + 0x22, 0xfb, 0x36, 0x58, 0x1c, 0x1f, 0x16, 0x29, 0x45, 0x32, 0x06, 0x4b, 0x2b, 0x92, 0x94, 0x16, + 0x1d, 0x10, 0x19, 0x69, 0xcf, 0x29, 0x44, 0xe2, 0x98, 0x34, 0x22, 0x49, 0x8d, 0x32, 0xb0, 0x3f, + 0xd2, 0x24, 0x53, 0xec, 0xc7, 0x31, 0x69, 0xf6, 0x93, 0xda, 0xc5, 0xd0, 0x7f, 0xd1, 0x2a, 0x2e, + 0xf5, 0x9f, 0x63, 0x2e, 0xf7, 0x7f, 0xf4, 0xd6, 0xaa, 0x37, 0x3e, 0x0f, 0xda, 0x40, 0xfd, 0xfe, + 0xc9, 0x1f, 0x85, 0xcc, 0xc9, 0x59, 0x41, 0x7a, 0x7a, 0x56, 0x90, 0x7e, 0x3f, 0x2b, 0x48, 0x5f, + 0x9f, 0x17, 0x32, 0x4f, 0xcf, 0x0b, 0x99, 0x5f, 0xcf, 0x0b, 0x99, 0x0f, 0x2a, 0xb1, 0x8e, 0x89, + 0xc3, 0xca, 0xa9, 0x74, 0x60, 0x93, 0x1a, 0x0f, 0x76, 0xc3, 0xaf, 0xcc, 0xa3, 0xe8, 0x3b, 0x33, + 0x6c, 0x9e, 0xcd, 0x7c, 0xf8, 0x18, 0x79, 0xed, 0xef, 0x00, 0x00, 0x00, 0xff, 0xff, 0x92, 0x33, + 0xd1, 0xf2, 0x4d, 0x0f, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1479,6 +1482,11 @@ func (m *MsgFinalizeTokenDepositResponse) MarshalToSizedBuffer(dAtA []byte) (int _ = i var l int _ = l + if m.Result != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.Result)) + i-- + dAtA[i] = 0x8 + } return len(dAtA) - i, nil } @@ -2006,6 +2014,9 @@ func (m *MsgFinalizeTokenDepositResponse) Size() (n int) { } var l int _ = l + if m.Result != 0 { + n += 1 + sovTx(uint64(m.Result)) + } return n } @@ -2836,6 +2847,25 @@ func (m *MsgFinalizeTokenDepositResponse) Unmarshal(dAtA []byte) error { return fmt.Errorf("proto: MsgFinalizeTokenDepositResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Result", wireType) + } + m.Result = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Result |= ResponseResultType(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) diff --git a/x/opchild/types/types.pb.go b/x/opchild/types/types.pb.go index 5fc697b3..03c9579a 100644 --- a/x/opchild/types/types.pb.go +++ b/x/opchild/types/types.pb.go @@ -30,6 +30,38 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +// ResponseResultType defines the possible outcomes of the execution of a message +type ResponseResultType int32 + +const ( + // Default zero value enumeration + UNSPECIFIED ResponseResultType = 0 + // The message did not execute msg operation (because, for example, deposit had already been finalized) + NOOP ResponseResultType = 1 + // The message was executed successfully + SUCCESS ResponseResultType = 2 +) + +var ResponseResultType_name = map[int32]string{ + 0: "RESPONSE_RESULT_TYPE_UNSPECIFIED", + 1: "RESPONSE_RESULT_TYPE_NOOP", + 2: "RESPONSE_RESULT_TYPE_SUCCESS", +} + +var ResponseResultType_value = map[string]int32{ + "RESPONSE_RESULT_TYPE_UNSPECIFIED": 0, + "RESPONSE_RESULT_TYPE_NOOP": 1, + "RESPONSE_RESULT_TYPE_SUCCESS": 2, +} + +func (x ResponseResultType) String() string { + return proto.EnumName(ResponseResultType_name, int32(x)) +} + +func (ResponseResultType) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_2cc6df244b706d68, []int{0} +} + // Params defines the set of opchild parameters. type Params struct { // max_validators is the maximum number of validators. @@ -296,6 +328,7 @@ func (m *CoinsWrapper) XXX_DiscardUnknown() { var xxx_messageInfo_CoinsWrapper proto.InternalMessageInfo func init() { + proto.RegisterEnum("opinit.opchild.v1.ResponseResultType", ResponseResultType_name, ResponseResultType_value) proto.RegisterType((*Params)(nil), "opinit.opchild.v1.Params") proto.RegisterType((*Validator)(nil), "opinit.opchild.v1.Validator") proto.RegisterType((*ValidatorUpdates)(nil), "opinit.opchild.v1.ValidatorUpdates") @@ -307,68 +340,75 @@ func init() { func init() { proto.RegisterFile("opinit/opchild/v1/types.proto", fileDescriptor_2cc6df244b706d68) } var fileDescriptor_2cc6df244b706d68 = []byte{ - // 971 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x55, 0xbf, 0x6f, 0xdb, 0xc6, - 0x17, 0x17, 0x63, 0xd9, 0xf9, 0xf2, 0x2c, 0xff, 0x3a, 0x38, 0xf8, 0xca, 0x76, 0x42, 0x0a, 0x9c, - 0x84, 0xb4, 0x26, 0x21, 0xa7, 0x29, 0x5a, 0x4f, 0x0d, 0x1d, 0xb7, 0x30, 0x52, 0x34, 0x02, 0x8b, - 0x36, 0x40, 0x16, 0xe2, 0x48, 0x9e, 0xa8, 0x83, 0xc9, 0x3b, 0x82, 0x47, 0x29, 0xd6, 0x7f, 0x50, - 0x74, 0x69, 0xc7, 0x8e, 0x1e, 0x83, 0x4c, 0x29, 0xd0, 0xad, 0xff, 0x80, 0x51, 0xa0, 0x40, 0xd0, - 0xa9, 0x93, 0xd2, 0xda, 0x43, 0x3a, 0x6b, 0xe8, 0x5c, 0xdc, 0x0f, 0x49, 0x8e, 0xdb, 0x20, 0x5d, - 0xba, 0x48, 0x77, 0xef, 0xf3, 0xb9, 0xf7, 0xde, 0x7d, 0xee, 0xbd, 0x47, 0x70, 0x8b, 0x15, 0x84, - 0x92, 0xca, 0x63, 0x45, 0xdc, 0x27, 0x59, 0xe2, 0x0d, 0x3b, 0x5e, 0x35, 0x2a, 0x30, 0x77, 0x8b, - 0x92, 0x55, 0x0c, 0x6e, 0x28, 0xd8, 0xd5, 0xb0, 0x3b, 0xec, 0x6c, 0x6f, 0xa0, 0x9c, 0x50, 0xe6, - 0xc9, 0x5f, 0xc5, 0xda, 0xb6, 0x62, 0xc6, 0x73, 0xc6, 0xbd, 0x08, 0x71, 0xec, 0x0d, 0x3b, 0x11, - 0xae, 0x50, 0xc7, 0x8b, 0x19, 0xa1, 0x1a, 0xdf, 0x52, 0x78, 0x28, 0x77, 0x9e, 0xda, 0x68, 0x68, - 0x33, 0x65, 0x29, 0x53, 0x76, 0xb1, 0x9a, 0x1e, 0x48, 0x19, 0x4b, 0x33, 0xec, 0xc9, 0x5d, 0x34, - 0xe8, 0x79, 0x88, 0x8e, 0x34, 0xb4, 0x53, 0x61, 0x9a, 0xe0, 0x32, 0x27, 0xb4, 0xf2, 0x50, 0x14, - 0x93, 0xcb, 0xe9, 0x6e, 0xdf, 0x9c, 0xdd, 0xa6, 0xcf, 0x78, 0x75, 0xe5, 0x32, 0xce, 0xcf, 0x75, - 0xb0, 0xd4, 0x45, 0x25, 0xca, 0x39, 0xfc, 0x08, 0xac, 0xe6, 0xe8, 0x24, 0x1c, 0xa2, 0x8c, 0x24, - 0xa8, 0x62, 0x25, 0x6f, 0x1a, 0x2d, 0xa3, 0xbd, 0xe2, 0x6f, 0x4d, 0xc6, 0xf6, 0x8d, 0x11, 0xca, - 0xb3, 0x7d, 0xe7, 0x75, 0xdc, 0x09, 0x56, 0x72, 0x74, 0xf2, 0xe5, 0x6c, 0x0f, 0x3f, 0x05, 0xb0, - 0x4f, 0x78, 0xc5, 0x4a, 0x12, 0xa3, 0x2c, 0xc4, 0xb4, 0x2a, 0x09, 0xe6, 0xcd, 0x6b, 0xd2, 0xcb, - 0xad, 0xc9, 0xd8, 0xde, 0x52, 0x5e, 0xfe, 0xce, 0x71, 0x82, 0x8d, 0xb9, 0xf1, 0x50, 0xd9, 0xe0, - 0x37, 0x06, 0x58, 0xcd, 0x09, 0x0d, 0x53, 0x24, 0x54, 0x22, 0x31, 0xe6, 0xcd, 0x85, 0xd6, 0x42, - 0x7b, 0x79, 0xef, 0xa6, 0xab, 0xe5, 0x12, 0xda, 0xba, 0x5a, 0x5b, 0xf7, 0x3e, 0x8e, 0x0f, 0x18, - 0xa1, 0xfe, 0x83, 0xb3, 0xb1, 0x5d, 0x9b, 0x8c, 0xed, 0x4d, 0x9d, 0xf2, 0x65, 0x0f, 0xce, 0xb3, - 0x97, 0xf6, 0x3b, 0x29, 0xa9, 0xfa, 0x83, 0xc8, 0x8d, 0x59, 0xae, 0x65, 0xd7, 0x7f, 0xbb, 0x3c, - 0x39, 0xd6, 0xda, 0x68, 0x5f, 0x3c, 0x68, 0xe4, 0x84, 0x7e, 0x82, 0x78, 0x57, 0x86, 0x87, 0x31, - 0x58, 0x8f, 0x4a, 0x92, 0xa4, 0x38, 0xc4, 0x27, 0x38, 0x1e, 0x48, 0x8d, 0xea, 0xad, 0x85, 0xb6, - 0xe9, 0x7f, 0x30, 0x19, 0xdb, 0xff, 0x57, 0x01, 0xaf, 0x32, 0x9c, 0x5f, 0x7e, 0xd8, 0xdd, 0xd4, - 0x09, 0xdf, 0x4b, 0x92, 0x12, 0x73, 0xfe, 0x79, 0x55, 0x12, 0x9a, 0x3e, 0x7d, 0xf5, 0xfc, 0xb6, - 0x11, 0xac, 0x29, 0xfe, 0xe1, 0x94, 0x0e, 0x0f, 0xc0, 0x22, 0x4a, 0x72, 0x42, 0x9b, 0x8b, 0x2d, - 0xa3, 0x6d, 0xfa, 0xbb, 0x93, 0xb1, 0xdd, 0x50, 0x9e, 0xa5, 0xf9, 0x2d, 0xee, 0xd4, 0x59, 0xf8, - 0x18, 0xac, 0xf4, 0x30, 0x0e, 0x9f, 0xf4, 0x49, 0x85, 0x33, 0xc2, 0xab, 0xe6, 0x92, 0x4c, 0xf3, - 0xee, 0x5c, 0x97, 0xd7, 0xe0, 0xb7, 0x38, 0x6d, 0xf4, 0x30, 0x7e, 0x34, 0xe5, 0xee, 0xef, 0x7c, - 0x77, 0x6a, 0xd7, 0xfe, 0x38, 0xb5, 0x8d, 0xaf, 0x5f, 0x3d, 0xbf, 0xbd, 0x3a, 0x6d, 0x12, 0x55, - 0x44, 0xce, 0x8f, 0xd7, 0x80, 0x39, 0xab, 0x08, 0xf8, 0x2e, 0xb8, 0x9e, 0x33, 0x4a, 0x8e, 0x71, - 0x29, 0x6b, 0xc9, 0xf4, 0xe1, 0x64, 0x6c, 0xaf, 0xea, 0x87, 0x51, 0x80, 0x13, 0x4c, 0x29, 0xf0, - 0x63, 0xb0, 0xce, 0x0a, 0x5c, 0x8a, 0x93, 0x21, 0x52, 0x59, 0xc8, 0xe2, 0x31, 0xfd, 0x9d, 0xb9, - 0xbc, 0x57, 0x19, 0x4e, 0xb0, 0x36, 0x35, 0xe9, 0xcc, 0x61, 0x05, 0xd6, 0x63, 0x46, 0x39, 0xa6, - 0x7c, 0xc0, 0xc3, 0x62, 0x10, 0x1d, 0xe3, 0x51, 0x73, 0xa1, 0x65, 0xb4, 0x97, 0xf7, 0x36, 0x5d, - 0xd5, 0x44, 0xee, 0xb4, 0x89, 0xdc, 0x7b, 0x74, 0xe4, 0xdf, 0x99, 0x7b, 0xbf, 0x7a, 0xce, 0xf9, - 0x69, 0x2e, 0x4c, 0x5c, 0x8e, 0x8a, 0x8a, 0xb9, 0xdd, 0x41, 0xf4, 0x00, 0x8f, 0x82, 0xb5, 0x19, - 0xb5, 0x2b, 0x99, 0xf0, 0x3d, 0x00, 0x84, 0x29, 0x2c, 0xd8, 0x13, 0x5c, 0x36, 0xeb, 0x2d, 0xa3, - 0xbd, 0xe0, 0xdf, 0x98, 0x8c, 0xed, 0x8d, 0xb9, 0x67, 0x85, 0x39, 0x81, 0x29, 0x36, 0x5d, 0xb1, - 0xde, 0x6f, 0x7c, 0x75, 0x6a, 0xd7, 0xb4, 0xa0, 0x35, 0x27, 0x04, 0xeb, 0x33, 0xf1, 0xbe, 0x28, - 0x12, 0x54, 0x61, 0x0e, 0x0f, 0xc1, 0xf5, 0x81, 0x5a, 0x36, 0x0d, 0x59, 0xfe, 0x2d, 0x77, 0xde, - 0xee, 0xae, 0x68, 0x77, 0xf7, 0xca, 0x19, 0xdf, 0x14, 0x2d, 0xa0, 0x9e, 0x6e, 0x7a, 0x76, 0xbf, - 0x2e, 0x03, 0xfc, 0x69, 0x00, 0xe0, 0xcb, 0x82, 0x3b, 0xa2, 0x3d, 0x06, 0x77, 0x80, 0xa9, 0xcb, - 0x95, 0x24, 0xf2, 0x85, 0xea, 0xc1, 0xff, 0x94, 0xe1, 0x28, 0x81, 0x1f, 0x82, 0x65, 0x0d, 0x0a, - 0xa9, 0xf5, 0x4b, 0x34, 0xdf, 0x54, 0x29, 0x01, 0x50, 0x64, 0x61, 0x84, 0x16, 0x58, 0xce, 0x3a, - 0x61, 0xdc, 0x47, 0x84, 0x0a, 0xcf, 0x42, 0x7c, 0x33, 0x30, 0xb3, 0xce, 0x81, 0xb0, 0x1c, 0x25, - 0xb0, 0x05, 0x1a, 0x02, 0xcf, 0x08, 0xa6, 0x95, 0x20, 0xd4, 0x25, 0x01, 0x64, 0x9d, 0x03, 0x69, - 0x3a, 0x4a, 0xe0, 0x67, 0x60, 0x45, 0x07, 0x8f, 0x19, 0xed, 0x91, 0x54, 0x76, 0xc3, 0xf2, 0x9e, - 0xe5, 0xce, 0x86, 0xaf, 0x98, 0x66, 0xee, 0xb0, 0xe3, 0xaa, 0xeb, 0x1c, 0x48, 0xd6, 0xe5, 0x9b, - 0x37, 0xa2, 0x4b, 0x80, 0xf3, 0xbd, 0x01, 0xd6, 0xba, 0x98, 0x26, 0x84, 0xa6, 0xf7, 0x71, 0xc1, - 0x38, 0xa9, 0x38, 0x7c, 0x1f, 0x98, 0x25, 0x8e, 0x49, 0x21, 0x42, 0xea, 0xfa, 0x7c, 0xf3, 0xf5, - 0xe6, 0x54, 0xd8, 0x03, 0x8b, 0x62, 0x90, 0x8b, 0xe2, 0x14, 0xef, 0xb1, 0xf5, 0x8f, 0xe3, 0x48, - 0xce, 0xa2, 0xbb, 0x22, 0x9d, 0x67, 0x2f, 0xed, 0xf6, 0xbf, 0x98, 0x39, 0x72, 0xe0, 0xe8, 0x26, - 0x96, 0xee, 0x9d, 0x21, 0x68, 0x48, 0xe3, 0xa3, 0x12, 0x15, 0x05, 0x2e, 0xe7, 0x71, 0x8d, 0xff, - 0x34, 0xae, 0xff, 0xf0, 0xec, 0x77, 0xab, 0xf6, 0xf4, 0xdc, 0x32, 0xce, 0xce, 0x2d, 0xe3, 0xc5, - 0xb9, 0x65, 0xfc, 0x76, 0x6e, 0x19, 0xdf, 0x5e, 0x58, 0xb5, 0x17, 0x17, 0x56, 0xed, 0xd7, 0x0b, - 0xab, 0xf6, 0x78, 0xf7, 0x92, 0x5f, 0xf1, 0x1c, 0x04, 0xed, 0x66, 0x28, 0xe2, 0xde, 0xc3, 0xae, - 0xfc, 0xd4, 0x9c, 0xcc, 0x3e, 0x9d, 0x32, 0x44, 0xb4, 0x24, 0xdb, 0xed, 0xce, 0x5f, 0x01, 0x00, - 0x00, 0xff, 0xff, 0xc0, 0xa1, 0x72, 0xab, 0x59, 0x07, 0x00, 0x00, + // 1082 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x55, 0xbf, 0x6f, 0xdb, 0x46, + 0x14, 0x16, 0x63, 0xd9, 0x8e, 0x4e, 0xb2, 0x2d, 0x1f, 0x1c, 0x54, 0x96, 0x1d, 0x92, 0xe0, 0x52, + 0xc1, 0xad, 0x48, 0xc8, 0xa9, 0x8b, 0xd6, 0x53, 0x23, 0x59, 0x29, 0x84, 0x04, 0xb6, 0x40, 0xd9, + 0x0d, 0x9a, 0x85, 0xe0, 0x8f, 0x93, 0x74, 0x30, 0xc9, 0x23, 0x78, 0x94, 0x62, 0xfd, 0x07, 0x81, + 0x97, 0x76, 0xec, 0x62, 0xc0, 0x40, 0x97, 0x34, 0x53, 0x0a, 0x74, 0xeb, 0x3f, 0x60, 0x14, 0x28, + 0x10, 0x74, 0xea, 0xa4, 0xb4, 0xf6, 0x90, 0xce, 0x1a, 0x3a, 0x17, 0x77, 0xa4, 0x7e, 0xc4, 0x75, + 0x90, 0x2e, 0x5d, 0xa4, 0xbb, 0xf7, 0x7d, 0xf7, 0xde, 0xbb, 0xef, 0xde, 0x7b, 0x04, 0x77, 0x49, + 0x80, 0x7d, 0x1c, 0x69, 0x24, 0xb0, 0xbb, 0xd8, 0x75, 0xb4, 0x7e, 0x45, 0x8b, 0x06, 0x01, 0xa2, + 0x6a, 0x10, 0x92, 0x88, 0xc0, 0xd5, 0x18, 0x56, 0x13, 0x58, 0xed, 0x57, 0x8a, 0xab, 0xa6, 0x87, + 0x7d, 0xa2, 0xf1, 0xdf, 0x98, 0x55, 0x14, 0x6d, 0x42, 0x3d, 0x42, 0x35, 0xcb, 0xa4, 0x48, 0xeb, + 0x57, 0x2c, 0x14, 0x99, 0x15, 0xcd, 0x26, 0xd8, 0x4f, 0xf0, 0xf5, 0x18, 0x37, 0xf8, 0x4e, 0x8b, + 0x37, 0x09, 0xb4, 0xd6, 0x21, 0x1d, 0x12, 0xdb, 0xd9, 0x6a, 0x7c, 0xa0, 0x43, 0x48, 0xc7, 0x45, + 0x1a, 0xdf, 0x59, 0xbd, 0xb6, 0x66, 0xfa, 0x83, 0x04, 0xda, 0x88, 0x90, 0xef, 0xa0, 0xd0, 0xc3, + 0x7e, 0xa4, 0x99, 0x96, 0x8d, 0x67, 0xd3, 0x2d, 0x6e, 0x4e, 0x6e, 0xd3, 0x25, 0x34, 0xba, 0x76, + 0x19, 0xe5, 0xd7, 0x34, 0x58, 0x68, 0x9a, 0xa1, 0xe9, 0x51, 0xf8, 0x05, 0x58, 0xf6, 0xcc, 0x13, + 0xa3, 0x6f, 0xba, 0xd8, 0x31, 0x23, 0x12, 0xd2, 0x82, 0x20, 0x0b, 0xa5, 0xa5, 0xea, 0xfa, 0x68, + 0x28, 0xdd, 0x19, 0x98, 0x9e, 0xbb, 0xab, 0xbc, 0x8d, 0x2b, 0xfa, 0x92, 0x67, 0x9e, 0x7c, 0x35, + 0xd9, 0xc3, 0x47, 0x00, 0x76, 0x31, 0x8d, 0x48, 0x88, 0x6d, 0xd3, 0x35, 0x90, 0x1f, 0x85, 0x18, + 0xd1, 0xc2, 0x2d, 0xee, 0xe5, 0xee, 0x68, 0x28, 0xad, 0xc7, 0x5e, 0xfe, 0xcd, 0x51, 0xf4, 0xd5, + 0xa9, 0xb1, 0x1e, 0xdb, 0xe0, 0x37, 0x02, 0x58, 0xf6, 0xb0, 0x6f, 0x74, 0x4c, 0xa6, 0x12, 0xb6, + 0x11, 0x2d, 0xcc, 0xc9, 0x73, 0xa5, 0xec, 0xf6, 0xa6, 0x9a, 0xc8, 0xc5, 0xb4, 0x55, 0x13, 0x6d, + 0xd5, 0x3d, 0x64, 0xd7, 0x08, 0xf6, 0xab, 0x0f, 0x2f, 0x86, 0x52, 0x6a, 0x34, 0x94, 0xd6, 0x92, + 0x94, 0x67, 0x3d, 0x28, 0x2f, 0x5e, 0x4b, 0x1f, 0x75, 0x70, 0xd4, 0xed, 0x59, 0xaa, 0x4d, 0xbc, + 0x44, 0xf6, 0xe4, 0xaf, 0x4c, 0x9d, 0xe3, 0x44, 0x9b, 0xc4, 0x17, 0xd5, 0x73, 0x1e, 0xf6, 0xbf, + 0x34, 0x69, 0x93, 0x87, 0x87, 0x36, 0xc8, 0x5b, 0x21, 0x76, 0x3a, 0xc8, 0x40, 0x27, 0xc8, 0xee, + 0x71, 0x8d, 0xd2, 0xf2, 0x5c, 0x29, 0x53, 0xfd, 0x6c, 0x34, 0x94, 0x3e, 0x88, 0x03, 0x5e, 0x67, + 0x28, 0xbf, 0xfd, 0x54, 0x5e, 0x4b, 0x12, 0xbe, 0xef, 0x38, 0x21, 0xa2, 0xb4, 0x15, 0x85, 0xd8, + 0xef, 0x3c, 0x7f, 0xf3, 0x72, 0x4b, 0xd0, 0x57, 0x62, 0x7e, 0x7d, 0x4c, 0x87, 0x35, 0x30, 0x6f, + 0x3a, 0x1e, 0xf6, 0x0b, 0xf3, 0xb2, 0x50, 0xca, 0x54, 0xcb, 0xa3, 0xa1, 0x94, 0x8b, 0x3d, 0x73, + 0xf3, 0x7b, 0xdc, 0xc5, 0x67, 0xe1, 0x13, 0xb0, 0xd4, 0x46, 0xc8, 0x78, 0xda, 0xc5, 0x11, 0x72, + 0x31, 0x8d, 0x0a, 0x0b, 0x3c, 0xcd, 0x9d, 0xa9, 0x2e, 0x6f, 0xc1, 0xef, 0x71, 0x9a, 0x6b, 0x23, + 0xf4, 0x78, 0xcc, 0xdd, 0xdd, 0xf8, 0xee, 0x5c, 0x4a, 0xfd, 0x75, 0x2e, 0x09, 0xa7, 0x6f, 0x5e, + 0x6e, 0x2d, 0x8f, 0x9b, 0x24, 0x2e, 0x22, 0xe5, 0xe7, 0x5b, 0x20, 0x33, 0xa9, 0x08, 0xf8, 0x31, + 0x58, 0xf4, 0x88, 0x8f, 0x8f, 0x51, 0xc8, 0x6b, 0x29, 0x53, 0x85, 0xa3, 0xa1, 0xb4, 0x9c, 0x3c, + 0x4c, 0x0c, 0x28, 0xfa, 0x98, 0x02, 0x1f, 0x80, 0x3c, 0x09, 0x50, 0xc8, 0x4e, 0x1a, 0x66, 0x9c, + 0x05, 0x2f, 0x9e, 0x4c, 0x75, 0x63, 0x2a, 0xef, 0x75, 0x86, 0xa2, 0xaf, 0x8c, 0x4d, 0x49, 0xe6, + 0x30, 0x02, 0x79, 0x9b, 0xf8, 0x14, 0xf9, 0xb4, 0x47, 0x8d, 0xa0, 0x67, 0x1d, 0xa3, 0x41, 0x61, + 0x4e, 0x16, 0x4a, 0xd9, 0xed, 0x35, 0x35, 0x6e, 0x22, 0x75, 0xdc, 0x44, 0xea, 0x7d, 0x7f, 0x50, + 0xbd, 0x37, 0xf5, 0x7e, 0xfd, 0x9c, 0xf2, 0xcb, 0x54, 0x18, 0x3b, 0x1c, 0x04, 0x11, 0x51, 0x9b, + 0x3d, 0xeb, 0x21, 0x1a, 0xe8, 0x2b, 0x13, 0x6a, 0x93, 0x33, 0xe1, 0x27, 0x00, 0x30, 0x93, 0x11, + 0x90, 0xa7, 0x28, 0x2c, 0xa4, 0x65, 0xa1, 0x34, 0x57, 0xbd, 0x33, 0x1a, 0x4a, 0xab, 0x53, 0xcf, + 0x31, 0xa6, 0xe8, 0x19, 0xb6, 0x69, 0xb2, 0xf5, 0x6e, 0xee, 0xd9, 0xb9, 0x94, 0x4a, 0x04, 0x4d, + 0x29, 0x06, 0xc8, 0x4f, 0xc4, 0x3b, 0x0a, 0x1c, 0x33, 0x42, 0x14, 0xd6, 0xc1, 0x62, 0x2f, 0x5e, + 0x16, 0x04, 0x5e, 0xfe, 0xb2, 0x3a, 0x6d, 0x77, 0x95, 0xb5, 0xbb, 0x7a, 0xed, 0x4c, 0x35, 0xc3, + 0x5a, 0x20, 0x7e, 0xba, 0xf1, 0xd9, 0xdd, 0x34, 0x0f, 0xf0, 0xb7, 0x00, 0x40, 0x95, 0x17, 0x5c, + 0xc3, 0x6f, 0x13, 0xb8, 0x01, 0x32, 0x49, 0xb9, 0x62, 0x87, 0xbf, 0x50, 0x5a, 0xbf, 0x1d, 0x1b, + 0x1a, 0x0e, 0xfc, 0x1c, 0x64, 0x13, 0x90, 0x49, 0x9d, 0xbc, 0x44, 0xe1, 0x5d, 0x95, 0xa2, 0x83, + 0x98, 0xcc, 0x8c, 0x50, 0x04, 0x59, 0xb7, 0x62, 0xd8, 0x5d, 0x13, 0xfb, 0xcc, 0x33, 0x13, 0x3f, + 0xa3, 0x67, 0xdc, 0x4a, 0x8d, 0x59, 0x1a, 0x0e, 0x94, 0x41, 0x8e, 0xe1, 0x2e, 0x46, 0x7e, 0xc4, + 0x08, 0x69, 0x4e, 0x00, 0x6e, 0xa5, 0xc6, 0x4d, 0x0d, 0x07, 0xee, 0x83, 0xa5, 0x24, 0xb8, 0x4d, + 0xfc, 0x36, 0xee, 0xf0, 0x6e, 0xc8, 0x6e, 0x8b, 0xea, 0x64, 0xf8, 0xb2, 0x69, 0xa6, 0xf6, 0x2b, + 0x6a, 0x7c, 0x9d, 0x1a, 0x67, 0xcd, 0xde, 0x3c, 0x67, 0xcd, 0x00, 0xca, 0x8f, 0x02, 0x58, 0x69, + 0x22, 0xdf, 0xc1, 0x7e, 0x67, 0x0f, 0x05, 0x84, 0xe2, 0x88, 0xc2, 0x4f, 0x41, 0x26, 0x44, 0x36, + 0x0e, 0x58, 0xc8, 0xa4, 0x3e, 0xdf, 0x7d, 0xbd, 0x29, 0x15, 0xb6, 0xc1, 0x3c, 0x1b, 0xe4, 0xac, + 0x38, 0xd9, 0x7b, 0xac, 0xdf, 0x38, 0x8e, 0xf8, 0x2c, 0xda, 0x61, 0xe9, 0xbc, 0x78, 0x2d, 0x95, + 0xfe, 0xc3, 0xcc, 0xe1, 0x03, 0x27, 0x69, 0x62, 0xee, 0x5e, 0xe9, 0x83, 0x1c, 0x37, 0x3e, 0x0e, + 0xcd, 0x20, 0x40, 0xe1, 0x34, 0xae, 0xf0, 0xbf, 0xc6, 0xdd, 0xfa, 0x41, 0x00, 0x50, 0x47, 0x34, + 0x60, 0x05, 0xae, 0x23, 0xda, 0x73, 0xa3, 0xc3, 0x41, 0x80, 0xe0, 0x0e, 0x90, 0xf5, 0x7a, 0xab, + 0x79, 0xb0, 0xdf, 0xaa, 0x1b, 0x7a, 0xbd, 0x75, 0xf4, 0xe8, 0xd0, 0x38, 0xfc, 0xba, 0x59, 0x37, + 0x8e, 0xf6, 0x5b, 0xcd, 0x7a, 0xad, 0xf1, 0xa0, 0x51, 0xdf, 0xcb, 0xa7, 0x8a, 0x2b, 0xa7, 0x67, + 0x72, 0x76, 0xc6, 0x04, 0x3f, 0x04, 0xeb, 0x37, 0x1e, 0xdb, 0x3f, 0x38, 0x68, 0xe6, 0x85, 0xe2, + 0xed, 0xd3, 0x33, 0x39, 0xcd, 0xd6, 0xb0, 0x0c, 0x36, 0x6f, 0x24, 0xb6, 0x8e, 0x6a, 0xb5, 0x7a, + 0xab, 0x95, 0xbf, 0x55, 0xcc, 0x9e, 0x9e, 0xc9, 0x8b, 0xc9, 0xb6, 0x98, 0x7e, 0xf6, 0xbd, 0x98, + 0xaa, 0x1e, 0x5c, 0xfc, 0x29, 0xa6, 0x9e, 0x5f, 0x8a, 0xc2, 0xc5, 0xa5, 0x28, 0xbc, 0xba, 0x14, + 0x85, 0x3f, 0x2e, 0x45, 0xe1, 0xdb, 0x2b, 0x31, 0xf5, 0xea, 0x4a, 0x4c, 0xfd, 0x7e, 0x25, 0xa6, + 0x9e, 0x94, 0x67, 0x34, 0x60, 0xa5, 0x83, 0xcd, 0xb2, 0x6b, 0x5a, 0x54, 0x3b, 0x68, 0xf2, 0xcf, + 0xe2, 0xc9, 0xe4, 0x33, 0xcf, 0xe5, 0xb0, 0x16, 0xf8, 0x68, 0xb8, 0xf7, 0x4f, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xdc, 0x35, 0x91, 0x05, 0x05, 0x08, 0x00, 0x00, } func (this *Params) Equal(that interface{}) bool {