diff --git a/api/go.mod b/api/go.mod index 77dad823..0a9a7ce8 100644 --- a/api/go.mod +++ b/api/go.mod @@ -3,19 +3,19 @@ module github.com/initia-labs/OPinit/api go 1.22 require ( - cosmossdk.io/api v0.7.4 + cosmossdk.io/api v0.7.5 github.com/cosmos/cosmos-proto v1.0.0-beta.5 - github.com/cosmos/gogoproto v1.4.12 - google.golang.org/genproto/googleapis/api v0.0.0-20240304212257-790db918fca8 - google.golang.org/grpc v1.63.2 - google.golang.org/protobuf v1.34.1 + github.com/cosmos/gogoproto v1.5.0 + google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 + google.golang.org/grpc v1.65.0 + google.golang.org/protobuf v1.34.2 ) require ( github.com/google/go-cmp v0.6.0 // indirect - golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0 // indirect - golang.org/x/net v0.25.0 // indirect - golang.org/x/sys v0.20.0 // indirect - golang.org/x/text v0.15.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda // indirect + golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 // indirect + golang.org/x/net v0.27.0 // indirect + golang.org/x/sys v0.22.0 // indirect + golang.org/x/text v0.16.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240709173604-40e1e62336c5 // indirect ) diff --git a/api/go.sum b/api/go.sum index aa1bdf09..41425465 100644 --- a/api/go.sum +++ b/api/go.sum @@ -1,24 +1,26 @@ -cosmossdk.io/api v0.7.4 h1:sPo8wKwCty1lht8kgL3J7YL1voJywP3YWuA5JKkBz30= -cosmossdk.io/api v0.7.4/go.mod h1:IcxpYS5fMemZGqyYtErK7OqvdM0C8kdW3dq8Q/XIG38= +cosmossdk.io/api v0.7.5 h1:eMPTReoNmGUm8DeiQL9DyM8sYDjEhWzL1+nLbI9DqtQ= +cosmossdk.io/api v0.7.5/go.mod h1:IcxpYS5fMemZGqyYtErK7OqvdM0C8kdW3dq8Q/XIG38= github.com/cosmos/cosmos-proto v1.0.0-beta.5 h1:eNcayDLpip+zVLRLYafhzLvQlSmyab+RC5W7ZfmxJLA= github.com/cosmos/cosmos-proto v1.0.0-beta.5/go.mod h1:hQGLpiIUloJBMdQMMWb/4wRApmI9hjHH05nefC0Ojec= -github.com/cosmos/gogoproto v1.4.12 h1:vB6Lbe/rtnYGjQuFxkPiPYiCybqFT8QvLipDZP8JpFE= -github.com/cosmos/gogoproto v1.4.12/go.mod h1:LnZob1bXRdUoqMMtwYlcR3wjiElmlC+FkjaZRv1/eLY= +github.com/cosmos/gogoproto v1.5.0 h1:SDVwzEqZDDBoslaeZg+dGE55hdzHfgUA40pEanMh52o= +github.com/cosmos/gogoproto v1.5.0/go.mod h1:iUM31aofn3ymidYG6bUR5ZFrk+Om8p5s754eMUcyp8I= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0 h1:985EYyeCOxTpcgOTJpflJUwOeEz0CQOdPt73OzpE9F8= -golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0/go.mod h1:/lliqkxwWAhPjf5oSOIJup2XcqJaw8RGS6k3TGEc7GI= -golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= -golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= -golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= -golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= -golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -google.golang.org/genproto/googleapis/api v0.0.0-20240304212257-790db918fca8 h1:8eadJkXbwDEMNwcB5O0s5Y5eCfyuCLdvaiOIaGTrWmQ= -google.golang.org/genproto/googleapis/api v0.0.0-20240304212257-790db918fca8/go.mod h1:O1cOfN1Cy6QEYr7VxtjOyP5AdAuR0aJ/MYZaaof623Y= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda h1:LI5DOvAxUPMv/50agcLLoo+AdWc1irS9Rzz4vPuD1V4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= -google.golang.org/grpc v1.63.2 h1:MUeiw1B2maTVZthpU5xvASfTh3LDbxHd6IJ6QQVU+xM= -google.golang.org/grpc v1.63.2/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA= -google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg= -google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 h1:vr/HnozRka3pE4EsMEg1lgkXJkTFJCVUX+S/ZT6wYzM= +golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842/go.mod h1:XtvwrStGgqGPLc4cjQfWqZHG1YFdYs6swckp8vpsjnc= +golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys= +golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= +golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= +golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= +golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= +google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 h1:7whR9kGa5LUwFtpLm2ArCEejtnxlGeLbAyjFY8sGNFw= +google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157/go.mod h1:99sLkeliLXfdj2J75X3Ho+rrVCaJze0uwN7zDDkjPVU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240709173604-40e1e62336c5 h1:SbSDUWW1PAO24TNpLdeheoYPd7kllICcLU52x6eD4kQ= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240709173604-40e1e62336c5/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= +google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc= +google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= diff --git a/api/opinit/opchild/v1/genesis.pulsar.go b/api/opinit/opchild/v1/genesis.pulsar.go index 943b7463..2e403b09 100644 --- a/api/opinit/opchild/v1/genesis.pulsar.go +++ b/api/opinit/opchild/v1/genesis.pulsar.go @@ -117,63 +117,11 @@ func (x *_GenesisState_3_list) IsValid() bool { return x.list != nil } -var _ protoreflect.List = (*_GenesisState_4_list)(nil) - -type _GenesisState_4_list struct { - list *[]*PendingDeposits -} - -func (x *_GenesisState_4_list) Len() int { - if x.list == nil { - return 0 - } - return len(*x.list) -} - -func (x *_GenesisState_4_list) Get(i int) protoreflect.Value { - return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) -} - -func (x *_GenesisState_4_list) Set(i int, value protoreflect.Value) { - valueUnwrapped := value.Message() - concreteValue := valueUnwrapped.Interface().(*PendingDeposits) - (*x.list)[i] = concreteValue -} - -func (x *_GenesisState_4_list) Append(value protoreflect.Value) { - valueUnwrapped := value.Message() - concreteValue := valueUnwrapped.Interface().(*PendingDeposits) - *x.list = append(*x.list, concreteValue) -} - -func (x *_GenesisState_4_list) AppendMutable() protoreflect.Value { - v := new(PendingDeposits) - *x.list = append(*x.list, v) - return protoreflect.ValueOfMessage(v.ProtoReflect()) -} - -func (x *_GenesisState_4_list) Truncate(n int) { - for i := n; i < len(*x.list); i++ { - (*x.list)[i] = nil - } - *x.list = (*x.list)[:n] -} - -func (x *_GenesisState_4_list) NewElement() protoreflect.Value { - v := new(PendingDeposits) - return protoreflect.ValueOfMessage(v.ProtoReflect()) -} - -func (x *_GenesisState_4_list) IsValid() bool { - return x.list != nil -} - var ( md_GenesisState protoreflect.MessageDescriptor fd_GenesisState_params protoreflect.FieldDescriptor fd_GenesisState_last_validator_powers protoreflect.FieldDescriptor fd_GenesisState_validators protoreflect.FieldDescriptor - fd_GenesisState_pending_deposits protoreflect.FieldDescriptor fd_GenesisState_next_l2_sequence protoreflect.FieldDescriptor fd_GenesisState_next_l1_sequence protoreflect.FieldDescriptor fd_GenesisState_bridge_info protoreflect.FieldDescriptor @@ -186,7 +134,6 @@ func init() { fd_GenesisState_params = md_GenesisState.Fields().ByName("params") fd_GenesisState_last_validator_powers = md_GenesisState.Fields().ByName("last_validator_powers") fd_GenesisState_validators = md_GenesisState.Fields().ByName("validators") - fd_GenesisState_pending_deposits = md_GenesisState.Fields().ByName("pending_deposits") fd_GenesisState_next_l2_sequence = md_GenesisState.Fields().ByName("next_l2_sequence") fd_GenesisState_next_l1_sequence = md_GenesisState.Fields().ByName("next_l1_sequence") fd_GenesisState_bridge_info = md_GenesisState.Fields().ByName("bridge_info") @@ -276,12 +223,6 @@ func (x *fastReflection_GenesisState) Range(f func(protoreflect.FieldDescriptor, return } } - if len(x.PendingDeposits) != 0 { - value := protoreflect.ValueOfList(&_GenesisState_4_list{list: &x.PendingDeposits}) - if !f(fd_GenesisState_pending_deposits, value) { - return - } - } if x.NextL2Sequence != uint64(0) { value := protoreflect.ValueOfUint64(x.NextL2Sequence) if !f(fd_GenesisState_next_l2_sequence, value) { @@ -327,8 +268,6 @@ func (x *fastReflection_GenesisState) Has(fd protoreflect.FieldDescriptor) bool return len(x.LastValidatorPowers) != 0 case "opinit.opchild.v1.GenesisState.validators": return len(x.Validators) != 0 - case "opinit.opchild.v1.GenesisState.pending_deposits": - return len(x.PendingDeposits) != 0 case "opinit.opchild.v1.GenesisState.next_l2_sequence": return x.NextL2Sequence != uint64(0) case "opinit.opchild.v1.GenesisState.next_l1_sequence": @@ -359,8 +298,6 @@ func (x *fastReflection_GenesisState) Clear(fd protoreflect.FieldDescriptor) { x.LastValidatorPowers = nil case "opinit.opchild.v1.GenesisState.validators": x.Validators = nil - case "opinit.opchild.v1.GenesisState.pending_deposits": - x.PendingDeposits = nil case "opinit.opchild.v1.GenesisState.next_l2_sequence": x.NextL2Sequence = uint64(0) case "opinit.opchild.v1.GenesisState.next_l1_sequence": @@ -400,12 +337,6 @@ func (x *fastReflection_GenesisState) Get(descriptor protoreflect.FieldDescripto } listValue := &_GenesisState_3_list{list: &x.Validators} return protoreflect.ValueOfList(listValue) - case "opinit.opchild.v1.GenesisState.pending_deposits": - if len(x.PendingDeposits) == 0 { - return protoreflect.ValueOfList(&_GenesisState_4_list{}) - } - listValue := &_GenesisState_4_list{list: &x.PendingDeposits} - return protoreflect.ValueOfList(listValue) case "opinit.opchild.v1.GenesisState.next_l2_sequence": value := x.NextL2Sequence return protoreflect.ValueOfUint64(value) @@ -448,10 +379,6 @@ func (x *fastReflection_GenesisState) Set(fd protoreflect.FieldDescriptor, value lv := value.List() clv := lv.(*_GenesisState_3_list) x.Validators = *clv.list - case "opinit.opchild.v1.GenesisState.pending_deposits": - lv := value.List() - clv := lv.(*_GenesisState_4_list) - x.PendingDeposits = *clv.list case "opinit.opchild.v1.GenesisState.next_l2_sequence": x.NextL2Sequence = value.Uint() case "opinit.opchild.v1.GenesisState.next_l1_sequence": @@ -497,12 +424,6 @@ func (x *fastReflection_GenesisState) Mutable(fd protoreflect.FieldDescriptor) p } value := &_GenesisState_3_list{list: &x.Validators} return protoreflect.ValueOfList(value) - case "opinit.opchild.v1.GenesisState.pending_deposits": - if x.PendingDeposits == nil { - x.PendingDeposits = []*PendingDeposits{} - } - value := &_GenesisState_4_list{list: &x.PendingDeposits} - return protoreflect.ValueOfList(value) case "opinit.opchild.v1.GenesisState.bridge_info": if x.BridgeInfo == nil { x.BridgeInfo = new(BridgeInfo) @@ -536,9 +457,6 @@ func (x *fastReflection_GenesisState) NewField(fd protoreflect.FieldDescriptor) case "opinit.opchild.v1.GenesisState.validators": list := []*Validator{} return protoreflect.ValueOfList(&_GenesisState_3_list{list: &list}) - case "opinit.opchild.v1.GenesisState.pending_deposits": - list := []*PendingDeposits{} - return protoreflect.ValueOfList(&_GenesisState_4_list{list: &list}) case "opinit.opchild.v1.GenesisState.next_l2_sequence": return protoreflect.ValueOfUint64(uint64(0)) case "opinit.opchild.v1.GenesisState.next_l1_sequence": @@ -633,12 +551,6 @@ func (x *fastReflection_GenesisState) ProtoMethods() *protoiface.Methods { n += 1 + l + runtime.Sov(uint64(l)) } } - if len(x.PendingDeposits) > 0 { - for _, e := range x.PendingDeposits { - l = options.Size(e) - n += 1 + l + runtime.Sov(uint64(l)) - } - } if x.NextL2Sequence != 0 { n += 1 + runtime.Sov(uint64(x.NextL2Sequence)) } @@ -689,7 +601,7 @@ func (x *fastReflection_GenesisState) ProtoMethods() *protoiface.Methods { dAtA[i] = 0 } i-- - dAtA[i] = 0x40 + dAtA[i] = 0x38 } if x.BridgeInfo != nil { encoded, err := options.Marshal(x.BridgeInfo) @@ -703,33 +615,17 @@ func (x *fastReflection_GenesisState) ProtoMethods() *protoiface.Methods { copy(dAtA[i:], encoded) i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) i-- - dAtA[i] = 0x3a + dAtA[i] = 0x32 } if x.NextL1Sequence != 0 { i = runtime.EncodeVarint(dAtA, i, uint64(x.NextL1Sequence)) i-- - dAtA[i] = 0x30 + dAtA[i] = 0x28 } if x.NextL2Sequence != 0 { i = runtime.EncodeVarint(dAtA, i, uint64(x.NextL2Sequence)) i-- - dAtA[i] = 0x28 - } - if len(x.PendingDeposits) > 0 { - for iNdEx := len(x.PendingDeposits) - 1; iNdEx >= 0; iNdEx-- { - encoded, err := options.Marshal(x.PendingDeposits[iNdEx]) - if err != nil { - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, err - } - i -= len(encoded) - copy(dAtA[i:], encoded) - i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) - i-- - dAtA[i] = 0x22 - } + dAtA[i] = 0x20 } if len(x.Validators) > 0 { for iNdEx := len(x.Validators) - 1; iNdEx >= 0; iNdEx-- { @@ -931,40 +827,6 @@ func (x *fastReflection_GenesisState) ProtoMethods() *protoiface.Methods { } iNdEx = postIndex case 4: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field PendingDeposits", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - x.PendingDeposits = append(x.PendingDeposits, &PendingDeposits{}) - if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.PendingDeposits[len(x.PendingDeposits)-1]); err != nil { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err - } - iNdEx = postIndex - case 5: if wireType != 0 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field NextL2Sequence", wireType) } @@ -983,7 +845,7 @@ func (x *fastReflection_GenesisState) ProtoMethods() *protoiface.Methods { break } } - case 6: + case 5: if wireType != 0 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field NextL1Sequence", wireType) } @@ -1002,7 +864,7 @@ func (x *fastReflection_GenesisState) ProtoMethods() *protoiface.Methods { break } } - case 7: + case 6: if wireType != 2 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field BridgeInfo", wireType) } @@ -1038,7 +900,7 @@ func (x *fastReflection_GenesisState) ProtoMethods() *protoiface.Methods { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err } iNdEx = postIndex - case 8: + case 7: if wireType != 0 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Exported", wireType) } @@ -1586,13 +1448,11 @@ type GenesisState struct { // of the last-block's bonded validators. LastValidatorPowers []*LastValidatorPower `protobuf:"bytes,2,rep,name=last_validator_powers,json=lastValidatorPowers,proto3" json:"last_validator_powers,omitempty"` // delegations defines the validator set at genesis. - Validators []*Validator `protobuf:"bytes,3,rep,name=validators,proto3" json:"validators,omitempty"` - // the pending deposits that are not failed to be deposited. - PendingDeposits []*PendingDeposits `protobuf:"bytes,4,rep,name=pending_deposits,json=pendingDeposits,proto3" json:"pending_deposits,omitempty"` - NextL2Sequence uint64 `protobuf:"varint,5,opt,name=next_l2_sequence,json=nextL2Sequence,proto3" json:"next_l2_sequence,omitempty"` - NextL1Sequence uint64 `protobuf:"varint,6,opt,name=next_l1_sequence,json=nextL1Sequence,proto3" json:"next_l1_sequence,omitempty"` - BridgeInfo *BridgeInfo `protobuf:"bytes,7,opt,name=bridge_info,json=bridgeInfo,proto3" json:"bridge_info,omitempty"` - Exported bool `protobuf:"varint,8,opt,name=exported,proto3" json:"exported,omitempty"` + Validators []*Validator `protobuf:"bytes,3,rep,name=validators,proto3" json:"validators,omitempty"` + NextL2Sequence uint64 `protobuf:"varint,4,opt,name=next_l2_sequence,json=nextL2Sequence,proto3" json:"next_l2_sequence,omitempty"` + NextL1Sequence uint64 `protobuf:"varint,5,opt,name=next_l1_sequence,json=nextL1Sequence,proto3" json:"next_l1_sequence,omitempty"` + BridgeInfo *BridgeInfo `protobuf:"bytes,6,opt,name=bridge_info,json=bridgeInfo,proto3" json:"bridge_info,omitempty"` + Exported bool `protobuf:"varint,7,opt,name=exported,proto3" json:"exported,omitempty"` } func (x *GenesisState) Reset() { @@ -1636,13 +1496,6 @@ func (x *GenesisState) GetValidators() []*Validator { return nil } -func (x *GenesisState) GetPendingDeposits() []*PendingDeposits { - if x != nil { - return x.PendingDeposits - } - return nil -} - func (x *GenesisState) GetNextL2Sequence() uint64 { if x != nil { return x.NextL2Sequence @@ -1729,7 +1582,7 @@ var file_opinit_opchild_v1_genesis_proto_rawDesc = []byte{ 0x74, 0x6f, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2f, 0x6f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x79, 0x70, 0x65, - 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x85, 0x04, 0x0a, 0x0c, 0x47, 0x65, 0x6e, 0x65, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xab, 0x03, 0x0a, 0x0c, 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3c, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 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, @@ -1745,43 +1598,38 @@ var file_opinit_opchild_v1_genesis_proto_rawDesc = []byte{ 0x32, 0x1c, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x58, 0x0a, 0x10, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, - 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x22, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, - 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x73, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0f, - 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x73, 0x12, - 0x28, 0x0a, 0x10, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x6c, 0x32, 0x5f, 0x73, 0x65, 0x71, 0x75, 0x65, + 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x6c, 0x32, + 0x5f, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x0e, 0x6e, 0x65, 0x78, 0x74, 0x4c, 0x32, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x12, + 0x28, 0x0a, 0x10, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x6c, 0x31, 0x5f, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x6e, 0x65, 0x78, 0x74, 0x4c, - 0x32, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x6e, 0x65, 0x78, - 0x74, 0x5f, 0x6c, 0x31, 0x5f, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x0e, 0x6e, 0x65, 0x78, 0x74, 0x4c, 0x31, 0x53, 0x65, 0x71, 0x75, 0x65, - 0x6e, 0x63, 0x65, 0x12, 0x3e, 0x0a, 0x0b, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x69, 0x6e, - 0x66, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, - 0x74, 0x2e, 0x6f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x72, 0x69, - 0x64, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x49, - 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x22, - 0x68, 0x0a, 0x12, 0x4c, 0x61, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, - 0x50, 0x6f, 0x77, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, - 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x6f, 0x77, - 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x3a, - 0x08, 0x88, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x42, 0xca, 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, 0x0c, 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, 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, + 0x31, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x3e, 0x0a, 0x0b, 0x62, 0x72, 0x69, + 0x64, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, + 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x2e, + 0x76, 0x31, 0x2e, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x62, + 0x72, 0x69, 0x64, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x70, + 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x65, 0x78, 0x70, + 0x6f, 0x72, 0x74, 0x65, 0x64, 0x22, 0x68, 0x0a, 0x12, 0x4c, 0x61, 0x73, 0x74, 0x56, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x07, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, + 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, + 0x14, 0x0a, 0x05, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, + 0x70, 0x6f, 0x77, 0x65, 0x72, 0x3a, 0x08, 0x88, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x42, + 0xca, 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, 0x0c, 0x47, 0x65, 0x6e, 0x65, 0x73, + 0x69, 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 ( @@ -1802,20 +1650,18 @@ var file_opinit_opchild_v1_genesis_proto_goTypes = []interface{}{ (*LastValidatorPower)(nil), // 1: opinit.opchild.v1.LastValidatorPower (*Params)(nil), // 2: opinit.opchild.v1.Params (*Validator)(nil), // 3: opinit.opchild.v1.Validator - (*PendingDeposits)(nil), // 4: opinit.opchild.v1.PendingDeposits - (*BridgeInfo)(nil), // 5: opinit.opchild.v1.BridgeInfo + (*BridgeInfo)(nil), // 4: opinit.opchild.v1.BridgeInfo } var file_opinit_opchild_v1_genesis_proto_depIdxs = []int32{ 2, // 0: opinit.opchild.v1.GenesisState.params:type_name -> opinit.opchild.v1.Params 1, // 1: opinit.opchild.v1.GenesisState.last_validator_powers:type_name -> opinit.opchild.v1.LastValidatorPower 3, // 2: opinit.opchild.v1.GenesisState.validators:type_name -> opinit.opchild.v1.Validator - 4, // 3: opinit.opchild.v1.GenesisState.pending_deposits:type_name -> opinit.opchild.v1.PendingDeposits - 5, // 4: opinit.opchild.v1.GenesisState.bridge_info:type_name -> opinit.opchild.v1.BridgeInfo - 5, // [5:5] is the sub-list for method output_type - 5, // [5:5] is the sub-list for method input_type - 5, // [5:5] is the sub-list for extension type_name - 5, // [5:5] is the sub-list for extension extendee - 0, // [0:5] is the sub-list for field type_name + 4, // 3: opinit.opchild.v1.GenesisState.bridge_info:type_name -> opinit.opchild.v1.BridgeInfo + 4, // [4:4] is the sub-list for method output_type + 4, // [4:4] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 4, // [4:4] is the sub-list for extension extendee + 0, // [0:4] is the sub-list for field type_name } func init() { file_opinit_opchild_v1_genesis_proto_init() } diff --git a/api/opinit/opchild/v1/tx.pulsar.go b/api/opinit/opchild/v1/tx.pulsar.go index d7ada82c..e3b3f523 100644 --- a/api/opinit/opchild/v1/tx.pulsar.go +++ b/api/opinit/opchild/v1/tx.pulsar.go @@ -8914,6 +8914,7 @@ type MsgInitiateTokenWithdrawalResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + // l2 sequence number Sequence uint64 `protobuf:"varint,1,opt,name=sequence,proto3" json:"sequence,omitempty"` } @@ -9391,218 +9392,215 @@ var file_opinit_opchild_v1_tx_proto_rawDesc = []byte{ 0x6f, 0x70, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x2f, 0x4d, 0x73, 0x67, 0x53, 0x65, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x1a, 0x0a, 0x18, 0x4d, 0x73, 0x67, 0x53, 0x65, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa6, 0x03, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x46, 0x69, 0x6e, 0x61, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8c, 0x03, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 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, 0x2c, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 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, 0x04, 0x66, 0x72, 0x6f, - 0x6d, 0x12, 0x28, 0x0a, 0x02, 0x74, 0x6f, 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, 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, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, - 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x73, 0x65, - 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1d, - 0x0a, 0x0a, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x62, 0x61, 0x73, 0x65, 0x44, 0x65, 0x6e, 0x6f, 0x6d, 0x12, 0x1d, 0x0a, - 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x09, 0xc8, 0xde, 0x1f, - 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, 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, - 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, - 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, + 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x28, 0x0a, 0x02, 0x74, 0x6f, 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, 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, + 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x08, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x68, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x64, 0x65, 0x6e, + 0x6f, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x61, 0x73, 0x65, 0x44, 0x65, + 0x6e, 0x6f, 0x6d, 0x12, 0x1d, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x0c, 0x42, 0x09, 0xc8, 0xde, 0x1f, 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, 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, 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, 0xe1, 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, 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, + 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x06, + 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 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, 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, 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, + 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, 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, + 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, 0x1a, 0x32, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x63, + 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, 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, 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, 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, + 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, 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, 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, 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, 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, + 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, 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, + 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, 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, + 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, 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, + 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 ( diff --git a/api/opinit/opchild/v1/types.pulsar.go b/api/opinit/opchild/v1/types.pulsar.go index da1735a5..98d0a9df 100644 --- a/api/opinit/opchild/v1/types.pulsar.go +++ b/api/opinit/opchild/v1/types.pulsar.go @@ -2701,564 +2701,6 @@ func (x *fastReflection_BridgeInfo) ProtoMethods() *protoiface.Methods { } } -var _ protoreflect.List = (*_PendingDeposits_2_list)(nil) - -type _PendingDeposits_2_list struct { - list *[]*v1beta1.Coin -} - -func (x *_PendingDeposits_2_list) Len() int { - if x.list == nil { - return 0 - } - return len(*x.list) -} - -func (x *_PendingDeposits_2_list) Get(i int) protoreflect.Value { - return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) -} - -func (x *_PendingDeposits_2_list) Set(i int, value protoreflect.Value) { - valueUnwrapped := value.Message() - concreteValue := valueUnwrapped.Interface().(*v1beta1.Coin) - (*x.list)[i] = concreteValue -} - -func (x *_PendingDeposits_2_list) Append(value protoreflect.Value) { - valueUnwrapped := value.Message() - concreteValue := valueUnwrapped.Interface().(*v1beta1.Coin) - *x.list = append(*x.list, concreteValue) -} - -func (x *_PendingDeposits_2_list) AppendMutable() protoreflect.Value { - v := new(v1beta1.Coin) - *x.list = append(*x.list, v) - return protoreflect.ValueOfMessage(v.ProtoReflect()) -} - -func (x *_PendingDeposits_2_list) Truncate(n int) { - for i := n; i < len(*x.list); i++ { - (*x.list)[i] = nil - } - *x.list = (*x.list)[:n] -} - -func (x *_PendingDeposits_2_list) NewElement() protoreflect.Value { - v := new(v1beta1.Coin) - return protoreflect.ValueOfMessage(v.ProtoReflect()) -} - -func (x *_PendingDeposits_2_list) IsValid() bool { - return x.list != nil -} - -var ( - md_PendingDeposits protoreflect.MessageDescriptor - fd_PendingDeposits_recipient protoreflect.FieldDescriptor - fd_PendingDeposits_coins protoreflect.FieldDescriptor -) - -func init() { - file_opinit_opchild_v1_types_proto_init() - md_PendingDeposits = File_opinit_opchild_v1_types_proto.Messages().ByName("PendingDeposits") - fd_PendingDeposits_recipient = md_PendingDeposits.Fields().ByName("recipient") - fd_PendingDeposits_coins = md_PendingDeposits.Fields().ByName("coins") -} - -var _ protoreflect.Message = (*fastReflection_PendingDeposits)(nil) - -type fastReflection_PendingDeposits PendingDeposits - -func (x *PendingDeposits) ProtoReflect() protoreflect.Message { - return (*fastReflection_PendingDeposits)(x) -} - -func (x *PendingDeposits) slowProtoReflect() protoreflect.Message { - mi := &file_opinit_opchild_v1_types_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -var _fastReflection_PendingDeposits_messageType fastReflection_PendingDeposits_messageType -var _ protoreflect.MessageType = fastReflection_PendingDeposits_messageType{} - -type fastReflection_PendingDeposits_messageType struct{} - -func (x fastReflection_PendingDeposits_messageType) Zero() protoreflect.Message { - return (*fastReflection_PendingDeposits)(nil) -} -func (x fastReflection_PendingDeposits_messageType) New() protoreflect.Message { - return new(fastReflection_PendingDeposits) -} -func (x fastReflection_PendingDeposits_messageType) Descriptor() protoreflect.MessageDescriptor { - return md_PendingDeposits -} - -// Descriptor returns message descriptor, which contains only the protobuf -// type information for the message. -func (x *fastReflection_PendingDeposits) Descriptor() protoreflect.MessageDescriptor { - return md_PendingDeposits -} - -// Type returns the message type, which encapsulates both Go and protobuf -// type information. If the Go type information is not needed, -// it is recommended that the message descriptor be used instead. -func (x *fastReflection_PendingDeposits) Type() protoreflect.MessageType { - return _fastReflection_PendingDeposits_messageType -} - -// New returns a newly allocated and mutable empty message. -func (x *fastReflection_PendingDeposits) New() protoreflect.Message { - return new(fastReflection_PendingDeposits) -} - -// Interface unwraps the message reflection interface and -// returns the underlying ProtoMessage interface. -func (x *fastReflection_PendingDeposits) Interface() protoreflect.ProtoMessage { - return (*PendingDeposits)(x) -} - -// Range iterates over every populated field in an undefined order, -// calling f for each field descriptor and value encountered. -// Range returns immediately if f returns false. -// While iterating, mutating operations may only be performed -// on the current field descriptor. -func (x *fastReflection_PendingDeposits) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { - if x.Recipient != "" { - value := protoreflect.ValueOfString(x.Recipient) - if !f(fd_PendingDeposits_recipient, value) { - return - } - } - if len(x.Coins) != 0 { - value := protoreflect.ValueOfList(&_PendingDeposits_2_list{list: &x.Coins}) - if !f(fd_PendingDeposits_coins, value) { - return - } - } -} - -// Has reports whether a field is populated. -// -// Some fields have the property of nullability where it is possible to -// distinguish between the default value of a field and whether the field -// was explicitly populated with the default value. Singular message fields, -// member fields of a oneof, and proto2 scalar fields are nullable. Such -// fields are populated only if explicitly set. -// -// In other cases (aside from the nullable cases above), -// a proto3 scalar field is populated if it contains a non-zero value, and -// a repeated field is populated if it is non-empty. -func (x *fastReflection_PendingDeposits) Has(fd protoreflect.FieldDescriptor) bool { - switch fd.FullName() { - case "opinit.opchild.v1.PendingDeposits.recipient": - return x.Recipient != "" - case "opinit.opchild.v1.PendingDeposits.coins": - return len(x.Coins) != 0 - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: opinit.opchild.v1.PendingDeposits")) - } - panic(fmt.Errorf("message opinit.opchild.v1.PendingDeposits does not contain field %s", fd.FullName())) - } -} - -// Clear clears the field such that a subsequent Has call reports false. -// -// Clearing an extension field clears both the extension type and value -// associated with the given field number. -// -// Clear is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_PendingDeposits) Clear(fd protoreflect.FieldDescriptor) { - switch fd.FullName() { - case "opinit.opchild.v1.PendingDeposits.recipient": - x.Recipient = "" - case "opinit.opchild.v1.PendingDeposits.coins": - x.Coins = nil - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: opinit.opchild.v1.PendingDeposits")) - } - panic(fmt.Errorf("message opinit.opchild.v1.PendingDeposits does not contain field %s", fd.FullName())) - } -} - -// Get retrieves the value for a field. -// -// For unpopulated scalars, it returns the default value, where -// the default value of a bytes scalar is guaranteed to be a copy. -// For unpopulated composite types, it returns an empty, read-only view -// of the value; to obtain a mutable reference, use Mutable. -func (x *fastReflection_PendingDeposits) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { - switch descriptor.FullName() { - case "opinit.opchild.v1.PendingDeposits.recipient": - value := x.Recipient - return protoreflect.ValueOfString(value) - case "opinit.opchild.v1.PendingDeposits.coins": - if len(x.Coins) == 0 { - return protoreflect.ValueOfList(&_PendingDeposits_2_list{}) - } - listValue := &_PendingDeposits_2_list{list: &x.Coins} - return protoreflect.ValueOfList(listValue) - default: - if descriptor.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: opinit.opchild.v1.PendingDeposits")) - } - panic(fmt.Errorf("message opinit.opchild.v1.PendingDeposits does not contain field %s", descriptor.FullName())) - } -} - -// Set stores the value for a field. -// -// For a field belonging to a oneof, it implicitly clears any other field -// that may be currently set within the same oneof. -// For extension fields, it implicitly stores the provided ExtensionType. -// When setting a composite type, it is unspecified whether the stored value -// aliases the source's memory in any way. If the composite value is an -// empty, read-only value, then it panics. -// -// Set is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_PendingDeposits) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { - switch fd.FullName() { - case "opinit.opchild.v1.PendingDeposits.recipient": - x.Recipient = value.Interface().(string) - case "opinit.opchild.v1.PendingDeposits.coins": - lv := value.List() - clv := lv.(*_PendingDeposits_2_list) - x.Coins = *clv.list - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: opinit.opchild.v1.PendingDeposits")) - } - panic(fmt.Errorf("message opinit.opchild.v1.PendingDeposits does not contain field %s", fd.FullName())) - } -} - -// Mutable returns a mutable reference to a composite type. -// -// If the field is unpopulated, it may allocate a composite value. -// For a field belonging to a oneof, it implicitly clears any other field -// that may be currently set within the same oneof. -// For extension fields, it implicitly stores the provided ExtensionType -// if not already stored. -// It panics if the field does not contain a composite type. -// -// Mutable is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_PendingDeposits) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { - switch fd.FullName() { - case "opinit.opchild.v1.PendingDeposits.coins": - if x.Coins == nil { - x.Coins = []*v1beta1.Coin{} - } - value := &_PendingDeposits_2_list{list: &x.Coins} - return protoreflect.ValueOfList(value) - case "opinit.opchild.v1.PendingDeposits.recipient": - panic(fmt.Errorf("field recipient of message opinit.opchild.v1.PendingDeposits is not mutable")) - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: opinit.opchild.v1.PendingDeposits")) - } - panic(fmt.Errorf("message opinit.opchild.v1.PendingDeposits does not contain field %s", fd.FullName())) - } -} - -// NewField returns a new value that is assignable to the field -// for the given descriptor. For scalars, this returns the default value. -// For lists, maps, and messages, this returns a new, empty, mutable value. -func (x *fastReflection_PendingDeposits) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { - switch fd.FullName() { - case "opinit.opchild.v1.PendingDeposits.recipient": - return protoreflect.ValueOfString("") - case "opinit.opchild.v1.PendingDeposits.coins": - list := []*v1beta1.Coin{} - return protoreflect.ValueOfList(&_PendingDeposits_2_list{list: &list}) - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: opinit.opchild.v1.PendingDeposits")) - } - panic(fmt.Errorf("message opinit.opchild.v1.PendingDeposits does not contain field %s", fd.FullName())) - } -} - -// WhichOneof reports which field within the oneof is populated, -// returning nil if none are populated. -// It panics if the oneof descriptor does not belong to this message. -func (x *fastReflection_PendingDeposits) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { - switch d.FullName() { - default: - panic(fmt.Errorf("%s is not a oneof field in opinit.opchild.v1.PendingDeposits", d.FullName())) - } - panic("unreachable") -} - -// GetUnknown retrieves the entire list of unknown fields. -// The caller may only mutate the contents of the RawFields -// if the mutated bytes are stored back into the message with SetUnknown. -func (x *fastReflection_PendingDeposits) GetUnknown() protoreflect.RawFields { - return x.unknownFields -} - -// SetUnknown stores an entire list of unknown fields. -// The raw fields must be syntactically valid according to the wire format. -// An implementation may panic if this is not the case. -// Once stored, the caller must not mutate the content of the RawFields. -// An empty RawFields may be passed to clear the fields. -// -// SetUnknown is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_PendingDeposits) SetUnknown(fields protoreflect.RawFields) { - x.unknownFields = fields -} - -// IsValid reports whether the message is valid. -// -// An invalid message is an empty, read-only value. -// -// An invalid message often corresponds to a nil pointer of the concrete -// message type, but the details are implementation dependent. -// Validity is not part of the protobuf data model, and may not -// be preserved in marshaling or other operations. -func (x *fastReflection_PendingDeposits) IsValid() bool { - return x != nil -} - -// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. -// This method may return nil. -// -// The returned methods type is identical to -// "google.golang.org/protobuf/runtime/protoiface".Methods. -// Consult the protoiface package documentation for details. -func (x *fastReflection_PendingDeposits) ProtoMethods() *protoiface.Methods { - size := func(input protoiface.SizeInput) protoiface.SizeOutput { - x := input.Message.Interface().(*PendingDeposits) - if x == nil { - return protoiface.SizeOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Size: 0, - } - } - options := runtime.SizeInputToOptions(input) - _ = options - var n int - var l int - _ = l - l = len(x.Recipient) - if l > 0 { - n += 1 + l + runtime.Sov(uint64(l)) - } - if len(x.Coins) > 0 { - for _, e := range x.Coins { - l = options.Size(e) - n += 1 + l + runtime.Sov(uint64(l)) - } - } - if x.unknownFields != nil { - n += len(x.unknownFields) - } - return protoiface.SizeOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Size: n, - } - } - - marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { - x := input.Message.Interface().(*PendingDeposits) - if x == nil { - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, nil - } - options := runtime.MarshalInputToOptions(input) - _ = options - size := options.Size(x) - dAtA := make([]byte, size) - i := len(dAtA) - _ = i - var l int - _ = l - if x.unknownFields != nil { - i -= len(x.unknownFields) - copy(dAtA[i:], x.unknownFields) - } - if len(x.Coins) > 0 { - for iNdEx := len(x.Coins) - 1; iNdEx >= 0; iNdEx-- { - encoded, err := options.Marshal(x.Coins[iNdEx]) - if err != nil { - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, err - } - i -= len(encoded) - copy(dAtA[i:], encoded) - i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) - i-- - dAtA[i] = 0x12 - } - } - if len(x.Recipient) > 0 { - i -= len(x.Recipient) - copy(dAtA[i:], x.Recipient) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Recipient))) - i-- - dAtA[i] = 0xa - } - if input.Buf != nil { - input.Buf = append(input.Buf, dAtA...) - } else { - input.Buf = dAtA - } - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, nil - } - unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { - x := input.Message.Interface().(*PendingDeposits) - if x == nil { - return protoiface.UnmarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Flags: input.Flags, - }, nil - } - options := runtime.UnmarshalInputToOptions(input) - _ = options - dAtA := input.Buf - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: PendingDeposits: wiretype end group for non-group") - } - if fieldNum <= 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: PendingDeposits: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Recipient", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - x.Recipient = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Coins", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - x.Coins = append(x.Coins, &v1beta1.Coin{}) - if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Coins[len(x.Coins)-1]); err != nil { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := runtime.Skip(dAtA[iNdEx:]) - if err != nil { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if (iNdEx + skippy) > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - if !options.DiscardUnknown { - x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) - } - iNdEx += skippy - } - } - - if iNdEx > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil - } - return &protoiface.Methods{ - NoUnkeyedLiterals: struct{}{}, - Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, - Size: size, - Marshal: marshal, - Unmarshal: unmarshal, - Merge: nil, - CheckInitialized: nil, - } -} - var _ protoreflect.List = (*_CoinsWrapper_1_list)(nil) type _CoinsWrapper_1_list struct { @@ -3330,7 +2772,7 @@ func (x *CoinsWrapper) ProtoReflect() protoreflect.Message { } func (x *CoinsWrapper) slowProtoReflect() protoreflect.Message { - mi := &file_opinit_opchild_v1_types_proto_msgTypes[5] + mi := &file_opinit_opchild_v1_types_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4084,52 +3526,6 @@ func (x *BridgeInfo) GetBridgeConfig() *v1.BridgeConfig { return nil } -// PendingDeposits defines the set of pending deposits. -type PendingDeposits struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // recipient is the address of the recipient. - Recipient string `protobuf:"bytes,1,opt,name=recipient,proto3" json:"recipient,omitempty"` - // coins is a list of coins to be deposited. - Coins []*v1beta1.Coin `protobuf:"bytes,2,rep,name=coins,proto3" json:"coins,omitempty"` -} - -func (x *PendingDeposits) Reset() { - *x = PendingDeposits{} - if protoimpl.UnsafeEnabled { - mi := &file_opinit_opchild_v1_types_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PendingDeposits) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PendingDeposits) ProtoMessage() {} - -// Deprecated: Use PendingDeposits.ProtoReflect.Descriptor instead. -func (*PendingDeposits) Descriptor() ([]byte, []int) { - return file_opinit_opchild_v1_types_proto_rawDescGZIP(), []int{4} -} - -func (x *PendingDeposits) GetRecipient() string { - if x != nil { - return x.Recipient - } - return "" -} - -func (x *PendingDeposits) GetCoins() []*v1beta1.Coin { - if x != nil { - return x.Coins - } - return nil -} - // CoinsWrapper defines the set of coins. type CoinsWrapper struct { state protoimpl.MessageState @@ -4142,7 +3538,7 @@ type CoinsWrapper struct { func (x *CoinsWrapper) Reset() { *x = CoinsWrapper{} if protoimpl.UnsafeEnabled { - mi := &file_opinit_opchild_v1_types_proto_msgTypes[5] + mi := &file_opinit_opchild_v1_types_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4156,7 +3552,7 @@ func (*CoinsWrapper) ProtoMessage() {} // Deprecated: Use CoinsWrapper.ProtoReflect.Descriptor instead. func (*CoinsWrapper) Descriptor() ([]byte, []int) { - return file_opinit_opchild_v1_types_proto_rawDescGZIP(), []int{5} + return file_opinit_opchild_v1_types_proto_rawDescGZIP(), []int{4} } func (x *CoinsWrapper) GetCoins() []*v1beta1.Coin { @@ -4180,9 +3576,9 @@ var file_opinit_opchild_v1_types_proto_rawDesc = []byte{ 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x1b, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2f, 0x61, 0x62, - 0x63, 0x69, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, - 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2f, 0x6f, 0x70, 0x68, 0x6f, 0x73, 0x74, 0x2f, 0x76, 0x31, + 0x6f, 0x1a, 0x1c, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2f, 0x6f, 0x70, 0x68, 0x6f, 0x73, 0x74, + 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x1b, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2f, 0x61, 0x62, 0x63, 0x69, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xcd, 0x04, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x40, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, @@ -4262,50 +3658,39 @@ var file_opinit_opchild_v1_types_proto_rawDesc = []byte{ 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x68, 0x6f, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0c, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x22, 0xb1, 0x01, 0x0a, 0x0f, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, - 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x69, - 0x70, 0x69, 0x65, 0x6e, 0x74, 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, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, - 0x12, 0x66, 0x0a, 0x05, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x18, 0x02, 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, 0x35, 0xc8, 0xde, 0x1f, 0x00, - 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, 0x05, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x22, 0x76, 0x0a, 0x0c, 0x43, 0x6f, 0x69, 0x6e, - 0x73, 0x57, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x12, 0x66, 0x0a, 0x05, 0x63, 0x6f, 0x69, 0x6e, - 0x73, 0x18, 0x01, 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, 0x35, 0xc8, 0xde, 0x1f, 0x00, 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, 0x05, 0x63, 0x6f, 0x69, 0x6e, 0x73, - 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, + 0x6e, 0x66, 0x69, 0x67, 0x22, 0x76, 0x0a, 0x0c, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x57, 0x72, 0x61, + 0x70, 0x70, 0x65, 0x72, 0x12, 0x66, 0x0a, 0x05, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x18, 0x01, 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, 0x35, + 0xc8, 0xde, 0x1f, 0x00, 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, 0x05, 0x63, 0x6f, 0x69, 0x6e, 0x73, 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 ( @@ -4321,33 +3706,31 @@ func file_opinit_opchild_v1_types_proto_rawDescGZIP() []byte { } 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_msgTypes = make([]protoimpl.MessageInfo, 5) var file_opinit_opchild_v1_types_proto_goTypes = []interface{}{ (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 + (*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 } var file_opinit_opchild_v1_types_proto_depIdxs = []int32{ - 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 - 6, // [6:6] is the sub-list for extension extendee - 0, // [0:6] is the sub-list for field type_name + 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.CoinsWrapper.coins:type_name -> cosmos.base.v1beta1.Coin + 5, // [5:5] is the sub-list for method output_type + 5, // [5:5] is the sub-list for method input_type + 5, // [5:5] is the sub-list for extension type_name + 5, // [5:5] is the sub-list for extension extendee + 0, // [0:5] is the sub-list for field type_name } func init() { file_opinit_opchild_v1_types_proto_init() } @@ -4405,18 +3788,6 @@ func file_opinit_opchild_v1_types_proto_init() { } } file_opinit_opchild_v1_types_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PendingDeposits); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_opinit_opchild_v1_types_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CoinsWrapper); i { case 0: return &v.state @@ -4435,7 +3806,7 @@ func file_opinit_opchild_v1_types_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_opinit_opchild_v1_types_proto_rawDesc, NumEnums: 1, - NumMessages: 6, + NumMessages: 5, NumExtensions: 0, NumServices: 0, }, diff --git a/api/opinit/ophost/v1/tx.pulsar.go b/api/opinit/ophost/v1/tx.pulsar.go index fdba084c..ce03bcbf 100644 --- a/api/opinit/ophost/v1/tx.pulsar.go +++ b/api/opinit/ophost/v1/tx.pulsar.go @@ -4806,7 +4806,7 @@ var ( fd_MsgFinalizeTokenWithdrawal_amount protoreflect.FieldDescriptor fd_MsgFinalizeTokenWithdrawal_version protoreflect.FieldDescriptor fd_MsgFinalizeTokenWithdrawal_storage_root protoreflect.FieldDescriptor - fd_MsgFinalizeTokenWithdrawal_latest_block_hash protoreflect.FieldDescriptor + fd_MsgFinalizeTokenWithdrawal_last_block_hash protoreflect.FieldDescriptor ) func init() { @@ -4821,7 +4821,7 @@ func init() { fd_MsgFinalizeTokenWithdrawal_amount = md_MsgFinalizeTokenWithdrawal.Fields().ByName("amount") fd_MsgFinalizeTokenWithdrawal_version = md_MsgFinalizeTokenWithdrawal.Fields().ByName("version") fd_MsgFinalizeTokenWithdrawal_storage_root = md_MsgFinalizeTokenWithdrawal.Fields().ByName("storage_root") - fd_MsgFinalizeTokenWithdrawal_latest_block_hash = md_MsgFinalizeTokenWithdrawal.Fields().ByName("latest_block_hash") + fd_MsgFinalizeTokenWithdrawal_last_block_hash = md_MsgFinalizeTokenWithdrawal.Fields().ByName("last_block_hash") } var _ protoreflect.Message = (*fastReflection_MsgFinalizeTokenWithdrawal)(nil) @@ -4943,9 +4943,9 @@ func (x *fastReflection_MsgFinalizeTokenWithdrawal) Range(f func(protoreflect.Fi return } } - if len(x.LatestBlockHash) != 0 { - value := protoreflect.ValueOfBytes(x.LatestBlockHash) - if !f(fd_MsgFinalizeTokenWithdrawal_latest_block_hash, value) { + if len(x.LastBlockHash) != 0 { + value := protoreflect.ValueOfBytes(x.LastBlockHash) + if !f(fd_MsgFinalizeTokenWithdrawal_last_block_hash, value) { return } } @@ -4982,8 +4982,8 @@ func (x *fastReflection_MsgFinalizeTokenWithdrawal) Has(fd protoreflect.FieldDes return len(x.Version) != 0 case "opinit.ophost.v1.MsgFinalizeTokenWithdrawal.storage_root": return len(x.StorageRoot) != 0 - case "opinit.ophost.v1.MsgFinalizeTokenWithdrawal.latest_block_hash": - return len(x.LatestBlockHash) != 0 + case "opinit.ophost.v1.MsgFinalizeTokenWithdrawal.last_block_hash": + return len(x.LastBlockHash) != 0 default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: opinit.ophost.v1.MsgFinalizeTokenWithdrawal")) @@ -5018,8 +5018,8 @@ func (x *fastReflection_MsgFinalizeTokenWithdrawal) Clear(fd protoreflect.FieldD x.Version = nil case "opinit.ophost.v1.MsgFinalizeTokenWithdrawal.storage_root": x.StorageRoot = nil - case "opinit.ophost.v1.MsgFinalizeTokenWithdrawal.latest_block_hash": - x.LatestBlockHash = nil + case "opinit.ophost.v1.MsgFinalizeTokenWithdrawal.last_block_hash": + x.LastBlockHash = nil default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: opinit.ophost.v1.MsgFinalizeTokenWithdrawal")) @@ -5066,8 +5066,8 @@ func (x *fastReflection_MsgFinalizeTokenWithdrawal) Get(descriptor protoreflect. case "opinit.ophost.v1.MsgFinalizeTokenWithdrawal.storage_root": value := x.StorageRoot return protoreflect.ValueOfBytes(value) - case "opinit.ophost.v1.MsgFinalizeTokenWithdrawal.latest_block_hash": - value := x.LatestBlockHash + case "opinit.ophost.v1.MsgFinalizeTokenWithdrawal.last_block_hash": + value := x.LastBlockHash return protoreflect.ValueOfBytes(value) default: if descriptor.IsExtension() { @@ -5109,8 +5109,8 @@ func (x *fastReflection_MsgFinalizeTokenWithdrawal) Set(fd protoreflect.FieldDes x.Version = value.Bytes() case "opinit.ophost.v1.MsgFinalizeTokenWithdrawal.storage_root": x.StorageRoot = value.Bytes() - case "opinit.ophost.v1.MsgFinalizeTokenWithdrawal.latest_block_hash": - x.LatestBlockHash = value.Bytes() + case "opinit.ophost.v1.MsgFinalizeTokenWithdrawal.last_block_hash": + x.LastBlockHash = value.Bytes() default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: opinit.ophost.v1.MsgFinalizeTokenWithdrawal")) @@ -5156,8 +5156,8 @@ func (x *fastReflection_MsgFinalizeTokenWithdrawal) Mutable(fd protoreflect.Fiel panic(fmt.Errorf("field version of message opinit.ophost.v1.MsgFinalizeTokenWithdrawal is not mutable")) case "opinit.ophost.v1.MsgFinalizeTokenWithdrawal.storage_root": panic(fmt.Errorf("field storage_root of message opinit.ophost.v1.MsgFinalizeTokenWithdrawal is not mutable")) - case "opinit.ophost.v1.MsgFinalizeTokenWithdrawal.latest_block_hash": - panic(fmt.Errorf("field latest_block_hash of message opinit.ophost.v1.MsgFinalizeTokenWithdrawal is not mutable")) + case "opinit.ophost.v1.MsgFinalizeTokenWithdrawal.last_block_hash": + panic(fmt.Errorf("field last_block_hash of message opinit.ophost.v1.MsgFinalizeTokenWithdrawal is not mutable")) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: opinit.ophost.v1.MsgFinalizeTokenWithdrawal")) @@ -5191,7 +5191,7 @@ func (x *fastReflection_MsgFinalizeTokenWithdrawal) NewField(fd protoreflect.Fie return protoreflect.ValueOfBytes(nil) case "opinit.ophost.v1.MsgFinalizeTokenWithdrawal.storage_root": return protoreflect.ValueOfBytes(nil) - case "opinit.ophost.v1.MsgFinalizeTokenWithdrawal.latest_block_hash": + case "opinit.ophost.v1.MsgFinalizeTokenWithdrawal.last_block_hash": return protoreflect.ValueOfBytes(nil) default: if fd.IsExtension() { @@ -5297,7 +5297,7 @@ func (x *fastReflection_MsgFinalizeTokenWithdrawal) ProtoMethods() *protoiface.M if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } - l = len(x.LatestBlockHash) + l = len(x.LastBlockHash) if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } @@ -5330,10 +5330,10 @@ func (x *fastReflection_MsgFinalizeTokenWithdrawal) ProtoMethods() *protoiface.M i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } - if len(x.LatestBlockHash) > 0 { - i -= len(x.LatestBlockHash) - copy(dAtA[i:], x.LatestBlockHash) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.LatestBlockHash))) + if len(x.LastBlockHash) > 0 { + i -= len(x.LastBlockHash) + copy(dAtA[i:], x.LastBlockHash) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.LastBlockHash))) i-- dAtA[i] = 0x52 } @@ -5711,7 +5711,7 @@ func (x *fastReflection_MsgFinalizeTokenWithdrawal) ProtoMethods() *protoiface.M iNdEx = postIndex case 10: if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field LatestBlockHash", wireType) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field LastBlockHash", wireType) } var byteLen int for shift := uint(0); ; shift += 7 { @@ -5738,9 +5738,9 @@ func (x *fastReflection_MsgFinalizeTokenWithdrawal) ProtoMethods() *protoiface.M if postIndex > l { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF } - x.LatestBlockHash = append(x.LatestBlockHash[:0], dAtA[iNdEx:postIndex]...) - if x.LatestBlockHash == nil { - x.LatestBlockHash = []byte{} + x.LastBlockHash = append(x.LastBlockHash[:0], dAtA[iNdEx:postIndex]...) + if x.LastBlockHash == nil { + x.LastBlockHash = []byte{} } iNdEx = postIndex default: @@ -12347,9 +12347,9 @@ type MsgFinalizeTokenWithdrawal struct { Sequence uint64 `protobuf:"varint,6,opt,name=sequence,proto3" json:"sequence,omitempty"` Amount *v1beta1.Coin `protobuf:"bytes,7,opt,name=amount,proto3" json:"amount,omitempty"` // version of the output root - Version []byte `protobuf:"bytes,8,opt,name=version,proto3" json:"version,omitempty"` - StorageRoot []byte `protobuf:"bytes,9,opt,name=storage_root,json=storageRoot,proto3" json:"storage_root,omitempty"` - LatestBlockHash []byte `protobuf:"bytes,10,opt,name=latest_block_hash,json=latestBlockHash,proto3" json:"latest_block_hash,omitempty"` + Version []byte `protobuf:"bytes,8,opt,name=version,proto3" json:"version,omitempty"` + StorageRoot []byte `protobuf:"bytes,9,opt,name=storage_root,json=storageRoot,proto3" json:"storage_root,omitempty"` + LastBlockHash []byte `protobuf:"bytes,10,opt,name=last_block_hash,json=lastBlockHash,proto3" json:"last_block_hash,omitempty"` } func (x *MsgFinalizeTokenWithdrawal) Reset() { @@ -12435,9 +12435,9 @@ func (x *MsgFinalizeTokenWithdrawal) GetStorageRoot() []byte { return nil } -func (x *MsgFinalizeTokenWithdrawal) GetLatestBlockHash() []byte { +func (x *MsgFinalizeTokenWithdrawal) GetLastBlockHash() []byte { if x != nil { - return x.LatestBlockHash + return x.LastBlockHash } return nil } @@ -13121,7 +13121,7 @@ var file_opinit_ophost_v1_tx_proto_rawDesc = []byte{ 0x70, 0x68, 0x6f, 0x73, 0x74, 0x2f, 0x4d, 0x73, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0x19, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0xfb, 0x02, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, + 0x22, 0xe3, 0x02, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 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, @@ -13130,41 +13130,38 @@ var file_opinit_ophost_v1_tx_proto_rawDesc = []byte{ 0x31, 0x0a, 0x09, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x14, 0xf2, 0xde, 0x1f, 0x10, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x22, 0x52, 0x08, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, - 0x49, 0x64, 0x12, 0x35, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, - 0xf2, 0xde, 0x1f, 0x09, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x74, 0x6f, 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, 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, 0x12, 0x2c, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x18, 0xc8, 0xde, 0x1f, 0x01, 0xf2, 0xde, 0x1f, 0x0b, - 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x64, 0x61, 0x74, 0x61, 0x22, 0xa8, 0xe7, 0xb0, 0x2a, 0x00, - 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x36, 0x88, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, - 0x82, 0xe7, 0xb0, 0x2a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x8a, 0xe7, 0xb0, 0x2a, 0x1e, - 0x6f, 0x70, 0x68, 0x6f, 0x73, 0x74, 0x2f, 0x4d, 0x73, 0x67, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, - 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x22, 0x3d, - 0x0a, 0x1f, 0x4d, 0x73, 0x67, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 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, 0xb8, 0x05, - 0x0a, 0x1a, 0x4d, 0x73, 0x67, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x12, 0x31, 0x0a, 0x09, - 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, - 0x14, 0xf2, 0xde, 0x1f, 0x10, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x62, 0x72, 0x69, 0x64, 0x67, - 0x65, 0x5f, 0x69, 0x64, 0x22, 0x52, 0x08, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x49, 0x64, 0x12, - 0x3a, 0x0a, 0x0c, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x17, 0xf2, 0xde, 0x1f, 0x13, 0x79, 0x61, 0x6d, 0x6c, 0x3a, - 0x22, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x52, 0x0b, - 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x36, 0x0a, 0x11, 0x77, - 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x5f, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x73, - 0x18, 0x04, 0x20, 0x03, 0x28, 0x0c, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x01, 0xa8, 0xe7, 0xb0, 0x2a, - 0x00, 0x52, 0x10, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x50, 0x72, 0x6f, - 0x6f, 0x66, 0x73, 0x12, 0x41, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x05, 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, + 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, + 0xf2, 0xde, 0x1f, 0x09, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x74, 0x6f, 0x22, 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, + 0x12, 0x2c, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x18, + 0xc8, 0xde, 0x1f, 0x01, 0xf2, 0xde, 0x1f, 0x0b, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x64, 0x61, + 0x74, 0x61, 0x22, 0xa8, 0xe7, 0xb0, 0x2a, 0x00, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x36, + 0x88, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x82, 0xe7, 0xb0, 0x2a, 0x06, 0x73, 0x65, 0x6e, + 0x64, 0x65, 0x72, 0x8a, 0xe7, 0xb0, 0x2a, 0x1e, 0x6f, 0x70, 0x68, 0x6f, 0x73, 0x74, 0x2f, 0x4d, + 0x73, 0x67, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x44, + 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x22, 0x3d, 0x0a, 0x1f, 0x4d, 0x73, 0x67, 0x49, 0x6e, 0x69, + 0x74, 0x69, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, + 0x74, 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, 0x9a, 0x05, 0x0a, 0x1a, 0x4d, 0x73, 0x67, 0x46, 0x69, 0x6e, + 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, + 0x61, 0x77, 0x61, 0x6c, 0x12, 0x31, 0x0a, 0x09, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x14, 0xf2, 0xde, 0x1f, 0x10, 0x79, 0x61, 0x6d, + 0x6c, 0x3a, 0x22, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x22, 0x52, 0x08, 0x62, + 0x72, 0x69, 0x64, 0x67, 0x65, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x0c, 0x6f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x17, 0xf2, + 0xde, 0x1f, 0x13, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, + 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x52, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x12, 0x36, 0x0a, 0x11, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, + 0x6c, 0x5f, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0c, 0x42, 0x09, + 0xc8, 0xde, 0x1f, 0x01, 0xa8, 0xe7, 0xb0, 0x2a, 0x00, 0x52, 0x10, 0x77, 0x69, 0x74, 0x68, 0x64, + 0x72, 0x61, 0x77, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x73, 0x12, 0x29, 0x0a, 0x06, 0x73, + 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x11, 0xf2, 0xde, 0x1f, + 0x0d, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x22, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x47, 0x0a, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2b, 0xf2, 0xde, 0x1f, 0x0f, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x22, 0xd2, 0xb4, 0x2d, @@ -13184,19 +13181,93 @@ var file_opinit_ophost_v1_tx_proto_rawDesc = []byte{ 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x17, 0xf2, 0xde, 0x1f, 0x13, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x22, 0x52, 0x0b, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x48, 0x0a, 0x11, 0x6c, 0x61, 0x74, - 0x65, 0x73, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x0c, 0x42, 0x1c, 0xf2, 0xde, 0x1f, 0x18, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, - 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, - 0x68, 0x22, 0x52, 0x0f, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, - 0x61, 0x73, 0x68, 0x3a, 0x33, 0x82, 0xe7, 0xb0, 0x2a, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x72, 0x8a, 0xe7, 0xb0, 0x2a, 0x21, 0x6f, 0x70, 0x68, 0x6f, 0x73, 0x74, 0x2f, 0x4d, 0x73, - 0x67, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x57, 0x69, - 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x22, 0x24, 0x0a, 0x22, 0x4d, 0x73, 0x67, 0x46, - 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x57, 0x69, 0x74, 0x68, - 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x93, - 0x02, 0x0a, 0x11, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x70, - 0x6f, 0x73, 0x65, 0x72, 0x12, 0x4a, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x42, 0x0a, 0x0f, 0x6c, 0x61, 0x73, + 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x0c, 0x42, 0x1a, 0xf2, 0xde, 0x1f, 0x16, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x6c, 0x61, + 0x73, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x22, 0x52, 0x0d, + 0x6c, 0x61, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x3a, 0x33, 0x82, + 0xe7, 0xb0, 0x2a, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x8a, 0xe7, 0xb0, 0x2a, + 0x21, 0x6f, 0x70, 0x68, 0x6f, 0x73, 0x74, 0x2f, 0x4d, 0x73, 0x67, 0x46, 0x69, 0x6e, 0x61, 0x6c, + 0x69, 0x7a, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, + 0x61, 0x6c, 0x22, 0x24, 0x0a, 0x22, 0x4d, 0x73, 0x67, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, + 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x93, 0x02, 0x0a, 0x11, 0x4d, 0x73, 0x67, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 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, 0x09, 0x62, 0x72, + 0x69, 0x64, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x14, 0xf2, + 0xde, 0x1f, 0x10, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, + 0x69, 0x64, 0x22, 0x52, 0x08, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x49, 0x64, 0x12, 0x52, 0x0a, + 0x0c, 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x2f, 0xf2, 0xde, 0x1f, 0x13, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x6e, + 0x65, 0x77, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 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, 0x0b, 0x6e, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, + 0x72, 0x3a, 0x2b, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, + 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x18, 0x6f, 0x70, 0x68, 0x6f, 0x73, 0x74, 0x2f, 0x4d, 0x73, 0x67, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x22, 0x66, + 0x0a, 0x19, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, + 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x6f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x26, + 0x0a, 0x0f, 0x6c, 0x32, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x6c, 0x32, 0x42, 0x6c, 0x6f, 0x63, 0x6b, + 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0xa2, 0x02, 0x0a, 0x14, 0x4d, 0x73, 0x67, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x72, 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, 0x09, 0x62, + 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x14, + 0xf2, 0xde, 0x1f, 0x10, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, + 0x5f, 0x69, 0x64, 0x22, 0x52, 0x08, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x49, 0x64, 0x12, 0x5b, + 0x0a, 0x0f, 0x6e, 0x65, 0x77, 0x5f, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x72, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x42, 0x32, 0xf2, 0xde, 0x1f, 0x16, 0x79, 0x61, 0x6d, + 0x6c, 0x3a, 0x22, 0x6e, 0x65, 0x77, 0x5f, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, + 0x72, 0x73, 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, 0x0e, 0x6e, 0x65, 0x77, + 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x72, 0x73, 0x3a, 0x2e, 0x82, 0xe7, 0xb0, + 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x1b, + 0x6f, 0x70, 0x68, 0x6f, 0x73, 0x74, 0x2f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x72, 0x73, 0x22, 0x69, 0x0a, 0x1c, 0x4d, + 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, + 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x6f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x26, + 0x0a, 0x0f, 0x6c, 0x32, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x6c, 0x32, 0x42, 0x6c, 0x6f, 0x63, 0x6b, + 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0xa8, 0x02, 0x0a, 0x12, 0x4d, 0x73, 0x67, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 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, 0x09, 0x62, 0x72, 0x69, + 0x64, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x14, 0xf2, 0xde, + 0x1f, 0x10, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x69, + 0x64, 0x22, 0x52, 0x08, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x49, 0x64, 0x12, 0x65, 0x0a, 0x0e, + 0x6e, 0x65, 0x77, 0x5f, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, + 0x68, 0x6f, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x66, + 0x6f, 0x42, 0x22, 0xc8, 0xde, 0x1f, 0x00, 0xf2, 0xde, 0x1f, 0x15, 0x79, 0x61, 0x6d, 0x6c, 0x3a, + 0x22, 0x6e, 0x65, 0x77, 0x5f, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x22, + 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0c, 0x6e, 0x65, 0x77, 0x42, 0x61, 0x74, 0x63, 0x68, 0x49, + 0x6e, 0x66, 0x6f, 0x3a, 0x2c, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x19, 0x6f, 0x70, 0x68, 0x6f, 0x73, 0x74, 0x2f, 0x4d, + 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x66, + 0x6f, 0x22, 0x67, 0x0a, 0x1a, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x61, + 0x74, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x21, 0x0a, 0x0c, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x49, 0x6e, 0x64, + 0x65, 0x78, 0x12, 0x26, 0x0a, 0x0f, 0x6c, 0x32, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x6c, 0x32, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x89, 0x02, 0x0a, 0x15, 0x4d, + 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 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, @@ -13204,211 +13275,136 @@ var file_opinit_ophost_v1_tx_proto_rawDesc = []byte{ 0x12, 0x31, 0x0a, 0x09, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x14, 0xf2, 0xde, 0x1f, 0x10, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x22, 0x52, 0x08, 0x62, 0x72, 0x69, 0x64, 0x67, - 0x65, 0x49, 0x64, 0x12, 0x52, 0x0a, 0x0c, 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, - 0x73, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2f, 0xf2, 0xde, 0x1f, 0x13, 0x79, - 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 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, 0x0b, 0x6e, 0x65, 0x77, 0x50, - 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x3a, 0x2b, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, - 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x18, 0x6f, 0x70, 0x68, 0x6f, - 0x73, 0x74, 0x2f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x70, - 0x6f, 0x73, 0x65, 0x72, 0x22, 0x66, 0x0a, 0x19, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x49, - 0x6e, 0x64, 0x65, 0x78, 0x12, 0x26, 0x0a, 0x0f, 0x6c, 0x32, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x6c, - 0x32, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0xa2, 0x02, 0x0a, - 0x14, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, - 0x6e, 0x67, 0x65, 0x72, 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, 0x09, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x04, 0x42, 0x14, 0xf2, 0xde, 0x1f, 0x10, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, - 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x22, 0x52, 0x08, 0x62, 0x72, 0x69, 0x64, - 0x67, 0x65, 0x49, 0x64, 0x12, 0x5b, 0x0a, 0x0f, 0x6e, 0x65, 0x77, 0x5f, 0x63, 0x68, 0x61, 0x6c, - 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x42, 0x32, 0xf2, - 0xde, 0x1f, 0x16, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x6e, 0x65, 0x77, 0x5f, 0x63, 0x68, 0x61, - 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x72, 0x73, 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, 0x0e, 0x6e, 0x65, 0x77, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x72, - 0x73, 0x3a, 0x2e, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, - 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x1b, 0x6f, 0x70, 0x68, 0x6f, 0x73, 0x74, 0x2f, 0x4d, 0x73, 0x67, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x72, - 0x73, 0x22, 0x69, 0x0a, 0x1c, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x68, - 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x49, - 0x6e, 0x64, 0x65, 0x78, 0x12, 0x26, 0x0a, 0x0f, 0x6c, 0x32, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x6c, - 0x32, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0xa8, 0x02, 0x0a, - 0x12, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x49, - 0x6e, 0x66, 0x6f, 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, 0x09, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x04, 0x42, 0x14, 0xf2, 0xde, 0x1f, 0x10, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x62, 0x72, - 0x69, 0x64, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x22, 0x52, 0x08, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, - 0x49, 0x64, 0x12, 0x65, 0x0a, 0x0e, 0x6e, 0x65, 0x77, 0x5f, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, - 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x70, 0x69, - 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x68, 0x6f, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, - 0x74, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x22, 0xc8, 0xde, 0x1f, 0x00, 0xf2, 0xde, 0x1f, - 0x15, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x6e, 0x65, 0x77, 0x5f, 0x62, 0x61, 0x74, 0x63, 0x68, - 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x22, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0c, 0x6e, 0x65, 0x77, - 0x42, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x3a, 0x2c, 0x82, 0xe7, 0xb0, 0x2a, 0x09, - 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x19, 0x6f, 0x70, - 0x68, 0x6f, 0x73, 0x74, 0x2f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x61, - 0x74, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x67, 0x0a, 0x1a, 0x4d, 0x73, 0x67, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x6f, 0x75, 0x74, - 0x70, 0x75, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x26, 0x0a, 0x0f, 0x6c, 0x32, 0x5f, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x0d, 0x6c, 0x32, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x22, 0x89, 0x02, 0x0a, 0x15, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, - 0x61, 0x63, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 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, 0x09, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, - 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x14, 0xf2, 0xde, 0x1f, 0x10, 0x79, - 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x22, 0x52, - 0x08, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x0e, 0x6f, 0x72, 0x61, - 0x63, 0x6c, 0x65, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x08, 0x42, 0x19, 0xf2, 0xde, 0x1f, 0x15, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x6f, 0x72, 0x61, - 0x63, 0x6c, 0x65, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x52, 0x0d, 0x6f, 0x72, - 0x61, 0x63, 0x6c, 0x65, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x3a, 0x2f, 0x82, 0xe7, 0xb0, - 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x1c, - 0x6f, 0x70, 0x68, 0x6f, 0x73, 0x74, 0x2f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x1f, 0x0a, 0x1d, - 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xf0, 0x01, - 0x0a, 0x11, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 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, 0x09, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x04, 0x42, 0x14, 0xf2, 0xde, 0x1f, 0x10, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x62, 0x72, - 0x69, 0x64, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x22, 0x52, 0x08, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, - 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0c, 0x42, 0x13, 0xf2, 0xde, 0x1f, 0x0f, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, - 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x3a, 0x2b, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, - 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x18, 0x6f, 0x70, 0x68, 0x6f, 0x73, 0x74, 0x2f, 0x4d, - 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x22, 0x66, 0x0a, 0x19, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, - 0x0c, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, - 0x12, 0x26, 0x0a, 0x0f, 0x6c, 0x32, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x6c, 0x32, 0x42, 0x6c, 0x6f, - 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0xcd, 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, 0x43, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, - 0x74, 0x2e, 0x6f, 0x70, 0x68, 0x6f, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x42, 0x11, 0xf2, 0xde, 0x1f, 0x0d, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x70, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x22, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3a, 0x29, 0x82, + 0x65, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x0e, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x5f, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, 0x19, 0xf2, 0xde, 0x1f, + 0x15, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x5f, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x52, 0x0d, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x45, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x64, 0x3a, 0x2f, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x1c, 0x6f, 0x70, 0x68, 0x6f, 0x73, 0x74, + 0x2f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x1f, 0x0a, 0x1d, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xf0, 0x01, 0x0a, 0x11, 0x4d, 0x73, 0x67, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 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, 0x09, 0x62, 0x72, 0x69, + 0x64, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x14, 0xf2, 0xde, + 0x1f, 0x10, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x69, + 0x64, 0x22, 0x52, 0x08, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x08, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x13, + 0xf2, 0xde, 0x1f, 0x0f, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x22, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x2b, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, - 0x2a, 0x16, 0x6f, 0x70, 0x68, 0x6f, 0x73, 0x74, 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, 0x32, 0xf3, 0x08, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x59, 0x0a, 0x0b, 0x52, - 0x65, 0x63, 0x6f, 0x72, 0x64, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x20, 0x2e, 0x6f, 0x70, 0x69, - 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x68, 0x6f, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, - 0x67, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x42, 0x61, 0x74, 0x63, 0x68, 0x1a, 0x28, 0x2e, 0x6f, + 0x2a, 0x18, 0x6f, 0x70, 0x68, 0x6f, 0x73, 0x74, 0x2f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x66, 0x0a, 0x19, 0x4d, 0x73, + 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x6f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x26, 0x0a, 0x0f, 0x6c, 0x32, + 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x0d, 0x6c, 0x32, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x22, 0xcd, 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, 0x43, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x68, 0x6f, + 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x11, 0xf2, 0xde, + 0x1f, 0x0d, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x52, + 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3a, 0x29, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x16, 0x6f, 0x70, 0x68, 0x6f, + 0x73, 0x74, 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, 0x32, 0xf3, 0x08, + 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x59, 0x0a, 0x0b, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x42, + 0x61, 0x74, 0x63, 0x68, 0x12, 0x20, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, + 0x68, 0x6f, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x42, 0x61, 0x74, 0x63, 0x68, 0x1a, 0x28, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, + 0x6f, 0x70, 0x68, 0x6f, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x63, + 0x6f, 0x72, 0x64, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x5c, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, + 0x12, 0x21, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x68, 0x6f, 0x73, 0x74, + 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x72, 0x69, + 0x64, 0x67, 0x65, 0x1a, 0x29, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x68, + 0x6f, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5f, + 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, + 0x22, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x68, 0x6f, 0x73, 0x74, 0x2e, + 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x4f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x1a, 0x2a, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x68, + 0x6f, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, + 0x65, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x5c, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, + 0x21, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x68, 0x6f, 0x73, 0x74, 0x2e, + 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x1a, 0x29, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x68, 0x6f, + 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, + 0x14, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x44, 0x65, + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x12, 0x29, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, + 0x70, 0x68, 0x6f, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x49, 0x6e, 0x69, 0x74, + 0x69, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x1a, 0x31, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x68, 0x6f, 0x73, 0x74, + 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x7d, 0x0a, 0x17, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x12, 0x2c, + 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x68, 0x6f, 0x73, 0x74, 0x2e, 0x76, + 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x1a, 0x34, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x68, 0x6f, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, - 0x4d, 0x73, 0x67, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x12, 0x21, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, - 0x6f, 0x70, 0x68, 0x6f, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x1a, 0x29, 0x2e, 0x6f, 0x70, 0x69, 0x6e, - 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x68, 0x6f, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5f, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x4f, - 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x22, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, - 0x70, 0x68, 0x6f, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x50, 0x72, 0x6f, 0x70, - 0x6f, 0x73, 0x65, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x1a, 0x2a, 0x2e, 0x6f, 0x70, 0x69, 0x6e, + 0x4d, 0x73, 0x67, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 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, 0x62, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x70, + 0x6f, 0x73, 0x65, 0x72, 0x12, 0x23, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, + 0x68, 0x6f, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x1a, 0x2b, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x68, 0x6f, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, - 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, - 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x21, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, - 0x70, 0x68, 0x6f, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x1a, 0x29, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, - 0x74, 0x2e, 0x6f, 0x70, 0x68, 0x6f, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, 0x14, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x12, 0x29, 0x2e, 0x6f, 0x70, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6b, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x72, 0x73, 0x12, 0x26, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x68, 0x6f, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, - 0x73, 0x67, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x44, - 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x1a, 0x31, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, - 0x6f, 0x70, 0x68, 0x6f, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x49, 0x6e, 0x69, - 0x74, 0x69, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7d, 0x0a, 0x17, 0x46, 0x69, 0x6e, - 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, - 0x61, 0x77, 0x61, 0x6c, 0x12, 0x2c, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, - 0x68, 0x6f, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x46, 0x69, 0x6e, 0x61, 0x6c, - 0x69, 0x7a, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, - 0x61, 0x6c, 0x1a, 0x34, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x68, 0x6f, - 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, - 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, 0x62, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x12, 0x23, 0x2e, 0x6f, 0x70, 0x69, - 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x68, 0x6f, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, - 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x1a, - 0x2b, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x68, 0x6f, 0x73, 0x74, 0x2e, - 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x70, - 0x6f, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6b, 0x0a, 0x11, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x72, - 0x73, 0x12, 0x26, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x68, 0x6f, 0x73, - 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x68, - 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x72, 0x73, 0x1a, 0x2e, 0x2e, 0x6f, 0x70, 0x69, 0x6e, - 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x68, 0x6f, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x72, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x65, 0x0a, 0x0f, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x2e, 0x6f, + 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, + 0x65, 0x72, 0x73, 0x1a, 0x2e, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x68, + 0x6f, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x65, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x61, 0x74, + 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, + 0x6f, 0x70, 0x68, 0x6f, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x2c, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x68, 0x6f, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, - 0x66, 0x6f, 0x1a, 0x2c, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x68, 0x6f, - 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, - 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x62, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x12, 0x23, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x68, 0x6f, - 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x2b, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, - 0x2e, 0x6f, 0x70, 0x68, 0x6f, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x12, 0x21, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, - 0x68, 0x6f, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x29, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, - 0x2e, 0x6f, 0x70, 0x68, 0x6f, 0x73, 0x74, 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, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0xc2, 0x01, 0xc8, 0xe1, 0x1e, 0x00, - 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x68, - 0x6f, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, - 0x01, 0x5a, 0x3b, 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, 0x68, 0x6f, - 0x73, 0x74, 0x2f, 0x76, 0x31, 0x3b, 0x6f, 0x70, 0x68, 0x6f, 0x73, 0x74, 0x76, 0x31, 0xa2, 0x02, - 0x03, 0x4f, 0x4f, 0x58, 0xaa, 0x02, 0x10, 0x4f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x4f, 0x70, - 0x68, 0x6f, 0x73, 0x74, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x10, 0x4f, 0x70, 0x69, 0x6e, 0x69, 0x74, - 0x5c, 0x4f, 0x70, 0x68, 0x6f, 0x73, 0x74, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1c, 0x4f, 0x70, 0x69, - 0x6e, 0x69, 0x74, 0x5c, 0x4f, 0x70, 0x68, 0x6f, 0x73, 0x74, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, - 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x12, 0x4f, 0x70, 0x69, 0x6e, - 0x69, 0x74, 0x3a, 0x3a, 0x4f, 0x70, 0x68, 0x6f, 0x73, 0x74, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x62, 0x0a, 0x0e, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x23, 0x2e, 0x6f, + 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x68, 0x6f, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, + 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x1a, 0x2b, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x68, 0x6f, 0x73, + 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, + 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x21, + 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x68, 0x6f, 0x73, 0x74, 0x2e, 0x76, + 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x1a, 0x29, 0x2e, 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x68, 0x6f, 0x73, + 0x74, 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, 0x1a, 0x05, 0x80, 0xe7, + 0xb0, 0x2a, 0x01, 0x42, 0xc2, 0x01, 0xc8, 0xe1, 0x1e, 0x00, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x2e, + 0x6f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x6f, 0x70, 0x68, 0x6f, 0x73, 0x74, 0x2e, 0x76, 0x31, + 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3b, 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, 0x68, 0x6f, 0x73, 0x74, 0x2f, 0x76, 0x31, 0x3b, + 0x6f, 0x70, 0x68, 0x6f, 0x73, 0x74, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x4f, 0x4f, 0x58, 0xaa, 0x02, + 0x10, 0x4f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x2e, 0x4f, 0x70, 0x68, 0x6f, 0x73, 0x74, 0x2e, 0x56, + 0x31, 0xca, 0x02, 0x10, 0x4f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x5c, 0x4f, 0x70, 0x68, 0x6f, 0x73, + 0x74, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1c, 0x4f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x5c, 0x4f, 0x70, + 0x68, 0x6f, 0x73, 0x74, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0xea, 0x02, 0x12, 0x4f, 0x70, 0x69, 0x6e, 0x69, 0x74, 0x3a, 0x3a, 0x4f, 0x70, + 0x68, 0x6f, 0x73, 0x74, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/api/opinit/ophost/v1/types.pulsar.go b/api/opinit/ophost/v1/types.pulsar.go index 79895e70..0cf9cbf3 100644 --- a/api/opinit/ophost/v1/types.pulsar.go +++ b/api/opinit/ophost/v1/types.pulsar.go @@ -3938,10 +3938,10 @@ var file_opinit_ophost_v1_types_proto_rawDesc = []byte{ 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa1, 0x01, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x7b, 0x0a, 0x10, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x65, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, diff --git a/contrib/launchtools/config.go b/contrib/launchtools/config.go index c87ec9be..0b6218f8 100644 --- a/contrib/launchtools/config.go +++ b/contrib/launchtools/config.go @@ -168,6 +168,7 @@ func (opBridge *OpBridge) UnmarshalJSON(data []byte) error { OutputFinalizationPeriod string `json:"output_finalization_period,omitempty"` OutputSubmissionStartHeight uint64 `json:"output_submission_start_height,omitempty"` BatchSubmissionTarget ophosttypes.BatchInfo_ChainType `json:"batch_submission_target,omitempty"` + EnableOracle *bool `json:"enable_oracle,omitempty"` } if err := json.Unmarshal(data, &tmp); err != nil { @@ -194,6 +195,7 @@ func (opBridge *OpBridge) UnmarshalJSON(data []byte) error { opBridge.OutputSubmissionStartHeight = tmp.OutputSubmissionStartHeight opBridge.BatchSubmissionTarget = tmp.BatchSubmissionTarget + opBridge.EnableOracle = tmp.EnableOracle return nil } @@ -204,9 +206,11 @@ func (opBridge OpBridge) MarshalJSON() ([]byte, error) { OutputFinalizationPeriod string `json:"output_finalization_period,omitempty"` OutputSubmissionStartHeight uint64 `json:"output_submission_start_height,omitempty"` BatchSubmissionTarget ophosttypes.BatchInfo_ChainType `json:"batch_submission_target,omitempty"` + EnableOracle *bool `json:"enable_oracle,omitempty"` }{ OutputSubmissionStartHeight: opBridge.OutputSubmissionStartHeight, BatchSubmissionTarget: opBridge.BatchSubmissionTarget, + EnableOracle: opBridge.EnableOracle, } if opBridge.OutputSubmissionInterval != nil { diff --git a/go.mod b/go.mod index a4d097b1..0e42fd2a 100644 --- a/go.mod +++ b/go.mod @@ -7,17 +7,17 @@ toolchain go1.22.2 require ( cosmossdk.io/api v0.7.5 cosmossdk.io/collections v0.4.0 - cosmossdk.io/core v0.11.0 + cosmossdk.io/core v0.11.1 cosmossdk.io/errors v1.0.1 cosmossdk.io/log v1.3.1 cosmossdk.io/math v1.3.0 cosmossdk.io/simapp v0.0.0-20231211060251-d8fb76d4c267 cosmossdk.io/store v1.1.0 - cosmossdk.io/x/tx v0.13.3 + cosmossdk.io/x/tx v0.13.4 github.com/cometbft/cometbft v0.38.10 github.com/cosmos/cosmos-db v1.0.2 github.com/cosmos/cosmos-proto v1.0.0-beta.5 - github.com/cosmos/cosmos-sdk v0.50.8 + github.com/cosmos/cosmos-sdk v0.50.9 github.com/cosmos/go-bip39 v1.0.0 github.com/cosmos/gogoproto v1.5.0 github.com/cosmos/ibc-go/v8 v8.2.0 diff --git a/go.sum b/go.sum index fb1a3400..c754bd5e 100644 --- a/go.sum +++ b/go.sum @@ -188,8 +188,8 @@ cosmossdk.io/client/v2 v2.0.0-beta.1.0.20240124105859-5ad1805d0e79 h1:Hr1t0fCq1n cosmossdk.io/client/v2 v2.0.0-beta.1.0.20240124105859-5ad1805d0e79/go.mod h1:8pN6LSVReNnIxrC2QGcvuIJ/m1pJN6FNYn2kAYtYftI= cosmossdk.io/collections v0.4.0 h1:PFmwj2W8szgpD5nOd8GWH6AbYNi1f2J6akWXJ7P5t9s= cosmossdk.io/collections v0.4.0/go.mod h1:oa5lUING2dP+gdDquow+QjlF45eL1t4TJDypgGd+tv0= -cosmossdk.io/core v0.11.0 h1:vtIafqUi+1ZNAE/oxLOQQ7Oek2n4S48SWLG8h/+wdbo= -cosmossdk.io/core v0.11.0/go.mod h1:LaTtayWBSoacF5xNzoF8tmLhehqlA9z1SWiPuNC6X1w= +cosmossdk.io/core v0.11.1 h1:h9WfBey7NAiFfIcUhDVNS503I2P2HdZLebJlUIs8LPA= +cosmossdk.io/core v0.11.1/go.mod h1:OJzxcdC+RPrgGF8NJZR2uoQr56tc7gfBKhiKeDO7hH0= cosmossdk.io/depinject v1.0.0 h1:dQaTu6+O6askNXO06+jyeUAnF2/ssKwrrszP9t5q050= cosmossdk.io/depinject v1.0.0/go.mod h1:zxK/h3HgHoA/eJVtiSsoaRaRA2D5U4cJ5thIG4ssbB8= cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0= @@ -210,8 +210,8 @@ cosmossdk.io/x/feegrant v0.1.0 h1:c7s3oAq/8/UO0EiN1H5BIjwVntujVTkYs35YPvvrdQk= cosmossdk.io/x/feegrant v0.1.0/go.mod h1:4r+FsViJRpcZif/yhTn+E0E6OFfg4n0Lx+6cCtnZElU= cosmossdk.io/x/nft v0.1.0 h1:VhcsFiEK33ODN27kxKLa0r/CeFd8laBfbDBwYqCyYCM= cosmossdk.io/x/nft v0.1.0/go.mod h1:ec4j4QAO4mJZ+45jeYRnW7awLHby1JZANqe1hNZ4S3g= -cosmossdk.io/x/tx v0.13.3 h1:Ha4mNaHmxBc6RMun9aKuqul8yHiL78EKJQ8g23Zf73g= -cosmossdk.io/x/tx v0.13.3/go.mod h1:I8xaHv0rhUdIvIdptKIqzYy27+n2+zBVaxO6fscFhys= +cosmossdk.io/x/tx v0.13.4 h1:Eg0PbJgeO0gM8p5wx6xa0fKR7hIV6+8lC56UrsvSo0Y= +cosmossdk.io/x/tx v0.13.4/go.mod h1:BkFqrnGGgW50Y6cwTy+JvgAhiffbGEKW6KF9ufcDpvk= cosmossdk.io/x/upgrade v0.1.3 h1:q4XpXc6zp0dX6x74uBtfN6+J7ikaQev5Bla6Q0ADLK8= cosmossdk.io/x/upgrade v0.1.3/go.mod h1:jOdQhnaY5B8CDUoUbed23/Lre0Dk+r6BMQE40iKlVVQ= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= @@ -384,8 +384,8 @@ github.com/cosmos/cosmos-db v1.0.2 h1:hwMjozuY1OlJs/uh6vddqnk9j7VamLv+0DBlbEXbAK github.com/cosmos/cosmos-db v1.0.2/go.mod h1:Z8IXcFJ9PqKK6BIsVOB3QXtkKoqUOp1vRvPT39kOXEA= github.com/cosmos/cosmos-proto v1.0.0-beta.5 h1:eNcayDLpip+zVLRLYafhzLvQlSmyab+RC5W7ZfmxJLA= github.com/cosmos/cosmos-proto v1.0.0-beta.5/go.mod h1:hQGLpiIUloJBMdQMMWb/4wRApmI9hjHH05nefC0Ojec= -github.com/cosmos/cosmos-sdk v0.50.8 h1:2UJHssUaGHTl4/dFp8xyREKAnfiRU6VVfqtKG9n8w5g= -github.com/cosmos/cosmos-sdk v0.50.8/go.mod h1:Zb+DgHtiByNwgj71IlJBXwOq6dLhtyAq3AgqpXm/jHo= +github.com/cosmos/cosmos-sdk v0.50.9 h1:gt2usjz0H0qW6KwAxWw7ZJ3XU8uDwmhN+hYG3nTLeSg= +github.com/cosmos/cosmos-sdk v0.50.9/go.mod h1:TMH6wpoYBcg7Cp5BEg8fneLr+8XloNQkf2MRNF9V6JE= github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= github.com/cosmos/gogogateway v1.2.0 h1:Ae/OivNhp8DqBi/sh2A8a1D0y638GpL3tkmLQAiKxTE= diff --git a/proto/opinit/opchild/v1/genesis.proto b/proto/opinit/opchild/v1/genesis.proto index c7b3ce42..c035073c 100644 --- a/proto/opinit/opchild/v1/genesis.proto +++ b/proto/opinit/opchild/v1/genesis.proto @@ -20,13 +20,12 @@ message GenesisState { // delegations defines the validator set at genesis. repeated Validator validators = 3 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; - // the pending deposits that are not failed to be deposited. - repeated PendingDeposits pending_deposits = 4 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; + uint64 next_l2_sequence = 4; + uint64 next_l1_sequence = 5; + BridgeInfo bridge_info = 6; + bool exported = 7; - uint64 next_l2_sequence = 5; - uint64 next_l1_sequence = 6; - BridgeInfo bridge_info = 7; - bool exported = 8; + repeated DenomPair denom_pairs = 8 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; } // LastValidatorPower required for validator set update logic. diff --git a/proto/opinit/opchild/v1/tx.proto b/proto/opinit/opchild/v1/tx.proto index e240b98a..62955e10 100644 --- a/proto/opinit/opchild/v1/tx.proto +++ b/proto/opinit/opchild/v1/tx.proto @@ -103,7 +103,7 @@ message MsgFinalizeTokenDeposit { string sender = 1 [(gogoproto.moretags) = "yaml:\"sender\"", (cosmos_proto.scalar) = "cosmos.AddressString"]; // from is l1 sender address - string from = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + string from = 2; // to is l2 recipient address string to = 3 [(cosmos_proto.scalar) = "cosmos.AddressString"]; @@ -139,7 +139,7 @@ message MsgInitiateTokenWithdrawal { string sender = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; // to is l1 recipient address - string to = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + string to = 2; // amount is the coin amount to withdraw. cosmos.base.v1beta1.Coin amount = 4 @@ -148,6 +148,7 @@ message MsgInitiateTokenWithdrawal { // MsgInitiateTokenWithdrawalResponse returns create token result data message MsgInitiateTokenWithdrawalResponse { + // l2 sequence number uint64 sequence = 1; } diff --git a/proto/opinit/opchild/v1/types.proto b/proto/opinit/opchild/v1/types.proto index b040c420..554d1aa1 100644 --- a/proto/opinit/opchild/v1/types.proto +++ b/proto/opinit/opchild/v1/types.proto @@ -6,8 +6,8 @@ import "cosmos/base/v1beta1/coin.proto"; import "cosmos_proto/cosmos.proto"; import "gogoproto/gogo.proto"; import "google/protobuf/any.proto"; -import "tendermint/abci/types.proto"; import "opinit/ophost/v1/types.proto"; +import "tendermint/abci/types.proto"; option go_package = "github.com/initia-labs/OPinit/x/opchild/types"; option (gogoproto.equal_all) = true; @@ -101,19 +101,6 @@ message BridgeInfo { opinit.ophost.v1.BridgeConfig bridge_config = 5 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; } -// PendingDeposits defines the set of pending deposits. -message PendingDeposits { - // recipient is the address of the recipient. - string recipient = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; - - // coins is a list of coins to be deposited. - repeated cosmos.base.v1beta1.Coin coins = 2 [ - (gogoproto.nullable) = false, - (amino.dont_omitempty) = true, - (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins" - ]; -} - // CoinsWrapper defines the set of coins. message CoinsWrapper { repeated cosmos.base.v1beta1.Coin coins = 1 [ @@ -133,4 +120,9 @@ enum ResponseResultType { 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 +} + +message DenomPair { + string denom = 1; + string base_denom = 2; +} diff --git a/proto/opinit/ophost/v1/query.proto b/proto/opinit/ophost/v1/query.proto index f281d1dc..7b46d000 100644 --- a/proto/opinit/ophost/v1/query.proto +++ b/proto/opinit/ophost/v1/query.proto @@ -70,7 +70,7 @@ service Query { // Claimed queries whether the output is claimed. rpc Claimed(QueryClaimedRequest) returns (QueryClaimedResponse) { option (cosmos.query.v1.module_query_safe) = true; - option (google.api.http).get = "/opinit/ophost/v1/bridges/{bridge_id}/withdrawals/claimed/by_hash"; + option (google.api.http).get = "/opinit/ophost/v1/bridges/{bridge_id}/withdrawals/claimed/by_hash"; } // NextL1Sequence queries the next l1 sequence. @@ -225,16 +225,15 @@ message QueryNextL1SequenceResponse { uint64 next_l1_sequence = 1; } -// QueryBatchInfosRequest is request type for Query/BatchInfos RPC method. +// QueryBatchInfosRequest is request type for Query/BatchInfos RPC method. message QueryBatchInfosRequest { - uint64 bridge_id = 1; + uint64 bridge_id = 1; cosmos.base.query.v1beta1.PageRequest pagination = 2; } -// QueryBatchInfosResponse is response type for Query/BatchInfos RPC method. +// QueryBatchInfosResponse is response type for Query/BatchInfos RPC method. message QueryBatchInfosResponse { - repeated BatchInfoWithOutput batch_infos = 1 - [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; + repeated BatchInfoWithOutput batch_infos = 1 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; // pagination defines the pagination in the response. cosmos.base.query.v1beta1.PageResponse pagination = 2; } diff --git a/proto/opinit/ophost/v1/tx.proto b/proto/opinit/ophost/v1/tx.proto index 56ecde76..c7528836 100644 --- a/proto/opinit/ophost/v1/tx.proto +++ b/proto/opinit/ophost/v1/tx.proto @@ -112,17 +112,15 @@ message MsgProposeOutput { option (cosmos.msg.v1.signer) = "proposer"; option (amino.name) = "ophost/MsgProposeOutput"; - string proposer = 1 [(gogoproto.moretags) = "yaml:\"proposer\"", (cosmos_proto.scalar) = "cosmos.AddressString"]; - uint64 bridge_id = 2 [(gogoproto.moretags) = "yaml:\"bridge_id\""]; - uint64 output_index = 3 [(gogoproto.moretags) = "yaml:\"output_index\""]; + string proposer = 1 [(gogoproto.moretags) = "yaml:\"proposer\"", (cosmos_proto.scalar) = "cosmos.AddressString"]; + uint64 bridge_id = 2 [(gogoproto.moretags) = "yaml:\"bridge_id\""]; + uint64 output_index = 3 [(gogoproto.moretags) = "yaml:\"output_index\""]; uint64 l2_block_number = 4 [(gogoproto.moretags) = "yaml:\"l2_block_number\""]; bytes output_root = 5 [(gogoproto.moretags) = "yaml:\"output_root\""]; } // MsgProposeOutputResponse returns deposit result data -message MsgProposeOutputResponse { - -} +message MsgProposeOutputResponse {} //////////////////////////// // Challenger Messages @@ -154,7 +152,7 @@ message MsgInitiateTokenDeposit { string sender = 1 [(gogoproto.moretags) = "yaml:\"sender\"", (cosmos_proto.scalar) = "cosmos.AddressString"]; uint64 bridge_id = 2 [(gogoproto.moretags) = "yaml:\"bridge_id\""]; - string to = 3 [(gogoproto.moretags) = "yaml:\"to\"", (cosmos_proto.scalar) = "cosmos.AddressString"]; + string to = 3 [(gogoproto.moretags) = "yaml:\"to\""]; cosmos.base.v1beta1.Coin amount = 4 [(gogoproto.moretags) = "yaml:\"amount\"", (gogoproto.nullable) = false, (amino.dont_omitempty) = true]; bytes data = 5 [(gogoproto.moretags) = "yaml:\"data\"", (gogoproto.nullable) = true, (amino.dont_omitempty) = false]; @@ -167,29 +165,30 @@ message MsgInitiateTokenDepositResponse { // MsgFinalizeTokenWithdrawal is a message finalizing funds withdrawal from L2. message MsgFinalizeTokenWithdrawal { - option (cosmos.msg.v1.signer) = "receiver"; + option (cosmos.msg.v1.signer) = "sender"; option (amino.name) = "ophost/MsgFinalizeTokenWithdrawal"; // address of the sender of the transaction + string sender = 1 [(gogoproto.moretags) = "yaml:\"sender\"", (cosmos_proto.scalar) = "cosmos.AddressString"]; uint64 bridge_id = 2 [(gogoproto.moretags) = "yaml:\"bridge_id\""]; uint64 output_index = 3 [(gogoproto.moretags) = "yaml:\"output_index\""]; repeated bytes withdrawal_proofs = 4 [(gogoproto.nullable) = true, (amino.dont_omitempty) = false]; // withdraw tx data - string sender = 5 [(gogoproto.moretags) = "yaml:\"sender\"", (cosmos_proto.scalar) = "cosmos.AddressString"]; - string receiver = 1 [(gogoproto.moretags) = "yaml:\"receiver\"", (cosmos_proto.scalar) = "cosmos.AddressString"]; - uint64 sequence = 6 [(gogoproto.moretags) = "yaml:\"sequence\""]; - cosmos.base.v1beta1.Coin amount = 7 + string from = 5 [(gogoproto.moretags) = "yaml:\"from\""]; + string to = 6 [(gogoproto.moretags) = "yaml:\"to\"", (cosmos_proto.scalar) = "cosmos.AddressString"]; + uint64 sequence = 7 [(gogoproto.moretags) = "yaml:\"sequence\""]; + cosmos.base.v1beta1.Coin amount = 8 [(gogoproto.moretags) = "yaml:\"amount\"", (gogoproto.nullable) = false, (amino.dont_omitempty) = true]; // output root proofs // version of the output root - bytes version = 8 [(gogoproto.moretags) = "yaml:\"version\""]; - bytes storage_root = 9 [(gogoproto.moretags) = "yaml:\"storage_root\""]; - bytes latest_block_hash = 10 [(gogoproto.moretags) = "yaml:\"latest_block_hash\""]; + bytes version = 9 [(gogoproto.moretags) = "yaml:\"version\""]; + bytes storage_root = 10 [(gogoproto.moretags) = "yaml:\"storage_root\""]; + bytes last_block_hash = 11 [(gogoproto.moretags) = "yaml:\"last_block_hash\""]; } // MsgFinalizeTokenWithdrawalResponse returns a message handle result. diff --git a/proto/opinit/ophost/v1/types.proto b/proto/opinit/ophost/v1/types.proto index cf9b4df9..b67fddff 100644 --- a/proto/opinit/ophost/v1/types.proto +++ b/proto/opinit/ophost/v1/types.proto @@ -5,8 +5,8 @@ import "amino/amino.proto"; import "cosmos/base/v1beta1/coin.proto"; import "cosmos_proto/cosmos.proto"; import "gogoproto/gogo.proto"; -import "google/protobuf/timestamp.proto"; import "google/protobuf/duration.proto"; +import "google/protobuf/timestamp.proto"; option go_package = "github.com/initia-labs/OPinit/x/ophost/types"; option (gogoproto.equal_all) = true; @@ -101,4 +101,4 @@ message Output { message BatchInfoWithOutput { BatchInfo batch_info = 1 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; Output output = 2 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; -} \ No newline at end of file +} diff --git a/specs/l2_output_oracle.md b/specs/l2_output_oracle.md index 332a232f..d8f4f936 100644 --- a/specs/l2_output_oracle.md +++ b/specs/l2_output_oracle.md @@ -15,7 +15,7 @@ The followings are the components of `output_root`. - `version`: the version of output root - `state_root`: l2 state root - `storage_root`: withdrawal storage root -- `latest_block_hash`: l2 latest block hash +- `last_block_hash`: l2 latest block hash To build the `output_root`, concatenate all the components in sequence and apply `sha3_256`. diff --git a/x/opchild/abci.go b/x/opchild/abci.go index 699587af..addd731d 100644 --- a/x/opchild/abci.go +++ b/x/opchild/abci.go @@ -16,13 +16,13 @@ import ( // BeginBlocker will persist the current header and validator set as a historical entry // and prune the oldest entry based on the HistoricalEntries parameter -func BeginBlocker(ctx context.Context, k keeper.Keeper) error { +func BeginBlocker(ctx context.Context, k *keeper.Keeper) error { defer telemetry.ModuleMeasureSince(types.ModuleName, time.Now(), telemetry.MetricKeyBeginBlocker) return k.TrackHistoricalInfo(ctx) } // Called every block, update validator set -func EndBlocker(ctx context.Context, k keeper.Keeper) ([]abci.ValidatorUpdate, error) { +func EndBlocker(ctx context.Context, k *keeper.Keeper) ([]abci.ValidatorUpdate, error) { defer telemetry.ModuleMeasureSince(types.ModuleName, time.Now(), telemetry.MetricKeyEndBlocker) sdkCtx := sdk.UnwrapSDKContext(ctx) diff --git a/x/opchild/ante/ante.go b/x/opchild/ante/ante.go index 3ac29efe..71503c52 100644 --- a/x/opchild/ante/ante.go +++ b/x/opchild/ante/ante.go @@ -7,10 +7,10 @@ import ( ) type RedundantBridgeDecorator struct { - ms keeper.MsgServer + ms *keeper.MsgServer } -func NewRedundantBridgeDecorator(k keeper.Keeper) RedundantBridgeDecorator { +func NewRedundantBridgeDecorator(k *keeper.Keeper) RedundantBridgeDecorator { return RedundantBridgeDecorator{ ms: keeper.NewMsgServerImpl(k), } diff --git a/x/opchild/ante/ante_test.go b/x/opchild/ante/ante_test.go index a6e963f3..8c63cbcf 100644 --- a/x/opchild/ante/ante_test.go +++ b/x/opchild/ante/ante_test.go @@ -147,17 +147,17 @@ func (t testTx) GetMsgs() []sdk.Msg { func TestRedundantTx(t *testing.T) { ctx, input := createTestInput(t, true) - rbd := ante.NewRedundantBridgeDecorator(input.OPChildKeeper) + 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(""), + addrsStr[0], addrsStr[0], addrsStr[1], sdk.NewCoin(testDenoms[0], math.NewInt(100)), 1, 1, "l1_test0", nil, ), types.NewMsgFinalizeTokenDeposit( - addrsStr[0], addrsStr[0], addrsStr[1], sdk.NewCoin(testDenoms[0], math.NewInt(100)), 2, 1, "l1_test0", []byte(""), + addrsStr[0], addrsStr[0], addrsStr[1], sdk.NewCoin(testDenoms[0], math.NewInt(100)), 2, 1, "l1_test0", nil, ), }, } @@ -172,10 +172,10 @@ func TestRedundantTx(t *testing.T) { 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(""), + addrsStr[0], addrsStr[0], addrsStr[1], sdk.NewCoin(testDenoms[0], math.NewInt(100)), 2, 1, "l1_test0", nil, ), types.NewMsgFinalizeTokenDeposit( - addrsStr[0], addrsStr[0], addrsStr[1], sdk.NewCoin(testDenoms[0], math.NewInt(100)), 3, 1, "l1_test0", []byte(""), + addrsStr[0], addrsStr[0], addrsStr[1], sdk.NewCoin(testDenoms[0], math.NewInt(100)), 3, 1, "l1_test0", nil, ), }, } @@ -186,7 +186,7 @@ func TestRedundantTx(t *testing.T) { 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(""), + addrsStr[0], addrsStr[0], addrsStr[1], sdk.NewCoin(testDenoms[0], math.NewInt(100)), 4, 1, "l1_test0", nil, ), }, } diff --git a/x/opchild/ante/common_test.go b/x/opchild/ante/common_test.go index 9ca1e25f..b8032d72 100644 --- a/x/opchild/ante/common_test.go +++ b/x/opchild/ante/common_test.go @@ -31,6 +31,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" "github.com/cosmos/cosmos-sdk/x/auth" + authante "github.com/cosmos/cosmos-sdk/x/auth/ante" 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" @@ -241,6 +242,8 @@ func _createTestInput( encodingConfig := MakeEncodingConfig(t) appCodec := encodingConfig.Marshaler + txDecoder := encodingConfig.TxConfig.TxDecoder() + signModeHandler := encodingConfig.TxConfig.SignModeHandler() maccPerms := map[string][]string{ // module account permissions authtypes.FeeCollectorName: nil, @@ -292,8 +295,15 @@ func _createTestInput( runtime.NewKVStoreService(keys[opchildtypes.StoreKey]), accountKeeper, bankKeeper, - bridgeHook.Hook, &oracleKeeper, + sdk.ChainAnteDecorators( + authante.NewSetPubKeyDecorator(accountKeeper), + authante.NewValidateSigCountDecorator(accountKeeper), + authante.NewSigGasConsumeDecorator(accountKeeper, authante.DefaultSigVerificationGasConsumer), + authante.NewSigVerificationDecorator(accountKeeper, signModeHandler), + authante.NewIncrementSequenceDecorator(accountKeeper), + ), + txDecoder, msgRouter, authtypes.NewModuleAddress(opchildtypes.ModuleName).String(), authcodec.NewBech32Codec(sdk.GetConfig().GetBech32AccountAddrPrefix()), @@ -308,7 +318,7 @@ func _createTestInput( require.NoError(t, opchildKeeper.SetParams(ctx, opchildParams)) // register handlers to msg router - opchildtypes.RegisterMsgServer(msgRouter, opchildkeeper.NewMsgServerImpl(*opchildKeeper)) + opchildtypes.RegisterMsgServer(msgRouter, opchildkeeper.NewMsgServerImpl(opchildKeeper)) faucet := NewTestFaucet(t, ctx, bankKeeper, authtypes.Minter, initialTotalSupply()...) diff --git a/x/opchild/ante/fee_utils.go b/x/opchild/ante/fee_utils.go index 31105575..fe4ad901 100644 --- a/x/opchild/ante/fee_utils.go +++ b/x/opchild/ante/fee_utils.go @@ -1,6 +1,7 @@ package ante import ( + "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" ) @@ -26,7 +27,7 @@ func computeRequiredFees(gas uint64, minGasPrices sdk.DecCoins) sdk.Coins { // Determine the required fees by multiplying each required minimum gas // price by the gas limit, where fee = ceil(minGasPrice * gasLimit). for i, gp := range minGasPrices { - fee := gp.Amount.MulInt64(int64(gas)) + fee := gp.Amount.MulInt(math.NewIntFromUint64(gas)) requiredFees[i] = sdk.NewCoin(gp.Denom, fee.Ceil().RoundInt()) } } diff --git a/x/opchild/client/cli/tx.go b/x/opchild/client/cli/tx.go index f7d4b4a6..b97e4aa8 100644 --- a/x/opchild/client/cli/tx.go +++ b/x/opchild/client/cli/tx.go @@ -299,7 +299,7 @@ func NewSetBridgeInfoCmd(ac address.Codec) *cobra.Command { return err } - origConfig := ophostcli.BridgeCliConfig{} + var origConfig ophostcli.BridgeCliConfig err = json.Unmarshal(configBytes, &origConfig) if err != nil { return err @@ -328,6 +328,7 @@ func NewSetBridgeInfoCmd(ac address.Codec) *cobra.Command { SubmissionStartHeight: submissionStartHeight, Metadata: []byte(origConfig.Metadata), BatchInfo: origConfig.BatchInfo, + OracleEnabled: origConfig.OracleEnabled, } if err = bridgeConfig.ValidateWithNoAddrValidation(); err != nil { diff --git a/x/opchild/client/cli/tx_test.go b/x/opchild/client/cli/tx_test.go index 70f9b468..0fbdda51 100644 --- a/x/opchild/client/cli/tx_test.go +++ b/x/opchild/client/cli/tx_test.go @@ -116,7 +116,7 @@ func (s *CLITestSuite) TestNewWithdrawCmd() { "invalid transaction (invalid amount)", []string{ s.addrs[0].String(), - "0umin", + "-1umin", fmt.Sprintf("--%s=%s", flags.FlagFrom, s.addrs[0]), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), @@ -221,7 +221,7 @@ func (s *CLITestSuite) TestNewDepositCmd() { "1", s.addrs[0].String(), s.addrs[1].String(), - "0umin", + "-1umin", "test_token", fmt.Sprintf("--%s=%s", flags.FlagFrom, s.addrs[0]), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), @@ -439,7 +439,8 @@ func (s *CLITestSuite) TestNewSetBridgeInfo() { "batch_info": { "submitter": "init1q6jhwnarkw2j5qqgx3qlu20k8nrdglft5ksr0g", "chain_type": "INITIA" - } + }, + "oracle_enabled": true }`) s.NoError(err) diff --git a/x/opchild/keeper/common_test.go b/x/opchild/keeper/common_test.go index f9c2e306..017984f6 100644 --- a/x/opchild/keeper/common_test.go +++ b/x/opchild/keeper/common_test.go @@ -8,9 +8,6 @@ import ( "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" @@ -18,22 +15,28 @@ import ( "cosmossdk.io/store" "cosmossdk.io/store/metrics" storetypes "cosmossdk.io/store/types" - "cosmossdk.io/x/tx/signing" + signingmod "cosmossdk.io/x/tx/signing" dbm "github.com/cosmos/cosmos-db" + "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/tx" "github.com/cosmos/cosmos-sdk/codec" codecaddress "github.com/cosmos/cosmos-sdk/codec/address" codectypes "github.com/cosmos/cosmos-sdk/codec/types" + cryptotypes "github.com/cosmos/cosmos-sdk/crypto/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/types/tx/signing" "github.com/cosmos/cosmos-sdk/x/auth" + authante "github.com/cosmos/cosmos-sdk/x/auth/ante" 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" + authsign "github.com/cosmos/cosmos-sdk/x/auth/signing" + authtx "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" @@ -56,7 +59,7 @@ var ModuleBasics = module.NewBasicManager( ) var ( - pubKeys = []crypto.PubKey{ + pubKeys = []cryptotypes.PubKey{ secp256k1.GenPrivKey().PubKey(), secp256k1.GenPrivKey().PubKey(), secp256k1.GenPrivKey().PubKey(), @@ -121,14 +124,14 @@ func MakeTestCodec(t testing.TB) codec.Codec { func MakeEncodingConfig(_ testing.TB) EncodingConfig { interfaceRegistry, _ := codectypes.NewInterfaceRegistryWithOptions(codectypes.InterfaceRegistryOptions{ ProtoFiles: proto.HybridResolver, - SigningOptions: signing.Options{ + SigningOptions: signingmod.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) + txConfig := authtx.NewTxConfig(appCodec, authtx.DefaultSignModes) std.RegisterInterfaces(interfaceRegistry) std.RegisterLegacyAminoCodec(legacyAmino) @@ -201,11 +204,11 @@ func (f *TestFaucet) NewFundedAccount(ctx context.Context, amounts ...sdk.Coin) } type TestKeepers struct { + Cdc codec.Codec AccountKeeper authkeeper.AccountKeeper BankKeeper bankkeeper.Keeper OPChildKeeper opchildkeeper.Keeper OracleKeeper *oraclekeeper.Keeper - BridgeHook *bridgeHook EncodingConfig EncodingConfig Faucet *TestFaucet } @@ -224,12 +227,12 @@ 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) { +func keyPubAddr() (cryptotypes.PrivKey, cryptotypes.PubKey, sdk.AccAddress) { keyCounter++ seed := make([]byte, 8) binary.BigEndian.PutUint64(seed, keyCounter) - key := ed25519.GenPrivKeyFromSecret(seed) + key := secp256k1.GenPrivKeyFromSecret(seed) pub := key.PubKey() addr := sdk.AccAddress(pub.Address()) return key, pub, addr @@ -262,6 +265,8 @@ func _createTestInput( encodingConfig := MakeEncodingConfig(t) appCodec := encodingConfig.Marshaler + txDecoder := encodingConfig.TxConfig.TxDecoder() + signModeHandler := encodingConfig.TxConfig.SignModeHandler() maccPerms := map[string][]string{ // module account permissions authtypes.FeeCollectorName: nil, @@ -282,6 +287,7 @@ func _createTestInput( sdk.GetConfig().GetBech32AccountAddrPrefix(), authtypes.NewModuleAddress(opchildtypes.ModuleName).String(), ) + require.NoError(t, accountKeeper.Params.Set(ctx, authtypes.DefaultParams())) blockedAddrs := make(map[string]bool) for acc := range maccPerms { blockedAddrs[authtypes.NewModuleAddress(acc).String()] = true @@ -300,6 +306,9 @@ func _createTestInput( msgRouter := baseapp.NewMsgServiceRouter() msgRouter.SetInterfaceRegistry(encodingConfig.InterfaceRegistry) + // register bank message service to the router + banktypes.RegisterMsgServer(msgRouter, bankkeeper.NewMsgServerImpl(bankKeeper)) + oracleKeeper := oraclekeeper.NewKeeper( runtime.NewKVStoreService(keys[oracletypes.StoreKey]), appCodec, @@ -307,14 +316,20 @@ func _createTestInput( authtypes.NewModuleAddress(opchildtypes.ModuleName), ) - bridgeHook := &bridgeHook{} opchildKeeper := opchildkeeper.NewKeeper( appCodec, runtime.NewKVStoreService(keys[opchildtypes.StoreKey]), accountKeeper, bankKeeper, - bridgeHook.Hook, &oracleKeeper, + sdk.ChainAnteDecorators( + authante.NewSetPubKeyDecorator(accountKeeper), + authante.NewValidateSigCountDecorator(accountKeeper), + authante.NewSigGasConsumeDecorator(accountKeeper, authante.DefaultSigVerificationGasConsumer), + authante.NewSigVerificationDecorator(accountKeeper, signModeHandler), + authante.NewIncrementSequenceDecorator(accountKeeper), + ), + txDecoder, msgRouter, authtypes.NewModuleAddress(opchildtypes.ModuleName).String(), authcodec.NewBech32Codec(sdk.GetConfig().GetBech32AccountAddrPrefix()), @@ -329,31 +344,73 @@ func _createTestInput( require.NoError(t, opchildKeeper.SetParams(ctx, opchildParams)) // register handlers to msg router - opchildtypes.RegisterMsgServer(msgRouter, opchildkeeper.NewMsgServerImpl(*opchildKeeper)) + opchildtypes.RegisterMsgServer(msgRouter, opchildkeeper.NewMsgServerImpl(opchildKeeper)) faucet := NewTestFaucet(t, ctx, bankKeeper, authtypes.Minter, initialTotalSupply()...) keepers := TestKeepers{ + Cdc: appCodec, 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 +func generateTestTx( + t *testing.T, input TestKeepers, msgs []sdk.Msg, + privs []cryptotypes.PrivKey, accNums []uint64, + accSeqs []uint64, chainID string, +) authsign.Tx { + txConfig := input.EncodingConfig.TxConfig + txBuilder := txConfig.NewTxBuilder() + + defaultSignMode, err := authsign.APISignModeToInternal(txConfig.SignModeHandler().DefaultMode()) + require.NoError(t, err) + + // set msgs + txBuilder.SetMsgs(msgs...) + + // First round: we gather all the signer infos. We use the "set empty + // signature" hack to do that. + var sigsV2 []signing.SignatureV2 + for i, priv := range privs { + sigV2 := signing.SignatureV2{ + PubKey: priv.PubKey(), + Data: &signing.SingleSignatureData{ + SignMode: defaultSignMode, + Signature: nil, + }, + Sequence: accSeqs[i], + } + + sigsV2 = append(sigsV2, sigV2) + } + err = txBuilder.SetSignatures(sigsV2...) + require.NoError(t, err) + + // Second round: all signer infos are set, so each signer can sign. + sigsV2 = []signing.SignatureV2{} + for i, priv := range privs { + signerData := authsign.SignerData{ + Address: sdk.AccAddress(priv.PubKey().Address()).String(), + ChainID: chainID, + AccountNumber: accNums[i], + Sequence: accSeqs[i], + PubKey: priv.PubKey(), + } + sigV2, err := tx.SignWithPrivKey( + context.TODO(), defaultSignMode, signerData, + txBuilder, priv, txConfig, accSeqs[i]) + require.NoError(t, err) + + sigsV2 = append(sigsV2, sigV2) } + err = txBuilder.SetSignatures(sigsV2...) + require.NoError(t, err) - return h.err + return txBuilder.GetTx() } diff --git a/x/opchild/keeper/compatibility_grpc_query.go b/x/opchild/keeper/compatibility_grpc_query.go index 2f682a79..ccf8b7e2 100644 --- a/x/opchild/keeper/compatibility_grpc_query.go +++ b/x/opchild/keeper/compatibility_grpc_query.go @@ -20,7 +20,7 @@ const ( // Querier is used as Keeper will have duplicate methods if used directly, and gRPC names take precedence over keeper type CompatibilityQuerier struct { - Keeper + *Keeper } var _ cosmostypes.QueryServer = CompatibilityQuerier{} diff --git a/x/opchild/keeper/deposit.go b/x/opchild/keeper/deposit.go new file mode 100644 index 00000000..76f6b158 --- /dev/null +++ b/x/opchild/keeper/deposit.go @@ -0,0 +1,100 @@ +package keeper + +import ( + "context" + "fmt" + + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/initia-labs/OPinit/x/opchild/types" +) + +func (k Keeper) handleBridgeHook(ctx sdk.Context, data []byte) (success bool, reason string) { + defer func() { + if r := recover(); r != nil { + reason = fmt.Sprintf("panic: %v", r) + } + + const maxReasonLength = 128 + if len(reason) > maxReasonLength { + reason = reason[:maxReasonLength] + "..." + } + }() + + tx, err := k.txDecoder(data) + if err != nil { + reason = fmt.Sprintf("Failed to decode tx: %s", err) + return + } + + ctx, err = k.decorators(ctx, tx, false) + if err != nil { + reason = fmt.Sprintf("Failed to run AnteHandler: %s", err) + return + } + + // use cache context from here to avoid resetting sequencer number on failure + cacheCtx, commit := ctx.CacheContext() + for _, msg := range tx.GetMsgs() { + handler := k.router.Handler(msg) + if handler == nil { + reason = fmt.Sprintf("Unrecognized Msg type: %s", sdk.MsgTypeURL(msg)) + return + } + + _, err = handler(cacheCtx, msg) + if err != nil { + reason = fmt.Sprintf("Failed to execute Msg: %s", err) + return + } + } + + commit() + success = true + + return +} + +// safeDepositToken mint and send coins to the recipient. Rollback all state changes +// if the deposit is failed. +func (ms MsgServer) safeDepositToken(ctx context.Context, toAddr sdk.AccAddress, coins sdk.Coins) (success bool, reason string) { + // if coin is zero, just create an account + if coins.IsZero() { + newAcc := ms.authKeeper.NewAccountWithAddress(ctx, toAddr) + ms.authKeeper.SetAccount(ctx, newAcc) + return true, "" + } + + var err error + defer func() { + if r := recover(); r != nil { + reason = fmt.Sprintf("panic: %v", r) + } + + const maxReasonLength = 128 + if len(reason) > maxReasonLength { + reason = reason[:maxReasonLength] + "..." + } + }() + + // use cache context to avoid relaying failure + sdkCtx := sdk.UnwrapSDKContext(ctx) + cacheCtx, commit := sdkCtx.CacheContext() + + // mint coins to the module account + if err = ms.bankKeeper.MintCoins(cacheCtx, types.ModuleName, coins); err != nil { + reason = fmt.Sprintf("failed to mint coins: %s", err) + return + } + + // transfer can be failed due to contract logics + if err = ms.bankKeeper.SendCoinsFromModuleToAccount(cacheCtx, types.ModuleName, toAddr, coins); err != nil { + reason = fmt.Sprintf("failed to send coins: %s", err) + return + } + + // write the changes only if the transfer is successful + commit() + success = true + + return +} diff --git a/x/opchild/keeper/genesis.go b/x/opchild/keeper/genesis.go index 31e55a4f..051e28f3 100644 --- a/x/opchild/keeper/genesis.go +++ b/x/opchild/keeper/genesis.go @@ -89,17 +89,8 @@ func (k Keeper) InitGenesis(ctx context.Context, data *types.GenesisState) (res } } - for _, pd := range data.PendingDeposits { - addr, err := k.addressCodec.StringToBytes(pd.Recipient) - if err != nil { - panic(err) - } - - if err := pd.Coins.Validate(); err != nil { - panic(err) - } - - if err := k.PendingDeposits.Set(ctx, addr, types.CoinsWrapper{Coins: pd.Coins}); err != nil { + for _, denomPair := range data.DenomPairs { + if err := k.DenomPairs.Set(ctx, denomPair.Denom, denomPair.BaseDenom); err != nil { panic(err) } } @@ -152,17 +143,9 @@ func (k Keeper) ExportGenesis(ctx context.Context) *types.GenesisState { bridgeInfo = &bridgeInfo_ } - pendingDeposits := []types.PendingDeposits{} - err = k.PendingDeposits.Walk(ctx, nil, func(key []byte, value types.CoinsWrapper) (stop bool, err error) { - addr, err := k.addressCodec.BytesToString(key) - if err != nil { - return false, err - } - - pendingDeposits = append(pendingDeposits, types.PendingDeposits{ - Recipient: addr, - Coins: value.Coins, - }) + var denomPairs []types.DenomPair + err = k.DenomPairs.Walk(ctx, nil, func(denom, baseDenom string) (stop bool, err error) { + denomPairs = append(denomPairs, types.DenomPair{Denom: denom, BaseDenom: baseDenom}) return false, nil }) if err != nil { @@ -177,6 +160,6 @@ func (k Keeper) ExportGenesis(ctx context.Context) *types.GenesisState { NextL1Sequence: finalizedL1Sequence, NextL2Sequence: nextL2Sequence, BridgeInfo: bridgeInfo, - PendingDeposits: pendingDeposits, + DenomPairs: denomPairs, } } diff --git a/x/opchild/keeper/genesis_test.go b/x/opchild/keeper/genesis_test.go index 4ecd5cff..878d6135 100644 --- a/x/opchild/keeper/genesis_test.go +++ b/x/opchild/keeper/genesis_test.go @@ -6,8 +6,6 @@ import ( "github.com/stretchr/testify/require" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/initia-labs/OPinit/x/opchild/types" ophosttypes "github.com/initia-labs/OPinit/x/ophost/types" ) @@ -28,6 +26,9 @@ func Test_GenesisImportExport(t *testing.T) { _, err = input.OPChildKeeper.IncreaseNextL1Sequence(ctx) // 3 require.NoError(t, err) + err = input.OPChildKeeper.DenomPairs.Set(ctx, "foo", "bar") + require.NoError(t, err) + genState := input.OPChildKeeper.ExportGenesis(ctx) require.Nil(t, genState.BridgeInfo) @@ -49,11 +50,6 @@ func Test_GenesisImportExport(t *testing.T) { }, } - genState.PendingDeposits = append( - genState.PendingDeposits, - types.PendingDeposits{Recipient: addrsStr[0], Coins: sdk.NewCoins(sdk.NewInt64Coin("eth", 100))}, - ) - input.OPChildKeeper.InitGenesis(ctx, genState) genState_ := input.OPChildKeeper.ExportGenesis(ctx) require.Equal(t, genState, genState_) diff --git a/x/opchild/keeper/keeper.go b/x/opchild/keeper/keeper.go index 6b1eae10..124c6d12 100644 --- a/x/opchild/keeper/keeper.go +++ b/x/opchild/keeper/keeper.go @@ -28,10 +28,11 @@ type Keeper struct { authKeeper types.AccountKeeper bankKeeper types.BankKeeper - bridgeHook types.BridgeHook - // Msg server router - router *baseapp.MsgServiceRouter + // sig verify and sequence increment decorators + decorators sdk.AnteHandler + txDecoder sdk.TxDecoder + router *baseapp.MsgServiceRouter // the address capable of executing a MsgUpdateParams message. Typically, this // should be the x/opchild module account. @@ -51,7 +52,6 @@ type Keeper struct { ValidatorsByConsAddr collections.Map[[]byte, []byte] HistoricalInfos collections.Map[int64, cosmostypes.HistoricalInfo] DenomPairs collections.Map[string, string] - PendingDeposits collections.Map[[]byte, types.CoinsWrapper] ExecutorChangePlans map[uint64]types.ExecutorChangePlan @@ -64,8 +64,19 @@ func NewKeeper( storeService corestoretypes.KVStoreService, ak types.AccountKeeper, bk types.BankKeeper, - bh types.BridgeHook, ok types.OracleKeeper, + /* + Should provide the following decorators + sdk.ChainAnteDecorators( + authante.NewSetPubKeyDecorator(accountKeeper), + authante.NewValidateSigCountDecorator(accountKeeper), + authante.NewSigGasConsumeDecorator(accountKeeper, authante.DefaultSigVerificationGasConsumer), + authante.NewSigVerificationDecorator(accountKeeper, signModeHandler), + authante.NewIncrementSequenceDecorator(accountKeeper), + ), + */ + decorators sdk.AnteHandler, + txDecoder sdk.TxDecoder, router *baseapp.MsgServiceRouter, authority string, addressCodec address.Codec, @@ -95,7 +106,8 @@ func NewKeeper( storeService: storeService, authKeeper: ak, bankKeeper: bk, - bridgeHook: bh, + decorators: decorators, + txDecoder: txDecoder, router: router, authority: authority, addressCodec: addressCodec, @@ -108,9 +120,8 @@ func NewKeeper( LastValidatorPowers: collections.NewMap(sb, types.LastValidatorPowerPrefix, "last_validator_powers", collections.BytesKey, collections.Int64Value), Validators: collections.NewMap(sb, types.ValidatorsPrefix, "validators", collections.BytesKey, codec.CollValue[types.Validator](cdc)), ValidatorsByConsAddr: collections.NewMap(sb, types.ValidatorsByConsAddrPrefix, "validators_by_cons_addr", collections.BytesKey, collections.BytesValue), - HistoricalInfos: collections.NewMap(sb, types.HistoricalInfoPrefix, "historical_infos", collections.Int64Key, codec.CollValue[cosmostypes.HistoricalInfo](cdc)), DenomPairs: collections.NewMap(sb, types.DenomPairPrefix, "denom_pairs", collections.StringKey, collections.StringValue), - PendingDeposits: collections.NewMap(sb, types.PendingDepositsKey, "pending_deposits", collections.BytesKey, codec.CollValue[types.CoinsWrapper](cdc)), + HistoricalInfos: collections.NewMap(sb, types.HistoricalInfoPrefix, "historical_infos", collections.Int64Key, codec.CollValue[cosmostypes.HistoricalInfo](cdc)), ExecutorChangePlans: make(map[uint64]types.ExecutorChangePlan), HostValidatorStore: hostValidatorStore, diff --git a/x/opchild/keeper/msg_server.go b/x/opchild/keeper/msg_server.go index fe480c19..137fbceb 100644 --- a/x/opchild/keeper/msg_server.go +++ b/x/opchild/keeper/msg_server.go @@ -3,12 +3,10 @@ package keeper import ( "bytes" "context" - "errors" + "fmt" "strconv" - "cosmossdk.io/collections" errorsmod "cosmossdk.io/errors" - "cosmossdk.io/math" cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" @@ -19,14 +17,14 @@ import ( ) type MsgServer struct { - Keeper + *Keeper } var _ types.MsgServer = MsgServer{} // NewMsgServerImpl return MsgServer instance -func NewMsgServerImpl(k Keeper) MsgServer { - return MsgServer{k} +func NewMsgServerImpl(k *Keeper) *MsgServer { + return &MsgServer{k} } // checkAdminPermission checks if the sender is the admin @@ -111,7 +109,12 @@ func (ms MsgServer) ExecuteMessages(ctx context.Context, req *types.MsgExecuteMe // assert that the opchild module account is the only signer for ExecuteMessages message if !bytes.Equal(signers[0], authority) { - return nil, errorsmod.Wrapf(types.ErrInvalidSigner, sdk.AccAddress(signers[0]).String()) + signer, err := ms.addressCodec.BytesToString(signers[0]) + if err != nil { + return nil, err + } + + return nil, errorsmod.Wrap(types.ErrInvalidSigner, signer) } handler := ms.Router().Handler(msg) @@ -391,30 +394,19 @@ func (ms MsgServer) FinalizeTokenDeposit(ctx context.Context, req *types.MsgFina return nil, types.ErrInvalidSequence } - coins := sdk.NewCoins(coin) - if err := ms.bankKeeper.MintCoins(ctx, types.ModuleName, coins); err != nil { - return nil, err - } - - // handle hook - if the recipient is "hook" - executeHook := len(req.Data) > 0 && req.To == "hook" - - var toAddr sdk.AccAddress - if executeHook { - // intermediate address - toAddr = types.DeriveIntermediateSender(req.From) - } else { - toAddr, err = ms.authKeeper.AddressCodec().StringToBytes(req.To) - if err != nil { - return nil, err - } - } - - success, err := ms.safeDepositToken(ctx, toAddr, coins) + // deposit token + var success bool + var reason string + toAddr, err := ms.authKeeper.AddressCodec().StringToBytes(req.To) if err != nil { - return nil, err + success = false + reason = fmt.Sprintf("failed to convert recipient address: %s", err) + } else { + // rollback if the deposit is failed + success, reason = ms.safeDepositToken(ctx, toAddr, sdk.NewCoins(coin)) } + // updae l1 sequence if _, err := ms.IncreaseNextL1Sequence(ctx); err != nil { return nil, err } @@ -442,57 +434,34 @@ func (ms MsgServer) FinalizeTokenDeposit(ctx context.Context, req *types.MsgFina sdk.NewAttribute(types.AttributeKeyBaseDenom, req.BaseDenom), sdk.NewAttribute(types.AttributeKeyAmount, coin.Amount.String()), sdk.NewAttribute(types.AttributeKeyFinalizeHeight, strconv.FormatUint(req.Height, 10)), + sdk.NewAttribute(types.AttributeKeySuccess, strconv.FormatBool(success)), + sdk.NewAttribute(types.AttributeKeyReason, reason), ) - if success && executeHook { - cacheCtx, commit := sdkCtx.CacheContext() - - // in this case, the recipient is "hook" and the toAddr is the intermediate address - if err := ms.bridgeHook(cacheCtx, toAddr, req.Data); err == nil { - commit() - } - - event = event.AppendAttributes(sdk.NewAttribute(types.AttributeKeyHookSuccess, strconv.FormatBool(err == nil))) + // if the deposit is successful and the data is not empty, execute the hook + if success && len(req.Data) > 0 { + success, reason := ms.handleBridgeHook(sdkCtx, req.Data) + event = event.AppendAttributes(sdk.NewAttribute(types.AttributeKeyHookSuccess, strconv.FormatBool(success))) + event = event.AppendAttributes(sdk.NewAttribute(types.AttributeKeyHookReason, reason)) } + // emit deposit event sdkCtx.EventManager().EmitEvent(event) - return &types.MsgFinalizeTokenDepositResponse{Result: types.SUCCESS}, nil -} - -// safeDepositToken deposits the token to the recipient address -// - if the deposit is failed, it records the pending deposit -// - if the deposit is successful, it returns true and writes the changes -func (ms MsgServer) safeDepositToken(ctx context.Context, toAddr sdk.AccAddress, coins sdk.Coins) (success bool, err error) { - // use cache context to avoid relaying failure - sdkCtx := sdk.UnwrapSDKContext(ctx) - cacheCtx, commit := sdkCtx.CacheContext() - - // transfer can be failed due to contract logics - if err = ms.bankKeeper.SendCoinsFromModuleToAccount(cacheCtx, types.ModuleName, toAddr, coins); err != nil { - ms.Logger(ctx).Error("failed to finalize token deposit", "error", err) - // records pending deposits - pendingDeposits, err := ms.PendingDeposits.Get(ctx, toAddr) - if err != nil && errors.Is(err, collections.ErrNotFound) { - pendingDeposits = types.CoinsWrapper{ - Coins: sdk.NewCoins(), - } - } else if err != nil { - return false, err + // if the deposit is failed, initate a withdrawal + if !success { + l2Sequence, err := ms.IncreaseNextL2Sequence(ctx) + if err != nil { + return nil, err } - pendingDeposits.Coins = pendingDeposits.Coins.Add(coins...) - if err := ms.PendingDeposits.Set(ctx, toAddr, pendingDeposits); err != nil { - return false, err + err = ms.emitWithdrawEvents(ctx, types.NewMsgInitiateTokenWithdrawal(req.To, req.From, coin), l2Sequence) + if err != nil { + return nil, err } - - return false, nil } - // write the changes only if the transfer is successful - commit() - - return true, nil + return &types.MsgFinalizeTokenDepositResponse{Result: types.SUCCESS}, nil } ///////////////////////////////////////////////////// @@ -507,51 +476,11 @@ func (ms MsgServer) InitiateTokenWithdrawal(ctx context.Context, req *types.MsgI coin := req.Amount burnCoins := sdk.NewCoins(coin) - baseDenom, err := ms.GetBaseDenom(ctx, coin.Denom) - if err != nil { - return nil, err - } - senderAddr, err := ms.authKeeper.AddressCodec().StringToBytes(req.Sender) if err != nil { return nil, err } - // check pending deposits and withdraw from them if necessary - pendingDeposits, err := ms.PendingDeposits.Get(ctx, senderAddr) - if err == nil { - pendingAmount := pendingDeposits.Coins.AmountOf(coin.Denom) - if pendingAmount.IsPositive() { - var pendingWithdrawAmount math.Int - if coin.Amount.GT(pendingAmount) { - pendingWithdrawAmount = pendingAmount - } else { - pendingWithdrawAmount = coin.Amount - } - - // withdraw from the pending deposits - withdrawnCoinFromPendingDeposits := sdk.NewCoin(coin.Denom, pendingWithdrawAmount) - coin = coin.Sub(withdrawnCoinFromPendingDeposits) - - // update pending deposits - pendingDeposits.Coins = pendingDeposits.Coins.Sub(withdrawnCoinFromPendingDeposits) - if pendingDeposits.Coins.IsZero() { - if err := ms.PendingDeposits.Remove(ctx, senderAddr); err != nil { - return nil, err - } - } else { - if err := ms.PendingDeposits.Set(ctx, senderAddr, pendingDeposits); err != nil { - return nil, err - } - } - } - } - - l2Sequence, err := ms.IncreaseNextL2Sequence(ctx) - if err != nil { - return nil, err - } - // send coins to the module account only if the amount is positive // - pending deposits are already accounted for if coin.IsPositive() { @@ -565,6 +494,28 @@ func (ms MsgServer) InitiateTokenWithdrawal(ctx context.Context, req *types.MsgI return nil, err } + l2Sequence, err := ms.IncreaseNextL2Sequence(ctx) + if err != nil { + return nil, err + } + + err = ms.emitWithdrawEvents(ctx, req, l2Sequence) + if err != nil { + return nil, err + } + + return &types.MsgInitiateTokenWithdrawalResponse{ + Sequence: l2Sequence, + }, nil +} + +func (ms MsgServer) emitWithdrawEvents(ctx context.Context, req *types.MsgInitiateTokenWithdrawal, l2Sequence uint64) error { + coin := req.Amount + baseDenom, err := ms.GetBaseDenom(ctx, coin.Denom) + if err != nil { + return err + } + sdkCtx := sdk.UnwrapSDKContext(ctx) sdkCtx.EventManager().EmitEvent(sdk.NewEvent( types.EventTypeInitiateTokenWithdrawal, @@ -576,7 +527,7 @@ func (ms MsgServer) InitiateTokenWithdrawal(ctx context.Context, req *types.MsgI sdk.NewAttribute(types.AttributeKeyL2Sequence, strconv.FormatUint(l2Sequence, 10)), )) - return &types.MsgInitiateTokenWithdrawalResponse{}, nil + return nil } func (ms MsgServer) UpdateOracle(ctx context.Context, req *types.MsgUpdateOracle) (*types.MsgUpdateOracleResponse, error) { diff --git a/x/opchild/keeper/msg_server_test.go b/x/opchild/keeper/msg_server_test.go index 52331535..7464d336 100644 --- a/x/opchild/keeper/msg_server_test.go +++ b/x/opchild/keeper/msg_server_test.go @@ -3,17 +3,17 @@ package keeper_test import ( "bytes" "encoding/hex" - "encoding/json" - "errors" "math/big" "slices" "testing" "time" "cosmossdk.io/math" + cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" testutilsims "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" protoio "github.com/cosmos/gogoproto/io" "github.com/cosmos/gogoproto/proto" @@ -39,7 +39,7 @@ import ( func Test_MsgServer_ExecuteMessages(t *testing.T) { ctx, input := createDefaultTestInput(t) - ms := keeper.NewMsgServerImpl(input.OPChildKeeper) + ms := keeper.NewMsgServerImpl(&input.OPChildKeeper) params, err := ms.GetParams(ctx) require.NoError(t, err) @@ -115,7 +115,7 @@ func Test_MsgServer_ExecuteMessages(t *testing.T) { func Test_MsgServer_AddValidator(t *testing.T) { ctx, input := createDefaultTestInput(t) - ms := keeper.NewMsgServerImpl(input.OPChildKeeper) + ms := keeper.NewMsgServerImpl(&input.OPChildKeeper) valPubKeys := testutilsims.CreateTestPubKeys(2) moduleAddr, err := input.AccountKeeper.AddressCodec().BytesToString(authtypes.NewModuleAddress(types.ModuleName)) @@ -173,7 +173,7 @@ func Test_MsgServer_AddValidator(t *testing.T) { func Test_MsgServer_RemoveValidator(t *testing.T) { ctx, input := createDefaultTestInput(t) - ms := keeper.NewMsgServerImpl(input.OPChildKeeper) + ms := keeper.NewMsgServerImpl(&input.OPChildKeeper) valPubKeys := testutilsims.CreateTestPubKeys(2) @@ -220,7 +220,7 @@ func Test_MsgServer_RemoveValidator(t *testing.T) { func Test_MsgServer_UpdateParams(t *testing.T) { ctx, input := createDefaultTestInput(t) - ms := keeper.NewMsgServerImpl(input.OPChildKeeper) + ms := keeper.NewMsgServerImpl(&input.OPChildKeeper) params, err := ms.GetParams(ctx) require.NoError(t, err) @@ -254,7 +254,7 @@ func Test_MsgServer_UpdateParams(t *testing.T) { func Test_MsgServer_SpendFeePool(t *testing.T) { ctx, input := createDefaultTestInput(t) - ms := keeper.NewMsgServerImpl(input.OPChildKeeper) + ms := keeper.NewMsgServerImpl(&input.OPChildKeeper) // fund fee pool collectedFees := sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, math.NewInt(100))) @@ -279,7 +279,7 @@ func Test_MsgServer_SpendFeePool(t *testing.T) { func Test_MsgServer_Withdraw(t *testing.T) { ctx, input := createDefaultTestInput(t) - ms := keeper.NewMsgServerImpl(input.OPChildKeeper) + ms := keeper.NewMsgServerImpl(&input.OPChildKeeper) info := types.BridgeInfo{ BridgeId: 1, @@ -306,7 +306,7 @@ func Test_MsgServer_Withdraw(t *testing.T) { baseDenom := "test_token" denom := ophosttypes.L2Denom(1, baseDenom) - _, err = ms.FinalizeTokenDeposit(ctx, types.NewMsgFinalizeTokenDeposit(addrsStr[0], "anyformataddr", addrsStr[1], sdk.NewCoin(denom, math.NewInt(100)), 1, 1, "test_token", nil)) + _, err = ms.FinalizeTokenDeposit(ctx, types.NewMsgFinalizeTokenDeposit(addrsStr[0], "anyformataddr", addrsStr[1], sdk.NewCoin(denom, math.NewInt(100)), 1, 1, "test/token", nil)) require.NoError(t, err) coins := sdk.NewCoins(sdk.NewCoin("foo", math.NewInt(1_000_000_000)), sdk.NewCoin(denom, math.NewInt(1_000_000_000))) @@ -331,7 +331,7 @@ func Test_MsgServer_Withdraw(t *testing.T) { func Test_MsgServer_SetBridgeInfo(t *testing.T) { ctx, input := createDefaultTestInput(t) - ms := keeper.NewMsgServerImpl(input.OPChildKeeper) + ms := keeper.NewMsgServerImpl(&input.OPChildKeeper) info := types.BridgeInfo{ BridgeId: 1, @@ -395,7 +395,7 @@ func Test_MsgServer_SetBridgeInfo(t *testing.T) { func Test_MsgServer_Deposit_ToModuleAccount(t *testing.T) { ctx, input := createDefaultTestInput(t) - ms := keeper.NewMsgServerImpl(input.OPChildKeeper) + ms := keeper.NewMsgServerImpl(&input.OPChildKeeper) bz := sha3.Sum256([]byte("test_token")) denom := "l2/" + hex.EncodeToString(bz[:]) @@ -417,17 +417,25 @@ func Test_MsgServer_Deposit_ToModuleAccount(t *testing.T) { require.Equal(t, math.ZeroInt(), afterToBalance.Amount) afterModuleBalance := input.BankKeeper.GetBalance(ctx, opchildModuleAddress, denom) - require.Equal(t, math.NewInt(100), afterModuleBalance.Amount) - - // pending deposits - deposits, err := input.OPChildKeeper.PendingDeposits.Get(ctx, opchildModuleAddress) - require.NoError(t, err) - require.Equal(t, deposits.Coins[0].Amount, math.NewInt(100)) + require.True(t, afterModuleBalance.Amount.IsZero()) + + // token withdrawal inititated + events := sdk.UnwrapSDKContext(ctx).EventManager().Events() + lastEvent := events[len(events)-1] + require.Equal(t, sdk.NewEvent( + types.EventTypeInitiateTokenWithdrawal, + sdk.NewAttribute(types.AttributeKeyFrom, opchildModuleAddress.String()), + sdk.NewAttribute(types.AttributeKeyTo, addrsStr[1]), + sdk.NewAttribute(types.AttributeKeyDenom, denom), + sdk.NewAttribute(types.AttributeKeyBaseDenom, "test_token"), + sdk.NewAttribute(types.AttributeKeyAmount, "100"), + sdk.NewAttribute(types.AttributeKeyL2Sequence, "1"), + ), lastEvent) } func Test_MsgServer_Deposit_NoHook(t *testing.T) { ctx, input := createDefaultTestInput(t) - ms := keeper.NewMsgServerImpl(input.OPChildKeeper) + ms := keeper.NewMsgServerImpl(&input.OPChildKeeper) bz := sha3.Sum256([]byte("test_token")) denom := "l2/" + hex.EncodeToString(bz[:]) @@ -451,24 +459,35 @@ func Test_MsgServer_Deposit_NoHook(t *testing.T) { func Test_MsgServer_Deposit_HookSuccess(t *testing.T) { ctx, input := createDefaultTestInput(t) - ms := keeper.NewMsgServerImpl(input.OPChildKeeper) + ms := keeper.NewMsgServerImpl(&input.OPChildKeeper) bz := sha3.Sum256([]byte("test_token")) denom := "l2/" + hex.EncodeToString(bz[:]) require.Equal(t, math.ZeroInt(), input.BankKeeper.GetBalance(ctx, addrs[1], denom).Amount) - hookMsgBytes, err := json.Marshal("message bytes") + // empty deposit to create account + priv, _, addr := keyPubAddr() + msg := types.NewMsgFinalizeTokenDeposit(addrsStr[0], addrsStr[1], addr.String(), sdk.NewCoin(denom, math.ZeroInt()), 1, 1, "test_token", nil) + _, err := ms.FinalizeTokenDeposit(ctx, msg) require.NoError(t, err) - input.BridgeHook.msgBytes = hookMsgBytes - input.BridgeHook.err = nil + // create hook data + acc := input.AccountKeeper.GetAccount(ctx, addr) + require.NotNil(t, acc) + privs, accNums, accSeqs := []cryptotypes.PrivKey{priv}, []uint64{acc.GetAccountNumber()}, []uint64{0} + signedTxBz, err := input.EncodingConfig.TxConfig.TxEncoder()(generateTestTx( + t, input, + []sdk.Msg{banktypes.NewMsgSend(addr, addrs[2], sdk.NewCoins(sdk.NewCoin(denom, math.NewInt(50))))}, // send half tokens to addrs[2] + privs, accNums, accSeqs, sdk.UnwrapSDKContext(ctx).ChainID(), + )) + require.NoError(t, err) // valid deposit - msg := types.NewMsgFinalizeTokenDeposit(addrsStr[0], addrsStr[1], "hook", sdk.NewCoin(denom, math.NewInt(100)), 1, 1, "test_token", hookMsgBytes) + ctx = sdk.UnwrapSDKContext(ctx).WithEventManager(sdk.NewEventManager()) + msg = types.NewMsgFinalizeTokenDeposit(addrsStr[0], addrsStr[1], addr.String(), sdk.NewCoin(denom, math.NewInt(100)), 2, 1, "test_token", signedTxBz) _, err = ms.FinalizeTokenDeposit(ctx, msg) require.NoError(t, err) - require.Equal(t, hookMsgBytes, input.BridgeHook.msgBytes) for _, event := range sdk.UnwrapSDKContext(ctx).EventManager().Events() { if event.Type == types.EventTypeFinalizeTokenDeposit { @@ -476,37 +495,52 @@ func Test_MsgServer_Deposit_HookSuccess(t *testing.T) { } } - // intermediate sender balance - intermediateSender := types.DeriveIntermediateSender(addrsStr[1]) - afterBalance := input.BankKeeper.GetBalance(ctx, intermediateSender, denom) - require.Equal(t, math.NewInt(100), afterBalance.Amount) + // check addrs[2] balance + afterBalance := input.BankKeeper.GetBalance(ctx, addrs[2], denom) + require.Equal(t, math.NewInt(50), afterBalance.Amount) } func Test_MsgServer_Deposit_HookFail(t *testing.T) { ctx, input := createDefaultTestInput(t) - ms := keeper.NewMsgServerImpl(input.OPChildKeeper) + ms := keeper.NewMsgServerImpl(&input.OPChildKeeper) bz := sha3.Sum256([]byte("test_token")) denom := "l2/" + hex.EncodeToString(bz[:]) - input.BridgeHook.err = errors.New("should be failed") + require.Equal(t, math.ZeroInt(), input.BankKeeper.GetBalance(ctx, addrs[1], denom).Amount) - // valid deposit - msg := types.NewMsgFinalizeTokenDeposit(addrsStr[0], addrsStr[1], addrsStr[1], sdk.NewCoin(denom, math.NewInt(100)), 1, 1, "test_token", []byte("invalid_message")) + // empty deposit to create account + priv, _, addr := keyPubAddr() + msg := types.NewMsgFinalizeTokenDeposit(addrsStr[0], addrsStr[1], addr.String(), sdk.NewCoin(denom, math.ZeroInt()), 1, 1, "test_token", nil) _, err := ms.FinalizeTokenDeposit(ctx, msg) require.NoError(t, err) - require.Empty(t, input.BridgeHook.msgBytes) + + // create hook data + acc := input.AccountKeeper.GetAccount(ctx, addr) + require.NotNil(t, acc) + privs, accNums, accSeqs := []cryptotypes.PrivKey{priv}, []uint64{acc.GetAccountNumber()}, []uint64{0} + signedTxBz, err := input.EncodingConfig.TxConfig.TxEncoder()(generateTestTx( + t, input, + []sdk.Msg{banktypes.NewMsgSend(addr, addrs[2], sdk.NewCoins(sdk.NewCoin(denom, math.NewInt(101))))}, // send more than deposited tokens + privs, accNums, accSeqs, sdk.UnwrapSDKContext(ctx).ChainID(), + )) + require.NoError(t, err) + + // valid deposit + ctx = sdk.UnwrapSDKContext(ctx).WithEventManager(sdk.NewEventManager()) + msg = types.NewMsgFinalizeTokenDeposit(addrsStr[0], addrsStr[1], addr.String(), sdk.NewCoin(denom, math.NewInt(100)), 2, 1, "test_token", signedTxBz) + _, err = ms.FinalizeTokenDeposit(ctx, msg) + require.NoError(t, err) for _, event := range sdk.UnwrapSDKContext(ctx).EventManager().Events() { if event.Type == types.EventTypeFinalizeTokenDeposit { - for _, attr := range event.Attributes { - if attr.Key == types.AttributeKeyHookSuccess { - require.Equal(t, "false", attr.Value) - } - } + require.True(t, slices.Contains(event.Attributes, sdk.NewAttribute(types.AttributeKeyHookSuccess, "false").ToKVPair())) } } + // check addrs[2] balance + afterBalance := input.BankKeeper.GetBalance(ctx, addrs[2], denom) + require.Equal(t, math.NewInt(0), afterBalance.Amount) } func Test_MsgServer_UpdateOracle(t *testing.T) { @@ -617,7 +651,7 @@ func Test_MsgServer_UpdateOracle(t *testing.T) { extCommitBz, err := extendedCommitCodec.Encode(eci) require.NoError(t, err) - ms := keeper.NewMsgServerImpl(opchildKeeper) + ms := keeper.NewMsgServerImpl(&opchildKeeper) _, err = ms.UpdateOracle(ctx, types.NewMsgUpdateOracle(addrsStr[0], 11, extCommitBz)) require.NoError(t, err) @@ -641,7 +675,7 @@ func Test_MsgServer_UpdateOracleFail(t *testing.T) { err := opchildKeeper.BridgeInfo.Set(ctx, bridgeInfo) require.NoError(t, err) - ms := keeper.NewMsgServerImpl(opchildKeeper) + ms := keeper.NewMsgServerImpl(&opchildKeeper) _, err = ms.UpdateOracle(ctx, types.NewMsgUpdateOracle(addrsStr[0], 11, []byte{})) require.EqualError(t, err, types.ErrOracleDisabled.Error()) } diff --git a/x/opchild/keeper/oracle.go b/x/opchild/keeper/oracle.go index ac8b9f00..dae9cdd6 100644 --- a/x/opchild/keeper/oracle.go +++ b/x/opchild/keeper/oracle.go @@ -65,7 +65,8 @@ func (k L2OracleHandler) UpdateOracle(ctx context.Context, height uint64, extCom return err } - if hostStoreLastHeight > int64(height) { + h := int64(height) + if hostStoreLastHeight > h { return types.ErrInvalidOracleHeight } @@ -83,7 +84,7 @@ func (k L2OracleHandler) UpdateOracle(ctx context.Context, height uint64, extCom return err } - err = l2slinky.ValidateVoteExtensions(sdkCtx, k.HostValidatorStore, int64(height-1), hostChainID, extendedCommitInfo) + err = l2slinky.ValidateVoteExtensions(sdkCtx, k.HostValidatorStore, h-1, hostChainID, extendedCommitInfo) if err != nil { return err } diff --git a/x/opchild/keeper/querier.go b/x/opchild/keeper/querier.go index 9205794f..a283d7ad 100644 --- a/x/opchild/keeper/querier.go +++ b/x/opchild/keeper/querier.go @@ -3,22 +3,23 @@ package keeper import ( "context" - "github.com/cosmos/cosmos-sdk/types/query" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" + "github.com/cosmos/cosmos-sdk/types/query" + "github.com/initia-labs/OPinit/x/opchild/types" ) type Querier struct { - Keeper + *Keeper } var _ types.QueryServer = &Querier{} // NewQuerier return new Querier instance -func NewQuerier(k Keeper) Querier { - return Querier{k} +func NewQuerier(k *Keeper) types.QueryServer { + return &Querier{k} } func (q Querier) Validator(ctx context.Context, req *types.QueryValidatorRequest) (*types.QueryValidatorResponse, error) { diff --git a/x/opchild/keeper/querier_test.go b/x/opchild/keeper/querier_test.go index bbfba323..34666d33 100644 --- a/x/opchild/keeper/querier_test.go +++ b/x/opchild/keeper/querier_test.go @@ -24,7 +24,7 @@ func Test_QueryValidator(t *testing.T) { require.NoError(t, err) require.NoError(t, input.OPChildKeeper.SetValidator(ctx, val)) - q := keeper.NewQuerier(input.OPChildKeeper) + q := keeper.NewQuerier(&input.OPChildKeeper) res, err := q.Validator(ctx, &types.QueryValidatorRequest{ValidatorAddr: val.OperatorAddress}) require.NoError(t, err) @@ -42,7 +42,7 @@ func Test_QueryValidators(t *testing.T) { require.NoError(t, err) require.NoError(t, input.OPChildKeeper.SetValidator(ctx, val1)) require.NoError(t, input.OPChildKeeper.SetValidator(ctx, val2)) - q := keeper.NewQuerier(input.OPChildKeeper) + q := keeper.NewQuerier(&input.OPChildKeeper) res, err := q.Validators(ctx, &types.QueryValidatorsRequest{}) require.NoError(t, err) @@ -71,7 +71,7 @@ func Test_QuerySetBridgeInfo(t *testing.T) { err := input.OPChildKeeper.BridgeInfo.Set(ctx, info) require.NoError(t, err) - q := keeper.NewQuerier(input.OPChildKeeper) + q := keeper.NewQuerier(&input.OPChildKeeper) res, err := q.BridgeInfo(ctx, &types.QueryBridgeInfoRequest{}) require.NoError(t, err) require.Equal(t, info, res.BridgeInfo) @@ -85,7 +85,7 @@ func Test_QueryParams(t *testing.T) { params.MinGasPrices = sdk.NewDecCoins(sdk.NewInt64DecCoin("stake", 1)) require.NoError(t, input.OPChildKeeper.SetParams(ctx, params)) - q := keeper.NewQuerier(input.OPChildKeeper) + q := keeper.NewQuerier(&input.OPChildKeeper) res, err := q.Params(ctx, &types.QueryParamsRequest{}) require.NoError(t, err) require.Equal(t, params, res.Params) @@ -97,7 +97,7 @@ func Test_QueryNextL1Sequence(t *testing.T) { // update the next L1 sequence require.NoError(t, input.OPChildKeeper.NextL1Sequence.Set(ctx, 100)) - q := keeper.NewQuerier(input.OPChildKeeper) + q := keeper.NewQuerier(&input.OPChildKeeper) res, err := q.NextL1Sequence(ctx, &types.QueryNextL1SequenceRequest{}) require.NoError(t, err) require.Equal(t, types.QueryNextL1SequenceResponse{NextL1Sequence: 100}, *res) @@ -109,7 +109,7 @@ func Test_QueryNextL2Sequence(t *testing.T) { // update the next L2 sequence require.NoError(t, input.OPChildKeeper.NextL2Sequence.Set(ctx, 100)) - q := keeper.NewQuerier(input.OPChildKeeper) + q := keeper.NewQuerier(&input.OPChildKeeper) res, err := q.NextL2Sequence(ctx, &types.QueryNextL2SequenceRequest{}) require.NoError(t, err) require.Equal(t, types.QueryNextL2SequenceResponse{NextL2Sequence: 100}, *res) @@ -121,7 +121,7 @@ func Test_QueryBaseDenom(t *testing.T) { bz := sha3.Sum256([]byte("base_denom")) denom := "l2/" + hex.EncodeToString(bz[:]) - ms := keeper.NewMsgServerImpl(input.OPChildKeeper) + ms := keeper.NewMsgServerImpl(&input.OPChildKeeper) _, err := ms.FinalizeTokenDeposit(ctx, &types.MsgFinalizeTokenDeposit{ Sender: addrsStr[0], Amount: sdk.NewInt64Coin(denom, 100), @@ -133,7 +133,7 @@ func Test_QueryBaseDenom(t *testing.T) { }) require.NoError(t, err) - q := keeper.NewQuerier(input.OPChildKeeper) + q := keeper.NewQuerier(&input.OPChildKeeper) res, err := q.BaseDenom(ctx, &types.QueryBaseDenomRequest{Denom: denom}) require.NoError(t, err) diff --git a/x/opchild/module.go b/x/opchild/module.go index 50d83216..5ed2e187 100644 --- a/x/opchild/module.go +++ b/x/opchild/module.go @@ -94,7 +94,7 @@ func (b AppModuleBasic) RegisterInterfaces(registry cdctypes.InterfaceRegistry) // AppModule implements an application module for the move module. type AppModule struct { AppModuleBasic - keeper keeper.Keeper + keeper *keeper.Keeper } // ConsensusVersion is a sequence number for state-breaking change of the @@ -106,7 +106,7 @@ func (AppModule) ConsensusVersion() uint64 { return ConsensusVersion } // NewAppModule creates a new AppModule object func NewAppModule( cdc codec.Codec, - k keeper.Keeper, + k *keeper.Keeper, ) AppModule { return AppModule{ AppModuleBasic: AppModuleBasic{cdc}, diff --git a/x/opchild/types/codec.go b/x/opchild/types/codec.go index ed93d949..3205430d 100644 --- a/x/opchild/types/codec.go +++ b/x/opchild/types/codec.go @@ -18,6 +18,8 @@ func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { legacy.RegisterAminoMsg(cdc, &MsgFinalizeTokenDeposit{}, "opchild/MsgFinalizeTokenDeposit") legacy.RegisterAminoMsg(cdc, &MsgInitiateTokenWithdrawal{}, "opchild/MsgInitiateTokenWithdrawal") legacy.RegisterAminoMsg(cdc, &MsgUpdateOracle{}, "opchild/MsgUpdateOracle") + legacy.RegisterAminoMsg(cdc, &MsgSetBridgeInfo{}, "opchild/MsgSetBridgeInfo") + legacy.RegisterAminoMsg(cdc, &MsgSpendFeePool{}, "opchild/MsgSpendFeePool") cdc.RegisterConcrete(Params{}, "opchild/Params", nil) } @@ -32,6 +34,8 @@ func RegisterInterfaces(registry codectypes.InterfaceRegistry) { &MsgFinalizeTokenDeposit{}, &MsgInitiateTokenWithdrawal{}, &MsgUpdateOracle{}, + &MsgSetBridgeInfo{}, + &MsgSpendFeePool{}, ) msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc) diff --git a/x/opchild/types/events.go b/x/opchild/types/events.go index 8d7412b5..7729e058 100644 --- a/x/opchild/types/events.go +++ b/x/opchild/types/events.go @@ -20,6 +20,8 @@ const ( AttributeKeyRecipient = "recipient" AttributeKeyAmount = "amount" AttributeKeyDenom = "denom" + AttributeKeySuccess = "success" + AttributeKeyReason = "reason" AttributeKeyBaseDenom = "base_denom" AttributeKeyStructTag = "struct_tag" AttributeKeyValidator = "validator" @@ -27,6 +29,7 @@ const ( AttributeKeyL1Sequence = "l1_sequence" AttributeKeyFinalizeHeight = "finalize_height" AttributeKeyHookSuccess = "hook_success" + AttributeKeyHookReason = "hook_reason" AttributeKeyFrom = "from" AttributeKeyTo = "to" AttributeKeyL2Sequence = "l2_sequence" diff --git a/x/opchild/types/genesis.go b/x/opchild/types/genesis.go index 59a39b2c..c442cef5 100644 --- a/x/opchild/types/genesis.go +++ b/x/opchild/types/genesis.go @@ -7,6 +7,7 @@ import ( "cosmossdk.io/core/address" "github.com/cosmos/cosmos-sdk/codec" codectypes "github.com/cosmos/cosmos-sdk/codec/types" + sdk "github.com/cosmos/cosmos-sdk/types" ) const ( @@ -19,10 +20,10 @@ func NewGenesisState(params Params, validators []Validator, bridgeInfo *BridgeIn return &GenesisState{ Params: params, LastValidatorPowers: []LastValidatorPower{}, - PendingDeposits: []PendingDeposits{}, Validators: validators, Exported: false, BridgeInfo: bridgeInfo, + DenomPairs: []DenomPair{}, } } @@ -32,11 +33,11 @@ func DefaultGenesisState() *GenesisState { Params: DefaultParams(), LastValidatorPowers: []LastValidatorPower{}, Validators: []Validator{}, - PendingDeposits: []PendingDeposits{}, NextL1Sequence: DefaultL1SequenceStart, NextL2Sequence: DefaultL2SequenceStart, BridgeInfo: nil, Exported: false, + DenomPairs: []DenomPair{}, } } @@ -57,6 +58,12 @@ func ValidateGenesis(data *GenesisState, ac address.Codec) error { } } + for _, denomPair := range data.DenomPairs { + if err := sdk.ValidateDenom(denomPair.Denom); err != nil { + return err + } + } + return data.Params.Validate(ac) } diff --git a/x/opchild/types/genesis.pb.go b/x/opchild/types/genesis.pb.go index 2b1e41c0..9f85afc4 100644 --- a/x/opchild/types/genesis.pb.go +++ b/x/opchild/types/genesis.pb.go @@ -33,13 +33,12 @@ type GenesisState struct { // of the last-block's bonded validators. LastValidatorPowers []LastValidatorPower `protobuf:"bytes,2,rep,name=last_validator_powers,json=lastValidatorPowers,proto3" json:"last_validator_powers"` // delegations defines the validator set at genesis. - Validators []Validator `protobuf:"bytes,3,rep,name=validators,proto3" json:"validators"` - // the pending deposits that are not failed to be deposited. - PendingDeposits []PendingDeposits `protobuf:"bytes,4,rep,name=pending_deposits,json=pendingDeposits,proto3" json:"pending_deposits"` - NextL2Sequence uint64 `protobuf:"varint,5,opt,name=next_l2_sequence,json=nextL2Sequence,proto3" json:"next_l2_sequence,omitempty"` - NextL1Sequence uint64 `protobuf:"varint,6,opt,name=next_l1_sequence,json=nextL1Sequence,proto3" json:"next_l1_sequence,omitempty"` - BridgeInfo *BridgeInfo `protobuf:"bytes,7,opt,name=bridge_info,json=bridgeInfo,proto3" json:"bridge_info,omitempty"` - Exported bool `protobuf:"varint,8,opt,name=exported,proto3" json:"exported,omitempty"` + Validators []Validator `protobuf:"bytes,3,rep,name=validators,proto3" json:"validators"` + NextL2Sequence uint64 `protobuf:"varint,4,opt,name=next_l2_sequence,json=nextL2Sequence,proto3" json:"next_l2_sequence,omitempty"` + NextL1Sequence uint64 `protobuf:"varint,5,opt,name=next_l1_sequence,json=nextL1Sequence,proto3" json:"next_l1_sequence,omitempty"` + BridgeInfo *BridgeInfo `protobuf:"bytes,6,opt,name=bridge_info,json=bridgeInfo,proto3" json:"bridge_info,omitempty"` + Exported bool `protobuf:"varint,7,opt,name=exported,proto3" json:"exported,omitempty"` + DenomPairs []DenomPair `protobuf:"bytes,8,rep,name=denom_pairs,json=denomPairs,proto3" json:"denom_pairs"` } func (m *GenesisState) Reset() { *m = GenesisState{} } @@ -96,13 +95,6 @@ func (m *GenesisState) GetValidators() []Validator { return nil } -func (m *GenesisState) GetPendingDeposits() []PendingDeposits { - if m != nil { - return m.PendingDeposits - } - return nil -} - func (m *GenesisState) GetNextL2Sequence() uint64 { if m != nil { return m.NextL2Sequence @@ -131,6 +123,13 @@ func (m *GenesisState) GetExported() bool { return false } +func (m *GenesisState) GetDenomPairs() []DenomPair { + if m != nil { + return m.DenomPairs + } + return nil +} + // LastValidatorPower required for validator set update logic. type LastValidatorPower struct { // address is the address of the validator. @@ -180,38 +179,38 @@ func init() { func init() { proto.RegisterFile("opinit/opchild/v1/genesis.proto", fileDescriptor_08c29689c0e7bd55) } var fileDescriptor_08c29689c0e7bd55 = []byte{ - // 495 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x92, 0x41, 0x8b, 0xd3, 0x40, - 0x14, 0xc7, 0x93, 0x6d, 0xb7, 0xdb, 0x9d, 0x8a, 0xee, 0x8e, 0x15, 0xb2, 0xc5, 0x4d, 0x43, 0x41, - 0x08, 0x42, 0x13, 0x1a, 0x6f, 0x22, 0x82, 0x45, 0x28, 0xc2, 0x82, 0x25, 0x05, 0x11, 0x2f, 0x61, - 0xd2, 0xcc, 0xa6, 0x03, 0xe9, 0xcc, 0x98, 0x99, 0xad, 0xf5, 0x03, 0x08, 0x1e, 0xfd, 0x08, 0x7b, - 0xf4, 0xe8, 0xc1, 0x0f, 0xb1, 0xc7, 0xc5, 0x93, 0x27, 0x91, 0xf6, 0xa0, 0x1f, 0x43, 0x3a, 0x93, - 0xcd, 0x46, 0xda, 0xcb, 0x30, 0xef, 0xbd, 0xdf, 0xfb, 0xcf, 0x1b, 0xde, 0x1f, 0x74, 0x19, 0x27, - 0x94, 0x48, 0x9f, 0xf1, 0xe9, 0x8c, 0x64, 0x89, 0xbf, 0x18, 0xf8, 0x29, 0xa6, 0x58, 0x10, 0xe1, - 0xf1, 0x9c, 0x49, 0x06, 0x8f, 0x35, 0xe0, 0x15, 0x80, 0xb7, 0x18, 0x74, 0x8e, 0xd1, 0x9c, 0x50, - 0xe6, 0xab, 0x53, 0x53, 0x9d, 0x93, 0x29, 0x13, 0x73, 0x26, 0x22, 0x15, 0xf9, 0x3a, 0x28, 0x4a, - 0xed, 0x94, 0xa5, 0x4c, 0xe7, 0x37, 0xb7, 0x22, 0x7b, 0xba, 0xfd, 0xae, 0xfc, 0xc8, 0x71, 0xd1, - 0xd4, 0xfb, 0x54, 0x07, 0x77, 0x46, 0x7a, 0x8e, 0x89, 0x44, 0x12, 0xc3, 0x67, 0xa0, 0xc1, 0x51, - 0x8e, 0xe6, 0xc2, 0x32, 0x1d, 0xd3, 0x6d, 0x05, 0x27, 0xde, 0xd6, 0x5c, 0xde, 0x58, 0x01, 0xc3, - 0xc3, 0xab, 0x5f, 0x5d, 0xe3, 0xeb, 0x9f, 0x6f, 0x8f, 0xcd, 0xb0, 0xe8, 0x81, 0x09, 0x78, 0x90, - 0x21, 0x21, 0xa3, 0x05, 0xca, 0x48, 0x82, 0x24, 0xcb, 0x23, 0xce, 0x3e, 0xe0, 0x5c, 0x58, 0x7b, - 0x4e, 0xcd, 0x6d, 0x05, 0x8f, 0x76, 0x88, 0x9d, 0x21, 0x21, 0xdf, 0xdc, 0xe0, 0xe3, 0x0d, 0x5d, - 0x15, 0xbe, 0x9f, 0x6d, 0x95, 0x05, 0x1c, 0x01, 0x50, 0x3e, 0x20, 0xac, 0x9a, 0x92, 0x7e, 0xb8, - 0x43, 0xba, 0xec, 0xab, 0x2a, 0x56, 0x5a, 0xe1, 0x5b, 0x70, 0xc4, 0x31, 0x4d, 0x08, 0x4d, 0xa3, - 0x04, 0x73, 0x26, 0x88, 0x14, 0x56, 0x5d, 0xc9, 0xf5, 0x76, 0x7d, 0x5b, 0xa3, 0x2f, 0x0b, 0xb2, - 0x2a, 0x7a, 0x8f, 0xff, 0x5f, 0x83, 0x2e, 0x38, 0xa2, 0x78, 0x29, 0xa3, 0x2c, 0x88, 0x04, 0x7e, - 0x7f, 0x81, 0xe9, 0x14, 0x5b, 0xfb, 0x8e, 0xe9, 0xd6, 0xc3, 0xbb, 0x9b, 0xfc, 0x59, 0x30, 0x29, - 0xb2, 0xb7, 0xe4, 0xe0, 0x96, 0x6c, 0x54, 0xc8, 0x41, 0x49, 0x3e, 0x07, 0xad, 0x38, 0x27, 0x49, - 0x8a, 0x23, 0x42, 0xcf, 0x99, 0x75, 0xa0, 0xf6, 0x73, 0xba, 0x63, 0xd0, 0xa1, 0xa2, 0x5e, 0xd1, - 0x73, 0x16, 0x82, 0xb8, 0xbc, 0xc3, 0x0e, 0x68, 0xe2, 0x25, 0x67, 0xb9, 0xc4, 0x89, 0xd5, 0x74, - 0x4c, 0xb7, 0x19, 0x96, 0x71, 0x6f, 0x06, 0xe0, 0xf6, 0x22, 0x60, 0x00, 0x0e, 0x50, 0x92, 0xe4, - 0x58, 0x68, 0x37, 0x1c, 0x0e, 0xad, 0x1f, 0xdf, 0xfb, 0xed, 0xc2, 0x75, 0x2f, 0x74, 0x65, 0x22, - 0x73, 0x42, 0xd3, 0xf0, 0x06, 0x84, 0x6d, 0xb0, 0xaf, 0x76, 0x6e, 0xed, 0x39, 0xa6, 0x5b, 0x0b, - 0x75, 0xf0, 0xb4, 0xf9, 0xf9, 0xb2, 0x6b, 0xfc, 0xbd, 0xec, 0x1a, 0xc3, 0xd1, 0xd5, 0xca, 0x36, - 0xaf, 0x57, 0xb6, 0xf9, 0x7b, 0x65, 0x9b, 0x5f, 0xd6, 0xb6, 0x71, 0xbd, 0xb6, 0x8d, 0x9f, 0x6b, - 0xdb, 0x78, 0xd7, 0x4f, 0x89, 0x9c, 0x5d, 0xc4, 0xde, 0x94, 0xcd, 0xfd, 0xcd, 0x97, 0x08, 0xea, - 0x67, 0x28, 0x16, 0xfe, 0xeb, 0xb1, 0x72, 0xf0, 0xb2, 0xf4, 0xb0, 0x32, 0x70, 0xdc, 0x50, 0x0e, - 0x7e, 0xf2, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x0b, 0x8e, 0xf7, 0xbf, 0x5a, 0x03, 0x00, 0x00, + // 493 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x92, 0xc1, 0x8b, 0xd3, 0x4e, + 0x14, 0xc7, 0x93, 0xed, 0x6e, 0xb7, 0x3b, 0xfd, 0xf1, 0xc3, 0x1d, 0x2b, 0x64, 0x8b, 0x9b, 0x86, + 0x05, 0x21, 0x08, 0x4d, 0x68, 0xbc, 0x89, 0x08, 0x16, 0xa1, 0x0a, 0x0b, 0x96, 0x14, 0x3c, 0x78, + 0x09, 0x93, 0xce, 0x6c, 0x3a, 0x90, 0xcc, 0xc4, 0x99, 0xd9, 0x5a, 0xff, 0x03, 0x8f, 0xfe, 0x09, + 0x7b, 0xf4, 0xe8, 0xc1, 0x3f, 0x62, 0x8f, 0x8b, 0x27, 0x4f, 0x22, 0xed, 0x41, 0xff, 0x01, 0xef, + 0x92, 0x49, 0x9a, 0xad, 0xb4, 0x5e, 0x42, 0xde, 0x7b, 0x9f, 0xf7, 0x9d, 0xf7, 0x66, 0xbe, 0xa0, + 0xc7, 0x73, 0xca, 0xa8, 0xf2, 0x79, 0x3e, 0x9d, 0xd1, 0x14, 0xfb, 0xf3, 0x81, 0x9f, 0x10, 0x46, + 0x24, 0x95, 0x5e, 0x2e, 0xb8, 0xe2, 0xf0, 0xb8, 0x04, 0xbc, 0x0a, 0xf0, 0xe6, 0x83, 0xee, 0x31, + 0xca, 0x28, 0xe3, 0xbe, 0xfe, 0x96, 0x54, 0xf7, 0x64, 0xca, 0x65, 0xc6, 0x65, 0xa4, 0x23, 0xbf, + 0x0c, 0xaa, 0x52, 0x27, 0xe1, 0x09, 0x2f, 0xf3, 0xc5, 0x5f, 0x95, 0x3d, 0xdd, 0x3e, 0x57, 0xbd, + 0xcf, 0x49, 0xd5, 0x74, 0xf6, 0xbb, 0x01, 0xfe, 0x1b, 0x95, 0x73, 0x4c, 0x14, 0x52, 0x04, 0x3e, + 0x01, 0xcd, 0x1c, 0x09, 0x94, 0x49, 0xcb, 0x74, 0x4c, 0xb7, 0x1d, 0x9c, 0x78, 0x5b, 0x73, 0x79, + 0x63, 0x0d, 0x0c, 0x8f, 0xae, 0xbf, 0xf7, 0x8c, 0x4f, 0x3f, 0x3f, 0x3f, 0x34, 0xc3, 0xaa, 0x07, + 0x62, 0x70, 0x2f, 0x45, 0x52, 0x45, 0x73, 0x94, 0x52, 0x8c, 0x14, 0x17, 0x51, 0xce, 0xdf, 0x11, + 0x21, 0xad, 0x3d, 0xa7, 0xe1, 0xb6, 0x83, 0x07, 0x3b, 0xc4, 0xce, 0x91, 0x54, 0xaf, 0xd7, 0xf8, + 0xb8, 0xa0, 0x37, 0x85, 0xef, 0xa6, 0x5b, 0x65, 0x09, 0x47, 0x00, 0xd4, 0x07, 0x48, 0xab, 0xa1, + 0xa5, 0xef, 0xef, 0x90, 0xae, 0xfb, 0x36, 0x15, 0x37, 0x5a, 0xa1, 0x0b, 0xee, 0x30, 0xb2, 0x50, + 0x51, 0x1a, 0x44, 0x92, 0xbc, 0xbd, 0x24, 0x6c, 0x4a, 0xac, 0x7d, 0xc7, 0x74, 0xf7, 0xc3, 0xff, + 0x8b, 0xfc, 0x79, 0x30, 0xa9, 0xb2, 0xb7, 0xe4, 0xe0, 0x96, 0x3c, 0xd8, 0x20, 0x07, 0x35, 0xf9, + 0x14, 0xb4, 0x63, 0x41, 0x71, 0x42, 0x22, 0xca, 0x2e, 0xb8, 0xd5, 0xd4, 0xb7, 0x78, 0xba, 0x63, + 0xba, 0xa1, 0xa6, 0x5e, 0xb2, 0x0b, 0x1e, 0x82, 0xb8, 0xfe, 0x87, 0x5d, 0xd0, 0x22, 0x8b, 0x9c, + 0x0b, 0x45, 0xb0, 0x75, 0xe8, 0x98, 0x6e, 0x2b, 0xac, 0x63, 0xf8, 0x02, 0xb4, 0x31, 0x61, 0x3c, + 0x8b, 0x72, 0x44, 0x85, 0xb4, 0x5a, 0xff, 0xdc, 0xfc, 0x79, 0x41, 0x8d, 0x11, 0xfd, 0x7b, 0x73, + 0xbc, 0xce, 0xca, 0xb3, 0x19, 0x80, 0xdb, 0x17, 0x0f, 0x03, 0x70, 0x88, 0x30, 0x16, 0x44, 0x96, + 0xaf, 0x7f, 0x34, 0xb4, 0xbe, 0x7e, 0xe9, 0x77, 0x2a, 0x97, 0x3d, 0x2b, 0x2b, 0x13, 0x25, 0x28, + 0x4b, 0xc2, 0x35, 0x08, 0x3b, 0xe0, 0x40, 0xbf, 0xb1, 0xb5, 0xe7, 0x98, 0x6e, 0x23, 0x2c, 0x83, + 0xc7, 0xad, 0x0f, 0x57, 0x3d, 0xe3, 0xd7, 0x55, 0xcf, 0x18, 0x8e, 0xae, 0x97, 0xb6, 0x79, 0xb3, + 0xb4, 0xcd, 0x1f, 0x4b, 0xdb, 0xfc, 0xb8, 0xb2, 0x8d, 0x9b, 0x95, 0x6d, 0x7c, 0x5b, 0xd9, 0xc6, + 0x9b, 0x7e, 0x42, 0xd5, 0xec, 0x32, 0xf6, 0xa6, 0x3c, 0xf3, 0x8b, 0x05, 0x28, 0xea, 0xa7, 0x28, + 0x96, 0xfe, 0xab, 0xb1, 0x76, 0xec, 0xa2, 0xf6, 0xac, 0x36, 0x6c, 0xdc, 0xd4, 0x8e, 0x7d, 0xf4, + 0x27, 0x00, 0x00, 0xff, 0xff, 0x6b, 0x32, 0xd1, 0x3b, 0x4a, 0x03, 0x00, 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { @@ -234,6 +233,20 @@ func (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.DenomPairs) > 0 { + for iNdEx := len(m.DenomPairs) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.DenomPairs[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x42 + } + } if m.Exported { i-- if m.Exported { @@ -242,7 +255,7 @@ func (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0 } i-- - dAtA[i] = 0x40 + dAtA[i] = 0x38 } if m.BridgeInfo != nil { { @@ -254,31 +267,17 @@ func (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) { i = encodeVarintGenesis(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0x3a + dAtA[i] = 0x32 } if m.NextL1Sequence != 0 { i = encodeVarintGenesis(dAtA, i, uint64(m.NextL1Sequence)) i-- - dAtA[i] = 0x30 + dAtA[i] = 0x28 } if m.NextL2Sequence != 0 { i = encodeVarintGenesis(dAtA, i, uint64(m.NextL2Sequence)) i-- - dAtA[i] = 0x28 - } - if len(m.PendingDeposits) > 0 { - for iNdEx := len(m.PendingDeposits) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.PendingDeposits[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenesis(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x22 - } + dAtA[i] = 0x20 } if len(m.Validators) > 0 { for iNdEx := len(m.Validators) - 1; iNdEx >= 0; iNdEx-- { @@ -387,12 +386,6 @@ func (m *GenesisState) Size() (n int) { n += 1 + l + sovGenesis(uint64(l)) } } - if len(m.PendingDeposits) > 0 { - for _, e := range m.PendingDeposits { - l = e.Size() - n += 1 + l + sovGenesis(uint64(l)) - } - } if m.NextL2Sequence != 0 { n += 1 + sovGenesis(uint64(m.NextL2Sequence)) } @@ -406,6 +399,12 @@ func (m *GenesisState) Size() (n int) { if m.Exported { n += 2 } + if len(m.DenomPairs) > 0 { + for _, e := range m.DenomPairs { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } return n } @@ -562,40 +561,6 @@ func (m *GenesisState) Unmarshal(dAtA []byte) error { } iNdEx = postIndex case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PendingDeposits", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenesis - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenesis - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.PendingDeposits = append(m.PendingDeposits, PendingDeposits{}) - if err := m.PendingDeposits[len(m.PendingDeposits)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 5: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field NextL2Sequence", wireType) } @@ -614,7 +579,7 @@ func (m *GenesisState) Unmarshal(dAtA []byte) error { break } } - case 6: + case 5: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field NextL1Sequence", wireType) } @@ -633,7 +598,7 @@ func (m *GenesisState) Unmarshal(dAtA []byte) error { break } } - case 7: + case 6: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field BridgeInfo", wireType) } @@ -669,7 +634,7 @@ func (m *GenesisState) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex - case 8: + case 7: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field Exported", wireType) } @@ -689,6 +654,40 @@ func (m *GenesisState) Unmarshal(dAtA []byte) error { } } m.Exported = bool(v != 0) + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DenomPairs", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DenomPairs = append(m.DenomPairs, DenomPair{}) + if err := m.DenomPairs[len(m.DenomPairs)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenesis(dAtA[iNdEx:]) diff --git a/x/opchild/types/hook.go b/x/opchild/types/hook.go deleted file mode 100644 index a6a0103b..00000000 --- a/x/opchild/types/hook.go +++ /dev/null @@ -1,19 +0,0 @@ -package types - -import ( - context "context" - - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/address" -) - -type BridgeHook = func(ctx context.Context, sender sdk.AccAddress, msgBytes []byte) error - -const senderPrefix = "opinit-hook-intermediary" - -// DeriveIntermediateSender compute intermediate sender address -// Bech32(Hash(Hash("opinit-hook-intermediary") + sender)) -func DeriveIntermediateSender(originalSender string) sdk.AccAddress { - senderAddr := sdk.AccAddress(address.Hash(senderPrefix, []byte(originalSender))) - return senderAddr -} diff --git a/x/opchild/types/keys.go b/x/opchild/types/keys.go index 7839ee56..18bfb47a 100644 --- a/x/opchild/types/keys.go +++ b/x/opchild/types/keys.go @@ -19,14 +19,15 @@ var ( BridgeInfoKey = []byte{0x13} // prefix for bridge_info NextL1SequenceKey = []byte{0x14} // prefix for inbound deposit sequence number - LastValidatorPowerPrefix = []byte{0x21} // prefix for each key to a validator index, for bonded validators - ValidatorsPrefix = []byte{0x31} // prefix for each key to a validator - ValidatorsByConsAddrPrefix = []byte{0x41} // prefix for each key to a validator index, by pubkey - HistoricalInfoPrefix = []byte{0x51} // prefix for the historical info - DenomPairPrefix = []byte{0x61} // prefix for the denom pair - PendingDepositsKey = []byte{0x62} // prefix for pending deposits + HistoricalInfoPrefix = []byte{0x21} // prefix for the historical info + + LastValidatorPowerPrefix = []byte{0x31} // prefix for each key to a validator index, for bonded validators + ValidatorsPrefix = []byte{0x32} // prefix for each key to a validator + ValidatorsByConsAddrPrefix = []byte{0x33} // prefix for each key to a validator index, by pubkey + + DenomPairPrefix = []byte{0x41} // prefix for the denom pair // HostValidatorStore keys - HostHeightKey = []byte{0x71} - HostValidatorsPrefix = []byte{0x72} + HostHeightKey = []byte{0x51} + HostValidatorsPrefix = []byte{0x52} ) diff --git a/x/opchild/types/tx.go b/x/opchild/types/tx.go index 671f3c83..9639c1a0 100644 --- a/x/opchild/types/tx.go +++ b/x/opchild/types/tx.go @@ -258,7 +258,8 @@ func (msg MsgFinalizeTokenDeposit) Validate(ac address.Codec) error { } } - if !msg.Amount.IsValid() || msg.Amount.IsZero() { + // allow zero amount + if !msg.Amount.IsValid() { return ErrInvalidAmount } diff --git a/x/opchild/types/tx.pb.go b/x/opchild/types/tx.pb.go index 058c9478..b4e7dd66 100644 --- a/x/opchild/types/tx.pb.go +++ b/x/opchild/types/tx.pb.go @@ -327,6 +327,7 @@ var xxx_messageInfo_MsgInitiateTokenWithdrawal proto.InternalMessageInfo // MsgInitiateTokenWithdrawalResponse returns create token result data type MsgInitiateTokenWithdrawalResponse struct { + // l2 sequence number Sequence uint64 `protobuf:"varint,1,opt,name=sequence,proto3" json:"sequence,omitempty"` } @@ -787,83 +788,83 @@ func init() { func init() { proto.RegisterFile("opinit/opchild/v1/tx.proto", fileDescriptor_1ee96a503651b6e4) } var fileDescriptor_1ee96a503651b6e4 = []byte{ - // 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, + // 1204 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x57, 0x41, 0x6f, 0xe3, 0x44, + 0x14, 0x8e, 0x93, 0x6e, 0x76, 0x33, 0xdd, 0xdd, 0xb6, 0x56, 0x45, 0x5d, 0x8b, 0x26, 0x95, 0x11, + 0x22, 0x04, 0x62, 0x6f, 0x83, 0xe0, 0x10, 0x09, 0x89, 0x86, 0xdd, 0x4a, 0x65, 0x15, 0x6d, 0x95, + 0x2e, 0x20, 0x71, 0xa0, 0x4c, 0xe2, 0xa9, 0x33, 0x6a, 0xec, 0x31, 0x9e, 0x49, 0x68, 0xb8, 0x80, + 0x38, 0x21, 0xc4, 0x81, 0x9f, 0xb0, 0x07, 0x0e, 0x88, 0x53, 0x0f, 0x9c, 0x16, 0x7e, 0x40, 0xb5, + 0xa7, 0x15, 0x07, 0xc4, 0xa9, 0xb0, 0xed, 0xa1, 0x9c, 0xf7, 0x17, 0x20, 0x8f, 0x27, 0x8e, 0xe3, + 0xd8, 0x4d, 0x17, 0x95, 0x4b, 0x9b, 0x79, 0xef, 0x9b, 0x37, 0xef, 0x7b, 0xef, 0xcd, 0x7b, 0x63, + 0xa0, 0x12, 0x17, 0x3b, 0x98, 0x19, 0xc4, 0xed, 0x74, 0x71, 0xcf, 0x34, 0x06, 0x1b, 0x06, 0x3b, + 0xd4, 0x5d, 0x8f, 0x30, 0x22, 0x2f, 0x05, 0x3a, 0x5d, 0xe8, 0xf4, 0xc1, 0x86, 0xba, 0x04, 0x6d, + 0xec, 0x10, 0x83, 0xff, 0x0d, 0x50, 0x6a, 0xb1, 0x43, 0xa8, 0x4d, 0xa8, 0xd1, 0x86, 0x14, 0x19, + 0x83, 0x8d, 0x36, 0x62, 0x70, 0xc3, 0xe8, 0x10, 0xec, 0x08, 0xfd, 0x8a, 0xd0, 0xdb, 0xd4, 0xf2, + 0xad, 0xdb, 0xd4, 0x12, 0x8a, 0xd5, 0x40, 0xb1, 0xc7, 0x57, 0x46, 0xb0, 0x10, 0xaa, 0x65, 0x8b, + 0x58, 0x24, 0x90, 0xfb, 0xbf, 0x46, 0x1b, 0x2c, 0x42, 0xac, 0x1e, 0x32, 0xf8, 0xaa, 0xdd, 0xdf, + 0x37, 0xa0, 0x33, 0x14, 0xaa, 0xb5, 0x04, 0x1a, 0x43, 0x17, 0x09, 0x7b, 0xda, 0x8f, 0x12, 0x90, + 0x9b, 0xd4, 0xba, 0x77, 0x88, 0x3a, 0x7d, 0x86, 0x9a, 0x88, 0x52, 0x68, 0x21, 0x2a, 0xdf, 0x01, + 0x79, 0x8a, 0x1c, 0x13, 0x79, 0x8a, 0xb4, 0x2e, 0x95, 0x0b, 0x0d, 0xe5, 0xf7, 0x5f, 0xaa, 0xcb, + 0xc2, 0x91, 0x4d, 0xd3, 0xf4, 0x10, 0xa5, 0xbb, 0xcc, 0xc3, 0x8e, 0xd5, 0x12, 0x38, 0xf9, 0x0e, + 0xb8, 0x61, 0x8b, 0xdd, 0x4a, 0x76, 0x3d, 0x57, 0x9e, 0xaf, 0x2d, 0xeb, 0x81, 0x57, 0xfa, 0xc8, + 0x2b, 0x7d, 0xd3, 0x19, 0xb6, 0x42, 0x54, 0xbd, 0xf2, 0xcd, 0xf9, 0x51, 0x45, 0x6c, 0xff, 0xee, + 0xfc, 0xa8, 0xa2, 0x8e, 0x5c, 0x9c, 0xf6, 0x47, 0x7b, 0x19, 0xa8, 0xd3, 0xd2, 0x16, 0xa2, 0x2e, + 0x71, 0x28, 0xd2, 0x9e, 0x48, 0x60, 0xb1, 0x49, 0xad, 0x5d, 0xc4, 0x1a, 0x1e, 0x36, 0x2d, 0xb4, + 0xed, 0xec, 0x13, 0x79, 0x33, 0x46, 0xe1, 0xf5, 0xe7, 0x27, 0xa5, 0x5b, 0x43, 0x68, 0xf7, 0xea, + 0x5a, 0x20, 0xd7, 0x66, 0x72, 0xda, 0x06, 0xf3, 0x6d, 0x6e, 0x70, 0x0f, 0x3b, 0xfb, 0x44, 0xc9, + 0xae, 0x4b, 0xe5, 0xf9, 0xda, 0x9a, 0x3e, 0x95, 0x7c, 0x7d, 0x7c, 0x6c, 0xa3, 0x70, 0x7c, 0x52, + 0xca, 0xfc, 0x74, 0x7e, 0x54, 0x91, 0x5a, 0xa0, 0x1d, 0x8a, 0xeb, 0xe5, 0x18, 0x59, 0x25, 0x42, + 0x76, 0xc2, 0x6f, 0x4d, 0x05, 0x4a, 0x5c, 0x16, 0x12, 0xfd, 0x3e, 0x07, 0x56, 0x9a, 0xd4, 0xda, + 0xc2, 0x0e, 0xec, 0xe1, 0x2f, 0xd1, 0x43, 0x72, 0x80, 0x9c, 0xbb, 0xc8, 0x25, 0x14, 0xb3, 0xab, + 0xe0, 0x2b, 0x83, 0xb9, 0x7d, 0x8f, 0xd8, 0x9c, 0x68, 0xa1, 0xc5, 0x7f, 0xcb, 0x65, 0x90, 0x65, + 0x44, 0xc9, 0xcd, 0xa8, 0x82, 0x2c, 0x23, 0x72, 0x13, 0xe4, 0xa1, 0x4d, 0xfa, 0x0e, 0x53, 0xe6, + 0x78, 0xa0, 0x56, 0x75, 0x01, 0xf5, 0xeb, 0x5f, 0x17, 0xf5, 0xaf, 0xbf, 0x4f, 0xb0, 0xd3, 0x50, + 0xfd, 0x20, 0x8d, 0xfd, 0x0b, 0xb6, 0x69, 0x41, 0xd4, 0x84, 0x11, 0x59, 0x05, 0x37, 0x28, 0xfa, + 0xbc, 0x8f, 0x9c, 0x0e, 0x52, 0xae, 0xad, 0x4b, 0xe5, 0xb9, 0x56, 0xb8, 0x96, 0x5f, 0x02, 0xf9, + 0x2e, 0xc2, 0x56, 0x97, 0x29, 0x79, 0xae, 0x11, 0x2b, 0x79, 0x0d, 0x00, 0xff, 0xb0, 0x3d, 0x13, + 0x39, 0xc4, 0x56, 0xae, 0x73, 0x1a, 0x05, 0x5f, 0x72, 0xd7, 0x17, 0xc8, 0x6b, 0x60, 0xce, 0x84, + 0x0c, 0x2a, 0x37, 0xd6, 0xa5, 0xf2, 0x4d, 0x9e, 0x29, 0x29, 0x38, 0x93, 0x8b, 0xeb, 0x46, 0x2c, + 0x47, 0xa5, 0x48, 0x8e, 0x92, 0x42, 0xae, 0x7d, 0x06, 0x4a, 0x29, 0xaa, 0x51, 0xc6, 0xe4, 0x77, + 0x41, 0xde, 0x43, 0xb4, 0xdf, 0x63, 0x3c, 0x2b, 0xb7, 0x6b, 0xaf, 0x26, 0x54, 0xcf, 0x08, 0xdc, + 0xe2, 0xc0, 0x87, 0x43, 0x17, 0xb5, 0xc4, 0x26, 0xed, 0x99, 0xc4, 0x0b, 0x7f, 0xdb, 0xc1, 0x0c, + 0x43, 0x16, 0x1c, 0xf1, 0x31, 0x66, 0x5d, 0xd3, 0x83, 0x5f, 0xc0, 0xde, 0x7f, 0xb8, 0xa6, 0xb7, + 0x79, 0x3a, 0x83, 0x04, 0x5f, 0x7d, 0xd2, 0xea, 0xb5, 0x58, 0x08, 0xb5, 0x48, 0x08, 0x53, 0x48, + 0x68, 0xef, 0x01, 0x2d, 0x5d, 0x1b, 0x06, 0x32, 0x5a, 0x0e, 0xd2, 0x64, 0x39, 0x68, 0x8f, 0xb3, + 0x60, 0xa1, 0x49, 0xad, 0x4d, 0xd3, 0xfc, 0x08, 0xf6, 0xb0, 0x09, 0x19, 0xf1, 0xe4, 0x0f, 0x40, + 0x01, 0xf6, 0x59, 0x97, 0x78, 0x98, 0x0d, 0x45, 0x74, 0xde, 0x7c, 0x7e, 0x52, 0x5a, 0x14, 0xce, + 0x8f, 0x54, 0xe9, 0x97, 0x62, 0xbc, 0x5d, 0x56, 0xc0, 0x75, 0x9b, 0x38, 0xf8, 0x00, 0x79, 0x22, + 0x72, 0xa3, 0xa5, 0x7c, 0x0f, 0x2c, 0x0d, 0x46, 0x47, 0xee, 0xc1, 0x60, 0xff, 0xcc, 0xcb, 0xb2, + 0x18, 0x6e, 0x11, 0x72, 0x79, 0x0b, 0xe4, 0xdd, 0x7e, 0xfb, 0x00, 0x0d, 0x45, 0x16, 0x12, 0x5b, + 0x67, 0x43, 0x79, 0x32, 0xb6, 0xd8, 0xf1, 0x86, 0x2e, 0x23, 0xfa, 0x4e, 0xbf, 0x7d, 0x1f, 0x0d, + 0x5b, 0x62, 0x77, 0xbd, 0xf6, 0xed, 0xa3, 0x52, 0xe6, 0x9f, 0x47, 0xa5, 0x8c, 0x9f, 0x86, 0x31, + 0x01, 0x3f, 0x13, 0x2b, 0x91, 0x4c, 0x44, 0x03, 0xa5, 0xad, 0xf2, 0x96, 0x12, 0x15, 0x85, 0xed, + 0xe6, 0x8f, 0x60, 0x38, 0xb4, 0x90, 0x4d, 0x06, 0xe8, 0xff, 0x09, 0x6d, 0x62, 0x00, 0xb3, 0x2f, + 0x1a, 0xc0, 0x7a, 0x75, 0x9a, 0x70, 0x74, 0x9c, 0xc4, 0x18, 0x88, 0x71, 0x12, 0x93, 0x86, 0xb4, + 0x7f, 0x93, 0x78, 0x39, 0x7d, 0xe8, 0x9a, 0x90, 0xa1, 0x1d, 0xe8, 0x41, 0x9b, 0x5e, 0x29, 0xe7, + 0x0d, 0x90, 0x77, 0xb9, 0x55, 0x31, 0x51, 0x56, 0x13, 0x7a, 0x42, 0x70, 0x6c, 0x4b, 0x00, 0x83, + 0x59, 0x99, 0x9e, 0xd0, 0xa8, 0xab, 0x22, 0xa1, 0x51, 0xd1, 0x98, 0x59, 0x70, 0x51, 0x76, 0x5d, + 0xe4, 0x98, 0x5b, 0x08, 0xed, 0x10, 0xd2, 0xbb, 0x52, 0x66, 0xef, 0x80, 0x82, 0x87, 0x3a, 0xd8, + 0xc5, 0xc8, 0x61, 0x33, 0xb3, 0x38, 0x86, 0xca, 0xc3, 0xb0, 0x0b, 0xe5, 0xf8, 0xd3, 0xe1, 0x82, + 0x2e, 0xb4, 0x95, 0xd8, 0x85, 0x7e, 0xfe, 0xab, 0x54, 0xb6, 0x30, 0xeb, 0xf6, 0xdb, 0x7a, 0x87, + 0xd8, 0xe2, 0xc9, 0x24, 0xfe, 0x55, 0xa9, 0x79, 0x20, 0xde, 0x3c, 0xbe, 0x05, 0x3a, 0xd9, 0xb1, + 0x66, 0x44, 0x36, 0x1a, 0x2a, 0x11, 0xd9, 0xa8, 0x28, 0x8c, 0xec, 0xaf, 0xd1, 0x9a, 0x79, 0xe0, + 0xc1, 0x4e, 0x0f, 0x5d, 0xc5, 0x44, 0x5e, 0x0b, 0x07, 0x9d, 0x1f, 0xcd, 0xb9, 0xc6, 0x35, 0xe1, + 0x7c, 0x38, 0xef, 0x82, 0x81, 0x96, 0x4b, 0x1e, 0x68, 0xaf, 0xc5, 0xba, 0xf1, 0x74, 0xc9, 0x04, + 0x9e, 0x4e, 0x94, 0x4c, 0x20, 0x1a, 0x11, 0xab, 0x3d, 0xbe, 0x0e, 0x72, 0x4d, 0x6a, 0xc9, 0x16, + 0x58, 0x88, 0x3f, 0x12, 0x93, 0x66, 0xd9, 0xf4, 0x2b, 0x4d, 0xad, 0x5e, 0x0a, 0x16, 0x36, 0x7a, + 0x08, 0x6e, 0x4d, 0x3e, 0xe4, 0x5e, 0x49, 0xde, 0x3f, 0x01, 0x52, 0xdf, 0xb8, 0x04, 0x28, 0x3c, + 0x62, 0x00, 0x96, 0x13, 0x9f, 0x50, 0x95, 0x64, 0x23, 0x49, 0x58, 0xb5, 0x76, 0x79, 0x6c, 0x78, + 0xee, 0x57, 0x60, 0x25, 0x6d, 0x92, 0xa7, 0x04, 0x29, 0x05, 0xae, 0xbe, 0xfd, 0x42, 0xf0, 0xd0, + 0x81, 0x4f, 0xc1, 0xcd, 0x89, 0x21, 0xa9, 0x25, 0x9b, 0x89, 0x62, 0xd4, 0xca, 0x6c, 0x4c, 0x68, + 0xdf, 0x02, 0x0b, 0xf1, 0x61, 0x91, 0x52, 0x24, 0x31, 0x58, 0x5a, 0x91, 0xa4, 0xb4, 0x68, 0x9f, + 0xc8, 0x44, 0x7b, 0x4e, 0x21, 0x12, 0xc5, 0xa4, 0x11, 0x49, 0x6a, 0x94, 0xbe, 0xfd, 0x89, 0x26, + 0x99, 0x62, 0x3f, 0x8a, 0x49, 0xb3, 0x9f, 0xd4, 0x2e, 0xc6, 0xfe, 0x8b, 0x56, 0x71, 0xa1, 0xff, + 0x01, 0xe6, 0x62, 0xff, 0x27, 0x6f, 0xad, 0x7a, 0xed, 0x6b, 0xbf, 0x0d, 0x34, 0xee, 0x1f, 0x3f, + 0x2b, 0x66, 0x8e, 0x4f, 0x8b, 0xd2, 0xd3, 0xd3, 0xa2, 0xf4, 0xf7, 0x69, 0x51, 0xfa, 0xe1, 0xac, + 0x98, 0x79, 0x7a, 0x56, 0xcc, 0xfc, 0x79, 0x56, 0xcc, 0x7c, 0x52, 0x8d, 0x74, 0x4c, 0xcc, 0x2b, + 0xa7, 0xda, 0x83, 0x6d, 0x6a, 0x3c, 0xd8, 0xe1, 0x5f, 0x8c, 0x87, 0xe1, 0x37, 0x23, 0x6f, 0x9e, + 0xed, 0x3c, 0x7f, 0x8c, 0xbc, 0xf5, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x8b, 0x2b, 0x3f, 0x3c, + 0x19, 0x0f, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/opchild/types/types.pb.go b/x/opchild/types/types.pb.go index 18aad6a8..f5d8d0c7 100644 --- a/x/opchild/types/types.pb.go +++ b/x/opchild/types/types.pb.go @@ -249,26 +249,23 @@ func (m *BridgeInfo) XXX_DiscardUnknown() { var xxx_messageInfo_BridgeInfo proto.InternalMessageInfo -// PendingDeposits defines the set of pending deposits. -type PendingDeposits struct { - // recipient is the address of the recipient. - Recipient string `protobuf:"bytes,1,opt,name=recipient,proto3" json:"recipient,omitempty"` - // coins is a list of coins to be deposited. - Coins github_com_cosmos_cosmos_sdk_types.Coins `protobuf:"bytes,2,rep,name=coins,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coins" json:"coins"` -} - -func (m *PendingDeposits) Reset() { *m = PendingDeposits{} } -func (m *PendingDeposits) String() string { return proto.CompactTextString(m) } -func (*PendingDeposits) ProtoMessage() {} -func (*PendingDeposits) Descriptor() ([]byte, []int) { +// CoinsWrapper defines the set of coins. +type CoinsWrapper struct { + Coins github_com_cosmos_cosmos_sdk_types.Coins `protobuf:"bytes,1,rep,name=coins,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coins" json:"coins"` +} + +func (m *CoinsWrapper) Reset() { *m = CoinsWrapper{} } +func (m *CoinsWrapper) String() string { return proto.CompactTextString(m) } +func (*CoinsWrapper) ProtoMessage() {} +func (*CoinsWrapper) Descriptor() ([]byte, []int) { return fileDescriptor_2cc6df244b706d68, []int{4} } -func (m *PendingDeposits) XXX_Unmarshal(b []byte) error { +func (m *CoinsWrapper) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *PendingDeposits) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *CoinsWrapper) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_PendingDeposits.Marshal(b, m, deterministic) + return xxx_messageInfo_CoinsWrapper.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -278,35 +275,35 @@ func (m *PendingDeposits) XXX_Marshal(b []byte, deterministic bool) ([]byte, err return b[:n], nil } } -func (m *PendingDeposits) XXX_Merge(src proto.Message) { - xxx_messageInfo_PendingDeposits.Merge(m, src) +func (m *CoinsWrapper) XXX_Merge(src proto.Message) { + xxx_messageInfo_CoinsWrapper.Merge(m, src) } -func (m *PendingDeposits) XXX_Size() int { +func (m *CoinsWrapper) XXX_Size() int { return m.Size() } -func (m *PendingDeposits) XXX_DiscardUnknown() { - xxx_messageInfo_PendingDeposits.DiscardUnknown(m) +func (m *CoinsWrapper) XXX_DiscardUnknown() { + xxx_messageInfo_CoinsWrapper.DiscardUnknown(m) } -var xxx_messageInfo_PendingDeposits proto.InternalMessageInfo +var xxx_messageInfo_CoinsWrapper proto.InternalMessageInfo -// CoinsWrapper defines the set of coins. -type CoinsWrapper struct { - Coins github_com_cosmos_cosmos_sdk_types.Coins `protobuf:"bytes,1,rep,name=coins,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coins" json:"coins"` +type DenomPair struct { + Denom string `protobuf:"bytes,1,opt,name=denom,proto3" json:"denom,omitempty"` + BaseDenom string `protobuf:"bytes,2,opt,name=base_denom,json=baseDenom,proto3" json:"base_denom,omitempty"` } -func (m *CoinsWrapper) Reset() { *m = CoinsWrapper{} } -func (m *CoinsWrapper) String() string { return proto.CompactTextString(m) } -func (*CoinsWrapper) ProtoMessage() {} -func (*CoinsWrapper) Descriptor() ([]byte, []int) { +func (m *DenomPair) Reset() { *m = DenomPair{} } +func (m *DenomPair) String() string { return proto.CompactTextString(m) } +func (*DenomPair) ProtoMessage() {} +func (*DenomPair) Descriptor() ([]byte, []int) { return fileDescriptor_2cc6df244b706d68, []int{5} } -func (m *CoinsWrapper) XXX_Unmarshal(b []byte) error { +func (m *DenomPair) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *CoinsWrapper) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *DenomPair) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_CoinsWrapper.Marshal(b, m, deterministic) + return xxx_messageInfo_DenomPair.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -316,17 +313,17 @@ func (m *CoinsWrapper) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) return b[:n], nil } } -func (m *CoinsWrapper) XXX_Merge(src proto.Message) { - xxx_messageInfo_CoinsWrapper.Merge(m, src) +func (m *DenomPair) XXX_Merge(src proto.Message) { + xxx_messageInfo_DenomPair.Merge(m, src) } -func (m *CoinsWrapper) XXX_Size() int { +func (m *DenomPair) XXX_Size() int { return m.Size() } -func (m *CoinsWrapper) XXX_DiscardUnknown() { - xxx_messageInfo_CoinsWrapper.DiscardUnknown(m) +func (m *DenomPair) XXX_DiscardUnknown() { + xxx_messageInfo_DenomPair.DiscardUnknown(m) } -var xxx_messageInfo_CoinsWrapper proto.InternalMessageInfo +var xxx_messageInfo_DenomPair proto.InternalMessageInfo func init() { proto.RegisterEnum("opinit.opchild.v1.ResponseResultType", ResponseResultType_name, ResponseResultType_value) @@ -334,82 +331,82 @@ func init() { proto.RegisterType((*Validator)(nil), "opinit.opchild.v1.Validator") proto.RegisterType((*ValidatorUpdates)(nil), "opinit.opchild.v1.ValidatorUpdates") proto.RegisterType((*BridgeInfo)(nil), "opinit.opchild.v1.BridgeInfo") - proto.RegisterType((*PendingDeposits)(nil), "opinit.opchild.v1.PendingDeposits") proto.RegisterType((*CoinsWrapper)(nil), "opinit.opchild.v1.CoinsWrapper") + proto.RegisterType((*DenomPair)(nil), "opinit.opchild.v1.DenomPair") } func init() { proto.RegisterFile("opinit/opchild/v1/types.proto", fileDescriptor_2cc6df244b706d68) } var fileDescriptor_2cc6df244b706d68 = []byte{ - // 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, + // 1075 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x55, 0xbf, 0x6f, 0xdb, 0xc6, + 0x17, 0x17, 0x6d, 0x39, 0x89, 0x4e, 0xb2, 0x2d, 0x1f, 0x1c, 0x7c, 0x65, 0x39, 0x21, 0x09, 0x2e, + 0x5f, 0xc1, 0xad, 0x48, 0xc8, 0xa9, 0x81, 0xd6, 0x53, 0x22, 0x59, 0x29, 0x84, 0x04, 0xb6, 0x40, + 0xd9, 0x0d, 0x9a, 0x85, 0xa0, 0xc8, 0x93, 0x74, 0x30, 0xc9, 0x23, 0x78, 0x94, 0x62, 0xfd, 0x07, + 0x81, 0x97, 0x76, 0xec, 0x62, 0xc0, 0x40, 0x97, 0x34, 0x53, 0x86, 0x6e, 0xfd, 0x07, 0x8c, 0x02, + 0x05, 0x82, 0x4e, 0x9d, 0x94, 0xd6, 0x1e, 0xd2, 0x59, 0x43, 0xe7, 0xe2, 0xee, 0xa8, 0x1f, 0x71, + 0x5d, 0xa4, 0x8b, 0x7d, 0xef, 0x7d, 0x3e, 0xef, 0xdd, 0xd3, 0xe7, 0xde, 0x7b, 0x04, 0xf7, 0x49, + 0x88, 0x03, 0x1c, 0x1b, 0x24, 0x74, 0x7a, 0xd8, 0x73, 0x8d, 0x41, 0xc5, 0x88, 0x87, 0x21, 0xa2, + 0x7a, 0x18, 0x91, 0x98, 0xc0, 0x35, 0x01, 0xeb, 0x09, 0xac, 0x0f, 0x2a, 0xc5, 0x35, 0xdb, 0xc7, + 0x01, 0x31, 0xf8, 0x5f, 0xc1, 0x2a, 0xca, 0x0e, 0xa1, 0x3e, 0xa1, 0x46, 0xdb, 0xa6, 0xc8, 0x18, + 0x54, 0xda, 0x28, 0xb6, 0x2b, 0x86, 0x43, 0x70, 0x90, 0xe0, 0x1b, 0x02, 0xb7, 0xb8, 0x65, 0x08, + 0x23, 0x81, 0xd6, 0xbb, 0xa4, 0x4b, 0x84, 0x9f, 0x9d, 0x26, 0x01, 0x5d, 0x42, 0xba, 0x1e, 0x32, + 0xb8, 0xd5, 0xee, 0x77, 0x0c, 0x3b, 0x18, 0x26, 0xd0, 0xbd, 0x69, 0xc1, 0x3d, 0x42, 0xe3, 0x6b, + 0xf5, 0x16, 0x37, 0x63, 0x14, 0xb8, 0x28, 0xf2, 0x71, 0x10, 0x1b, 0x76, 0xdb, 0xc1, 0xf3, 0xa0, + 0xf6, 0x4b, 0x1a, 0xdc, 0x6a, 0xda, 0x91, 0xed, 0x53, 0xf8, 0x10, 0xac, 0xf8, 0xf6, 0x89, 0x35, + 0xb0, 0x3d, 0xec, 0xda, 0x31, 0x89, 0x68, 0x41, 0x52, 0xa5, 0xd2, 0x72, 0x75, 0x63, 0x3c, 0x52, + 0xee, 0x0e, 0x6d, 0xdf, 0xdb, 0xd5, 0x3e, 0xc4, 0x35, 0x73, 0xd9, 0xb7, 0x4f, 0xbe, 0x9a, 0xda, + 0xf0, 0x29, 0x80, 0x3d, 0x4c, 0x63, 0x12, 0x61, 0xc7, 0xf6, 0x2c, 0x14, 0xc4, 0x11, 0x46, 0xb4, + 0xb0, 0xc0, 0xb3, 0xdc, 0x1f, 0x8f, 0x94, 0x0d, 0x91, 0xe5, 0x9f, 0x1c, 0xcd, 0x5c, 0x9b, 0x39, + 0xeb, 0xc2, 0x07, 0xbf, 0x91, 0xc0, 0x8a, 0x8f, 0x03, 0xab, 0x6b, 0x33, 0x95, 0xb0, 0x83, 0x68, + 0x61, 0x51, 0x5d, 0x2c, 0x65, 0xb7, 0xef, 0xe9, 0x89, 0x5c, 0x4c, 0x5b, 0x3d, 0xd1, 0x56, 0xdf, + 0x43, 0x4e, 0x8d, 0xe0, 0xa0, 0xfa, 0xe4, 0x62, 0xa4, 0xa4, 0xc6, 0x23, 0x65, 0x3d, 0x29, 0x79, + 0x3e, 0x83, 0xf6, 0xfa, 0x9d, 0xf2, 0x49, 0x17, 0xc7, 0xbd, 0x7e, 0x5b, 0x77, 0x88, 0x9f, 0xc8, + 0x9e, 0xfc, 0x2b, 0x53, 0xf7, 0x38, 0xd1, 0x26, 0xc9, 0x45, 0xcd, 0x9c, 0x8f, 0x83, 0x2f, 0x6d, + 0xda, 0xe4, 0xd7, 0x43, 0x07, 0xe4, 0xdb, 0x11, 0x76, 0xbb, 0xc8, 0x42, 0x27, 0xc8, 0xe9, 0x73, + 0x8d, 0xd2, 0xea, 0x62, 0x29, 0x53, 0xfd, 0x7c, 0x3c, 0x52, 0xfe, 0x27, 0x2e, 0xbc, 0xce, 0xd0, + 0x7e, 0xfd, 0xb1, 0xbc, 0x9e, 0x14, 0xfc, 0xc8, 0x75, 0x23, 0x44, 0x69, 0x2b, 0x8e, 0x70, 0xd0, + 0x7d, 0xf5, 0xfe, 0xcd, 0x96, 0x64, 0xae, 0x0a, 0x7e, 0x7d, 0x42, 0x87, 0x35, 0xb0, 0x64, 0xbb, + 0x3e, 0x0e, 0x0a, 0x4b, 0xaa, 0x54, 0xca, 0x54, 0xcb, 0xe3, 0x91, 0x92, 0x13, 0x99, 0xb9, 0xfb, + 0x23, 0xe9, 0x44, 0x2c, 0x7c, 0x0e, 0x96, 0x3b, 0x08, 0x59, 0x2f, 0x7a, 0x38, 0x46, 0x1e, 0xa6, + 0x71, 0xe1, 0x16, 0x2f, 0x73, 0x67, 0xa6, 0xcb, 0x07, 0xf0, 0x47, 0x92, 0xe6, 0x3a, 0x08, 0x3d, + 0x9b, 0x70, 0x77, 0x37, 0xbf, 0x3b, 0x57, 0x52, 0x7f, 0x9e, 0x2b, 0xd2, 0xe9, 0xfb, 0x37, 0x5b, + 0x2b, 0x93, 0x21, 0x11, 0x4d, 0xa4, 0xfd, 0xb4, 0x00, 0x32, 0xd3, 0x8e, 0x80, 0x9f, 0x82, 0xdb, + 0x3e, 0x09, 0xf0, 0x31, 0x8a, 0x78, 0x2f, 0x65, 0xaa, 0x70, 0x3c, 0x52, 0x56, 0x92, 0x87, 0x11, + 0x80, 0x66, 0x4e, 0x28, 0xf0, 0x31, 0xc8, 0x93, 0x10, 0x45, 0x2c, 0xd2, 0xb2, 0x45, 0x15, 0xbc, + 0x79, 0x32, 0xd5, 0xcd, 0x99, 0xbc, 0xd7, 0x19, 0x9a, 0xb9, 0x3a, 0x71, 0x25, 0x95, 0xc3, 0x18, + 0xe4, 0x1d, 0x12, 0x50, 0x14, 0xd0, 0x3e, 0xb5, 0xc2, 0x7e, 0xfb, 0x18, 0x0d, 0x0b, 0x8b, 0xaa, + 0x54, 0xca, 0x6e, 0xaf, 0xeb, 0x62, 0x88, 0xf4, 0xc9, 0x10, 0xe9, 0x8f, 0x82, 0x61, 0xf5, 0xc1, + 0x2c, 0xfb, 0xf5, 0x38, 0xed, 0xe7, 0x99, 0x30, 0x4e, 0x34, 0x0c, 0x63, 0xa2, 0x37, 0xfb, 0xed, + 0x27, 0x68, 0x68, 0xae, 0x4e, 0xa9, 0x4d, 0xce, 0x84, 0x9f, 0x01, 0xc0, 0x5c, 0x56, 0x48, 0x5e, + 0xa0, 0xa8, 0x90, 0x56, 0xa5, 0xd2, 0x62, 0xf5, 0xee, 0x78, 0xa4, 0xac, 0xcd, 0x32, 0x0b, 0x4c, + 0x33, 0x33, 0xcc, 0x68, 0xb2, 0xf3, 0x6e, 0xee, 0xe5, 0xb9, 0x92, 0x4a, 0x04, 0x4d, 0x69, 0x16, + 0xc8, 0x4f, 0xc5, 0x3b, 0x0a, 0x5d, 0x3b, 0x46, 0x14, 0xd6, 0xc1, 0xed, 0xbe, 0x38, 0x16, 0x24, + 0xde, 0xfe, 0xaa, 0x3e, 0x1b, 0x68, 0x9d, 0x0d, 0xb4, 0x7e, 0x2d, 0xa6, 0x9a, 0x61, 0x23, 0x20, + 0x9e, 0x6e, 0x12, 0xbb, 0x9b, 0xe6, 0x17, 0xfc, 0x25, 0x01, 0x50, 0xe5, 0x0d, 0xd7, 0x08, 0x3a, + 0x04, 0x6e, 0x82, 0x4c, 0xd2, 0xae, 0xd8, 0xe5, 0x2f, 0x94, 0x36, 0xef, 0x08, 0x47, 0xc3, 0x85, + 0x5f, 0x80, 0x6c, 0x02, 0x32, 0xa9, 0x93, 0x97, 0x28, 0xfc, 0x5b, 0xa7, 0x98, 0x40, 0x90, 0x99, + 0x13, 0xca, 0x20, 0xeb, 0x55, 0x2c, 0xa7, 0x67, 0xe3, 0x80, 0x65, 0x66, 0xe2, 0x67, 0xcc, 0x8c, + 0x57, 0xa9, 0x31, 0x4f, 0xc3, 0x85, 0x2a, 0xc8, 0x31, 0xdc, 0xc3, 0x28, 0x88, 0x19, 0x21, 0xcd, + 0x09, 0xc0, 0xab, 0xd4, 0xb8, 0xab, 0xe1, 0xc2, 0x7d, 0xb0, 0x9c, 0x5c, 0xee, 0x90, 0xa0, 0x83, + 0xbb, 0x7c, 0x1a, 0xb2, 0xdb, 0xb2, 0x3e, 0x5d, 0xbe, 0x6c, 0xd5, 0xe9, 0x83, 0x8a, 0x2e, 0x7e, + 0x4e, 0x8d, 0xb3, 0xe6, 0x7f, 0x79, 0xae, 0x3d, 0x07, 0x68, 0x03, 0x90, 0xe3, 0x13, 0xfd, 0x2c, + 0xb2, 0xc3, 0x10, 0x45, 0xb0, 0x03, 0x96, 0xd8, 0x32, 0x9e, 0x68, 0xba, 0x71, 0xe3, 0x4a, 0xe1, + 0xfb, 0x64, 0x87, 0xa5, 0x7c, 0xfd, 0x4e, 0x29, 0xfd, 0x87, 0xbd, 0xc1, 0xaf, 0x48, 0x06, 0x91, + 0xa7, 0xd7, 0x1e, 0x82, 0xcc, 0x1e, 0x0a, 0x88, 0xdf, 0xb4, 0x71, 0x04, 0xd7, 0xc1, 0x92, 0xcb, + 0x0c, 0x31, 0x0c, 0xa6, 0x30, 0xe0, 0x7d, 0x00, 0xd8, 0xad, 0x96, 0x80, 0x16, 0x84, 0x56, 0xcc, + 0xc3, 0x03, 0xb7, 0x7e, 0x90, 0x00, 0x34, 0x11, 0x0d, 0x59, 0xbb, 0x99, 0x88, 0xf6, 0xbd, 0xf8, + 0x70, 0x18, 0x22, 0xb8, 0x03, 0x54, 0xb3, 0xde, 0x6a, 0x1e, 0xec, 0xb7, 0xea, 0x96, 0x59, 0x6f, + 0x1d, 0x3d, 0x3d, 0xb4, 0x0e, 0xbf, 0x6e, 0xd6, 0xad, 0xa3, 0xfd, 0x56, 0xb3, 0x5e, 0x6b, 0x3c, + 0x6e, 0xd4, 0xf7, 0xf2, 0xa9, 0xe2, 0xea, 0xe9, 0x99, 0x9a, 0x9d, 0x73, 0xc1, 0xff, 0x83, 0x8d, + 0x1b, 0xc3, 0xf6, 0x0f, 0x0e, 0x9a, 0x79, 0xa9, 0x78, 0xe7, 0xf4, 0x4c, 0x4d, 0xb3, 0x33, 0x2c, + 0x83, 0x7b, 0x37, 0x12, 0x5b, 0x47, 0xb5, 0x5a, 0xbd, 0xd5, 0xca, 0x2f, 0x14, 0xb3, 0xa7, 0x67, + 0xea, 0xed, 0xc4, 0x2c, 0xa6, 0x5f, 0x7e, 0x2f, 0xa7, 0xaa, 0x07, 0x17, 0x7f, 0xc8, 0xa9, 0x57, + 0x97, 0xb2, 0x74, 0x71, 0x29, 0x4b, 0x6f, 0x2f, 0x65, 0xe9, 0xf7, 0x4b, 0x59, 0xfa, 0xf6, 0x4a, + 0x4e, 0xbd, 0xbd, 0x92, 0x53, 0xbf, 0x5d, 0xc9, 0xa9, 0xe7, 0xe5, 0x39, 0x15, 0xd9, 0x43, 0x62, + 0xbb, 0xec, 0xd9, 0x6d, 0x6a, 0x1c, 0x34, 0xf9, 0x17, 0xec, 0x64, 0xfa, 0xd1, 0xe5, 0x82, 0xb6, + 0x6f, 0xf1, 0x41, 0x7d, 0xf0, 0x77, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x6c, 0x3d, 0xf1, 0x93, + 0x07, 0x00, 0x00, } func (this *Params) Equal(that interface{}) bool { @@ -502,14 +499,14 @@ func (this *BridgeInfo) Equal(that interface{}) bool { } return true } -func (this *PendingDeposits) Equal(that interface{}) bool { +func (this *CoinsWrapper) Equal(that interface{}) bool { if that == nil { return this == nil } - that1, ok := that.(*PendingDeposits) + that1, ok := that.(*CoinsWrapper) if !ok { - that2, ok := that.(PendingDeposits) + that2, ok := that.(CoinsWrapper) if ok { that1 = &that2 } else { @@ -521,9 +518,6 @@ func (this *PendingDeposits) Equal(that interface{}) bool { } else if this == nil { return false } - if this.Recipient != that1.Recipient { - return false - } if len(this.Coins) != len(that1.Coins) { return false } @@ -534,14 +528,14 @@ func (this *PendingDeposits) Equal(that interface{}) bool { } return true } -func (this *CoinsWrapper) Equal(that interface{}) bool { +func (this *DenomPair) Equal(that interface{}) bool { if that == nil { return this == nil } - that1, ok := that.(*CoinsWrapper) + that1, ok := that.(*DenomPair) if !ok { - that2, ok := that.(CoinsWrapper) + that2, ok := that.(DenomPair) if ok { that1 = &that2 } else { @@ -553,13 +547,11 @@ func (this *CoinsWrapper) Equal(that interface{}) bool { } else if this == nil { return false } - if len(this.Coins) != len(that1.Coins) { + if this.Denom != that1.Denom { return false } - for i := range this.Coins { - if !this.Coins[i].Equal(&that1.Coins[i]) { - return false - } + if this.BaseDenom != that1.BaseDenom { + return false } return true } @@ -785,7 +777,7 @@ func (m *BridgeInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *PendingDeposits) Marshal() (dAtA []byte, err error) { +func (m *CoinsWrapper) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -795,12 +787,12 @@ func (m *PendingDeposits) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *PendingDeposits) MarshalTo(dAtA []byte) (int, error) { +func (m *CoinsWrapper) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *PendingDeposits) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *CoinsWrapper) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -816,20 +808,13 @@ func (m *PendingDeposits) MarshalToSizedBuffer(dAtA []byte) (int, error) { i = encodeVarintTypes(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0x12 + dAtA[i] = 0xa } } - if len(m.Recipient) > 0 { - i -= len(m.Recipient) - copy(dAtA[i:], m.Recipient) - i = encodeVarintTypes(dAtA, i, uint64(len(m.Recipient))) - i-- - dAtA[i] = 0xa - } return len(dAtA) - i, nil } -func (m *CoinsWrapper) Marshal() (dAtA []byte, err error) { +func (m *DenomPair) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -839,29 +824,29 @@ func (m *CoinsWrapper) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *CoinsWrapper) MarshalTo(dAtA []byte) (int, error) { +func (m *DenomPair) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *CoinsWrapper) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *DenomPair) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if len(m.Coins) > 0 { - for iNdEx := len(m.Coins) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Coins[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintTypes(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } + if len(m.BaseDenom) > 0 { + i -= len(m.BaseDenom) + copy(dAtA[i:], m.BaseDenom) + i = encodeVarintTypes(dAtA, i, uint64(len(m.BaseDenom))) + i-- + dAtA[i] = 0x12 + } + if len(m.Denom) > 0 { + i -= len(m.Denom) + copy(dAtA[i:], m.Denom) + i = encodeVarintTypes(dAtA, i, uint64(len(m.Denom))) + i-- + dAtA[i] = 0xa } return len(dAtA) - i, nil } @@ -979,16 +964,12 @@ func (m *BridgeInfo) Size() (n int) { return n } -func (m *PendingDeposits) Size() (n int) { +func (m *CoinsWrapper) Size() (n int) { if m == nil { return 0 } var l int _ = l - l = len(m.Recipient) - if l > 0 { - n += 1 + l + sovTypes(uint64(l)) - } if len(m.Coins) > 0 { for _, e := range m.Coins { l = e.Size() @@ -998,17 +979,19 @@ func (m *PendingDeposits) Size() (n int) { return n } -func (m *CoinsWrapper) Size() (n int) { +func (m *DenomPair) Size() (n int) { if m == nil { return 0 } var l int _ = l - if len(m.Coins) > 0 { - for _, e := range m.Coins { - l = e.Size() - n += 1 + l + sovTypes(uint64(l)) - } + l = len(m.Denom) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + l = len(m.BaseDenom) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) } return n } @@ -1688,7 +1671,7 @@ func (m *BridgeInfo) Unmarshal(dAtA []byte) error { } return nil } -func (m *PendingDeposits) Unmarshal(dAtA []byte) error { +func (m *CoinsWrapper) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1711,45 +1694,13 @@ func (m *PendingDeposits) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: PendingDeposits: wiretype end group for non-group") + return fmt.Errorf("proto: CoinsWrapper: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: PendingDeposits: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: CoinsWrapper: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Recipient", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTypes - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Recipient = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Coins", wireType) } @@ -1804,7 +1755,7 @@ func (m *PendingDeposits) Unmarshal(dAtA []byte) error { } return nil } -func (m *CoinsWrapper) Unmarshal(dAtA []byte) error { +func (m *DenomPair) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1827,17 +1778,17 @@ func (m *CoinsWrapper) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: CoinsWrapper: wiretype end group for non-group") + return fmt.Errorf("proto: DenomPair: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: CoinsWrapper: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: DenomPair: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Coins", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTypes @@ -1847,25 +1798,55 @@ func (m *CoinsWrapper) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthTypes } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthTypes } if postIndex > l { return io.ErrUnexpectedEOF } - m.Coins = append(m.Coins, types.Coin{}) - if err := m.Coins[len(m.Coins)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err + m.Denom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BaseDenom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF } + m.BaseDenom = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex diff --git a/x/ophost/client/cli/tx.go b/x/ophost/client/cli/tx.go index ad817ff3..8f3ff673 100644 --- a/x/ophost/client/cli/tx.go +++ b/x/ophost/client/cli/tx.go @@ -119,7 +119,7 @@ func NewCreateBridge(ac address.Codec) *cobra.Command { return err } - origConfig := BridgeCliConfig{} + var origConfig BridgeCliConfig err = json.Unmarshal(configBytes, &origConfig) if err != nil { @@ -149,6 +149,7 @@ func NewCreateBridge(ac address.Codec) *cobra.Command { SubmissionStartHeight: submissionStartHeight, Metadata: []byte(origConfig.Metadata), BatchInfo: origConfig.BatchInfo, + OracleEnabled: origConfig.OracleEnabled, } if err = config.Validate(ac); err != nil { @@ -334,15 +335,16 @@ func NewFinalizeTokenWithdrawal(ac address.Codec) *cobra.Command { Where withrawal-info.json contains: { - "bridge_id": 1, - "output_index": 0, + "bridge_id": "1", + "output_index": "1", + "sequence": "1", + "from" : "l2-bech32-address", + "to" : "l1-bech32-address", + "amount": {"amount": "10000000", "denom": "uinit"}, "withdrawal_proofs": [ "base64-encoded proof1", "proof2", ... ], - "sender" : "bech32-address", - "sequence": 0, - "amount": "10000000uinit", "version": "base64-encoded version", "storage_root": "base64-encoded storage-root", - "latest_block_hash": "base64-encoded latest-block-hash" + "last_block_hash": "base64-encoded latest-block-hash" }`, version.AppName, ), ), @@ -357,45 +359,24 @@ func NewFinalizeTokenWithdrawal(ac address.Codec) *cobra.Command { if err != nil { return err } - withdrawalInfo := MsgFinalizeTokenWithdrawal{} - err = json.Unmarshal(withdrawalBytes, &withdrawalInfo) - if err != nil { - return err - } - // cannot validate sender address here because it is l2 address. - sender := withdrawalInfo.Sender - if len(sender) == 0 { - return fmt.Errorf("sender address is required") - } - - amount, err := sdk.ParseCoinNormalized(withdrawalInfo.Amount) + var msg types.MsgFinalizeTokenWithdrawal + err = clientCtx.Codec.UnmarshalJSON(withdrawalBytes, &msg) if err != nil { return err } - receiver, err := ac.BytesToString(clientCtx.GetFromAddress()) + sender, err := ac.BytesToString(clientCtx.GetFromAddress()) if err != nil { return err } - msg := types.NewMsgFinalizeTokenWithdrawal( - withdrawalInfo.BridgeId, - withdrawalInfo.OutputIndex, - withdrawalInfo.Sequence, - withdrawalInfo.WithdrawalProofs, - sender, - receiver, - amount, - withdrawalInfo.Version, - withdrawalInfo.StorageRoot, - withdrawalInfo.LatestBlockHash, - ) + msg.Sender = sender if err = msg.Validate(ac); err != nil { return err } - return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), &msg) }, } diff --git a/x/ophost/client/cli/tx_test.go b/x/ophost/client/cli/tx_test.go index 13338c2d..5b411727 100644 --- a/x/ophost/client/cli/tx_test.go +++ b/x/ophost/client/cli/tx_test.go @@ -175,7 +175,8 @@ func (s *CLITestSuite) TestNewCreateBridge() { "batch_info": { "submitter": "init1q6jhwnarkw2j5qqgx3qlu20k8nrdglft5ksr0g", "chain_type": "CELESTIA" - } + }, + "oracle_enabled": true }`) s.NoError(err) @@ -515,17 +516,18 @@ func (s *CLITestSuite) TestNewFinalizeTokenWithdrawal() { _, err = invalidConfig.WriteString(`{}`) s.NoError(err) _, err = validConfig.WriteString(`{ - "bridge_id": 1, - "output_index": 1180, + "bridge_id": "1", + "output_index": "1180", "withdrawal_proofs": [ "q6T8JJm7AdbD4rgZ3BjanRHdE1x7aLZwp36pPrOOey4=" ], - "sender": "init1q6jhwnarkw2j5qqgx3qlu20k8nrdglft5ksr0g", - "sequence": 5, - "amount": "100uinit", + "from": "init1q6jhwnarkw2j5qqgx3qlu20k8nrdglft5ksr0g", + "to": "init1q6jhwnarkw2j5qqgx3qlu20k8nrdglft5ksr0g", + "sequence": "5", + "amount": {"amount": "100", "denom": "uinit"}, "version": "AQ==", "storage_root": "KGlalV+mBHC7YFOLNX3g9LLzmyvP7QCm42HKo9N3Lu8=", - "latest_block_hash": "6oFdc+PEkXVJAo5IpXJ91vbCT9FNuKCz5VSlaFmxG+Y=" + "last_block_hash": "6oFdc+PEkXVJAo5IpXJ91vbCT9FNuKCz5VSlaFmxG+Y=" }`) s.NoError(err) diff --git a/x/ophost/client/cli/types.go b/x/ophost/client/cli/types.go index b4ed7428..132a3b50 100644 --- a/x/ophost/client/cli/types.go +++ b/x/ophost/client/cli/types.go @@ -1,6 +1,8 @@ package cli -import "github.com/initia-labs/OPinit/x/ophost/types" +import ( + "github.com/initia-labs/OPinit/x/ophost/types" +) // BridgeConfig defines the set of bridge config. // NOTE: it is a modified BridgeConfig from x/ophost/types/types.go to make unmarshal easier @@ -12,22 +14,5 @@ type BridgeCliConfig struct { SubmissionStartHeight string `json:"submission_start_height"` Metadata string `json:"metadata"` BatchInfo types.BatchInfo `json:"batch_info"` -} - -// MsgFinalizeTokenWithdrawal is a message to remove a validator from designated list -// -// NOTE: it is a modified MsgFinalizeTokenWithdrawal from x/ophost/types/tx.pb.go to make unmarshal easier -type MsgFinalizeTokenWithdrawal struct { - BridgeId uint64 `protobuf:"varint,2,opt,name=bridge_id,json=bridgeId,proto3" json:"bridge_id,omitempty" yaml:"bridge_id"` - OutputIndex uint64 `protobuf:"varint,3,opt,name=output_index,json=outputIndex,proto3" json:"output_index,omitempty" yaml:"output_index"` - WithdrawalProofs [][]byte `protobuf:"bytes,4,rep,name=withdrawal_proofs,json=withdrawalProofs,proto3" json:"withdrawal_proofs,omitempty"` - Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty" yaml:"sender"` - // no receiver here - // Receiver string `protobuf:"bytes,5,opt,name=receiver,proto3" json:"receiver,omitempty" yaml:"receiver"` - Sequence uint64 `protobuf:"varint,6,opt,name=sequence,proto3" json:"sequence,omitempty" yaml:"sequence"` - Amount string `protobuf:"bytes,7,opt,name=amount,proto3" json:"amount" yaml:"amount"` - // version of the output root - Version []byte `protobuf:"bytes,8,opt,name=version,proto3" json:"version,omitempty" yaml:"version"` - StorageRoot []byte `protobuf:"bytes,10,opt,name=storage_root,json=storageRoot,proto3" json:"storage_root,omitempty" yaml:"storage_root"` - LatestBlockHash []byte `protobuf:"bytes,11,opt,name=latest_block_hash,json=latestBlockHash,proto3" json:"latest_block_hash,omitempty" yaml:"latest_block_hash"` + OracleEnabled bool `json:"oracle_enabled"` } diff --git a/x/ophost/keeper/msg_server.go b/x/ophost/keeper/msg_server.go index e4ec5bc8..7d2c1303 100644 --- a/x/ophost/keeper/msg_server.go +++ b/x/ophost/keeper/msg_server.go @@ -238,10 +238,13 @@ func (ms MsgServer) InitiateTokenDeposit(ctx context.Context, req *types.MsgInit return nil, err } - // send the funds to bridge address - bridgeAddr := types.BridgeAddress(bridgeId) - if err := ms.bankKeeper.SendCoins(ctx, sender, bridgeAddr, sdk.NewCoins(coin)); err != nil { - return nil, err + // transfer only positive amount + if coin.IsPositive() { + // send the funds to bridge address + bridgeAddr := types.BridgeAddress(bridgeId) + if err := ms.bankKeeper.SendCoins(ctx, sender, bridgeAddr, sdk.NewCoins(coin)); err != nil { + return nil, err + } } // record token pairs @@ -267,7 +270,9 @@ func (ms MsgServer) InitiateTokenDeposit(ctx context.Context, req *types.MsgInit sdk.NewAttribute(types.AttributeKeyData, hex.EncodeToString(req.Data)), )) - return &types.MsgInitiateTokenDepositResponse{}, nil + return &types.MsgInitiateTokenDepositResponse{ + Sequence: l1Sequence, + }, nil } func (ms MsgServer) FinalizeTokenWithdrawal(ctx context.Context, req *types.MsgFinalizeTokenWithdrawal) (*types.MsgFinalizeTokenWithdrawalResponse, error) { @@ -275,7 +280,7 @@ func (ms MsgServer) FinalizeTokenWithdrawal(ctx context.Context, req *types.MsgF return nil, err } - receiver, err := ms.authKeeper.AddressCodec().StringToBytes(req.Receiver) + receiver, err := ms.authKeeper.AddressCodec().StringToBytes(req.To) if err != nil { return nil, err } @@ -298,14 +303,14 @@ func (ms MsgServer) FinalizeTokenWithdrawal(ctx context.Context, req *types.MsgF } // validate output root generation - outputRoot := types.GenerateOutputRoot(req.Version[0], req.StorageRoot, req.LatestBlockHash) + outputRoot := types.GenerateOutputRoot(req.Version[0], req.StorageRoot, req.LastBlockHash) if !bytes.Equal(outputProposal.OutputRoot, outputRoot[:]) { return nil, types.ErrFailedToVerifyWithdrawal.Wrap("invalid output root") } // verify storage root can be generated from // withdrawal proofs and withdrawal tx data. - withdrawalHash := types.GenerateWithdrawalHash(bridgeId, l2Sequence, req.Sender, req.Receiver, denom, amount.Uint64()) + withdrawalHash := types.GenerateWithdrawalHash(bridgeId, l2Sequence, req.From, req.To, denom, amount.Uint64()) if ok, err := ms.HasProvenWithdrawal(ctx, bridgeId, withdrawalHash); err != nil { return nil, err } else if ok { @@ -334,8 +339,8 @@ func (ms MsgServer) FinalizeTokenWithdrawal(ctx context.Context, req *types.MsgF sdk.NewAttribute(types.AttributeKeyBridgeId, strconv.FormatUint(bridgeId, 10)), sdk.NewAttribute(types.AttributeKeyOutputIndex, strconv.FormatUint(outputIndex, 10)), sdk.NewAttribute(types.AttributeKeyL2Sequence, strconv.FormatUint(l2Sequence, 10)), - sdk.NewAttribute(types.AttributeKeyFrom, req.Sender), - sdk.NewAttribute(types.AttributeKeyTo, req.Receiver), + sdk.NewAttribute(types.AttributeKeyFrom, req.From), + sdk.NewAttribute(types.AttributeKeyTo, req.To), sdk.NewAttribute(types.AttributeKeyL1Denom, denom), sdk.NewAttribute(types.AttributeKeyL2Denom, types.L2Denom(bridgeId, denom)), sdk.NewAttribute(types.AttributeKeyAmount, amount.String()), @@ -559,7 +564,7 @@ func (ms MsgServer) UpdateMetadata(ctx context.Context, req *types.MsgUpdateMeta } sdk.UnwrapSDKContext(ctx).EventManager().EmitEvent(sdk.NewEvent( - types.EventTypeUpdateBatchInfo, + types.EventTypeUpdateMetadata, sdk.NewAttribute(types.AttributeKeyBridgeId, strconv.FormatUint(bridgeId, 10)), sdk.NewAttribute(types.AttributeKeyFinalizedOutputIndex, strconv.FormatUint(finalizedOutputIndex, 10)), sdk.NewAttribute(types.AttributeKeyFinalizedL2BlockNumber, strconv.FormatUint(finalizedOutput.L2BlockNumber, 10)), diff --git a/x/ophost/keeper/msg_server_test.go b/x/ophost/keeper/msg_server_test.go index f9f6bce1..af684bbd 100644 --- a/x/ophost/keeper/msg_server_test.go +++ b/x/ophost/keeper/msg_server_test.go @@ -11,7 +11,7 @@ import ( "github.com/stretchr/testify/require" "github.com/initia-labs/OPinit/x/ophost/keeper" - types "github.com/initia-labs/OPinit/x/ophost/types" + "github.com/initia-labs/OPinit/x/ophost/types" ) func Test_RecordBatch(t *testing.T) { @@ -221,6 +221,7 @@ func Test_FinalizeTokenWithdrawal(t *testing.T) { require.NoError(t, err) _, err = ms.FinalizeTokenWithdrawal(ctx, types.NewMsgFinalizeTokenWithdrawal( + addrsStr[3], // any address can execute this 1, 1, 1, proofs, sender, receiver, @@ -229,7 +230,7 @@ func Test_FinalizeTokenWithdrawal(t *testing.T) { )) require.NoError(t, err) - receiverAddr, err := sdk.AccAddressFromBech32("cosmos174knscjg688ddtxj8smyjz073r3w5mms08musg") + receiverAddr, err := sdk.AccAddressFromBech32(receiver) require.NoError(t, err) require.Equal(t, amount, input.BankKeeper.GetBalance(ctx, receiverAddr, amount.Denom)) } @@ -359,6 +360,11 @@ func Test_UpdateChallengers(t *testing.T) { _, err = ms.UpdateChallengers(ctx, msg) require.Error(t, err) + // case 6. remove all challengers + msg = types.NewMsgUpdateChallengers(addrsStr[4], 1, []string{}) + _, err = ms.UpdateChallengers(ctx, msg) + require.Error(t, err) + // invalid signer invalidAddr, err := input.AccountKeeper.AddressCodec().BytesToString(authtypes.NewModuleAddress(types.ModuleName)) require.NoError(t, err) diff --git a/x/ophost/types/codec.go b/x/ophost/types/codec.go index ce6b612c..682d33bb 100644 --- a/x/ophost/types/codec.go +++ b/x/ophost/types/codec.go @@ -21,6 +21,7 @@ func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { legacy.RegisterAminoMsg(cdc, &MsgUpdateChallengers{}, "ophost/MsgUpdateChallengers") legacy.RegisterAminoMsg(cdc, &MsgUpdateBatchInfo{}, "ophost/MsgUpdateBatchInfo") legacy.RegisterAminoMsg(cdc, &MsgUpdateParams{}, "ophost/MsgUpdateParams") + legacy.RegisterAminoMsg(cdc, &MsgUpdateMetadata{}, "ophost/MsgUpdateMetadata") cdc.RegisterConcrete(Params{}, "ophost/Params", nil) cdc.RegisterConcrete(&BridgeAccount{}, "ophost/BridgeAccount", nil) @@ -39,6 +40,7 @@ func RegisterInterfaces(registry codectypes.InterfaceRegistry) { &MsgUpdateChallengers{}, &MsgUpdateBatchInfo{}, &MsgUpdateParams{}, + &MsgUpdateMetadata{}, ) // auth account registration diff --git a/x/ophost/types/error.go b/x/ophost/types/error.go index 08ed3c6b..ba0aca78 100644 --- a/x/ophost/types/error.go +++ b/x/ophost/types/error.go @@ -20,4 +20,5 @@ var ( ErrInvalidBridgeMetadata = errorsmod.Register(ModuleName, 13, "invalid bridge metadata") ErrInvalidBatchInfo = errorsmod.Register(ModuleName, 14, "invalid batch info") ErrInvalidChallengerUpdate = errorsmod.Register(ModuleName, 15, "invalid challenger update") + ErrEmptyBatchBytes = errorsmod.Register(ModuleName, 16, "empty batch bytes") ) diff --git a/x/ophost/types/event.go b/x/ophost/types/event.go index 18c418fd..6e361359 100644 --- a/x/ophost/types/event.go +++ b/x/ophost/types/event.go @@ -10,6 +10,7 @@ const ( EventTypeUpdateProposer = "update_proposer" EventTypeUpdateChallenger = "update_challenger" EventTypeUpdateBatchInfo = "update_batch_info" + EventTypeUpdateMetadata = "update_metadata" AttributeKeySubmitter = "submitter" AttributeKeyCreator = "creator" diff --git a/x/ophost/types/hook/bridge_hook.go b/x/ophost/types/hook/bridge_hook.go index 7cb50d26..5f17d51e 100644 --- a/x/ophost/types/hook/bridge_hook.go +++ b/x/ophost/types/hook/bridge_hook.go @@ -2,7 +2,6 @@ package hook import ( "context" - "errors" "cosmossdk.io/core/address" sdk "github.com/cosmos/cosmos-sdk/types" @@ -44,11 +43,6 @@ func (h BridgeHook) BridgeCreated( return nil } - // TODO (reviewer): This is a temporary solution to allow only one challenger on bridge creation. - if len(bridgeConfig.Challengers) != 1 { - return errors.New("bridge must have exactly one challenger on creation") - } - challengers := make([]sdk.AccAddress, len(bridgeConfig.Challengers)) for i, challenger := range bridgeConfig.Challengers { challengerAddr, err := h.ac.StringToBytes(challenger) diff --git a/x/ophost/types/hook/bridge_hook_test.go b/x/ophost/types/hook/bridge_hook_test.go index 0f3d239f..fc3210ac 100644 --- a/x/ophost/types/hook/bridge_hook_test.go +++ b/x/ophost/types/hook/bridge_hook_test.go @@ -6,7 +6,6 @@ import ( "testing" "time" - "cosmossdk.io/collections" "cosmossdk.io/log" "cosmossdk.io/store" "cosmossdk.io/store/metrics" @@ -76,7 +75,7 @@ func (k MockPermKeeper) SetPermissionedRelayers(ctx context.Context, portID, cha func (k MockPermKeeper) GetPermissionedRelayers(ctx context.Context, portID, channelID string) ([]sdk.AccAddress, error) { if _, ok := k.perms[portID+"/"+channelID]; !ok { - return nil, collections.ErrNotFound + return []sdk.AccAddress{}, nil } return k.perms[portID+"/"+channelID].Relayers, nil } diff --git a/x/ophost/types/keys.go b/x/ophost/types/keys.go index 048ac3ef..91f0ca17 100644 --- a/x/ophost/types/keys.go +++ b/x/ophost/types/keys.go @@ -24,6 +24,4 @@ var ( NextOutputIndexPrefix = []byte{0x61} ProvenWithdrawalPrefix = []byte{0x71} BatchInfoPrefix = []byte{0x81} - - Splitter = byte('|') ) diff --git a/x/ophost/types/output.go b/x/ophost/types/output.go index 04a40eda..d91b168d 100644 --- a/x/ophost/types/output.go +++ b/x/ophost/types/output.go @@ -32,15 +32,16 @@ func GenerateWithdrawalHash(bridgeId uint64, l2Sequence uint64, sender string, r seed := []byte{} seed = binary.BigEndian.AppendUint64(seed, bridgeId) seed = binary.BigEndian.AppendUint64(seed, l2Sequence) + // variable length - seed = append(seed, sender...) // put utf8 encoded address - seed = append(seed, Splitter) + senderDigest := sha3.Sum256([]byte(sender)) + seed = append(seed, senderDigest[:]...) // put utf8 encoded address // variable length - seed = append(seed, receiver...) // put utf8 encoded address - seed = append(seed, Splitter) + receiverDigest := sha3.Sum256([]byte(receiver)) + seed = append(seed, receiverDigest[:]...) // put utf8 encoded address // variable length - seed = append(seed, denom...) - seed = append(seed, Splitter) + denomDigest := sha3.Sum256([]byte(denom)) + seed = append(seed, denomDigest[:]...) seed = binary.BigEndian.AppendUint64(seed, amount) // double hash the leaf node diff --git a/x/ophost/types/tx.go b/x/ophost/types/tx.go index c40132e1..996c60fe 100644 --- a/x/ophost/types/tx.go +++ b/x/ophost/types/tx.go @@ -40,8 +40,8 @@ func NewMsgRecordBatch( } // Validate performs basic MsgRecordBatch message validation. -func (msg MsgRecordBatch) Validate(accAddressCodec address.Codec) error { - if _, err := accAddressCodec.StringToBytes(msg.Submitter); err != nil { +func (msg MsgRecordBatch) Validate(ac address.Codec) error { + if _, err := ac.StringToBytes(msg.Submitter); err != nil { return err } @@ -49,6 +49,10 @@ func (msg MsgRecordBatch) Validate(accAddressCodec address.Codec) error { return ErrInvalidBridgeId } + if len(msg.BatchBytes) == 0 { + return ErrEmptyBatchBytes + } + return nil } @@ -103,8 +107,8 @@ func NewMsgProposeOutput( } // Validate performs basic MsgProposeOutput message validation. -func (msg MsgProposeOutput) Validate(accAddressCodec address.Codec) error { - _, err := accAddressCodec.StringToBytes(msg.Proposer) +func (msg MsgProposeOutput) Validate(ac address.Codec) error { + _, err := ac.StringToBytes(msg.Proposer) if err != nil { return err } @@ -136,8 +140,8 @@ func NewMsgDeleteOutput( } // Validate performs basic MsgDeleteOutput message validation. -func (msg MsgDeleteOutput) Validate(accAddressCodec address.Codec) error { - if _, err := accAddressCodec.StringToBytes(msg.Challenger); err != nil { +func (msg MsgDeleteOutput) Validate(ac address.Codec) error { + if _, err := ac.StringToBytes(msg.Challenger); err != nil { return err } @@ -172,8 +176,8 @@ func NewMsgInitiateTokenDeposit( } // Validate performs basic MsgInitiateTokenDeposit message validation. -func (msg MsgInitiateTokenDeposit) Validate(accAddressCodec address.Codec) error { - if _, err := accAddressCodec.StringToBytes(msg.Sender); err != nil { +func (msg MsgInitiateTokenDeposit) Validate(ac address.Codec) error { + if _, err := ac.StringToBytes(msg.Sender); err != nil { return err } @@ -182,7 +186,8 @@ func (msg MsgInitiateTokenDeposit) Validate(accAddressCodec address.Codec) error return sdkerrors.ErrInvalidAddress.Wrap("to address cannot be empty") } - if !msg.Amount.IsValid() || msg.Amount.IsZero() { + // allow zero amount for creating account + if !msg.Amount.IsValid() { return ErrInvalidAmount } @@ -197,39 +202,45 @@ func (msg MsgInitiateTokenDeposit) Validate(accAddressCodec address.Codec) error // NewMsgFinalizeTokenWithdrawal creates a new MsgFinalizeTokenWithdrawal func NewMsgFinalizeTokenWithdrawal( + sender string, bridgeId uint64, outputIndex uint64, sequence uint64, withdrawalProofs [][]byte, - sender string, - receiver string, + from string, + to string, amount sdk.Coin, version []byte, storageRoot []byte, - latestBlockHash []byte, + lastBlockHash []byte, ) *MsgFinalizeTokenWithdrawal { return &MsgFinalizeTokenWithdrawal{ + Sender: sender, BridgeId: bridgeId, OutputIndex: outputIndex, WithdrawalProofs: withdrawalProofs, - Sender: sender, - Receiver: receiver, + From: from, + To: to, Sequence: sequence, Amount: amount, Version: version, StorageRoot: storageRoot, - LatestBlockHash: latestBlockHash, + LastBlockHash: lastBlockHash, } } // Validate performs basic MsgFinalizeTokenWithdrawal message validation. -func (msg MsgFinalizeTokenWithdrawal) Validate(accAddressCodec address.Codec) error { - // cannot validate sender address as it can be any format of address based on the chain. - if len(msg.Sender) == 0 { - return sdkerrors.ErrInvalidAddress.Wrap("sender address cannot be empty") +func (msg MsgFinalizeTokenWithdrawal) Validate(ac address.Codec) error { + if _, err := ac.StringToBytes(msg.Sender); err != nil { + return err + } + + // cannot validate from address as it can be any format of address based on the chain. + if len(msg.From) == 0 { + return sdkerrors.ErrInvalidAddress.Wrap("from address cannot be empty") } - if _, err := accAddressCodec.StringToBytes(msg.Receiver); err != nil { + if _, err := ac.StringToBytes(msg.To); err != nil { return err } @@ -263,8 +274,8 @@ func (msg MsgFinalizeTokenWithdrawal) Validate(accAddressCodec address.Codec) er return ErrInvalidHashLength.Wrap("storage_root") } - if len(msg.LatestBlockHash) != 32 { - return ErrInvalidHashLength.Wrap("latest_block_hash") + if len(msg.LastBlockHash) != 32 { + return ErrInvalidHashLength.Wrap("last_block_hash") } return nil @@ -286,8 +297,8 @@ func NewMsgUpdateProposer( } // Validate performs basic MsgUpdateProposer message validation. -func (msg MsgUpdateProposer) Validate(accAddressCodec address.Codec) error { - if _, err := accAddressCodec.StringToBytes(msg.Authority); err != nil { +func (msg MsgUpdateProposer) Validate(ac address.Codec) error { + if _, err := ac.StringToBytes(msg.Authority); err != nil { return err } @@ -295,7 +306,7 @@ func (msg MsgUpdateProposer) Validate(accAddressCodec address.Codec) error { return ErrInvalidBridgeId } - if _, err := accAddressCodec.StringToBytes(msg.NewProposer); err != nil { + if _, err := ac.StringToBytes(msg.NewProposer); err != nil { return err } @@ -318,8 +329,8 @@ func NewMsgUpdateChallengers( } // Validate performs basic MsgUpdateChallengers message validation. -func (msg MsgUpdateChallengers) Validate(accAddressCodec address.Codec) error { - if _, err := accAddressCodec.StringToBytes(msg.Authority); err != nil { +func (msg MsgUpdateChallengers) Validate(ac address.Codec) error { + if _, err := ac.StringToBytes(msg.Authority); err != nil { return err } @@ -329,7 +340,7 @@ func (msg MsgUpdateChallengers) Validate(accAddressCodec address.Codec) error { dupCheckMap := make(map[string]bool) for _, challenger := range msg.NewChallengers { - _, err := accAddressCodec.StringToBytes(challenger) + _, err := ac.StringToBytes(challenger) if err != nil { return err } @@ -364,8 +375,8 @@ func NewMsgUpdateBatchInfo( } // Validate performs basic MsgUpdateChallenger message validation. -func (msg MsgUpdateBatchInfo) Validate(accAddressCodec address.Codec) error { - if _, err := accAddressCodec.StringToBytes(msg.Authority); err != nil { +func (msg MsgUpdateBatchInfo) Validate(ac address.Codec) error { + if _, err := ac.StringToBytes(msg.Authority); err != nil { return err } @@ -423,8 +434,8 @@ func NewMsgUpdateMetadata( } // Validate performs basic MsgUpdateMetadata message validation. -func (msg MsgUpdateMetadata) Validate(accAddressCodec address.Codec) error { - if _, err := accAddressCodec.StringToBytes(msg.Authority); err != nil { +func (msg MsgUpdateMetadata) Validate(ac address.Codec) error { + if _, err := ac.StringToBytes(msg.Authority); err != nil { return err } @@ -450,8 +461,8 @@ func NewMsgUpdateParams(authority string, params *Params) *MsgUpdateParams { } // Validate performs basic MsgUpdateParams message validation. -func (msg MsgUpdateParams) Validate(accAddressCodec address.Codec) error { - if _, err := accAddressCodec.StringToBytes(msg.Authority); err != nil { +func (msg MsgUpdateParams) Validate(ac address.Codec) error { + if _, err := ac.StringToBytes(msg.Authority); err != nil { return err } diff --git a/x/ophost/types/tx.pb.go b/x/ophost/types/tx.pb.go index c0a6d759..644f786f 100644 --- a/x/ophost/types/tx.pb.go +++ b/x/ophost/types/tx.pb.go @@ -427,17 +427,18 @@ var xxx_messageInfo_MsgInitiateTokenDepositResponse proto.InternalMessageInfo // MsgFinalizeTokenWithdrawal is a message finalizing funds withdrawal from L2. type MsgFinalizeTokenWithdrawal struct { + Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty" yaml:"sender"` BridgeId uint64 `protobuf:"varint,2,opt,name=bridge_id,json=bridgeId,proto3" json:"bridge_id,omitempty" yaml:"bridge_id"` OutputIndex uint64 `protobuf:"varint,3,opt,name=output_index,json=outputIndex,proto3" json:"output_index,omitempty" yaml:"output_index"` WithdrawalProofs [][]byte `protobuf:"bytes,4,rep,name=withdrawal_proofs,json=withdrawalProofs,proto3" json:"withdrawal_proofs,omitempty"` - Sender string `protobuf:"bytes,5,opt,name=sender,proto3" json:"sender,omitempty" yaml:"sender"` - Receiver string `protobuf:"bytes,1,opt,name=receiver,proto3" json:"receiver,omitempty" yaml:"receiver"` - Sequence uint64 `protobuf:"varint,6,opt,name=sequence,proto3" json:"sequence,omitempty" yaml:"sequence"` - Amount types.Coin `protobuf:"bytes,7,opt,name=amount,proto3" json:"amount" yaml:"amount"` + From string `protobuf:"bytes,5,opt,name=from,proto3" json:"from,omitempty" yaml:"from"` + To string `protobuf:"bytes,6,opt,name=to,proto3" json:"to,omitempty" yaml:"to"` + Sequence uint64 `protobuf:"varint,7,opt,name=sequence,proto3" json:"sequence,omitempty" yaml:"sequence"` + Amount types.Coin `protobuf:"bytes,8,opt,name=amount,proto3" json:"amount" yaml:"amount"` // version of the output root - Version []byte `protobuf:"bytes,8,opt,name=version,proto3" json:"version,omitempty" yaml:"version"` - StorageRoot []byte `protobuf:"bytes,9,opt,name=storage_root,json=storageRoot,proto3" json:"storage_root,omitempty" yaml:"storage_root"` - LatestBlockHash []byte `protobuf:"bytes,10,opt,name=latest_block_hash,json=latestBlockHash,proto3" json:"latest_block_hash,omitempty" yaml:"latest_block_hash"` + Version []byte `protobuf:"bytes,9,opt,name=version,proto3" json:"version,omitempty" yaml:"version"` + StorageRoot []byte `protobuf:"bytes,10,opt,name=storage_root,json=storageRoot,proto3" json:"storage_root,omitempty" yaml:"storage_root"` + LastBlockHash []byte `protobuf:"bytes,11,opt,name=last_block_hash,json=lastBlockHash,proto3" json:"last_block_hash,omitempty" yaml:"last_block_hash"` } func (m *MsgFinalizeTokenWithdrawal) Reset() { *m = MsgFinalizeTokenWithdrawal{} } @@ -1035,110 +1036,111 @@ func init() { func init() { proto.RegisterFile("opinit/ophost/v1/tx.proto", fileDescriptor_d16af6eaf4088d05) } var fileDescriptor_d16af6eaf4088d05 = []byte{ - // 1646 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x58, 0xcb, 0x6f, 0x1b, 0x55, - 0x17, 0xb7, 0x9d, 0x47, 0xed, 0xeb, 0x3c, 0xa7, 0x69, 0xe2, 0x4c, 0xf3, 0x79, 0x92, 0xfb, 0xf5, - 0xeb, 0x97, 0xa6, 0xa9, 0xad, 0xa4, 0x50, 0x24, 0x4b, 0x48, 0x74, 0x52, 0x68, 0x53, 0xc9, 0x34, - 0x1a, 0x40, 0x08, 0xa8, 0x64, 0x8d, 0xed, 0x9b, 0xf1, 0xa8, 0xf6, 0x5c, 0x33, 0x73, 0x9d, 0x34, - 0x48, 0x48, 0x88, 0x15, 0xb0, 0x42, 0xe2, 0x1f, 0xa8, 0x58, 0x75, 0xd9, 0x05, 0x0b, 0xfe, 0x84, - 0x6c, 0x90, 0x2a, 0xc4, 0x82, 0x95, 0x05, 0xed, 0xa2, 0x2c, 0x91, 0x59, 0xb2, 0x41, 0xf7, 0x31, - 0x77, 0xc6, 0xe3, 0x71, 0x1a, 0xa2, 0xb6, 0xd9, 0x58, 0xbe, 0xe7, 0xfc, 0xce, 0x3d, 0xf7, 0xfc, - 0xce, 0x99, 0x73, 0x1f, 0x60, 0x11, 0xb7, 0x6d, 0xc7, 0x26, 0x45, 0xdc, 0x6e, 0x60, 0x8f, 0x14, - 0xf7, 0x36, 0x8a, 0xe4, 0x7e, 0xa1, 0xed, 0x62, 0x82, 0x95, 0x19, 0xae, 0x2a, 0x70, 0x55, 0x61, - 0x6f, 0x43, 0x9d, 0x35, 0x5b, 0xb6, 0x83, 0x8b, 0xec, 0x97, 0x83, 0xd4, 0x7c, 0x0d, 0x7b, 0x2d, - 0xec, 0x15, 0xab, 0xa6, 0x87, 0x8a, 0x7b, 0x1b, 0x55, 0x44, 0xcc, 0x8d, 0x62, 0x0d, 0xdb, 0x8e, - 0xd0, 0x2f, 0x08, 0x7d, 0xcb, 0xb3, 0xe8, 0xe4, 0x2d, 0xcf, 0x12, 0x8a, 0x45, 0xae, 0xa8, 0xb0, - 0x51, 0x91, 0x0f, 0x84, 0x6a, 0xce, 0xc2, 0x16, 0xe6, 0x72, 0xfa, 0x4f, 0x48, 0x97, 0x06, 0x57, - 0x7a, 0xd0, 0x46, 0xc2, 0x06, 0xf6, 0x92, 0x60, 0xaa, 0xec, 0x59, 0x06, 0xaa, 0x61, 0xb7, 0xae, - 0x9b, 0xa4, 0xd6, 0x50, 0x6e, 0x83, 0x8c, 0xd7, 0xa9, 0xb6, 0x6c, 0x42, 0x90, 0x9b, 0x4b, 0x2e, - 0x27, 0x57, 0x33, 0xfa, 0x7a, 0xaf, 0xab, 0xcd, 0x1c, 0x98, 0xad, 0x66, 0x09, 0x4a, 0x15, 0xfc, - 0xf9, 0x87, 0x2b, 0x73, 0xc2, 0xff, 0xf5, 0x7a, 0xdd, 0x45, 0x9e, 0xf7, 0x1e, 0x71, 0x6d, 0xc7, - 0x32, 0x02, 0x73, 0x65, 0x03, 0x64, 0xaa, 0xae, 0x5d, 0xb7, 0x50, 0xc5, 0xae, 0xe7, 0x52, 0xcb, - 0xc9, 0xd5, 0x51, 0x7d, 0x2e, 0x98, 0x4b, 0xaa, 0xa0, 0x91, 0xe6, 0xff, 0xb7, 0xeb, 0xca, 0x1b, - 0x20, 0x5b, 0xa5, 0xeb, 0xa8, 0x54, 0x0f, 0x08, 0xf2, 0x72, 0x23, 0xcb, 0xc9, 0xd5, 0x09, 0x7d, - 0xbe, 0xd7, 0xd5, 0x14, 0x61, 0x14, 0x28, 0xa1, 0x01, 0xd8, 0x48, 0xa7, 0x83, 0xd2, 0xea, 0x97, - 0xcf, 0x1e, 0xad, 0x05, 0xbe, 0xbf, 0x79, 0xf6, 0x68, 0xed, 0x9c, 0x08, 0xba, 0x3f, 0x42, 0x98, - 0x03, 0xf3, 0xfd, 0x12, 0x03, 0x79, 0x6d, 0xec, 0x78, 0x08, 0xfe, 0x92, 0x04, 0xd3, 0x65, 0xcf, - 0xda, 0x72, 0x91, 0x49, 0x90, 0xce, 0x96, 0xa4, 0xdc, 0x00, 0x67, 0x6a, 0x74, 0x8c, 0x7d, 0x36, - 0xd6, 0x7a, 0x5d, 0x6d, 0x8a, 0x2f, 0x46, 0x28, 0x86, 0x73, 0xe1, 0x9b, 0x2a, 0x06, 0x18, 0xaf, - 0x61, 0x67, 0xd7, 0xb6, 0x18, 0x0d, 0xd9, 0xcd, 0x7c, 0x21, 0x5a, 0x26, 0x05, 0xee, 0x6f, 0x8b, - 0xa1, 0x74, 0xf5, 0xb0, 0xab, 0x25, 0x7a, 0x5d, 0x6d, 0x52, 0x38, 0x62, 0x52, 0xf8, 0xf0, 0xd9, - 0xa3, 0xb5, 0xa4, 0x21, 0x66, 0x2a, 0xfd, 0x9f, 0x46, 0xec, 0x7b, 0xa0, 0xf1, 0xce, 0x07, 0xf1, - 0x86, 0x43, 0x80, 0xd7, 0xc0, 0x42, 0x44, 0xe4, 0x47, 0xac, 0x9c, 0x0f, 0x67, 0x88, 0xc6, 0x37, - 0x1a, 0xe4, 0x02, 0xf6, 0x52, 0x60, 0xa6, 0xec, 0x59, 0x3b, 0x2e, 0x6e, 0x63, 0x0f, 0xdd, 0xe9, - 0x90, 0x76, 0x87, 0x28, 0x37, 0x41, 0xba, 0xcd, 0x05, 0x3e, 0x21, 0x97, 0x7b, 0x5d, 0x6d, 0x9a, - 0xaf, 0xd3, 0xd7, 0x0c, 0x67, 0x44, 0x1a, 0x9f, 0xa4, 0x38, 0x4a, 0x60, 0x02, 0xb3, 0x55, 0x54, - 0x6c, 0xa7, 0x8e, 0xee, 0xb3, 0xea, 0x18, 0xd5, 0x17, 0x7a, 0x5d, 0xed, 0x2c, 0xb7, 0x0a, 0x6b, - 0xa1, 0x91, 0xe5, 0xc3, 0x6d, 0x3a, 0x52, 0x74, 0x30, 0xdd, 0xdc, 0xac, 0x54, 0x9b, 0xb8, 0x76, - 0xaf, 0xe2, 0x74, 0x5a, 0x55, 0xe4, 0xe6, 0x46, 0x99, 0xb9, 0xda, 0xeb, 0x6a, 0xf3, 0xdc, 0x3c, - 0x02, 0x80, 0xc6, 0x64, 0x73, 0x53, 0xa7, 0x82, 0x77, 0xd9, 0x98, 0x16, 0xa7, 0xf0, 0xe0, 0x62, - 0x4c, 0x72, 0x63, 0xd1, 0xe2, 0x0c, 0x29, 0xa1, 0x01, 0xf8, 0xc8, 0xc0, 0x98, 0x94, 0x2e, 0xd1, - 0x54, 0xc9, 0xd0, 0x69, 0xae, 0x16, 0x82, 0x5c, 0xf5, 0xf1, 0x0b, 0x55, 0x90, 0x8b, 0xca, 0x64, - 0x7d, 0xfe, 0xcd, 0xeb, 0xf3, 0x06, 0x6a, 0x22, 0xe2, 0xe7, 0xa3, 0x0c, 0x40, 0xad, 0x61, 0x36, - 0x9b, 0xc8, 0xb1, 0x64, 0x46, 0xae, 0xf4, 0xba, 0xda, 0xac, 0xa8, 0x1c, 0xa9, 0x1b, 0x9e, 0x93, - 0xd0, 0x04, 0xaf, 0x38, 0x2b, 0xa5, 0x35, 0x4a, 0x4c, 0xc8, 0x7f, 0xa4, 0x8c, 0xc3, 0x91, 0xc2, - 0x45, 0x56, 0xc6, 0x61, 0x51, 0x40, 0x4c, 0x8a, 0xe9, 0xb6, 0x1d, 0x9b, 0xd8, 0x26, 0x41, 0xef, - 0xe3, 0x7b, 0xc8, 0xb9, 0x81, 0xda, 0xd8, 0xb3, 0x89, 0x72, 0x1d, 0x8c, 0x7b, 0xc8, 0xa9, 0x4b, - 0x72, 0x2e, 0x05, 0x9f, 0x15, 0x97, 0x0f, 0x27, 0x46, 0x18, 0x9e, 0x84, 0x94, 0xd7, 0x41, 0x8a, - 0x60, 0x46, 0x45, 0x46, 0xff, 0x5f, 0xaf, 0xab, 0x65, 0x38, 0x96, 0xe0, 0xe1, 0xde, 0x52, 0x04, - 0x2b, 0x65, 0x30, 0x6e, 0xb6, 0x70, 0xc7, 0x21, 0xac, 0x38, 0xb3, 0x9b, 0x8b, 0x05, 0x01, 0xa5, - 0x3b, 0x45, 0x41, 0xec, 0x14, 0x85, 0x2d, 0x6c, 0x3b, 0xd1, 0x16, 0xc1, 0xcd, 0xfc, 0x16, 0xc1, - 0x47, 0xca, 0x3a, 0x18, 0xad, 0x9b, 0xc4, 0x14, 0x95, 0x9a, 0x3b, 0xec, 0x6a, 0xc9, 0x5e, 0x57, - 0xcb, 0x72, 0x0b, 0xaa, 0x61, 0xf8, 0x84, 0xc1, 0x50, 0xa5, 0x6b, 0x5f, 0x3d, 0xd0, 0x12, 0x7f, - 0x3c, 0xd0, 0x12, 0x34, 0x29, 0x22, 0x76, 0x9a, 0x90, 0x7c, 0x90, 0x90, 0x38, 0x86, 0xe1, 0x9b, - 0x40, 0x1b, 0xa2, 0x92, 0x7d, 0x46, 0x05, 0x69, 0x0f, 0x7d, 0xda, 0x41, 0x4e, 0x0d, 0xf9, 0x6d, - 0xc6, 0x1f, 0xc3, 0x1f, 0xc7, 0x80, 0x5a, 0xf6, 0xac, 0x77, 0x6c, 0xc7, 0x6c, 0xda, 0x9f, 0x71, - 0xfb, 0x0f, 0x6d, 0xd2, 0xa8, 0xbb, 0xe6, 0xbe, 0xd9, 0x7c, 0xd5, 0x7d, 0xe2, 0x1a, 0x98, 0xdd, - 0x97, 0xce, 0xe9, 0x3e, 0x8b, 0x77, 0xbd, 0xdc, 0xe8, 0xf2, 0xc8, 0xea, 0x84, 0x9e, 0xa1, 0xfc, - 0x71, 0xc2, 0x66, 0x02, 0xcc, 0x0e, 0x83, 0x84, 0xca, 0x6c, 0xec, 0xa4, 0x65, 0x76, 0x13, 0xa4, - 0x5d, 0x54, 0x43, 0xf6, 0x5e, 0x5c, 0x6b, 0xf5, 0x35, 0x47, 0xb4, 0x56, 0x1f, 0xa2, 0x14, 0x43, - 0x6c, 0x8f, 0xb3, 0xd8, 0xcf, 0x06, 0x13, 0x49, 0xde, 0x83, 0x14, 0x84, 0xca, 0xee, 0xcc, 0x8b, - 0x29, 0xbb, 0x33, 0x7b, 0xc8, 0xf5, 0x6c, 0xec, 0xe4, 0xd2, 0xac, 0xf2, 0x94, 0x60, 0xcf, 0x14, - 0x0a, 0x68, 0xf8, 0x10, 0x9a, 0x2d, 0x8f, 0x60, 0xd7, 0xb4, 0x10, 0x6f, 0xab, 0x19, 0x66, 0x12, - 0xca, 0x56, 0x58, 0x0b, 0x8d, 0xac, 0x18, 0xd2, 0xc6, 0xaa, 0xdc, 0x02, 0xb3, 0x4d, 0x93, 0x20, - 0x8f, 0x88, 0xc6, 0xdd, 0x30, 0xbd, 0x46, 0x0e, 0xb0, 0x09, 0x96, 0x7a, 0x5d, 0x2d, 0x27, 0xfa, - 0x7a, 0x14, 0x02, 0x8d, 0x69, 0x2e, 0x63, 0xdd, 0xfd, 0x96, 0xe9, 0x35, 0x4a, 0x57, 0x59, 0x8b, - 0xf6, 0x29, 0xa4, 0x65, 0xbf, 0x12, 0x94, 0xfd, 0x90, 0xda, 0x84, 0x17, 0x00, 0x1c, 0xae, 0x95, - 0xdd, 0xe9, 0xbb, 0x14, 0x98, 0x2d, 0x7b, 0xd6, 0x07, 0xed, 0xba, 0x49, 0xd0, 0x8e, 0xbf, 0xff, - 0xdd, 0x06, 0x19, 0xb3, 0x43, 0x1a, 0xd8, 0xb5, 0xc9, 0xc1, 0xe0, 0x41, 0x4b, 0xaa, 0x8e, 0x38, - 0x68, 0x49, 0xcc, 0x49, 0xbe, 0x11, 0x03, 0x4c, 0x38, 0x68, 0xbf, 0x22, 0xf7, 0x72, 0xde, 0xaa, - 0x8a, 0x01, 0xeb, 0x61, 0xed, 0xf0, 0x45, 0x64, 0x1d, 0xb4, 0xef, 0x87, 0x54, 0xba, 0xcc, 0xce, - 0x60, 0x72, 0x59, 0x94, 0xc4, 0x5c, 0x40, 0x62, 0x7f, 0xfc, 0x70, 0x17, 0x2c, 0x0e, 0x08, 0x65, - 0xbf, 0x58, 0x89, 0x7c, 0xc1, 0xbc, 0x67, 0xf4, 0x7d, 0xa8, 0x17, 0x07, 0x37, 0x74, 0x16, 0x79, - 0x64, 0xd3, 0x86, 0xdf, 0xa7, 0xc0, 0x9c, 0x74, 0xb4, 0x25, 0x77, 0x1a, 0xef, 0xb4, 0x13, 0xf0, - 0x09, 0x98, 0xa6, 0x14, 0x07, 0x7b, 0x1f, 0x3d, 0xed, 0x8e, 0xac, 0x66, 0xf4, 0xcd, 0xe0, 0x40, - 0x12, 0x01, 0x0c, 0x5f, 0xca, 0x94, 0x83, 0xf6, 0x43, 0xb1, 0x95, 0x0a, 0x83, 0x99, 0x38, 0x1f, - 0xcd, 0x44, 0x08, 0x0f, 0x6d, 0xb0, 0x14, 0x27, 0x7f, 0x19, 0xf9, 0x78, 0x98, 0x02, 0x8a, 0xf4, - 0xc5, 0xce, 0xdf, 0xdb, 0xce, 0x2e, 0x3e, 0xed, 0x6c, 0x20, 0x40, 0x29, 0xac, 0xf0, 0xeb, 0x85, - 0xed, 0xec, 0xf2, 0xbd, 0x3b, 0xbb, 0x79, 0x3e, 0xe6, 0xa0, 0xee, 0xaf, 0x59, 0x87, 0xa2, 0x17, - 0x9e, 0x0b, 0xb2, 0x15, 0x4c, 0x20, 0x7a, 0x22, 0xfd, 0xca, 0xa4, 0x45, 0x69, 0x7d, 0x30, 0x2f, - 0x8b, 0xd1, 0xbc, 0x48, 0x34, 0xb4, 0xd8, 0xc6, 0x18, 0x91, 0xbe, 0x8c, 0x9c, 0x7c, 0x9d, 0x02, - 0xe7, 0xa4, 0xa7, 0x3b, 0xae, 0x59, 0x6b, 0x8a, 0x8b, 0xc8, 0x69, 0xa7, 0xe5, 0x2d, 0x30, 0x85, - 0xd9, 0x72, 0x2a, 0xc8, 0x31, 0xab, 0x4d, 0x54, 0x67, 0x69, 0x49, 0xeb, 0x8b, 0x01, 0xeb, 0xfd, - 0x7a, 0x68, 0x4c, 0x72, 0xc1, 0xdb, 0x7c, 0x5c, 0x2a, 0x0e, 0x32, 0xbe, 0x14, 0x65, 0x3c, 0x1c, - 0x31, 0xd4, 0xc0, 0x7f, 0x62, 0x15, 0xb2, 0x9d, 0xff, 0x99, 0x0c, 0xb5, 0xf3, 0x32, 0x22, 0x26, - 0x3d, 0x3c, 0x9d, 0x36, 0x51, 0x45, 0x90, 0x6e, 0x89, 0xa5, 0x88, 0x4b, 0x73, 0x68, 0xcb, 0xf7, - 0x35, 0xd0, 0x90, 0xa0, 0x63, 0xf5, 0x6a, 0x3f, 0xb8, 0xbe, 0x5e, 0xed, 0x0b, 0x5f, 0x46, 0x1d, - 0xfe, 0xc4, 0x2f, 0x38, 0x62, 0x53, 0x30, 0x5d, 0xb3, 0xf5, 0x62, 0xdb, 0xf4, 0x16, 0x18, 0x6f, - 0xb3, 0x59, 0xc5, 0x35, 0x3c, 0x37, 0xf8, 0x75, 0x73, 0xaf, 0xfa, 0x6c, 0x70, 0xc4, 0xe1, 0x16, - 0xd0, 0x10, 0xa6, 0xfc, 0x32, 0xd7, 0xcf, 0xdc, 0xfc, 0xc0, 0x2e, 0xc7, 0x6d, 0xf8, 0x95, 0x25, - 0x2c, 0xf2, 0x59, 0xdb, 0xfc, 0x2b, 0x0d, 0x46, 0xca, 0x9e, 0xa5, 0x7c, 0x04, 0xb2, 0xe1, 0xe7, - 0x97, 0xe5, 0xc1, 0x15, 0xf5, 0x3f, 0x56, 0xa8, 0xab, 0xcf, 0x43, 0xc8, 0xc4, 0xdc, 0x05, 0x13, - 0x7d, 0x4f, 0x19, 0x2b, 0xb1, 0x96, 0x61, 0x88, 0x7a, 0xe9, 0xb9, 0x10, 0x39, 0x7b, 0x05, 0x4c, - 0xf6, 0xbf, 0x0c, 0xc0, 0x58, 0xdb, 0x3e, 0x8c, 0xba, 0xf6, 0x7c, 0x4c, 0x78, 0xf9, 0x7d, 0x37, - 0xdd, 0xf8, 0xe5, 0x87, 0x21, 0x43, 0x96, 0x1f, 0x77, 0x65, 0x54, 0x08, 0x98, 0x8b, 0xbd, 0x2e, - 0xc6, 0x4f, 0x11, 0x07, 0x55, 0x37, 0x8e, 0x0d, 0x95, 0x5e, 0x3f, 0x07, 0x0b, 0xc3, 0xee, 0x39, - 0xeb, 0xb1, 0xb3, 0x0d, 0x41, 0xab, 0xaf, 0xfd, 0x1b, 0xb4, 0x74, 0x5f, 0x05, 0x53, 0x91, 0x53, - 0xe8, 0x7f, 0x63, 0xe7, 0xe9, 0x07, 0xa9, 0x97, 0x8f, 0x01, 0x92, 0x3e, 0xee, 0x81, 0xd9, 0xc1, - 0xb3, 0xd6, 0xc5, 0x23, 0x66, 0x08, 0xe1, 0xd4, 0xc2, 0xf1, 0x70, 0xd2, 0x19, 0x02, 0xd3, 0xd1, - 0x83, 0xc4, 0x85, 0x23, 0xa6, 0x90, 0x28, 0x75, 0xfd, 0x38, 0xa8, 0x41, 0xde, 0x64, 0xbb, 0x3f, - 0x8a, 0x37, 0x1f, 0x74, 0x24, 0x6f, 0x03, 0x6d, 0xf4, 0x2e, 0x98, 0xe8, 0xeb, 0x7b, 0x2b, 0x47, - 0x91, 0xce, 0x20, 0x43, 0xca, 0x3d, 0xae, 0xdd, 0xa8, 0x63, 0x5f, 0xd0, 0xd3, 0x88, 0x7e, 0xfb, - 0xf0, 0xf7, 0x7c, 0xe2, 0xf0, 0x49, 0x3e, 0xf9, 0xf8, 0x49, 0x3e, 0xf9, 0xdb, 0x93, 0x7c, 0xf2, - 0xdb, 0xa7, 0xf9, 0xc4, 0xe3, 0xa7, 0xf9, 0xc4, 0xaf, 0x4f, 0xf3, 0x89, 0x8f, 0xd7, 0x2d, 0x9b, - 0x34, 0x3a, 0xd5, 0x42, 0x0d, 0xb7, 0x8a, 0x36, 0x2b, 0xe3, 0x2b, 0x4d, 0xb3, 0xea, 0x15, 0xef, - 0xec, 0xb0, 0x37, 0xe4, 0xfb, 0xfe, 0x2b, 0x32, 0x7b, 0x42, 0xae, 0x8e, 0xb3, 0x37, 0xe4, 0xab, - 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0x24, 0xa0, 0x18, 0x2e, 0x0d, 0x17, 0x00, 0x00, + // 1649 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x58, 0x4b, 0x6f, 0x1b, 0x47, + 0x12, 0x26, 0x29, 0x59, 0x16, 0x9b, 0x7a, 0x8e, 0x65, 0x89, 0x1a, 0xdb, 0x1c, 0xa9, 0xed, 0xf5, + 0xca, 0xb2, 0x4c, 0x42, 0xda, 0x5d, 0x2f, 0x40, 0x60, 0x81, 0xf5, 0xc8, 0xfb, 0x90, 0x01, 0xae, + 0x85, 0xd9, 0x5d, 0x2c, 0x36, 0x31, 0x40, 0x0c, 0xc9, 0xd6, 0x70, 0x60, 0x72, 0x9a, 0x99, 0x6e, + 0x4a, 0x56, 0x80, 0x00, 0x41, 0x4e, 0x49, 0x4e, 0x01, 0xf2, 0x07, 0x8c, 0x9c, 0x7c, 0xf4, 0x21, + 0xff, 0x20, 0x17, 0x5d, 0x02, 0x18, 0x41, 0x0e, 0x39, 0x11, 0x89, 0x75, 0x70, 0x8e, 0x01, 0x73, + 0xcc, 0x25, 0xe8, 0xc7, 0xf4, 0x3c, 0x48, 0xca, 0x8a, 0x63, 0x47, 0x17, 0x82, 0x5d, 0xf5, 0x55, + 0x77, 0xd5, 0x57, 0x35, 0xd5, 0x0f, 0xb0, 0x8c, 0x3b, 0xae, 0xe7, 0xd2, 0x12, 0xee, 0x34, 0x31, + 0xa1, 0xa5, 0xfd, 0xcd, 0x12, 0x7d, 0x54, 0xec, 0xf8, 0x98, 0x62, 0x6d, 0x4e, 0xa8, 0x8a, 0x42, + 0x55, 0xdc, 0xdf, 0xd4, 0xe7, 0xed, 0xb6, 0xeb, 0xe1, 0x12, 0xff, 0x15, 0x20, 0xbd, 0x50, 0xc7, + 0xa4, 0x8d, 0x49, 0xa9, 0x66, 0x13, 0x54, 0xda, 0xdf, 0xac, 0x21, 0x6a, 0x6f, 0x96, 0xea, 0xd8, + 0xf5, 0xa4, 0x7e, 0x49, 0xea, 0xdb, 0xc4, 0x61, 0x93, 0xb7, 0x89, 0x23, 0x15, 0xcb, 0x42, 0x51, + 0xe5, 0xa3, 0x92, 0x18, 0x48, 0xd5, 0x82, 0x83, 0x1d, 0x2c, 0xe4, 0xec, 0x9f, 0x94, 0x5e, 0x1e, + 0xf4, 0xf4, 0xb0, 0x83, 0xa4, 0x0d, 0xec, 0xa7, 0xc1, 0x4c, 0x85, 0x38, 0x16, 0xaa, 0x63, 0xbf, + 0x61, 0xda, 0xb4, 0xde, 0xd4, 0xee, 0x81, 0x2c, 0xe9, 0xd6, 0xda, 0x2e, 0xa5, 0xc8, 0xcf, 0xa7, + 0x57, 0xd2, 0x6b, 0x59, 0x73, 0xa3, 0xdf, 0x33, 0xe6, 0x0e, 0xed, 0x76, 0xab, 0x0c, 0x95, 0x0a, + 0x7e, 0xf5, 0xf9, 0xad, 0x05, 0xb9, 0xfe, 0x9d, 0x46, 0xc3, 0x47, 0x84, 0xfc, 0x9b, 0xfa, 0xae, + 0xe7, 0x58, 0xa1, 0xb9, 0xb6, 0x09, 0xb2, 0x35, 0xdf, 0x6d, 0x38, 0xa8, 0xea, 0x36, 0xf2, 0x99, + 0x95, 0xf4, 0xda, 0xb8, 0xb9, 0x10, 0xce, 0xa5, 0x54, 0xd0, 0x9a, 0x14, 0xff, 0x77, 0x1a, 0xda, + 0x9f, 0x41, 0xae, 0xc6, 0xfc, 0xa8, 0xd6, 0x0e, 0x29, 0x22, 0xf9, 0xb1, 0x95, 0xf4, 0xda, 0x94, + 0xb9, 0xd8, 0xef, 0x19, 0x9a, 0x34, 0x0a, 0x95, 0xd0, 0x02, 0x7c, 0x64, 0xb2, 0x41, 0x79, 0xed, + 0x83, 0x17, 0x4f, 0xd7, 0xc3, 0xb5, 0x3f, 0x7e, 0xf1, 0x74, 0xfd, 0xa2, 0x0c, 0x3a, 0x1e, 0x21, + 0xcc, 0x83, 0xc5, 0xb8, 0xc4, 0x42, 0xa4, 0x83, 0x3d, 0x82, 0xe0, 0xd7, 0x69, 0x30, 0x5b, 0x21, + 0xce, 0xb6, 0x8f, 0x6c, 0x8a, 0x4c, 0xee, 0x92, 0x76, 0x17, 0x9c, 0xaf, 0xb3, 0x31, 0x0e, 0xd8, + 0x58, 0xef, 0xf7, 0x8c, 0x19, 0xe1, 0x8c, 0x54, 0x8c, 0xe6, 0x22, 0x30, 0xd5, 0x2c, 0x30, 0x51, + 0xc7, 0xde, 0x9e, 0xeb, 0x70, 0x1a, 0x72, 0x5b, 0x85, 0x62, 0xb2, 0x4c, 0x8a, 0x62, 0xbd, 0x6d, + 0x8e, 0x32, 0xf5, 0xa3, 0x9e, 0x91, 0xea, 0xf7, 0x8c, 0x69, 0xb9, 0x10, 0x97, 0xc2, 0x27, 0x2f, + 0x9e, 0xae, 0xa7, 0x2d, 0x39, 0x53, 0xf9, 0xf7, 0x2c, 0xe2, 0x60, 0x05, 0x16, 0xef, 0x62, 0x18, + 0x6f, 0x34, 0x04, 0x78, 0x1b, 0x2c, 0x25, 0x44, 0x41, 0xc4, 0xda, 0xa5, 0x68, 0x86, 0x58, 0x7c, + 0xe3, 0x61, 0x2e, 0x60, 0x3f, 0x03, 0xe6, 0x2a, 0xc4, 0xd9, 0xf5, 0x71, 0x07, 0x13, 0x74, 0xbf, + 0x4b, 0x3b, 0x5d, 0xaa, 0xfd, 0x03, 0x4c, 0x76, 0x84, 0x20, 0x20, 0xe4, 0x66, 0xbf, 0x67, 0xcc, + 0x0a, 0x3f, 0x03, 0xcd, 0x68, 0x46, 0x94, 0xf1, 0xab, 0x14, 0x47, 0x19, 0x4c, 0x61, 0xee, 0x45, + 0xd5, 0xf5, 0x1a, 0xe8, 0x11, 0xaf, 0x8e, 0x71, 0x73, 0xa9, 0xdf, 0x33, 0x2e, 0x08, 0xab, 0xa8, + 0x16, 0x5a, 0x39, 0x31, 0xdc, 0x61, 0x23, 0xcd, 0x04, 0xb3, 0xad, 0xad, 0x6a, 0xad, 0x85, 0xeb, + 0x0f, 0xab, 0x5e, 0xb7, 0x5d, 0x43, 0x7e, 0x7e, 0x9c, 0x9b, 0xeb, 0xfd, 0x9e, 0xb1, 0x28, 0xcc, + 0x13, 0x00, 0x68, 0x4d, 0xb7, 0xb6, 0x4c, 0x26, 0xf8, 0x17, 0x1f, 0xb3, 0xe2, 0x94, 0x2b, 0xf8, + 0x18, 0xd3, 0xfc, 0xb9, 0x64, 0x71, 0x46, 0x94, 0xd0, 0x02, 0x62, 0x64, 0x61, 0x4c, 0xcb, 0x37, + 0x58, 0xaa, 0x54, 0xe8, 0x2c, 0x57, 0x4b, 0x61, 0xae, 0x62, 0xfc, 0x42, 0x1d, 0xe4, 0x93, 0x32, + 0x55, 0x9f, 0x3f, 0x89, 0xfa, 0xbc, 0x8b, 0x5a, 0x88, 0x06, 0xf9, 0xa8, 0x00, 0x50, 0x6f, 0xda, + 0xad, 0x16, 0xf2, 0x1c, 0x95, 0x91, 0x5b, 0xfd, 0x9e, 0x31, 0x2f, 0x2b, 0x47, 0xe9, 0x46, 0xe7, + 0x24, 0x32, 0xc1, 0x6f, 0x9c, 0x95, 0xf2, 0x3a, 0x23, 0x26, 0xb2, 0x7e, 0xa2, 0x8c, 0xa3, 0x91, + 0xc2, 0x65, 0x5e, 0xc6, 0x51, 0x91, 0x22, 0xe6, 0x38, 0xc3, 0x75, 0x3b, 0x9e, 0x4b, 0x5d, 0x9b, + 0xa2, 0xff, 0xe0, 0x87, 0xc8, 0xbb, 0x8b, 0x3a, 0x98, 0xb8, 0x54, 0xbb, 0x03, 0x26, 0x08, 0xf2, + 0x1a, 0x8a, 0x9c, 0x1b, 0xe1, 0x67, 0x25, 0xe4, 0xa3, 0x89, 0x91, 0x86, 0xaf, 0x42, 0xca, 0x15, + 0x90, 0xa1, 0x98, 0x53, 0x91, 0x35, 0xa7, 0xfb, 0x3d, 0x23, 0x2b, 0xb0, 0x14, 0x43, 0x2b, 0x43, + 0xb1, 0x56, 0x01, 0x13, 0x76, 0x1b, 0x77, 0x3d, 0xca, 0x8b, 0x30, 0xb7, 0xb5, 0x5c, 0x94, 0x0e, + 0xb0, 0x1d, 0xa1, 0x28, 0x77, 0x84, 0xe2, 0x36, 0x76, 0xbd, 0x64, 0x2b, 0x10, 0x66, 0x41, 0x2b, + 0x10, 0x23, 0x6d, 0x03, 0x8c, 0x37, 0x6c, 0x6a, 0xcb, 0x8a, 0xcc, 0x1f, 0xf5, 0x8c, 0x74, 0xbf, + 0x67, 0xe4, 0x84, 0x05, 0xd3, 0x70, 0x7c, 0xca, 0xe2, 0xa8, 0xf2, 0xed, 0x0f, 0x1f, 0x1b, 0xa9, + 0xef, 0x1f, 0x1b, 0x29, 0x46, 0xbe, 0x8c, 0x91, 0x11, 0x5f, 0x08, 0x89, 0x1f, 0xc6, 0x24, 0xfc, + 0x0b, 0x30, 0x46, 0xa8, 0x54, 0x3f, 0xd1, 0xc1, 0x24, 0x41, 0xef, 0x74, 0x91, 0x57, 0x47, 0x41, + 0x3b, 0x09, 0xc6, 0xf0, 0x8b, 0x73, 0x40, 0xaf, 0x10, 0xe7, 0xef, 0xae, 0x67, 0xb7, 0xdc, 0x77, + 0x85, 0xfd, 0xff, 0x5c, 0xda, 0x6c, 0xf8, 0xf6, 0x81, 0xdd, 0x3a, 0xa3, 0x3c, 0xfd, 0x9a, 0x96, + 0x72, 0x1b, 0xcc, 0x1f, 0x28, 0xff, 0xd9, 0x96, 0x8c, 0xf7, 0x48, 0x7e, 0x7c, 0x65, 0x6c, 0x6d, + 0xca, 0xcc, 0xb2, 0x14, 0x08, 0xce, 0xe7, 0x42, 0xcc, 0x2e, 0x87, 0x68, 0x57, 0xc1, 0xf8, 0x9e, + 0x8f, 0xdb, 0x3c, 0x5b, 0x59, 0x73, 0x36, 0xcc, 0x14, 0x93, 0x42, 0x8b, 0x2b, 0xb5, 0x3f, 0xf1, + 0x02, 0x9a, 0xe0, 0x90, 0xdf, 0xc5, 0x0a, 0x68, 0x24, 0x0d, 0xac, 0xb0, 0x4a, 0x91, 0x04, 0x9c, + 0xe7, 0xb1, 0x5c, 0x08, 0xdb, 0xb3, 0x4a, 0x45, 0x98, 0x95, 0x48, 0x25, 0x4e, 0xbe, 0x9e, 0x4a, + 0x3c, 0xbf, 0x8f, 0x7c, 0xe2, 0x62, 0x2f, 0x9f, 0xe5, 0xc5, 0xa8, 0x85, 0xdb, 0xa5, 0x54, 0x40, + 0x2b, 0x80, 0x30, 0xf6, 0x09, 0xc5, 0xbe, 0xed, 0x20, 0xd1, 0x51, 0x01, 0x37, 0x89, 0xb0, 0x1f, + 0xd5, 0x42, 0x2b, 0x27, 0x87, 0xac, 0xa7, 0xf2, 0x86, 0x6e, 0x13, 0x2a, 0x3b, 0x76, 0xd3, 0x26, + 0xcd, 0x7c, 0x8e, 0x9b, 0x47, 0x1b, 0x7a, 0x1c, 0xc0, 0x1a, 0xba, 0x4d, 0x28, 0x6f, 0xe9, 0xff, + 0xb4, 0x49, 0xb3, 0xbc, 0x99, 0xf8, 0x02, 0x56, 0xc3, 0x2f, 0x60, 0x44, 0x99, 0xc2, 0x6b, 0x00, + 0x8e, 0xd6, 0xaa, 0x86, 0xf4, 0x69, 0x06, 0xcc, 0x57, 0x88, 0xf3, 0xdf, 0x4e, 0xc3, 0xa6, 0x68, + 0x37, 0xd8, 0xf2, 0xee, 0x81, 0xac, 0xdd, 0xa5, 0x4d, 0xec, 0xbb, 0xf4, 0x70, 0xf0, 0x6c, 0xa5, + 0x54, 0x27, 0x9c, 0xad, 0x14, 0xe6, 0x55, 0x6a, 0xdd, 0x02, 0x53, 0x1e, 0x3a, 0xa8, 0xaa, 0xed, + 0x5b, 0x74, 0xa7, 0x52, 0xc8, 0x76, 0x54, 0x3b, 0xda, 0x89, 0x9c, 0x87, 0x0e, 0x82, 0x90, 0xca, + 0x37, 0xf9, 0xb1, 0x4b, 0xb9, 0xc5, 0x48, 0xcc, 0x87, 0x24, 0xc6, 0xe3, 0x87, 0x7b, 0x60, 0x79, + 0x40, 0xa8, 0x5a, 0xc7, 0x6a, 0xe2, 0x4b, 0x14, 0xed, 0x23, 0xf6, 0xc1, 0x5d, 0x1f, 0xdc, 0xc3, + 0x79, 0xe4, 0x89, 0x7d, 0x1a, 0x7e, 0x96, 0x01, 0x0b, 0x6a, 0xa1, 0x6d, 0xb5, 0xb9, 0x90, 0xb3, + 0x4e, 0xc0, 0xdb, 0x60, 0x96, 0x51, 0x1c, 0x6e, 0x77, 0xec, 0x80, 0x3b, 0xb6, 0x96, 0x35, 0xb7, + 0xc2, 0x92, 0x4d, 0x00, 0x46, 0xbb, 0x32, 0xe3, 0xa1, 0x83, 0x48, 0x6c, 0xe5, 0xe2, 0x60, 0x26, + 0x2e, 0x25, 0x33, 0x11, 0xc1, 0x43, 0x17, 0x5c, 0x1e, 0x26, 0x7f, 0x13, 0xf9, 0x78, 0x92, 0x01, + 0x9a, 0x5a, 0x8b, 0x1f, 0xb9, 0x77, 0xbc, 0x3d, 0x7c, 0xd6, 0xd9, 0x40, 0x80, 0x51, 0x58, 0x15, + 0x37, 0x0a, 0xd7, 0xdb, 0x13, 0xdb, 0x75, 0x6e, 0xeb, 0xd2, 0x90, 0xb3, 0x79, 0xe0, 0xb3, 0x09, + 0x65, 0x0f, 0xbc, 0x18, 0x66, 0x2b, 0x9c, 0x40, 0xf6, 0x42, 0xf6, 0x95, 0x29, 0x8b, 0xf2, 0xc6, + 0x60, 0x5e, 0x96, 0x93, 0x79, 0x51, 0x68, 0xe8, 0xf0, 0x3d, 0x32, 0x21, 0x7d, 0x13, 0x39, 0xf9, + 0x28, 0x03, 0x2e, 0xaa, 0x95, 0xee, 0xfb, 0x76, 0xbd, 0x25, 0xef, 0x1e, 0x67, 0x9d, 0x96, 0xbf, + 0x82, 0x19, 0xcc, 0xdd, 0xa9, 0x22, 0xcf, 0xae, 0xb5, 0x50, 0x83, 0xa7, 0x65, 0xd2, 0x5c, 0x0e, + 0x59, 0x8f, 0xeb, 0xa1, 0x35, 0x2d, 0x04, 0x7f, 0x13, 0xe3, 0x72, 0x69, 0x90, 0xf1, 0xcb, 0x49, + 0xc6, 0xa3, 0x11, 0x43, 0x03, 0x5c, 0x19, 0xaa, 0x50, 0xed, 0xfc, 0x87, 0x74, 0xa4, 0x9d, 0x57, + 0x10, 0xb5, 0xd9, 0x39, 0xea, 0xac, 0x89, 0x2a, 0x81, 0xc9, 0xb6, 0x74, 0x45, 0xde, 0x93, 0x23, + 0x5b, 0x7d, 0xa0, 0x81, 0x96, 0x02, 0x9d, 0xaa, 0x57, 0x07, 0xc1, 0xc5, 0x7a, 0x75, 0x20, 0x7c, + 0x13, 0x75, 0xf8, 0xa5, 0xb8, 0xd3, 0xc8, 0x4d, 0xc1, 0xf6, 0xed, 0xf6, 0xeb, 0x6d, 0xd3, 0xdb, + 0x60, 0xa2, 0xc3, 0x67, 0x95, 0x37, 0xef, 0xfc, 0xe0, 0xd7, 0x2d, 0x56, 0x35, 0xe7, 0xc3, 0xa3, + 0x8d, 0xb0, 0x80, 0x96, 0x34, 0x15, 0xf7, 0xb7, 0x38, 0x73, 0x8b, 0x03, 0xbb, 0x9c, 0xb0, 0x11, + 0xb7, 0x94, 0xa8, 0x28, 0x60, 0x6d, 0xeb, 0xc7, 0x49, 0x30, 0x56, 0x21, 0x8e, 0xf6, 0x7f, 0x90, + 0x8b, 0xbe, 0xb8, 0xac, 0x0c, 0x7a, 0x14, 0x7f, 0x9f, 0xd0, 0xd7, 0x5e, 0x86, 0x50, 0x89, 0x79, + 0x00, 0xa6, 0x62, 0xaf, 0x17, 0xab, 0x43, 0x2d, 0xa3, 0x10, 0xfd, 0xc6, 0x4b, 0x21, 0x6a, 0xf6, + 0x2a, 0x98, 0x8e, 0x3f, 0x06, 0xc0, 0xa1, 0xb6, 0x31, 0x8c, 0xbe, 0xfe, 0x72, 0x4c, 0xd4, 0xfd, + 0xd8, 0xe5, 0x76, 0xb8, 0xfb, 0x51, 0xc8, 0x08, 0xf7, 0x87, 0xdd, 0x12, 0x35, 0x0a, 0x16, 0x86, + 0xde, 0x10, 0x87, 0x4f, 0x31, 0x0c, 0xaa, 0x6f, 0x9e, 0x1a, 0xaa, 0x56, 0x7d, 0x0f, 0x2c, 0x8d, + 0xba, 0xf2, 0x6c, 0x0c, 0x9d, 0x6d, 0x04, 0x5a, 0xff, 0xe3, 0x2f, 0x41, 0xab, 0xe5, 0x6b, 0x60, + 0x26, 0x71, 0x0a, 0xbd, 0x3a, 0x74, 0x9e, 0x38, 0x48, 0xbf, 0x79, 0x0a, 0x90, 0x5a, 0xe3, 0x21, + 0x98, 0x1f, 0x3c, 0x6b, 0x5d, 0x3f, 0x61, 0x86, 0x08, 0x4e, 0x2f, 0x9e, 0x0e, 0xa7, 0x16, 0x43, + 0x60, 0x36, 0x79, 0x90, 0xb8, 0x76, 0xc2, 0x14, 0x0a, 0xa5, 0x6f, 0x9c, 0x06, 0x35, 0xc8, 0x9b, + 0x6a, 0xf7, 0x27, 0xf1, 0x16, 0x80, 0x4e, 0xe4, 0x6d, 0xa0, 0x8d, 0x3e, 0x00, 0x53, 0xb1, 0xbe, + 0xb7, 0x7a, 0x12, 0xe9, 0x1c, 0x32, 0xa2, 0xdc, 0x87, 0xb5, 0x1b, 0xfd, 0xdc, 0xfb, 0xec, 0x34, + 0x62, 0xde, 0x3b, 0xfa, 0xae, 0x90, 0x3a, 0x7a, 0x5e, 0x48, 0x3f, 0x7b, 0x5e, 0x48, 0x7f, 0xfb, + 0xbc, 0x90, 0xfe, 0xe4, 0xb8, 0x90, 0x7a, 0x76, 0x5c, 0x48, 0x7d, 0x73, 0x5c, 0x48, 0xbd, 0xb5, + 0xe1, 0xb8, 0xb4, 0xd9, 0xad, 0x15, 0xeb, 0xb8, 0x5d, 0x72, 0x79, 0x19, 0xdf, 0x6a, 0xd9, 0x35, + 0x52, 0xba, 0xbf, 0xcb, 0x9f, 0x8d, 0x1f, 0x05, 0x0f, 0xc7, 0xfc, 0xd5, 0xb8, 0x36, 0xc1, 0x9f, + 0x8d, 0xff, 0xf0, 0x73, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf9, 0x12, 0xab, 0x52, 0x00, 0x17, 0x00, + 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1983,26 +1985,26 @@ func (m *MsgFinalizeTokenWithdrawal) MarshalToSizedBuffer(dAtA []byte) (int, err _ = i var l int _ = l - if len(m.LatestBlockHash) > 0 { - i -= len(m.LatestBlockHash) - copy(dAtA[i:], m.LatestBlockHash) - i = encodeVarintTx(dAtA, i, uint64(len(m.LatestBlockHash))) + if len(m.LastBlockHash) > 0 { + i -= len(m.LastBlockHash) + copy(dAtA[i:], m.LastBlockHash) + i = encodeVarintTx(dAtA, i, uint64(len(m.LastBlockHash))) i-- - dAtA[i] = 0x52 + dAtA[i] = 0x5a } if len(m.StorageRoot) > 0 { i -= len(m.StorageRoot) copy(dAtA[i:], m.StorageRoot) i = encodeVarintTx(dAtA, i, uint64(len(m.StorageRoot))) i-- - dAtA[i] = 0x4a + dAtA[i] = 0x52 } if len(m.Version) > 0 { i -= len(m.Version) copy(dAtA[i:], m.Version) i = encodeVarintTx(dAtA, i, uint64(len(m.Version))) i-- - dAtA[i] = 0x42 + dAtA[i] = 0x4a } { size, err := m.Amount.MarshalToSizedBuffer(dAtA[:i]) @@ -2013,16 +2015,23 @@ func (m *MsgFinalizeTokenWithdrawal) MarshalToSizedBuffer(dAtA []byte) (int, err i = encodeVarintTx(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0x3a + dAtA[i] = 0x42 if m.Sequence != 0 { i = encodeVarintTx(dAtA, i, uint64(m.Sequence)) i-- - dAtA[i] = 0x30 + dAtA[i] = 0x38 } - if len(m.Sender) > 0 { - i -= len(m.Sender) - copy(dAtA[i:], m.Sender) - i = encodeVarintTx(dAtA, i, uint64(len(m.Sender))) + if len(m.To) > 0 { + i -= len(m.To) + copy(dAtA[i:], m.To) + i = encodeVarintTx(dAtA, i, uint64(len(m.To))) + i-- + dAtA[i] = 0x32 + } + if len(m.From) > 0 { + i -= len(m.From) + copy(dAtA[i:], m.From) + i = encodeVarintTx(dAtA, i, uint64(len(m.From))) i-- dAtA[i] = 0x2a } @@ -2045,10 +2054,10 @@ func (m *MsgFinalizeTokenWithdrawal) MarshalToSizedBuffer(dAtA []byte) (int, err i-- dAtA[i] = 0x10 } - if len(m.Receiver) > 0 { - i -= len(m.Receiver) - copy(dAtA[i:], m.Receiver) - i = encodeVarintTx(dAtA, i, uint64(len(m.Receiver))) + if len(m.Sender) > 0 { + i -= len(m.Sender) + copy(dAtA[i:], m.Sender) + i = encodeVarintTx(dAtA, i, uint64(len(m.Sender))) i-- dAtA[i] = 0xa } @@ -2690,7 +2699,7 @@ func (m *MsgFinalizeTokenWithdrawal) Size() (n int) { } var l int _ = l - l = len(m.Receiver) + l = len(m.Sender) if l > 0 { n += 1 + l + sovTx(uint64(l)) } @@ -2706,7 +2715,11 @@ func (m *MsgFinalizeTokenWithdrawal) Size() (n int) { n += 1 + l + sovTx(uint64(l)) } } - l = len(m.Sender) + l = len(m.From) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.To) if l > 0 { n += 1 + l + sovTx(uint64(l)) } @@ -2723,7 +2736,7 @@ func (m *MsgFinalizeTokenWithdrawal) Size() (n int) { if l > 0 { n += 1 + l + sovTx(uint64(l)) } - l = len(m.LatestBlockHash) + l = len(m.LastBlockHash) if l > 0 { n += 1 + l + sovTx(uint64(l)) } @@ -4001,7 +4014,7 @@ func (m *MsgFinalizeTokenWithdrawal) Unmarshal(dAtA []byte) error { switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Receiver", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Sender", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -4029,7 +4042,7 @@ func (m *MsgFinalizeTokenWithdrawal) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Receiver = string(dAtA[iNdEx:postIndex]) + m.Sender = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 0 { @@ -4103,7 +4116,7 @@ func (m *MsgFinalizeTokenWithdrawal) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 5: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Sender", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field From", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -4131,9 +4144,41 @@ func (m *MsgFinalizeTokenWithdrawal) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Sender = string(dAtA[iNdEx:postIndex]) + m.From = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field To", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.To = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field Sequence", wireType) } @@ -4152,7 +4197,7 @@ func (m *MsgFinalizeTokenWithdrawal) Unmarshal(dAtA []byte) error { break } } - case 7: + case 8: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) } @@ -4185,7 +4230,7 @@ func (m *MsgFinalizeTokenWithdrawal) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex - case 8: + case 9: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) } @@ -4219,7 +4264,7 @@ func (m *MsgFinalizeTokenWithdrawal) Unmarshal(dAtA []byte) error { m.Version = []byte{} } iNdEx = postIndex - case 9: + case 10: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field StorageRoot", wireType) } @@ -4253,9 +4298,9 @@ func (m *MsgFinalizeTokenWithdrawal) Unmarshal(dAtA []byte) error { m.StorageRoot = []byte{} } iNdEx = postIndex - case 10: + case 11: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LatestBlockHash", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LastBlockHash", wireType) } var byteLen int for shift := uint(0); ; shift += 7 { @@ -4282,9 +4327,9 @@ func (m *MsgFinalizeTokenWithdrawal) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.LatestBlockHash = append(m.LatestBlockHash[:0], dAtA[iNdEx:postIndex]...) - if m.LatestBlockHash == nil { - m.LatestBlockHash = []byte{} + m.LastBlockHash = append(m.LastBlockHash[:0], dAtA[iNdEx:postIndex]...) + if m.LastBlockHash == nil { + m.LastBlockHash = []byte{} } iNdEx = postIndex default: diff --git a/x/ophost/types/tx_test.go b/x/ophost/types/tx_test.go new file mode 100644 index 00000000..5574c560 --- /dev/null +++ b/x/ophost/types/tx_test.go @@ -0,0 +1,28 @@ +package types + +import ( + "bytes" + "testing" + + "github.com/stretchr/testify/require" + + "github.com/cosmos/cosmos-sdk/codec/address" +) + +func TestMsgRecordBatch_Validate(t *testing.T) { + ac := address.NewBech32Codec("init") + addr, err := ac.BytesToString(bytes.Repeat([]byte{1}, 20)) + require.NoError(t, err) + + // Valid input + validMsg := NewMsgRecordBatch(addr, 123, bytes.Repeat([]byte{1}, 32)) + require.NoError(t, validMsg.Validate(ac)) + + // Empty submitter + invalidMsg := NewMsgRecordBatch("", 123, bytes.Repeat([]byte{1}, 32)) + require.Error(t, invalidMsg.Validate(ac)) + + // Empty batch bytes + invalidMsg = NewMsgRecordBatch(addr, 123, nil) + require.Error(t, invalidMsg.Validate(ac)) +} diff --git a/x/ophost/types/types.pb.go b/x/ophost/types/types.pb.go index 4b54902d..be3d84b5 100644 --- a/x/ophost/types/types.pb.go +++ b/x/ophost/types/types.pb.go @@ -334,63 +334,63 @@ func init() { func init() { proto.RegisterFile("opinit/ophost/v1/types.proto", fileDescriptor_29cadbd84ee898dd) } var fileDescriptor_29cadbd84ee898dd = []byte{ - // 892 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x55, 0xcf, 0x6f, 0xdb, 0x36, - 0x14, 0x36, 0x5b, 0xcf, 0xb5, 0xe9, 0xb8, 0x4d, 0x99, 0x76, 0x55, 0xbc, 0xce, 0x36, 0x0c, 0x74, - 0x30, 0x8a, 0x46, 0x82, 0xbd, 0x1f, 0x87, 0xee, 0x14, 0x39, 0x2e, 0x6a, 0x60, 0x73, 0x0d, 0xc5, - 0x43, 0xb1, 0x5d, 0x04, 0x4a, 0xa2, 0x65, 0x22, 0x92, 0x28, 0x88, 0x74, 0xb0, 0x74, 0xff, 0xc1, - 0x4e, 0x3d, 0x76, 0xb7, 0xee, 0x56, 0xec, 0xd4, 0xc3, 0x4e, 0xfb, 0x0b, 0x72, 0x2c, 0x76, 0xda, - 0xa9, 0xdd, 0x92, 0x43, 0x87, 0xfd, 0x15, 0x03, 0x29, 0xda, 0x51, 0xdb, 0xa0, 0x18, 0x76, 0xb1, - 0xc9, 0xef, 0xfb, 0xf8, 0xbe, 0xc7, 0xf7, 0x48, 0x0a, 0xde, 0x64, 0x29, 0x4d, 0xa8, 0xb0, 0x58, - 0xba, 0x60, 0x5c, 0x58, 0x87, 0x7d, 0x4b, 0x1c, 0xa5, 0x84, 0x9b, 0x69, 0xc6, 0x04, 0x43, 0x9b, - 0x39, 0x6b, 0xe6, 0xac, 0x79, 0xd8, 0x6f, 0x5e, 0xc5, 0x31, 0x4d, 0x98, 0xa5, 0x7e, 0x73, 0x51, - 0xb3, 0xe5, 0x33, 0x1e, 0x33, 0x6e, 0x79, 0x98, 0x13, 0xeb, 0xb0, 0xef, 0x11, 0x81, 0xfb, 0x96, - 0xcf, 0x68, 0xa2, 0xf9, 0xed, 0x9c, 0x77, 0xd5, 0xcc, 0xca, 0x27, 0x9a, 0xba, 0x16, 0xb2, 0x90, - 0xe5, 0xb8, 0x1c, 0x69, 0xb4, 0x1d, 0x32, 0x16, 0x46, 0xc4, 0x52, 0x33, 0x6f, 0x39, 0xb7, 0x04, - 0x8d, 0x09, 0x17, 0x38, 0x4e, 0x57, 0x8e, 0x6f, 0x0b, 0x82, 0x65, 0x86, 0x05, 0x65, 0xda, 0xb1, - 0xfb, 0x33, 0x80, 0x95, 0x29, 0xce, 0x70, 0xcc, 0xd1, 0x0f, 0x70, 0x33, 0x23, 0x21, 0xe5, 0x22, - 0x17, 0xb8, 0x73, 0x42, 0x0c, 0xd0, 0xb9, 0xd8, 0xab, 0x0f, 0xb6, 0x4d, 0x9d, 0x8a, 0xcc, 0xdb, - 0xd4, 0x79, 0x9b, 0x43, 0x46, 0x13, 0xfb, 0xf3, 0xe3, 0x97, 0xed, 0xd2, 0x2f, 0xaf, 0xda, 0xbd, - 0x90, 0x8a, 0xc5, 0xd2, 0x33, 0x7d, 0x16, 0xeb, 0xbc, 0xf5, 0xdf, 0x0e, 0x0f, 0x0e, 0x74, 0xa1, - 0xe4, 0x02, 0xfe, 0xec, 0xf5, 0xf3, 0xdb, 0xc0, 0xb9, 0x52, 0x74, 0xba, 0x47, 0xc8, 0xdd, 0xe6, - 0x93, 0xa7, 0xed, 0xd2, 0xdf, 0x4f, 0xdb, 0xe0, 0xc7, 0xd7, 0xcf, 0x6f, 0x37, 0x74, 0x89, 0xf3, - 0xc4, 0xba, 0xbf, 0x95, 0xe1, 0x86, 0x9d, 0xd1, 0x20, 0x24, 0x43, 0x96, 0xcc, 0x69, 0x88, 0xee, - 0xc2, 0xba, 0xbf, 0xc0, 0x51, 0x44, 0x92, 0x90, 0x64, 0x5c, 0x25, 0x59, 0xb3, 0x8d, 0xdf, 0x7f, - 0xdd, 0xb9, 0xa6, 0xf3, 0xdc, 0x0d, 0x82, 0x8c, 0x70, 0xbe, 0x2f, 0x32, 0x9a, 0x84, 0x4e, 0x51, - 0x8c, 0x3e, 0x83, 0xd5, 0x34, 0x63, 0x29, 0xe3, 0x24, 0x33, 0x2e, 0x74, 0xc0, 0x7b, 0x17, 0xae, - 0x95, 0x68, 0x04, 0xa1, 0x87, 0x85, 0xbf, 0x70, 0x69, 0x32, 0x67, 0xc6, 0xc5, 0x0e, 0xe8, 0xd5, - 0x07, 0x1f, 0x99, 0x6f, 0xb7, 0xdc, 0xb4, 0xa5, 0x66, 0x9c, 0xcc, 0x99, 0x5d, 0x93, 0x75, 0xc9, - 0xf7, 0x5a, 0xf3, 0x56, 0x28, 0x7a, 0x04, 0xb7, 0xf8, 0xd2, 0x8b, 0x29, 0xe7, 0xb2, 0xc0, 0x34, - 0x11, 0x24, 0x3b, 0xc4, 0x91, 0x51, 0x56, 0xf1, 0xb6, 0xcd, 0xbc, 0x57, 0xe6, 0xaa, 0x57, 0xe6, - 0x9e, 0xee, 0x95, 0x6d, 0xca, 0x68, 0xff, 0xbc, 0x6c, 0x7f, 0x7c, 0xce, 0xea, 0x3b, 0x2c, 0xa6, - 0x82, 0xc4, 0xa9, 0x38, 0x7a, 0xf2, 0xaa, 0x0d, 0x72, 0x4b, 0x74, 0xa6, 0x1b, 0x6b, 0x99, 0xf4, - 0x9e, 0xd3, 0x04, 0x47, 0xf4, 0x51, 0xde, 0xde, 0x94, 0x64, 0x94, 0x05, 0xc6, 0x07, 0xff, 0xd9, - 0xfb, 0x9c, 0xd5, 0xe7, 0x7a, 0x17, 0x75, 0x53, 0x25, 0x43, 0x5f, 0xc0, 0x1b, 0x85, 0xcc, 0xb9, - 0xc0, 0x99, 0x70, 0x17, 0x84, 0x86, 0x0b, 0x61, 0x54, 0x3a, 0xa0, 0x57, 0x76, 0xae, 0x9f, 0xd1, - 0xfb, 0x92, 0xbd, 0xaf, 0x48, 0x74, 0x0b, 0x5e, 0x66, 0x19, 0xf6, 0x23, 0xe2, 0x92, 0x04, 0x7b, - 0x11, 0x09, 0x8c, 0x4b, 0x1d, 0xd0, 0xab, 0x3a, 0x8d, 0x1c, 0x1d, 0xe5, 0x20, 0x6a, 0xc2, 0x6a, - 0x4c, 0x04, 0x0e, 0xb0, 0xc0, 0x46, 0xb5, 0x03, 0x7a, 0x1b, 0xce, 0x7a, 0xde, 0x3d, 0x06, 0xb0, - 0xb6, 0x6e, 0x0b, 0xba, 0x09, 0x6b, 0xca, 0x49, 0x08, 0x92, 0x19, 0x40, 0xb6, 0xdf, 0x39, 0x03, - 0xd0, 0x1e, 0x84, 0xfe, 0x02, 0xd3, 0xc4, 0x95, 0xe7, 0x55, 0x9d, 0x8e, 0xcb, 0x83, 0x5b, 0xef, - 0xe9, 0xb2, 0x39, 0x94, 0xea, 0xd9, 0x51, 0x4a, 0x9c, 0x9a, 0xbf, 0x1a, 0x76, 0x1f, 0xc2, 0xda, - 0x1a, 0x47, 0x4d, 0xf8, 0xe1, 0xf0, 0xfe, 0xee, 0x78, 0xe2, 0xce, 0xbe, 0x9d, 0x8e, 0xdc, 0x6f, - 0x26, 0xfb, 0xd3, 0xd1, 0x70, 0x7c, 0x6f, 0x3c, 0xda, 0xdb, 0x2c, 0xa1, 0xeb, 0xf0, 0x6a, 0x81, - 0x1b, 0x4f, 0xc6, 0xb3, 0xf1, 0xee, 0x26, 0x40, 0x37, 0xe0, 0x56, 0x01, 0x1e, 0x8e, 0xbe, 0x1a, - 0xed, 0x4b, 0xe2, 0x42, 0x77, 0x17, 0xd6, 0x66, 0xec, 0x80, 0x24, 0x53, 0x4c, 0x33, 0xb4, 0x0d, - 0xab, 0x51, 0xdf, 0x0d, 0x48, 0xc2, 0x62, 0xbd, 0x91, 0x4b, 0x51, 0x7f, 0x4f, 0x4e, 0x15, 0x35, - 0xd0, 0xd4, 0x05, 0x4d, 0x0d, 0x14, 0x25, 0xab, 0x51, 0x79, 0xb0, 0x14, 0xe9, 0x52, 0xa0, 0x36, - 0xac, 0x33, 0x35, 0x72, 0x33, 0xc6, 0x84, 0x8a, 0xb1, 0xe1, 0xc0, 0x1c, 0x72, 0x18, 0x13, 0xe8, - 0x13, 0x78, 0x25, 0xea, 0xbb, 0x5e, 0xc4, 0xfc, 0x03, 0x37, 0x59, 0xc6, 0x9e, 0xbe, 0x30, 0x65, - 0xa7, 0x11, 0xf5, 0x6d, 0x89, 0x4e, 0x14, 0x88, 0xbe, 0x86, 0x8d, 0xb5, 0x4e, 0x3e, 0x3f, 0xfa, - 0x7a, 0x34, 0xdf, 0x39, 0x52, 0xb3, 0xd5, 0xdb, 0x64, 0x37, 0xe4, 0x99, 0x7a, 0xbc, 0x3e, 0x32, - 0x75, 0x1d, 0x50, 0x0a, 0x94, 0xed, 0xe0, 0x4d, 0xdb, 0xb2, 0xb6, 0x1d, 0x14, 0x6c, 0xbb, 0x3f, - 0x01, 0xb8, 0xb5, 0xee, 0xc4, 0x43, 0x2a, 0x16, 0x7a, 0x5f, 0x6f, 0x5e, 0x55, 0xf0, 0x7f, 0xaf, - 0xea, 0x97, 0xb0, 0x92, 0xd7, 0x42, 0x6d, 0xba, 0x3e, 0x30, 0xde, 0x0d, 0x91, 0x1b, 0x16, 0xd7, - 0xeb, 0x25, 0xf6, 0xe4, 0xf8, 0xaf, 0x56, 0xe9, 0xd9, 0x49, 0x0b, 0x1c, 0x9f, 0xb4, 0xc0, 0x8b, - 0x93, 0x16, 0xf8, 0xf3, 0xa4, 0x05, 0x1e, 0x9f, 0xb6, 0x4a, 0x2f, 0x4e, 0x5b, 0xa5, 0x3f, 0x4e, - 0x5b, 0xa5, 0xef, 0xee, 0x14, 0xde, 0x4b, 0x19, 0x96, 0xe2, 0x9d, 0x08, 0x7b, 0xdc, 0x7a, 0x30, - 0x55, 0xdf, 0x98, 0xef, 0x57, 0x5f, 0x19, 0xf5, 0x72, 0x7a, 0x15, 0x55, 0xc3, 0x4f, 0xff, 0x0d, - 0x00, 0x00, 0xff, 0xff, 0xa0, 0xb1, 0x1a, 0xa1, 0x83, 0x06, 0x00, 0x00, + // 893 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x55, 0x4f, 0x6f, 0x13, 0x47, + 0x14, 0xf7, 0x80, 0x6b, 0xec, 0x71, 0x0c, 0x61, 0x02, 0x65, 0xe3, 0x52, 0xdb, 0xb2, 0x44, 0x65, + 0x21, 0xb2, 0x2b, 0xbb, 0x7f, 0x0e, 0xf4, 0x14, 0x3b, 0x46, 0x58, 0x6a, 0x8d, 0xb5, 0x71, 0x85, + 0xda, 0xcb, 0x6a, 0xd6, 0x3b, 0x5e, 0x8f, 0xb2, 0xbb, 0xb3, 0xda, 0x19, 0x47, 0x0d, 0xfd, 0x06, + 0x3d, 0x71, 0xa4, 0x37, 0x7a, 0x43, 0x3d, 0x71, 0xe8, 0xa9, 0x9f, 0x20, 0x47, 0xd4, 0x53, 0x4f, + 0xd0, 0x26, 0x07, 0xaa, 0x7e, 0x8a, 0x6a, 0xfe, 0xd8, 0x59, 0x20, 0x42, 0x55, 0x2f, 0xf6, 0xcc, + 0xfb, 0xfd, 0xde, 0xfb, 0xbd, 0x79, 0xef, 0xcd, 0x2c, 0xbc, 0xc9, 0x52, 0x9a, 0x50, 0xe1, 0xb0, + 0x74, 0xc1, 0xb8, 0x70, 0x0e, 0xbb, 0x8e, 0x38, 0x4a, 0x09, 0xb7, 0xd3, 0x8c, 0x09, 0x86, 0x36, + 0x35, 0x6a, 0x6b, 0xd4, 0x3e, 0xec, 0xd6, 0xaf, 0xe2, 0x98, 0x26, 0xcc, 0x51, 0xbf, 0x9a, 0x54, + 0x6f, 0xcc, 0x18, 0x8f, 0x19, 0x77, 0x7c, 0xcc, 0x89, 0x73, 0xd8, 0xf5, 0x89, 0xc0, 0x5d, 0x67, + 0xc6, 0x68, 0x62, 0xf0, 0x6d, 0x8d, 0x7b, 0x6a, 0xe7, 0xe8, 0x8d, 0x81, 0xae, 0x85, 0x2c, 0x64, + 0xda, 0x2e, 0x57, 0xab, 0x80, 0x21, 0x63, 0x61, 0x44, 0x1c, 0xb5, 0xf3, 0x97, 0x73, 0x27, 0x58, + 0x66, 0x58, 0x50, 0xb6, 0x0a, 0xd8, 0x7c, 0x1b, 0x17, 0x34, 0x26, 0x5c, 0xe0, 0x38, 0xd5, 0x84, + 0xf6, 0xcf, 0x00, 0x96, 0x26, 0x38, 0xc3, 0x31, 0x47, 0x3f, 0xc0, 0xcd, 0x8c, 0x84, 0x94, 0x0b, + 0x1d, 0xc1, 0x9b, 0x13, 0x62, 0x81, 0xd6, 0xc5, 0x4e, 0xb5, 0xb7, 0x6d, 0x9b, 0x54, 0x64, 0xde, + 0xb6, 0xc9, 0xdb, 0x1e, 0x30, 0x9a, 0xf4, 0x3f, 0x3f, 0x7e, 0xd9, 0x2c, 0xfc, 0xf2, 0xaa, 0xd9, + 0x09, 0xa9, 0x58, 0x2c, 0x7d, 0x7b, 0xc6, 0x62, 0x93, 0xb7, 0xf9, 0xdb, 0xe1, 0xc1, 0x81, 0x29, + 0x94, 0x74, 0xe0, 0xcf, 0x5e, 0x3f, 0xbf, 0x0d, 0xdc, 0x2b, 0x79, 0xa5, 0x7b, 0x84, 0xdc, 0xad, + 0x3f, 0x79, 0xda, 0x2c, 0xfc, 0xfd, 0xb4, 0x09, 0x7e, 0x7c, 0xfd, 0xfc, 0x76, 0xcd, 0x94, 0x58, + 0x27, 0xd6, 0xfe, 0xad, 0x08, 0x37, 0xfa, 0x19, 0x0d, 0x42, 0x32, 0x60, 0xc9, 0x9c, 0x86, 0xe8, + 0x2e, 0xac, 0xce, 0x16, 0x38, 0x8a, 0x48, 0x12, 0x92, 0x8c, 0xab, 0x24, 0x2b, 0x7d, 0xeb, 0xf7, + 0x5f, 0x77, 0xae, 0x99, 0x3c, 0x77, 0x83, 0x20, 0x23, 0x9c, 0xef, 0x8b, 0x8c, 0x26, 0xa1, 0x9b, + 0x27, 0xa3, 0xcf, 0x60, 0x39, 0xcd, 0x58, 0xca, 0x38, 0xc9, 0xac, 0x0b, 0x2d, 0xf0, 0x5e, 0xc7, + 0x35, 0x13, 0x0d, 0x21, 0xf4, 0xb1, 0x98, 0x2d, 0x3c, 0x9a, 0xcc, 0x99, 0x75, 0xb1, 0x05, 0x3a, + 0xd5, 0xde, 0x47, 0xf6, 0xdb, 0x2d, 0xb7, 0xfb, 0x92, 0x33, 0x4a, 0xe6, 0xac, 0x5f, 0x91, 0x75, + 0xd1, 0x67, 0xad, 0xf8, 0x2b, 0x2b, 0x7a, 0x04, 0xb7, 0xf8, 0xd2, 0x8f, 0x29, 0xe7, 0xb2, 0xc0, + 0x34, 0x11, 0x24, 0x3b, 0xc4, 0x91, 0x55, 0x54, 0xf1, 0xb6, 0x6d, 0xdd, 0x2c, 0x7b, 0xd5, 0x2c, + 0x7b, 0xcf, 0x34, 0xb3, 0x6f, 0xcb, 0x68, 0xff, 0xbc, 0x6c, 0x7e, 0x7c, 0x8e, 0xf7, 0x1d, 0x16, + 0x53, 0x41, 0xe2, 0x54, 0x1c, 0x3d, 0x79, 0xd5, 0x04, 0x5a, 0x12, 0x9d, 0xf1, 0x46, 0x86, 0x26, + 0xb5, 0xe7, 0x34, 0xc1, 0x11, 0x7d, 0xa4, 0xdb, 0x9b, 0x92, 0x8c, 0xb2, 0xc0, 0xfa, 0xe0, 0x3f, + 0x6b, 0x9f, 0xe3, 0x7d, 0xae, 0x76, 0x9e, 0x37, 0x51, 0x34, 0xf4, 0x05, 0xbc, 0x91, 0xcb, 0x9c, + 0x0b, 0x9c, 0x09, 0x6f, 0x41, 0x68, 0xb8, 0x10, 0x56, 0xa9, 0x05, 0x3a, 0x45, 0xf7, 0xfa, 0x19, + 0xbc, 0x2f, 0xd1, 0xfb, 0x0a, 0x44, 0xb7, 0xe0, 0x65, 0x96, 0xe1, 0x59, 0x44, 0x3c, 0x92, 0x60, + 0x3f, 0x22, 0x81, 0x75, 0xa9, 0x05, 0x3a, 0x65, 0xb7, 0xa6, 0xad, 0x43, 0x6d, 0x44, 0x75, 0x58, + 0x8e, 0x89, 0xc0, 0x01, 0x16, 0xd8, 0x2a, 0xb7, 0x40, 0x67, 0xc3, 0x5d, 0xef, 0xdb, 0xc7, 0x00, + 0x56, 0xd6, 0x6d, 0x41, 0x37, 0x61, 0x45, 0x29, 0x09, 0x41, 0x32, 0x0b, 0xc8, 0xf6, 0xbb, 0x67, + 0x06, 0xb4, 0x07, 0xe1, 0x6c, 0x81, 0x69, 0xe2, 0xc9, 0x79, 0x55, 0xd3, 0x71, 0xb9, 0x77, 0xeb, + 0x3d, 0x5d, 0xb6, 0x07, 0x92, 0x3d, 0x3d, 0x4a, 0x89, 0x5b, 0x99, 0xad, 0x96, 0xed, 0x87, 0xb0, + 0xb2, 0xb6, 0xa3, 0x3a, 0xfc, 0x70, 0x70, 0x7f, 0x77, 0x34, 0xf6, 0xa6, 0xdf, 0x4e, 0x86, 0xde, + 0x37, 0xe3, 0xfd, 0xc9, 0x70, 0x30, 0xba, 0x37, 0x1a, 0xee, 0x6d, 0x16, 0xd0, 0x75, 0x78, 0x35, + 0x87, 0x8d, 0xc6, 0xa3, 0xe9, 0x68, 0x77, 0x13, 0xa0, 0x1b, 0x70, 0x2b, 0x67, 0x1e, 0x0c, 0xbf, + 0x1a, 0xee, 0x4b, 0xe0, 0x42, 0x7b, 0x17, 0x56, 0xa6, 0xec, 0x80, 0x24, 0x13, 0x4c, 0x33, 0xb4, + 0x0d, 0xcb, 0x51, 0xd7, 0x0b, 0x48, 0xc2, 0x62, 0x73, 0x90, 0x4b, 0x51, 0x77, 0x4f, 0x6e, 0x15, + 0xd4, 0x33, 0xd0, 0x05, 0x03, 0xf5, 0x14, 0x24, 0xab, 0x51, 0x7a, 0xb0, 0x14, 0xe9, 0x52, 0xa0, + 0x26, 0xac, 0x32, 0xb5, 0xf2, 0x32, 0xc6, 0x84, 0x8a, 0xb1, 0xe1, 0x42, 0x6d, 0x72, 0x19, 0x13, + 0xe8, 0x13, 0x78, 0x25, 0xea, 0x7a, 0x7e, 0xc4, 0x66, 0x07, 0x5e, 0xb2, 0x8c, 0x7d, 0x73, 0x61, + 0x8a, 0x6e, 0x2d, 0xea, 0xf6, 0xa5, 0x75, 0xac, 0x8c, 0xe8, 0x6b, 0x58, 0x5b, 0xf3, 0xe4, 0xf3, + 0x62, 0xae, 0x47, 0xfd, 0x9d, 0x91, 0x9a, 0xae, 0xde, 0x9e, 0x7e, 0x4d, 0xce, 0xd4, 0xe3, 0xf5, + 0xc8, 0x54, 0x4d, 0x40, 0x49, 0x50, 0xb2, 0xbd, 0x37, 0x65, 0x8b, 0x46, 0xb6, 0x97, 0x93, 0x6d, + 0xff, 0x04, 0xe0, 0xd6, 0xba, 0x13, 0x0f, 0xa9, 0x58, 0x98, 0x73, 0xbd, 0x79, 0x55, 0xc1, 0xff, + 0xbd, 0xaa, 0x5f, 0xc2, 0x92, 0xae, 0x85, 0x3a, 0x74, 0xb5, 0x67, 0xbd, 0x1b, 0x42, 0x0b, 0xe6, + 0xfd, 0x8d, 0x4b, 0x7f, 0x7c, 0xfc, 0x57, 0xa3, 0xf0, 0xec, 0xa4, 0x01, 0x8e, 0x4f, 0x1a, 0xe0, + 0xc5, 0x49, 0x03, 0xfc, 0x79, 0xd2, 0x00, 0x8f, 0x4f, 0x1b, 0x85, 0x17, 0xa7, 0x8d, 0xc2, 0x1f, + 0xa7, 0x8d, 0xc2, 0x77, 0x77, 0x72, 0xef, 0xa5, 0x0c, 0x4b, 0xf1, 0x4e, 0x84, 0x7d, 0xee, 0x3c, + 0x98, 0xa8, 0x6f, 0xcc, 0xf7, 0xab, 0xaf, 0x8c, 0x7a, 0x39, 0xfd, 0x92, 0xaa, 0xe1, 0xa7, 0xff, + 0x06, 0x00, 0x00, 0xff, 0xff, 0xa5, 0xfd, 0xab, 0x20, 0x83, 0x06, 0x00, 0x00, } func (this *Params) Equal(that interface{}) bool {