ibc: packet fixes (#7810)

* ibc: msg validation fields

* msg tests

* rename proof

* rename proofs

* check seq ≠ 0

Co-authored-by: Aditya <adityasripal@gmail.com>
Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com>
This commit is contained in:
Federico Kunze 2020-11-13 14:58:13 +01:00 committed by GitHub
parent 6c9a02bc34
commit e77c9506c8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 163 additions and 144 deletions

View File

@ -148,7 +148,7 @@ message MsgRecvPacket {
option (gogoproto.goproto_getters) = false;
Packet packet = 1 [(gogoproto.nullable) = false];
bytes proof = 2;
bytes proof_commitment = 2 [(gogoproto.moretags) = "yaml:\"proof_commitment\""];
ibc.core.client.v1.Height proof_height = 3
[(gogoproto.moretags) = "yaml:\"proof_height\"", (gogoproto.nullable) = false];
string signer = 4;
@ -163,7 +163,7 @@ message MsgTimeout {
option (gogoproto.goproto_getters) = false;
Packet packet = 1 [(gogoproto.nullable) = false];
bytes proof = 2;
bytes proof_unreceived = 2 [(gogoproto.moretags) = "yaml:\"proof_unreceived\""];
ibc.core.client.v1.Height proof_height = 3
[(gogoproto.moretags) = "yaml:\"proof_height\"", (gogoproto.nullable) = false];
uint64 next_sequence_recv = 4 [(gogoproto.moretags) = "yaml:\"next_sequence_recv\""];
@ -179,7 +179,7 @@ message MsgTimeoutOnClose {
option (gogoproto.goproto_getters) = false;
Packet packet = 1 [(gogoproto.nullable) = false];
bytes proof = 2;
bytes proof_unreceived = 2 [(gogoproto.moretags) = "yaml:\"proof_unreceived\""];
bytes proof_close = 3 [(gogoproto.moretags) = "yaml:\"proof_close\""];
ibc.core.client.v1.Height proof_height = 4
[(gogoproto.moretags) = "yaml:\"proof_height\"", (gogoproto.nullable) = false];
@ -197,7 +197,7 @@ message MsgAcknowledgement {
Packet packet = 1 [(gogoproto.nullable) = false];
bytes acknowledgement = 2;
bytes proof = 3;
bytes proof_acked = 3 [(gogoproto.moretags) = "yaml:\"proof_acked\""];
ibc.core.client.v1.Height proof_height = 4
[(gogoproto.moretags) = "yaml:\"proof_height\"", (gogoproto.nullable) = false];
string signer = 5;

View File

@ -272,7 +272,7 @@ func (suite *KeeperTestSuite) TestConnOpenTry() {
suite.Require().True(found)
connection.State = types.INIT
connection.Versions = []*types.Version{&types.Version{}}
connection.Versions = []*types.Version{{}}
suite.chainB.App.IBCKeeper.ConnectionKeeper.SetConnection(suite.chainB.GetContext(), connB.ID, connection)

View File

@ -43,7 +43,7 @@ func TestConnectionValidateBasic(t *testing.T) {
},
{
"invalid version",
types.ConnectionEnd{clientID, []*types.Version{&types.Version{}}, types.INIT, types.Counterparty{clientID2, connectionID2, commitmenttypes.NewMerklePrefix([]byte("prefix"))}},
types.ConnectionEnd{clientID, []*types.Version{{}}, types.INIT, types.Counterparty{clientID2, connectionID2, commitmenttypes.NewMerklePrefix([]byte("prefix"))}},
false,
},
{

View File

@ -150,7 +150,7 @@ func (suite *MsgTestSuite) TestNewMsgConnectionOpenTry() {
{"invalid consensusHeight", types.NewMsgConnectionOpenTry("ibcconntest", provedID, "clienttotesta", "connectiontotest", "clienttotest", clientState, prefix, []*types.Version{ibctesting.ConnectionVersion}, suite.proof, suite.proof, suite.proof, clientHeight, clienttypes.ZeroHeight(), signer), false},
{"empty singer", types.NewMsgConnectionOpenTry("ibcconntest", provedID, "clienttotesta", "connectiontotest", "clienttotest", clientState, prefix, []*types.Version{ibctesting.ConnectionVersion}, suite.proof, suite.proof, suite.proof, clientHeight, clientHeight, nil), false},
{"success", types.NewMsgConnectionOpenTry("ibcconntest", provedID, "clienttotesta", "connectiontotest", "clienttotest", clientState, prefix, []*types.Version{ibctesting.ConnectionVersion}, suite.proof, suite.proof, suite.proof, clientHeight, clientHeight, signer), true},
{"invalid version", types.NewMsgConnectionOpenTry("ibcconntest", provedID, "clienttotesta", "connectiontotest", "clienttotest", clientState, prefix, []*types.Version{&types.Version{}}, suite.proof, suite.proof, suite.proof, clientHeight, clientHeight, signer), false},
{"invalid version", types.NewMsgConnectionOpenTry("ibcconntest", provedID, "clienttotesta", "connectiontotest", "clienttotest", clientState, prefix, []*types.Version{{}}, suite.proof, suite.proof, suite.proof, clientHeight, clientHeight, signer), false},
}
for _, tc := range testCases {

View File

@ -405,14 +405,14 @@ var _ sdk.Msg = &MsgRecvPacket{}
// NewMsgRecvPacket constructs new MsgRecvPacket
// nolint:interfacer
func NewMsgRecvPacket(
packet Packet, proof []byte, proofHeight clienttypes.Height,
packet Packet, proofCommitment []byte, proofHeight clienttypes.Height,
signer sdk.AccAddress,
) *MsgRecvPacket {
return &MsgRecvPacket{
Packet: packet,
Proof: proof,
ProofHeight: proofHeight,
Signer: signer.String(),
Packet: packet,
ProofCommitment: proofCommitment,
ProofHeight: proofHeight,
Signer: signer.String(),
}
}
@ -423,7 +423,7 @@ func (msg MsgRecvPacket) Route() string {
// ValidateBasic implements sdk.Msg
func (msg MsgRecvPacket) ValidateBasic() error {
if len(msg.Proof) == 0 {
if len(msg.ProofCommitment) == 0 {
return sdkerrors.Wrap(commitmenttypes.ErrInvalidProof, "cannot submit an empty proof")
}
if msg.ProofHeight.IsZero() {
@ -468,13 +468,13 @@ var _ sdk.Msg = &MsgTimeout{}
// NewMsgTimeout constructs new MsgTimeout
// nolint:interfacer
func NewMsgTimeout(
packet Packet, nextSequenceRecv uint64, proof []byte,
packet Packet, nextSequenceRecv uint64, proofUnreceived []byte,
proofHeight clienttypes.Height, signer sdk.AccAddress,
) *MsgTimeout {
return &MsgTimeout{
Packet: packet,
NextSequenceRecv: nextSequenceRecv,
Proof: proof,
ProofUnreceived: proofUnreceived,
ProofHeight: proofHeight,
Signer: signer.String(),
}
@ -487,12 +487,15 @@ func (msg MsgTimeout) Route() string {
// ValidateBasic implements sdk.Msg
func (msg MsgTimeout) ValidateBasic() error {
if len(msg.Proof) == 0 {
return sdkerrors.Wrap(commitmenttypes.ErrInvalidProof, "cannot submit an empty proof")
if len(msg.ProofUnreceived) == 0 {
return sdkerrors.Wrap(commitmenttypes.ErrInvalidProof, "cannot submit an empty unreceived proof")
}
if msg.ProofHeight.IsZero() {
return sdkerrors.Wrap(sdkerrors.ErrInvalidHeight, "proof height must be non-zero")
}
if msg.NextSequenceRecv == 0 {
return sdkerrors.Wrap(sdkerrors.ErrInvalidSequence, "next sequence receive cannot be 0")
}
_, err := sdk.AccAddressFromBech32(msg.Signer)
if err != nil {
return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "string could not be parsed as address: %v", err)
@ -524,13 +527,13 @@ func (msg MsgTimeout) Type() string {
// nolint:interfacer
func NewMsgTimeoutOnClose(
packet Packet, nextSequenceRecv uint64,
proof, proofClose []byte,
proofUnreceived, proofClose []byte,
proofHeight clienttypes.Height, signer sdk.AccAddress,
) *MsgTimeoutOnClose {
return &MsgTimeoutOnClose{
Packet: packet,
NextSequenceRecv: nextSequenceRecv,
Proof: proof,
ProofUnreceived: proofUnreceived,
ProofClose: proofClose,
ProofHeight: proofHeight,
Signer: signer.String(),
@ -544,7 +547,10 @@ func (msg MsgTimeoutOnClose) Route() string {
// ValidateBasic implements sdk.Msg
func (msg MsgTimeoutOnClose) ValidateBasic() error {
if len(msg.Proof) == 0 {
if msg.NextSequenceRecv == 0 {
return sdkerrors.Wrap(sdkerrors.ErrInvalidSequence, "next sequence receive cannot be 0")
}
if len(msg.ProofUnreceived) == 0 {
return sdkerrors.Wrap(commitmenttypes.ErrInvalidProof, "cannot submit an empty proof")
}
if len(msg.ProofClose) == 0 {
@ -585,11 +591,15 @@ var _ sdk.Msg = &MsgAcknowledgement{}
// NewMsgAcknowledgement constructs a new MsgAcknowledgement
// nolint:interfacer
func NewMsgAcknowledgement(
packet Packet, ack []byte, proof []byte, proofHeight clienttypes.Height, signer sdk.AccAddress) *MsgAcknowledgement {
packet Packet,
ack, proofAcked []byte,
proofHeight clienttypes.Height,
signer sdk.AccAddress,
) *MsgAcknowledgement {
return &MsgAcknowledgement{
Packet: packet,
Acknowledgement: ack,
Proof: proof,
ProofAcked: proofAcked,
ProofHeight: proofHeight,
Signer: signer.String(),
}
@ -602,12 +612,15 @@ func (msg MsgAcknowledgement) Route() string {
// ValidateBasic implements sdk.Msg
func (msg MsgAcknowledgement) ValidateBasic() error {
if len(msg.Proof) == 0 {
if len(msg.ProofAcked) == 0 {
return sdkerrors.Wrap(commitmenttypes.ErrInvalidProof, "cannot submit an empty proof")
}
if msg.ProofHeight.IsZero() {
return sdkerrors.Wrap(sdkerrors.ErrInvalidHeight, "proof height must be non-zero")
}
if len(msg.Acknowledgement) == 0 {
return sdkerrors.Wrap(ErrInvalidAcknowledgement, "ack bytes cannot be empty")
}
_, err := sdk.AccAddressFromBech32(msg.Signer)
if err != nil {
return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "string could not be parsed as address: %v", err)

View File

@ -333,7 +333,7 @@ func (suite *TypesTestSuite) TestMsgRecvPacketValidateBasic() {
msg *types.MsgRecvPacket
expPass bool
}{
{"", types.NewMsgRecvPacket(packet, suite.proof, height, addr), true},
{"success", types.NewMsgRecvPacket(packet, suite.proof, height, addr), true},
{"proof height is zero", types.NewMsgRecvPacket(packet, suite.proof, clienttypes.ZeroHeight(), addr), false},
{"proof contain empty proof", types.NewMsgRecvPacket(packet, emptyProof, height, addr), false},
{"missing signer address", types.NewMsgRecvPacket(packet, suite.proof, height, emptyAddr), false},
@ -369,8 +369,9 @@ func (suite *TypesTestSuite) TestMsgTimeoutValidateBasic() {
msg *types.MsgTimeout
expPass bool
}{
{"", types.NewMsgTimeout(packet, 1, suite.proof, height, addr), true},
{"success", types.NewMsgTimeout(packet, 1, suite.proof, height, addr), true},
{"proof height must be > 0", types.NewMsgTimeout(packet, 1, suite.proof, clienttypes.ZeroHeight(), addr), false},
{"seq 0", types.NewMsgTimeout(packet, 0, suite.proof, height, addr), false},
{"missing signer address", types.NewMsgTimeout(packet, 1, suite.proof, height, emptyAddr), false},
{"cannot submit an empty proof", types.NewMsgTimeout(packet, 1, emptyProof, height, addr), false},
{"invalid packet", types.NewMsgTimeout(invalidPacket, 1, suite.proof, height, addr), false},
@ -398,6 +399,7 @@ func (suite *TypesTestSuite) TestMsgTimeoutOnCloseValidateBasic() {
expPass bool
}{
{"success", types.NewMsgTimeoutOnClose(packet, 1, suite.proof, suite.proof, height, addr), true},
{"seq 0", types.NewMsgTimeoutOnClose(packet, 0, suite.proof, suite.proof, height, addr), false},
{"empty proof", types.NewMsgTimeoutOnClose(packet, 1, emptyProof, suite.proof, height, addr), false},
{"empty proof close", types.NewMsgTimeoutOnClose(packet, 1, suite.proof, emptyProof, height, addr), false},
{"proof height is zero", types.NewMsgTimeoutOnClose(packet, 1, suite.proof, suite.proof, clienttypes.ZeroHeight(), addr), false},
@ -426,8 +428,9 @@ func (suite *TypesTestSuite) TestMsgAcknowledgementValidateBasic() {
msg *types.MsgAcknowledgement
expPass bool
}{
{"", types.NewMsgAcknowledgement(packet, packet.GetData(), suite.proof, height, addr), true},
{"success", types.NewMsgAcknowledgement(packet, packet.GetData(), suite.proof, height, addr), true},
{"proof height must be > 0", types.NewMsgAcknowledgement(packet, packet.GetData(), suite.proof, clienttypes.ZeroHeight(), addr), false},
{"empty ack", types.NewMsgAcknowledgement(packet, nil, suite.proof, height, addr), false},
{"missing signer address", types.NewMsgAcknowledgement(packet, packet.GetData(), suite.proof, height, emptyAddr), false},
{"cannot submit an empty proof", types.NewMsgAcknowledgement(packet, packet.GetData(), emptyProof, height, addr), false},
{"invalid packet", types.NewMsgAcknowledgement(invalidPacket, packet.GetData(), suite.proof, height, addr), false},

View File

@ -513,10 +513,10 @@ var xxx_messageInfo_MsgChannelCloseConfirmResponse proto.InternalMessageInfo
// MsgRecvPacket receives incoming IBC packet
type MsgRecvPacket struct {
Packet Packet `protobuf:"bytes,1,opt,name=packet,proto3" json:"packet"`
Proof []byte `protobuf:"bytes,2,opt,name=proof,proto3" json:"proof,omitempty"`
ProofHeight types.Height `protobuf:"bytes,3,opt,name=proof_height,json=proofHeight,proto3" json:"proof_height" yaml:"proof_height"`
Signer string `protobuf:"bytes,4,opt,name=signer,proto3" json:"signer,omitempty"`
Packet Packet `protobuf:"bytes,1,opt,name=packet,proto3" json:"packet"`
ProofCommitment []byte `protobuf:"bytes,2,opt,name=proof_commitment,json=proofCommitment,proto3" json:"proof_commitment,omitempty" yaml:"proof_commitment"`
ProofHeight types.Height `protobuf:"bytes,3,opt,name=proof_height,json=proofHeight,proto3" json:"proof_height" yaml:"proof_height"`
Signer string `protobuf:"bytes,4,opt,name=signer,proto3" json:"signer,omitempty"`
}
func (m *MsgRecvPacket) Reset() { *m = MsgRecvPacket{} }
@ -592,7 +592,7 @@ var xxx_messageInfo_MsgRecvPacketResponse proto.InternalMessageInfo
// MsgTimeout receives timed-out packet
type MsgTimeout struct {
Packet Packet `protobuf:"bytes,1,opt,name=packet,proto3" json:"packet"`
Proof []byte `protobuf:"bytes,2,opt,name=proof,proto3" json:"proof,omitempty"`
ProofUnreceived []byte `protobuf:"bytes,2,opt,name=proof_unreceived,json=proofUnreceived,proto3" json:"proof_unreceived,omitempty" yaml:"proof_unreceived"`
ProofHeight types.Height `protobuf:"bytes,3,opt,name=proof_height,json=proofHeight,proto3" json:"proof_height" yaml:"proof_height"`
NextSequenceRecv uint64 `protobuf:"varint,4,opt,name=next_sequence_recv,json=nextSequenceRecv,proto3" json:"next_sequence_recv,omitempty" yaml:"next_sequence_recv"`
Signer string `protobuf:"bytes,5,opt,name=signer,proto3" json:"signer,omitempty"`
@ -671,7 +671,7 @@ var xxx_messageInfo_MsgTimeoutResponse proto.InternalMessageInfo
// MsgTimeoutOnClose timed-out packet upon counterparty channel closure.
type MsgTimeoutOnClose struct {
Packet Packet `protobuf:"bytes,1,opt,name=packet,proto3" json:"packet"`
Proof []byte `protobuf:"bytes,2,opt,name=proof,proto3" json:"proof,omitempty"`
ProofUnreceived []byte `protobuf:"bytes,2,opt,name=proof_unreceived,json=proofUnreceived,proto3" json:"proof_unreceived,omitempty" yaml:"proof_unreceived"`
ProofClose []byte `protobuf:"bytes,3,opt,name=proof_close,json=proofClose,proto3" json:"proof_close,omitempty" yaml:"proof_close"`
ProofHeight types.Height `protobuf:"bytes,4,opt,name=proof_height,json=proofHeight,proto3" json:"proof_height" yaml:"proof_height"`
NextSequenceRecv uint64 `protobuf:"varint,5,opt,name=next_sequence_recv,json=nextSequenceRecv,proto3" json:"next_sequence_recv,omitempty" yaml:"next_sequence_recv"`
@ -752,7 +752,7 @@ var xxx_messageInfo_MsgTimeoutOnCloseResponse proto.InternalMessageInfo
type MsgAcknowledgement struct {
Packet Packet `protobuf:"bytes,1,opt,name=packet,proto3" json:"packet"`
Acknowledgement []byte `protobuf:"bytes,2,opt,name=acknowledgement,proto3" json:"acknowledgement,omitempty"`
Proof []byte `protobuf:"bytes,3,opt,name=proof,proto3" json:"proof,omitempty"`
ProofAcked []byte `protobuf:"bytes,3,opt,name=proof_acked,json=proofAcked,proto3" json:"proof_acked,omitempty" yaml:"proof_acked"`
ProofHeight types.Height `protobuf:"bytes,4,opt,name=proof_height,json=proofHeight,proto3" json:"proof_height" yaml:"proof_height"`
Signer string `protobuf:"bytes,5,opt,name=signer,proto3" json:"signer,omitempty"`
}
@ -853,77 +853,80 @@ func init() {
func init() { proto.RegisterFile("ibc/core/channel/v1/tx.proto", fileDescriptor_bc4637e0ac3fc7b7) }
var fileDescriptor_bc4637e0ac3fc7b7 = []byte{
// 1110 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x58, 0x3f, 0x6f, 0xdb, 0x46,
0x14, 0x17, 0x25, 0x59, 0xb6, 0x9f, 0xdd, 0xc4, 0xa1, 0x64, 0x47, 0xa1, 0x6c, 0xd1, 0x25, 0xd0,
0x44, 0x4d, 0x11, 0x29, 0x76, 0x02, 0xb4, 0x0d, 0xba, 0x58, 0x5a, 0x6a, 0x04, 0x46, 0x0a, 0xc6,
0xe8, 0x60, 0x14, 0x10, 0xe4, 0xd3, 0x85, 0x22, 0x24, 0xdd, 0xa9, 0x24, 0xad, 0x58, 0xdf, 0xa0,
0x4b, 0x81, 0xce, 0x9d, 0x32, 0x16, 0xe8, 0x90, 0x0f, 0xd1, 0x25, 0x63, 0xb6, 0x74, 0x22, 0x0a,
0x7b, 0xc9, 0xac, 0x4f, 0x50, 0xf0, 0x78, 0x22, 0x29, 0x8a, 0xb4, 0xe9, 0xba, 0x16, 0x90, 0x49,
0x77, 0xf7, 0x7e, 0xf7, 0xee, 0xbd, 0xdf, 0xfb, 0xdd, 0x1f, 0x0a, 0x36, 0xf5, 0x63, 0x54, 0x43,
0xd4, 0xc0, 0x35, 0xd4, 0x69, 0x11, 0x82, 0x7b, 0xb5, 0xe1, 0x4e, 0xcd, 0x3a, 0xad, 0x0e, 0x0c,
0x6a, 0x51, 0x31, 0xaf, 0x1f, 0xa3, 0xaa, 0x63, 0xad, 0x72, 0x6b, 0x75, 0xb8, 0x23, 0x15, 0x34,
0xaa, 0x51, 0x66, 0xaf, 0x39, 0x2d, 0x17, 0x2a, 0xc9, 0xbe, 0xa3, 0x9e, 0x8e, 0x89, 0xe5, 0xf8,
0x71, 0x5b, 0x1c, 0xf0, 0x79, 0xd4, 0x4a, 0x13, 0xb7, 0x0c, 0xa2, 0x7c, 0x10, 0x40, 0x3c, 0x30,
0xb5, 0x86, 0x3b, 0xf8, 0x62, 0x80, 0xc9, 0x3e, 0xd1, 0x2d, 0xf1, 0x2b, 0x58, 0x1c, 0x50, 0xc3,
0x6a, 0xea, 0xed, 0xa2, 0xb0, 0x2d, 0x54, 0x96, 0xeb, 0xe2, 0xd8, 0x96, 0x6f, 0x8d, 0x5a, 0xfd,
0xde, 0x33, 0x85, 0x1b, 0x14, 0x35, 0xe7, 0xb4, 0xf6, 0xdb, 0xe2, 0x53, 0x00, 0xee, 0xd4, 0xc1,
0xa7, 0x19, 0x7e, 0x7d, 0x6c, 0xcb, 0x77, 0x5c, 0xbc, 0x6f, 0x53, 0xd4, 0x65, 0xde, 0xd9, 0x6f,
0x8b, 0xdf, 0xc1, 0x22, 0xef, 0x14, 0x33, 0xdb, 0x42, 0x65, 0x65, 0x77, 0xb3, 0x1a, 0x91, 0x7a,
0x95, 0x47, 0x56, 0xcf, 0xbe, 0xb3, 0xe5, 0x94, 0x3a, 0x99, 0x22, 0x6e, 0x40, 0xce, 0xd4, 0x35,
0x82, 0x8d, 0x62, 0xd6, 0x59, 0x4f, 0xe5, 0xbd, 0x67, 0x4b, 0xbf, 0xbc, 0x91, 0x53, 0x1f, 0xdf,
0xc8, 0x29, 0x65, 0x13, 0xa4, 0xd9, 0xc4, 0x54, 0x6c, 0x0e, 0x28, 0x31, 0xb1, 0xf2, 0x57, 0x16,
0xee, 0x4c, 0x9b, 0x0f, 0x8d, 0xd1, 0xd5, 0xd2, 0x7e, 0x0e, 0x62, 0x1b, 0x9b, 0xba, 0x81, 0xdb,
0xcd, 0x99, 0xf4, 0xb7, 0xc6, 0xb6, 0x7c, 0xcf, 0x9d, 0x37, 0x8b, 0x51, 0xd4, 0x35, 0x3e, 0xd8,
0xf0, 0xd8, 0x20, 0x50, 0x46, 0xf4, 0x84, 0x58, 0xd8, 0x18, 0xb4, 0x0c, 0x6b, 0xd4, 0x44, 0x1d,
0x6a, 0x62, 0x12, 0x74, 0x9c, 0x61, 0x8e, 0xbf, 0x1c, 0xdb, 0xf2, 0x17, 0x9c, 0xd7, 0x0b, 0xf1,
0x8a, 0x5a, 0x0a, 0x02, 0x1a, 0xcc, 0xde, 0x88, 0x62, 0x3f, 0x7b, 0x75, 0xf6, 0x55, 0x28, 0x4c,
0xad, 0x3e, 0xc4, 0x86, 0xa9, 0x53, 0x52, 0x5c, 0x60, 0x31, 0xca, 0x63, 0x5b, 0x2e, 0x45, 0xc4,
0xc8, 0x51, 0x8a, 0x9a, 0x0f, 0x0e, 0xff, 0xe8, 0x8e, 0x3a, 0x2a, 0x1a, 0x18, 0x94, 0xbe, 0x6a,
0xea, 0x44, 0xb7, 0x8a, 0xb9, 0x6d, 0xa1, 0xb2, 0x1a, 0x54, 0x91, 0x6f, 0x53, 0xd4, 0x65, 0xd6,
0x61, 0x42, 0x3d, 0x82, 0x55, 0xd7, 0xd2, 0xc1, 0xba, 0xd6, 0xb1, 0x8a, 0x8b, 0x2c, 0x19, 0x29,
0x90, 0x8c, 0xbb, 0x21, 0x86, 0x3b, 0xd5, 0xef, 0x19, 0xa2, 0x5e, 0x72, 0x52, 0x19, 0xdb, 0x72,
0x3e, 0xe8, 0xd7, 0x9d, 0xad, 0xa8, 0x2b, 0xac, 0xeb, 0x22, 0x03, 0x1a, 0x5b, 0x8a, 0xd1, 0x58,
0x09, 0xee, 0xcd, 0x88, 0xc8, 0x93, 0xd8, 0x87, 0x4c, 0x58, 0x62, 0x7b, 0xa8, 0x3b, 0x8f, 0x9d,
0x75, 0x04, 0x77, 0x43, 0xda, 0x08, 0x89, 0x48, 0x19, 0xdb, 0x72, 0x39, 0x52, 0x44, 0xbe, 0xbf,
0xf5, 0x69, 0xf5, 0x4c, 0x7c, 0xc7, 0x55, 0x3e, 0x7b, 0x8d, 0xca, 0xef, 0x80, 0x5b, 0xd0, 0xa6,
0x65, 0x8c, 0x98, 0x84, 0x56, 0xeb, 0x85, 0xb1, 0x2d, 0xaf, 0x05, 0x0b, 0x64, 0x19, 0x23, 0x45,
0x5d, 0x62, 0x6d, 0x67, 0xa3, 0x86, 0xcb, 0x9e, 0xbb, 0x91, 0xb2, 0x2f, 0x26, 0x2d, 0xfb, 0x1e,
0xea, 0x7a, 0x65, 0xff, 0x33, 0x0d, 0xeb, 0xd3, 0xd6, 0x06, 0x25, 0xaf, 0x74, 0xa3, 0x3f, 0x8f,
0xd2, 0x7b, 0x54, 0xb6, 0x50, 0x97, 0x15, 0x3b, 0x82, 0xca, 0x16, 0xea, 0x4e, 0xa8, 0x74, 0x04,
0x19, 0xa6, 0x32, 0x7b, 0x23, 0x54, 0x2e, 0xc4, 0x50, 0x29, 0xc3, 0x56, 0x24, 0x59, 0x1e, 0x9d,
0xbf, 0x0b, 0x90, 0xf7, 0x11, 0x8d, 0x1e, 0x35, 0xf1, 0xbc, 0x6e, 0x28, 0x3f, 0xfa, 0x4c, 0x4c,
0xf4, 0x5b, 0x50, 0x8a, 0x88, 0xcd, 0x8b, 0xfd, 0x6d, 0x1a, 0x36, 0x42, 0xf6, 0x39, 0x6a, 0x61,
0xfa, 0x40, 0xcd, 0xfc, 0xc7, 0x03, 0x75, 0xbe, 0x72, 0xd8, 0x86, 0x72, 0x34, 0x61, 0x1e, 0xa7,
0xb6, 0x00, 0x9f, 0x1d, 0x98, 0x9a, 0x8a, 0xd1, 0xf0, 0x87, 0x16, 0xea, 0x62, 0x4b, 0xfc, 0x16,
0x72, 0x03, 0xd6, 0x62, 0x4c, 0xae, 0xec, 0x96, 0x22, 0x6f, 0x32, 0x17, 0xcc, 0x2f, 0x32, 0x3e,
0x41, 0x2c, 0xc0, 0x02, 0x8b, 0x8f, 0x71, 0xba, 0xaa, 0xba, 0x9d, 0x19, 0x0a, 0x32, 0x37, 0x42,
0x41, 0xdc, 0xbb, 0xe5, 0x2e, 0x3b, 0x3e, 0xfc, 0xfc, 0xbc, 0xcc, 0xff, 0x48, 0x03, 0x1c, 0x98,
0xda, 0xa1, 0xde, 0xc7, 0xf4, 0xe4, 0x13, 0x4b, 0xfb, 0x39, 0x88, 0x04, 0x9f, 0x5a, 0x4d, 0x13,
0xff, 0x7c, 0x82, 0x09, 0xc2, 0x4d, 0x03, 0xa3, 0x21, 0xa3, 0x20, 0x1b, 0x7c, 0x2b, 0xcd, 0x62,
0x14, 0x75, 0xcd, 0x19, 0x7c, 0xc9, 0xc7, 0x1c, 0x5a, 0x12, 0xc8, 0xa8, 0xc0, 0x1e, 0xb5, 0x9c,
0x29, 0x8f, 0xc0, 0x8f, 0x69, 0x76, 0x21, 0xf3, 0xe1, 0x17, 0x84, 0xe9, 0xeb, 0xff, 0xe7, 0xf1,
0x6b, 0x70, 0x53, 0x6f, 0x22, 0xc7, 0x3f, 0xdf, 0x78, 0x1b, 0x63, 0x5b, 0x16, 0x83, 0x34, 0x31,
0xa3, 0xa2, 0xba, 0x5b, 0xd4, 0x8d, 0xe4, 0x26, 0xb7, 0x5e, 0x74, 0x01, 0x16, 0xae, 0x5b, 0x80,
0xdc, 0x85, 0x37, 0xe4, 0x34, 0xd3, 0x5e, 0x1d, 0x7e, 0x4d, 0xb3, 0xf2, 0xec, 0xa1, 0x2e, 0xa1,
0xaf, 0x7b, 0xb8, 0xad, 0xe1, 0x3e, 0x26, 0xd7, 0x12, 0x74, 0x05, 0x6e, 0xb7, 0xa6, 0xbd, 0xf1,
0x92, 0x84, 0x87, 0xfd, 0x92, 0x65, 0x2e, 0x92, 0xfe, 0x7c, 0x0f, 0x3d, 0xf7, 0x4b, 0x25, 0x44,
0xc7, 0x84, 0xad, 0xdd, 0xb7, 0x4b, 0x90, 0x39, 0x30, 0x35, 0xb1, 0x0b, 0xb7, 0xc3, 0x5f, 0x69,
0x0f, 0x22, 0x19, 0x9a, 0xfd, 0xea, 0x91, 0x6a, 0x09, 0x81, 0x93, 0x45, 0xc5, 0x0e, 0xdc, 0x0a,
0x7d, 0x1a, 0xdd, 0x4f, 0xe0, 0xe2, 0xd0, 0x18, 0x49, 0xd5, 0x64, 0xb8, 0x98, 0x95, 0x9c, 0x07,
0x49, 0x92, 0x95, 0xf6, 0x50, 0x37, 0xd1, 0x4a, 0x81, 0x87, 0x99, 0x68, 0x81, 0x18, 0xf1, 0x28,
0x7b, 0x98, 0xc0, 0x0b, 0xc7, 0x4a, 0xbb, 0xc9, 0xb1, 0xde, 0xaa, 0x04, 0xd6, 0x66, 0xde, 0x2e,
0x95, 0x4b, 0xfc, 0x78, 0x48, 0xe9, 0x71, 0x52, 0xa4, 0xb7, 0xde, 0x6b, 0xc8, 0x47, 0xbe, 0x37,
0x92, 0x38, 0x9a, 0xe4, 0xf9, 0xe4, 0x0a, 0x60, 0x6f, 0xe1, 0x9f, 0x00, 0x02, 0x97, 0xb2, 0x12,
0xe7, 0xc2, 0xc7, 0x48, 0x0f, 0x2f, 0xc7, 0x78, 0xde, 0x5f, 0xc2, 0xe2, 0xe4, 0xe2, 0x93, 0xe3,
0xa6, 0x71, 0x80, 0xf4, 0xe0, 0x12, 0x40, 0x50, 0x7b, 0xa1, 0xcb, 0xe0, 0xfe, 0x25, 0x53, 0x39,
0x2e, 0x5e, 0x7b, 0xd1, 0x47, 0x9e, 0xb3, 0x79, 0xc3, 0xc7, 0x5d, 0x6c, 0x94, 0x21, 0x60, 0xfc,
0xe6, 0x8d, 0x39, 0x31, 0xea, 0xea, 0xbb, 0xb3, 0xb2, 0xf0, 0xfe, 0xac, 0x2c, 0xfc, 0x73, 0x56,
0x16, 0x7e, 0x3b, 0x2f, 0xa7, 0xde, 0x9f, 0x97, 0x53, 0x7f, 0x9f, 0x97, 0x53, 0x47, 0xdf, 0x68,
0xba, 0xd5, 0x39, 0x39, 0xae, 0x22, 0xda, 0xaf, 0x21, 0x6a, 0xf6, 0xa9, 0xc9, 0x7f, 0x1e, 0x99,
0xed, 0x6e, 0xed, 0xb4, 0xe6, 0xfd, 0x5f, 0xf4, 0xf8, 0xe9, 0xa3, 0xc9, 0x5f, 0x46, 0xd6, 0x68,
0x80, 0xcd, 0xe3, 0x1c, 0xfb, 0xbb, 0xe8, 0xc9, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0xd3, 0x86,
0x17, 0x79, 0xbd, 0x12, 0x00, 0x00,
// 1158 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x58, 0xcd, 0x6e, 0xdb, 0x46,
0x10, 0xd6, 0x9f, 0x65, 0x7b, 0xec, 0xc6, 0x0e, 0xfd, 0xa7, 0x50, 0xb6, 0xe8, 0x12, 0x68, 0xe2,
0xa6, 0x88, 0x14, 0x3b, 0x01, 0xda, 0x06, 0xbd, 0x58, 0x02, 0x8a, 0x1a, 0x81, 0x91, 0x82, 0x71,
0x7b, 0x30, 0x0a, 0x08, 0xf2, 0x6a, 0x43, 0x11, 0xb2, 0x76, 0x55, 0x92, 0x56, 0xac, 0x37, 0xe8,
0x31, 0xe7, 0x9e, 0x72, 0xef, 0x21, 0x7d, 0x87, 0x5e, 0x72, 0xcc, 0x2d, 0x45, 0x0f, 0x44, 0x61,
0x5f, 0x7a, 0xe6, 0x13, 0x14, 0x5c, 0x2e, 0x7f, 0x44, 0x91, 0x31, 0x5d, 0x57, 0x6a, 0x4f, 0x22,
0x67, 0xbe, 0x9d, 0x9d, 0xfd, 0xe6, 0xdb, 0xd9, 0xa5, 0x60, 0x53, 0x3b, 0x41, 0x35, 0x44, 0x75,
0x5c, 0x43, 0x9d, 0x16, 0x21, 0xf8, 0xb4, 0x36, 0xd8, 0xad, 0x99, 0xe7, 0xd5, 0xbe, 0x4e, 0x4d,
0x2a, 0xac, 0x68, 0x27, 0xa8, 0xea, 0x78, 0xab, 0xdc, 0x5b, 0x1d, 0xec, 0x8a, 0xab, 0x2a, 0x55,
0x29, 0xf3, 0xd7, 0x9c, 0x27, 0x17, 0x2a, 0x4a, 0x41, 0xa0, 0x53, 0x0d, 0x13, 0xd3, 0x89, 0xe3,
0x3e, 0x71, 0xc0, 0xc7, 0x71, 0x33, 0x79, 0x61, 0x19, 0x44, 0x7e, 0x9f, 0x05, 0xe1, 0xd0, 0x50,
0x1b, 0xae, 0xf1, 0x59, 0x1f, 0x93, 0x03, 0xa2, 0x99, 0xc2, 0x67, 0x30, 0xdb, 0xa7, 0xba, 0xd9,
0xd4, 0xda, 0xa5, 0xec, 0x76, 0x76, 0x67, 0xbe, 0x2e, 0xd8, 0x96, 0x74, 0x6b, 0xd8, 0xea, 0x9d,
0x3e, 0x91, 0xb9, 0x43, 0x56, 0x8a, 0xce, 0xd3, 0x41, 0x5b, 0x78, 0x0c, 0xc0, 0x83, 0x3a, 0xf8,
0x1c, 0xc3, 0xaf, 0xd9, 0x96, 0x74, 0xdb, 0xc5, 0x07, 0x3e, 0x59, 0x99, 0xe7, 0x2f, 0x07, 0x6d,
0xe1, 0x2b, 0x98, 0xe5, 0x2f, 0xa5, 0xfc, 0x76, 0x76, 0x67, 0x61, 0x6f, 0xb3, 0x1a, 0xb3, 0xf4,
0x2a, 0xcf, 0xac, 0x5e, 0x78, 0x6b, 0x49, 0x19, 0xc5, 0x1b, 0x22, 0xac, 0x43, 0xd1, 0xd0, 0x54,
0x82, 0xf5, 0x52, 0xc1, 0x99, 0x4f, 0xe1, 0x6f, 0x4f, 0xe6, 0x7e, 0x7a, 0x2d, 0x65, 0xfe, 0x7a,
0x2d, 0x65, 0xe4, 0x4d, 0x10, 0xc7, 0x17, 0xa6, 0x60, 0xa3, 0x4f, 0x89, 0x81, 0xe5, 0xdf, 0x0a,
0x70, 0x7b, 0xd4, 0x7d, 0xa4, 0x0f, 0xaf, 0xb7, 0xec, 0xa7, 0x20, 0xb4, 0xb1, 0xa1, 0xe9, 0xb8,
0xdd, 0x1c, 0x5b, 0xfe, 0x96, 0x6d, 0x49, 0x77, 0xdc, 0x71, 0xe3, 0x18, 0x59, 0x59, 0xe6, 0xc6,
0x86, 0xcf, 0x06, 0x81, 0x0a, 0xa2, 0x67, 0xc4, 0xc4, 0x7a, 0xbf, 0xa5, 0x9b, 0xc3, 0x26, 0xea,
0x50, 0x03, 0x93, 0x70, 0xe0, 0x3c, 0x0b, 0xfc, 0xa9, 0x6d, 0x49, 0x9f, 0x70, 0x5e, 0x3f, 0x88,
0x97, 0x95, 0x72, 0x18, 0xd0, 0x60, 0xfe, 0x46, 0x1c, 0xfb, 0x85, 0xeb, 0xb3, 0xaf, 0xc0, 0xea,
0xc8, 0xec, 0x03, 0xac, 0x1b, 0x1a, 0x25, 0xa5, 0x19, 0x96, 0xa3, 0x64, 0x5b, 0x52, 0x39, 0x26,
0x47, 0x8e, 0x92, 0x95, 0x95, 0xb0, 0xf9, 0x7b, 0xd7, 0xea, 0xa8, 0xa8, 0xaf, 0x53, 0xfa, 0xa2,
0xa9, 0x11, 0xcd, 0x2c, 0x15, 0xb7, 0xb3, 0x3b, 0x8b, 0x61, 0x15, 0x05, 0x3e, 0x59, 0x99, 0x67,
0x2f, 0x4c, 0xa8, 0xc7, 0xb0, 0xe8, 0x7a, 0x3a, 0x58, 0x53, 0x3b, 0x66, 0x69, 0x96, 0x2d, 0x46,
0x0c, 0x2d, 0xc6, 0xdd, 0x10, 0x83, 0xdd, 0xea, 0x37, 0x0c, 0x51, 0x2f, 0x3b, 0x4b, 0xb1, 0x2d,
0x69, 0x25, 0x1c, 0xd7, 0x1d, 0x2d, 0x2b, 0x0b, 0xec, 0xd5, 0x45, 0x86, 0x34, 0x36, 0x97, 0xa0,
0xb1, 0x32, 0xdc, 0x19, 0x13, 0x91, 0x2f, 0xb1, 0xf7, 0xf9, 0xa8, 0xc4, 0xf6, 0x51, 0x77, 0x1a,
0x3b, 0xeb, 0x18, 0x36, 0x22, 0xda, 0x88, 0x88, 0x48, 0xb6, 0x2d, 0xa9, 0x12, 0x2b, 0xa2, 0x20,
0xde, 0xda, 0xa8, 0x7a, 0xbc, 0xd8, 0x49, 0x95, 0x2f, 0xdc, 0xa0, 0xf2, 0xbb, 0xe0, 0x16, 0xb4,
0x69, 0xea, 0x43, 0x26, 0xa1, 0xc5, 0xfa, 0xaa, 0x6d, 0x49, 0xcb, 0xe1, 0x02, 0x99, 0xfa, 0x50,
0x56, 0xe6, 0xd8, 0xb3, 0xb3, 0x51, 0xa3, 0x65, 0x2f, 0x4e, 0xa4, 0xec, 0xb3, 0x69, 0xcb, 0xbe,
0x8f, 0xba, 0x7e, 0xd9, 0x7f, 0xc9, 0xc1, 0xda, 0xa8, 0xb7, 0x41, 0xc9, 0x0b, 0x4d, 0xef, 0x4d,
0xa3, 0xf4, 0x3e, 0x95, 0x2d, 0xd4, 0x65, 0xc5, 0x8e, 0xa1, 0xb2, 0x85, 0xba, 0x1e, 0x95, 0x8e,
0x20, 0xa3, 0x54, 0x16, 0x26, 0x42, 0xe5, 0x4c, 0x02, 0x95, 0x12, 0x6c, 0xc5, 0x92, 0xe5, 0xd3,
0xf9, 0x73, 0x16, 0x56, 0x02, 0x44, 0xe3, 0x94, 0x1a, 0x78, 0x5a, 0x27, 0x54, 0x90, 0x7d, 0x3e,
0x21, 0xfb, 0x2d, 0x28, 0xc7, 0xe4, 0xe6, 0xe7, 0xfe, 0x26, 0x07, 0xeb, 0x11, 0xff, 0x14, 0xb5,
0x30, 0xda, 0x50, 0xf3, 0xff, 0xb0, 0xa1, 0x4e, 0x57, 0x0e, 0xdb, 0x50, 0x89, 0x27, 0xcc, 0xe7,
0xf4, 0x55, 0x0e, 0x3e, 0x3a, 0x34, 0x54, 0x05, 0xa3, 0xc1, 0xb7, 0x2d, 0xd4, 0xc5, 0xa6, 0xf0,
0x25, 0x14, 0xfb, 0xec, 0x89, 0x31, 0xb9, 0xb0, 0x57, 0x8e, 0x3d, 0xc9, 0x5c, 0x30, 0x3f, 0xc8,
0xf8, 0x00, 0xe1, 0x6b, 0x58, 0x76, 0xd3, 0x45, 0xb4, 0xd7, 0xd3, 0xcc, 0x1e, 0x26, 0x26, 0xa3,
0x77, 0xb1, 0x5e, 0xb6, 0x2d, 0x69, 0x23, 0xbc, 0xa0, 0x00, 0x21, 0x2b, 0x4b, 0xcc, 0xd4, 0xf0,
0x2d, 0x63, 0xa4, 0xe5, 0x27, 0x42, 0x5a, 0xd2, 0x4d, 0x67, 0x83, 0x35, 0x9c, 0x80, 0x11, 0x9f,
0xab, 0x3f, 0x72, 0x00, 0x87, 0x86, 0x7a, 0xa4, 0xf5, 0x30, 0x3d, 0xfb, 0x77, 0x88, 0x3a, 0x23,
0x3a, 0x46, 0x58, 0x1b, 0xe0, 0x76, 0x12, 0x51, 0x01, 0xc2, 0x23, 0xea, 0x3b, 0xdf, 0x32, 0x51,
0xa2, 0x9e, 0x82, 0x40, 0xf0, 0xb9, 0xd9, 0x34, 0xf0, 0x8f, 0x67, 0x98, 0x20, 0xdc, 0xd4, 0x31,
0x1a, 0x30, 0xd2, 0x0a, 0xe1, 0xfb, 0xd8, 0x38, 0x46, 0x56, 0x96, 0x1d, 0xe3, 0x73, 0x6e, 0x73,
0x88, 0x4c, 0x21, 0xd5, 0x55, 0x76, 0x71, 0xe6, 0xdc, 0x06, 0xed, 0xca, 0x3d, 0xf4, 0xb9, 0xf9,
0x19, 0x61, 0x1a, 0xfe, 0x3f, 0x30, 0xff, 0x39, 0x2c, 0x70, 0x21, 0x3b, 0x19, 0xf1, 0x76, 0xb0,
0x6e, 0x5b, 0x92, 0x30, 0xa2, 0x72, 0xc7, 0x29, 0x2b, 0x6e, 0xe3, 0x70, 0x73, 0x9f, 0x64, 0x43,
0x88, 0x2f, 0xd9, 0xcc, 0x4d, 0x4b, 0x56, 0xfc, 0xe0, 0xb9, 0x3d, 0x5a, 0x1b, 0xbf, 0x72, 0xbf,
0xe6, 0x58, 0x41, 0xf7, 0x51, 0x97, 0xd0, 0x97, 0xa7, 0xb8, 0xad, 0x62, 0xb6, 0xb5, 0x6f, 0x50,
0xba, 0x1d, 0x58, 0x6a, 0x8d, 0x46, 0x73, 0x2b, 0xa7, 0x44, 0xcd, 0x41, 0x71, 0x9c, 0x81, 0xed,
0xa4, 0xe2, 0x30, 0xa7, 0x57, 0x9c, 0x7d, 0xe7, 0xe5, 0x3f, 0xee, 0xd6, 0xee, 0x27, 0x56, 0x84,
0x31, 0x8f, 0xd0, 0xbd, 0x37, 0x73, 0x90, 0x3f, 0x34, 0x54, 0xa1, 0x0b, 0x4b, 0xd1, 0xcf, 0xcb,
0x7b, 0xb1, 0x24, 0x8e, 0x7f, 0xae, 0x89, 0xb5, 0x94, 0x40, 0x6f, 0x52, 0xa1, 0x03, 0xb7, 0x22,
0xdf, 0x74, 0x77, 0x53, 0x84, 0x38, 0xd2, 0x87, 0x62, 0x35, 0x1d, 0x2e, 0x61, 0x26, 0xe7, 0x26,
0x95, 0x66, 0xa6, 0x7d, 0xd4, 0x4d, 0x35, 0x53, 0xe8, 0x46, 0x29, 0x98, 0x20, 0xc4, 0xdc, 0x26,
0xef, 0xa7, 0x88, 0xc2, 0xb1, 0xe2, 0x5e, 0x7a, 0xac, 0x3f, 0x2b, 0x81, 0xe5, 0xb1, 0x4b, 0xd7,
0xce, 0x15, 0x71, 0x7c, 0xa4, 0xf8, 0x30, 0x2d, 0xd2, 0x9f, 0xef, 0x25, 0xac, 0xc4, 0x5e, 0x94,
0xd2, 0x04, 0xf2, 0xd6, 0xf9, 0xe8, 0x1a, 0x60, 0x7f, 0xe2, 0x1f, 0x00, 0x42, 0xb7, 0x09, 0x39,
0x29, 0x44, 0x80, 0x11, 0xef, 0x5f, 0x8d, 0xf1, 0xa3, 0x3f, 0x87, 0x59, 0xef, 0xfc, 0x95, 0x92,
0x86, 0x71, 0x80, 0x78, 0xef, 0x0a, 0x40, 0x58, 0x7b, 0x91, 0x13, 0xe6, 0xee, 0x15, 0x43, 0x39,
0x2e, 0x59, 0x7b, 0xf1, 0x5d, 0xd1, 0xd9, 0xbc, 0xd1, 0x8e, 0x98, 0x98, 0x65, 0x04, 0x98, 0xbc,
0x79, 0x13, 0x3a, 0x46, 0x5d, 0x79, 0x7b, 0x51, 0xc9, 0xbe, 0xbb, 0xa8, 0x64, 0xff, 0xbc, 0xa8,
0x64, 0x5f, 0x5d, 0x56, 0x32, 0xef, 0x2e, 0x2b, 0x99, 0xdf, 0x2f, 0x2b, 0x99, 0xe3, 0x2f, 0x54,
0xcd, 0xec, 0x9c, 0x9d, 0x54, 0x11, 0xed, 0xd5, 0x10, 0x35, 0x7a, 0xd4, 0xe0, 0x3f, 0x0f, 0x8c,
0x76, 0xb7, 0x76, 0x5e, 0xf3, 0xff, 0xe8, 0x7a, 0xf8, 0xf8, 0x81, 0xf7, 0x5f, 0x97, 0x39, 0xec,
0x63, 0xe3, 0xa4, 0xc8, 0xfe, 0xe7, 0x7a, 0xf4, 0x77, 0x00, 0x00, 0x00, 0xff, 0xff, 0x6e, 0x07,
0x48, 0xeb, 0x76, 0x13, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
@ -1905,10 +1908,10 @@ func (m *MsgRecvPacket) MarshalToSizedBuffer(dAtA []byte) (int, error) {
}
i--
dAtA[i] = 0x1a
if len(m.Proof) > 0 {
i -= len(m.Proof)
copy(dAtA[i:], m.Proof)
i = encodeVarintTx(dAtA, i, uint64(len(m.Proof)))
if len(m.ProofCommitment) > 0 {
i -= len(m.ProofCommitment)
copy(dAtA[i:], m.ProofCommitment)
i = encodeVarintTx(dAtA, i, uint64(len(m.ProofCommitment)))
i--
dAtA[i] = 0x12
}
@ -1990,10 +1993,10 @@ func (m *MsgTimeout) MarshalToSizedBuffer(dAtA []byte) (int, error) {
}
i--
dAtA[i] = 0x1a
if len(m.Proof) > 0 {
i -= len(m.Proof)
copy(dAtA[i:], m.Proof)
i = encodeVarintTx(dAtA, i, uint64(len(m.Proof)))
if len(m.ProofUnreceived) > 0 {
i -= len(m.ProofUnreceived)
copy(dAtA[i:], m.ProofUnreceived)
i = encodeVarintTx(dAtA, i, uint64(len(m.ProofUnreceived)))
i--
dAtA[i] = 0x12
}
@ -2082,10 +2085,10 @@ func (m *MsgTimeoutOnClose) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i--
dAtA[i] = 0x1a
}
if len(m.Proof) > 0 {
i -= len(m.Proof)
copy(dAtA[i:], m.Proof)
i = encodeVarintTx(dAtA, i, uint64(len(m.Proof)))
if len(m.ProofUnreceived) > 0 {
i -= len(m.ProofUnreceived)
copy(dAtA[i:], m.ProofUnreceived)
i = encodeVarintTx(dAtA, i, uint64(len(m.ProofUnreceived)))
i--
dAtA[i] = 0x12
}
@ -2162,10 +2165,10 @@ func (m *MsgAcknowledgement) MarshalToSizedBuffer(dAtA []byte) (int, error) {
}
i--
dAtA[i] = 0x22
if len(m.Proof) > 0 {
i -= len(m.Proof)
copy(dAtA[i:], m.Proof)
i = encodeVarintTx(dAtA, i, uint64(len(m.Proof)))
if len(m.ProofAcked) > 0 {
i -= len(m.ProofAcked)
copy(dAtA[i:], m.ProofAcked)
i = encodeVarintTx(dAtA, i, uint64(len(m.ProofAcked)))
i--
dAtA[i] = 0x1a
}
@ -2455,7 +2458,7 @@ func (m *MsgRecvPacket) Size() (n int) {
_ = l
l = m.Packet.Size()
n += 1 + l + sovTx(uint64(l))
l = len(m.Proof)
l = len(m.ProofCommitment)
if l > 0 {
n += 1 + l + sovTx(uint64(l))
}
@ -2485,7 +2488,7 @@ func (m *MsgTimeout) Size() (n int) {
_ = l
l = m.Packet.Size()
n += 1 + l + sovTx(uint64(l))
l = len(m.Proof)
l = len(m.ProofUnreceived)
if l > 0 {
n += 1 + l + sovTx(uint64(l))
}
@ -2518,7 +2521,7 @@ func (m *MsgTimeoutOnClose) Size() (n int) {
_ = l
l = m.Packet.Size()
n += 1 + l + sovTx(uint64(l))
l = len(m.Proof)
l = len(m.ProofUnreceived)
if l > 0 {
n += 1 + l + sovTx(uint64(l))
}
@ -2559,7 +2562,7 @@ func (m *MsgAcknowledgement) Size() (n int) {
if l > 0 {
n += 1 + l + sovTx(uint64(l))
}
l = len(m.Proof)
l = len(m.ProofAcked)
if l > 0 {
n += 1 + l + sovTx(uint64(l))
}
@ -4325,7 +4328,7 @@ func (m *MsgRecvPacket) Unmarshal(dAtA []byte) error {
iNdEx = postIndex
case 2:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Proof", wireType)
return fmt.Errorf("proto: wrong wireType = %d for field ProofCommitment", wireType)
}
var byteLen int
for shift := uint(0); ; shift += 7 {
@ -4352,9 +4355,9 @@ func (m *MsgRecvPacket) Unmarshal(dAtA []byte) error {
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Proof = append(m.Proof[:0], dAtA[iNdEx:postIndex]...)
if m.Proof == nil {
m.Proof = []byte{}
m.ProofCommitment = append(m.ProofCommitment[:0], dAtA[iNdEx:postIndex]...)
if m.ProofCommitment == nil {
m.ProofCommitment = []byte{}
}
iNdEx = postIndex
case 3:
@ -4563,7 +4566,7 @@ func (m *MsgTimeout) Unmarshal(dAtA []byte) error {
iNdEx = postIndex
case 2:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Proof", wireType)
return fmt.Errorf("proto: wrong wireType = %d for field ProofUnreceived", wireType)
}
var byteLen int
for shift := uint(0); ; shift += 7 {
@ -4590,9 +4593,9 @@ func (m *MsgTimeout) Unmarshal(dAtA []byte) error {
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Proof = append(m.Proof[:0], dAtA[iNdEx:postIndex]...)
if m.Proof == nil {
m.Proof = []byte{}
m.ProofUnreceived = append(m.ProofUnreceived[:0], dAtA[iNdEx:postIndex]...)
if m.ProofUnreceived == nil {
m.ProofUnreceived = []byte{}
}
iNdEx = postIndex
case 3:
@ -4820,7 +4823,7 @@ func (m *MsgTimeoutOnClose) Unmarshal(dAtA []byte) error {
iNdEx = postIndex
case 2:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Proof", wireType)
return fmt.Errorf("proto: wrong wireType = %d for field ProofUnreceived", wireType)
}
var byteLen int
for shift := uint(0); ; shift += 7 {
@ -4847,9 +4850,9 @@ func (m *MsgTimeoutOnClose) Unmarshal(dAtA []byte) error {
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Proof = append(m.Proof[:0], dAtA[iNdEx:postIndex]...)
if m.Proof == nil {
m.Proof = []byte{}
m.ProofUnreceived = append(m.ProofUnreceived[:0], dAtA[iNdEx:postIndex]...)
if m.ProofUnreceived == nil {
m.ProofUnreceived = []byte{}
}
iNdEx = postIndex
case 3:
@ -5145,7 +5148,7 @@ func (m *MsgAcknowledgement) Unmarshal(dAtA []byte) error {
iNdEx = postIndex
case 3:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Proof", wireType)
return fmt.Errorf("proto: wrong wireType = %d for field ProofAcked", wireType)
}
var byteLen int
for shift := uint(0); ; shift += 7 {
@ -5172,9 +5175,9 @@ func (m *MsgAcknowledgement) Unmarshal(dAtA []byte) error {
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Proof = append(m.Proof[:0], dAtA[iNdEx:postIndex]...)
if m.Proof == nil {
m.Proof = []byte{}
m.ProofAcked = append(m.ProofAcked[:0], dAtA[iNdEx:postIndex]...)
if m.ProofAcked == nil {
m.ProofAcked = []byte{}
}
iNdEx = postIndex
case 4:

View File

@ -431,7 +431,7 @@ func (k Keeper) RecvPacket(goCtx context.Context, msg *channeltypes.MsgRecvPacke
}
// Perform TAO verification
if err := k.ChannelKeeper.RecvPacket(ctx, cap, msg.Packet, msg.Proof, msg.ProofHeight); err != nil {
if err := k.ChannelKeeper.RecvPacket(ctx, cap, msg.Packet, msg.ProofCommitment, msg.ProofHeight); err != nil {
return nil, sdkerrors.Wrap(err, "receive packet verification failed")
}
@ -482,7 +482,7 @@ func (k Keeper) Timeout(goCtx context.Context, msg *channeltypes.MsgTimeout) (*c
}
// Perform TAO verification
if err := k.ChannelKeeper.TimeoutPacket(ctx, msg.Packet, msg.Proof, msg.ProofHeight, msg.NextSequenceRecv); err != nil {
if err := k.ChannelKeeper.TimeoutPacket(ctx, msg.Packet, msg.ProofUnreceived, msg.ProofHeight, msg.NextSequenceRecv); err != nil {
return nil, sdkerrors.Wrap(err, "timeout packet verification failed")
}
@ -531,7 +531,7 @@ func (k Keeper) TimeoutOnClose(goCtx context.Context, msg *channeltypes.MsgTimeo
}
// Perform TAO verification
if err := k.ChannelKeeper.TimeoutOnClose(ctx, cap, msg.Packet, msg.Proof, msg.ProofClose, msg.ProofHeight, msg.NextSequenceRecv); err != nil {
if err := k.ChannelKeeper.TimeoutOnClose(ctx, cap, msg.Packet, msg.ProofUnreceived, msg.ProofClose, msg.ProofHeight, msg.NextSequenceRecv); err != nil {
return nil, sdkerrors.Wrap(err, "timeout on close packet verification failed")
}
@ -582,7 +582,7 @@ func (k Keeper) Acknowledgement(goCtx context.Context, msg *channeltypes.MsgAckn
}
// Perform TAO verification
if err := k.ChannelKeeper.AcknowledgePacket(ctx, cap, msg.Packet, msg.Acknowledgement, msg.Proof, msg.ProofHeight); err != nil {
if err := k.ChannelKeeper.AcknowledgePacket(ctx, cap, msg.Packet, msg.Acknowledgement, msg.ProofAcked, msg.ProofHeight); err != nil {
return nil, sdkerrors.Wrap(err, "acknowledge packet verification failed")
}