diff --git a/bindings/go/dispatcher/Dispatcher.go b/bindings/go/dispatcher/Dispatcher.go index f0fc56dc..7610a142 100644 --- a/bindings/go/dispatcher/Dispatcher.go +++ b/bindings/go/dispatcher/Dispatcher.go @@ -97,7 +97,7 @@ type OpIcs23ProofPath struct { // DispatcherMetaData contains all meta data concerning the Dispatcher contract. var DispatcherMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"acknowledgement\",\"inputs\":[{\"name\":\"packet\",\"type\":\"tuple\",\"internalType\":\"structIbcPacket\",\"components\":[{\"name\":\"src\",\"type\":\"tuple\",\"internalType\":\"structIbcEndpoint\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"dest\",\"type\":\"tuple\",\"internalType\":\"structIbcEndpoint\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"sequence\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"timeoutHeight\",\"type\":\"tuple\",\"internalType\":\"structHeight\",\"components\":[{\"name\":\"revision_number\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"revision_height\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"timeoutTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"ack\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structIcs23Proof\",\"components\":[{\"name\":\"proof\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23Proof[]\",\"components\":[{\"name\":\"path\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23ProofPath[]\",\"components\":[{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"suffix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"channelCloseConfirm\",\"inputs\":[{\"name\":\"portAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structIcs23Proof\",\"components\":[{\"name\":\"proof\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23Proof[]\",\"components\":[{\"name\":\"path\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23ProofPath[]\",\"components\":[{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"suffix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"channelCloseInit\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"channelOpenAck\",\"inputs\":[{\"name\":\"local\",\"type\":\"tuple\",\"internalType\":\"structChannelEnd\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"version\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"name\":\"connectionHops\",\"type\":\"string[]\",\"internalType\":\"string[]\"},{\"name\":\"ordering\",\"type\":\"uint8\",\"internalType\":\"enumChannelOrder\"},{\"name\":\"feeEnabled\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"counterparty\",\"type\":\"tuple\",\"internalType\":\"structChannelEnd\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"version\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structIcs23Proof\",\"components\":[{\"name\":\"proof\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23Proof[]\",\"components\":[{\"name\":\"path\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23ProofPath[]\",\"components\":[{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"suffix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"channelOpenConfirm\",\"inputs\":[{\"name\":\"local\",\"type\":\"tuple\",\"internalType\":\"structChannelEnd\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"version\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"name\":\"connectionHops\",\"type\":\"string[]\",\"internalType\":\"string[]\"},{\"name\":\"ordering\",\"type\":\"uint8\",\"internalType\":\"enumChannelOrder\"},{\"name\":\"feeEnabled\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"counterparty\",\"type\":\"tuple\",\"internalType\":\"structChannelEnd\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"version\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structIcs23Proof\",\"components\":[{\"name\":\"proof\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23Proof[]\",\"components\":[{\"name\":\"path\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23ProofPath[]\",\"components\":[{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"suffix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"channelOpenInit\",\"inputs\":[{\"name\":\"version\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"ordering\",\"type\":\"uint8\",\"internalType\":\"enumChannelOrder\"},{\"name\":\"feeEnabled\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"connectionHops\",\"type\":\"string[]\",\"internalType\":\"string[]\"},{\"name\":\"counterpartyPortId\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"channelOpenTry\",\"inputs\":[{\"name\":\"local\",\"type\":\"tuple\",\"internalType\":\"structChannelEnd\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"version\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"name\":\"ordering\",\"type\":\"uint8\",\"internalType\":\"enumChannelOrder\"},{\"name\":\"feeEnabled\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"connectionHops\",\"type\":\"string[]\",\"internalType\":\"string[]\"},{\"name\":\"counterparty\",\"type\":\"tuple\",\"internalType\":\"structChannelEnd\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"version\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structIcs23Proof\",\"components\":[{\"name\":\"proof\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23Proof[]\",\"components\":[{\"name\":\"path\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23ProofPath[]\",\"components\":[{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"suffix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"feeVault\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIFeeVault\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getChannel\",\"inputs\":[{\"name\":\"portAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"channel\",\"type\":\"tuple\",\"internalType\":\"structChannel\",\"components\":[{\"name\":\"version\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"ordering\",\"type\":\"uint8\",\"internalType\":\"enumChannelOrder\"},{\"name\":\"feeEnabled\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"connectionHops\",\"type\":\"string[]\",\"internalType\":\"string[]\"},{\"name\":\"counterpartyPortId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"counterpartyChannelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOptimisticConsensusState\",\"inputs\":[{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"connection\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"appHash\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initPortPrefix\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"_feeVault\",\"type\":\"address\",\"internalType\":\"contractIFeeVault\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"portPrefix\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"portPrefixLen\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"recvPacket\",\"inputs\":[{\"name\":\"packet\",\"type\":\"tuple\",\"internalType\":\"structIbcPacket\",\"components\":[{\"name\":\"src\",\"type\":\"tuple\",\"internalType\":\"structIbcEndpoint\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"dest\",\"type\":\"tuple\",\"internalType\":\"structIbcEndpoint\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"sequence\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"timeoutHeight\",\"type\":\"tuple\",\"internalType\":\"structHeight\",\"components\":[{\"name\":\"revision_number\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"revision_height\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"timeoutTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structIcs23Proof\",\"components\":[{\"name\":\"proof\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23Proof[]\",\"components\":[{\"name\":\"path\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23ProofPath[]\",\"components\":[{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"suffix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeConnection\",\"inputs\":[{\"name\":\"connection\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"sendPacket\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"packet\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"timeoutTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"sequence\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setClientForConnection\",\"inputs\":[{\"name\":\"connection\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"lightClient\",\"type\":\"address\",\"internalType\":\"contractILightClient\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPortPrefix\",\"inputs\":[{\"name\":\"_portPrefix\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"timeout\",\"inputs\":[{\"name\":\"packet\",\"type\":\"tuple\",\"internalType\":\"structIbcPacket\",\"components\":[{\"name\":\"src\",\"type\":\"tuple\",\"internalType\":\"structIbcEndpoint\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"dest\",\"type\":\"tuple\",\"internalType\":\"structIbcEndpoint\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"sequence\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"timeoutHeight\",\"type\":\"tuple\",\"internalType\":\"structHeight\",\"components\":[{\"name\":\"revision_number\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"revision_height\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"timeoutTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structIcs23Proof\",\"components\":[{\"name\":\"proof\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23Proof[]\",\"components\":[{\"name\":\"path\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23ProofPath[]\",\"components\":[{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"suffix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateClientWithOptimisticConsensusState\",\"inputs\":[{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"appHash\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"connection\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"writeTimeoutPacket\",\"inputs\":[{\"name\":\"packet\",\"type\":\"tuple\",\"internalType\":\"structIbcPacket\",\"components\":[{\"name\":\"src\",\"type\":\"tuple\",\"internalType\":\"structIbcEndpoint\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"dest\",\"type\":\"tuple\",\"internalType\":\"structIbcEndpoint\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"sequence\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"timeoutHeight\",\"type\":\"tuple\",\"internalType\":\"structHeight\",\"components\":[{\"name\":\"revision_number\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"revision_height\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"timeoutTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structIcs23Proof\",\"components\":[{\"name\":\"proof\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23Proof[]\",\"components\":[{\"name\":\"path\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23ProofPath[]\",\"components\":[{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"suffix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Acknowledgement\",\"inputs\":[{\"name\":\"sourcePortAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sourceChannelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"sequence\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"AcknowledgementError\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"error\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelCloseConfirm\",\"inputs\":[{\"name\":\"portAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelCloseConfirmError\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"error\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelCloseInit\",\"inputs\":[{\"name\":\"portAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelCloseInitError\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"error\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelOpenAck\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelOpenAckError\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"error\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelOpenConfirm\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelOpenConfirmError\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"error\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelOpenInit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"version\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"ordering\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"enumChannelOrder\"},{\"name\":\"feeEnabled\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"},{\"name\":\"connectionHops\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"counterpartyPortId\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelOpenInitError\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"error\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelOpenTry\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"version\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"ordering\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"enumChannelOrder\"},{\"name\":\"feeEnabled\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"},{\"name\":\"connectionHops\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"counterpartyPortId\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"counterpartyChannelId\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelOpenTryError\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"error\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RecvPacket\",\"inputs\":[{\"name\":\"destPortAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"destChannelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"sequence\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SendPacket\",\"inputs\":[{\"name\":\"sourcePortAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sourceChannelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"packet\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"sequence\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"timeoutTimestamp\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Timeout\",\"inputs\":[{\"name\":\"sourcePortAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sourceChannelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"sequence\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TimeoutError\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"error\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WriteAckPacket\",\"inputs\":[{\"name\":\"writerPortAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"writerChannelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"sequence\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"ackPacket\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structAckPacket\",\"components\":[{\"name\":\"success\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WriteTimeoutPacket\",\"inputs\":[{\"name\":\"writerPortAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"writerChannelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"sequence\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"timeoutHeight\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structHeight\",\"components\":[{\"name\":\"revision_number\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"revision_height\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"timeoutTimestamp\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ackPacketCommitmentAlreadyExists\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"channelIdNotFound\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"channelNotOwnedByPortAddress\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"channelNotOwnedBySender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"invalidAddress\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"invalidConnection\",\"inputs\":[{\"name\":\"connection\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"type\":\"error\",\"name\":\"invalidConnectionHops\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"invalidCounterParty\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"invalidPacket\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"invalidPacketSequence\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"invalidPortPrefix\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"invalidVersion\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"lightClientNotFound\",\"inputs\":[{\"name\":\"connection\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"type\":\"error\",\"name\":\"notEnoughGas\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"packetCommitmentNotFound\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"packetNotTimedOut\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"packetReceiptAlreadyExists\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"unexpectedPacketSequence\",\"inputs\":[]}]", + ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"acknowledgement\",\"inputs\":[{\"name\":\"packet\",\"type\":\"tuple\",\"internalType\":\"structIbcPacket\",\"components\":[{\"name\":\"src\",\"type\":\"tuple\",\"internalType\":\"structIbcEndpoint\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"dest\",\"type\":\"tuple\",\"internalType\":\"structIbcEndpoint\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"sequence\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"timeoutHeight\",\"type\":\"tuple\",\"internalType\":\"structHeight\",\"components\":[{\"name\":\"revision_number\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"revision_height\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"timeoutTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"ack\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structIcs23Proof\",\"components\":[{\"name\":\"proof\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23Proof[]\",\"components\":[{\"name\":\"path\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23ProofPath[]\",\"components\":[{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"suffix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"channelCloseConfirm\",\"inputs\":[{\"name\":\"portAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structIcs23Proof\",\"components\":[{\"name\":\"proof\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23Proof[]\",\"components\":[{\"name\":\"path\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23ProofPath[]\",\"components\":[{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"suffix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"channelCloseInit\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"channelOpenAck\",\"inputs\":[{\"name\":\"local\",\"type\":\"tuple\",\"internalType\":\"structChannelEnd\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"version\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"name\":\"connectionHops\",\"type\":\"string[]\",\"internalType\":\"string[]\"},{\"name\":\"ordering\",\"type\":\"uint8\",\"internalType\":\"enumChannelOrder\"},{\"name\":\"feeEnabled\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"counterparty\",\"type\":\"tuple\",\"internalType\":\"structChannelEnd\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"version\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structIcs23Proof\",\"components\":[{\"name\":\"proof\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23Proof[]\",\"components\":[{\"name\":\"path\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23ProofPath[]\",\"components\":[{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"suffix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"channelOpenConfirm\",\"inputs\":[{\"name\":\"local\",\"type\":\"tuple\",\"internalType\":\"structChannelEnd\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"version\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"name\":\"connectionHops\",\"type\":\"string[]\",\"internalType\":\"string[]\"},{\"name\":\"ordering\",\"type\":\"uint8\",\"internalType\":\"enumChannelOrder\"},{\"name\":\"feeEnabled\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"counterparty\",\"type\":\"tuple\",\"internalType\":\"structChannelEnd\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"version\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structIcs23Proof\",\"components\":[{\"name\":\"proof\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23Proof[]\",\"components\":[{\"name\":\"path\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23ProofPath[]\",\"components\":[{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"suffix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"channelOpenInit\",\"inputs\":[{\"name\":\"version\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"ordering\",\"type\":\"uint8\",\"internalType\":\"enumChannelOrder\"},{\"name\":\"feeEnabled\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"connectionHops\",\"type\":\"string[]\",\"internalType\":\"string[]\"},{\"name\":\"counterpartyPortId\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"channelOpenTry\",\"inputs\":[{\"name\":\"local\",\"type\":\"tuple\",\"internalType\":\"structChannelEnd\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"version\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"name\":\"ordering\",\"type\":\"uint8\",\"internalType\":\"enumChannelOrder\"},{\"name\":\"feeEnabled\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"connectionHops\",\"type\":\"string[]\",\"internalType\":\"string[]\"},{\"name\":\"counterparty\",\"type\":\"tuple\",\"internalType\":\"structChannelEnd\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"version\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structIcs23Proof\",\"components\":[{\"name\":\"proof\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23Proof[]\",\"components\":[{\"name\":\"path\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23ProofPath[]\",\"components\":[{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"suffix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"feeVault\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIFeeVault\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getChannel\",\"inputs\":[{\"name\":\"portAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"channel\",\"type\":\"tuple\",\"internalType\":\"structChannel\",\"components\":[{\"name\":\"version\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"ordering\",\"type\":\"uint8\",\"internalType\":\"enumChannelOrder\"},{\"name\":\"feeEnabled\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"connectionHops\",\"type\":\"string[]\",\"internalType\":\"string[]\"},{\"name\":\"counterpartyPortId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"counterpartyChannelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getState\",\"inputs\":[{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"connection\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"appHash\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initPortPrefix\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"_feeVault\",\"type\":\"address\",\"internalType\":\"contractIFeeVault\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"portPrefix\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"portPrefixLen\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"recvPacket\",\"inputs\":[{\"name\":\"packet\",\"type\":\"tuple\",\"internalType\":\"structIbcPacket\",\"components\":[{\"name\":\"src\",\"type\":\"tuple\",\"internalType\":\"structIbcEndpoint\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"dest\",\"type\":\"tuple\",\"internalType\":\"structIbcEndpoint\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"sequence\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"timeoutHeight\",\"type\":\"tuple\",\"internalType\":\"structHeight\",\"components\":[{\"name\":\"revision_number\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"revision_height\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"timeoutTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structIcs23Proof\",\"components\":[{\"name\":\"proof\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23Proof[]\",\"components\":[{\"name\":\"path\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23ProofPath[]\",\"components\":[{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"suffix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeConnection\",\"inputs\":[{\"name\":\"connection\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"sendPacket\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"packet\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"timeoutTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"sequence\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setClientForConnection\",\"inputs\":[{\"name\":\"connection\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"lightClient\",\"type\":\"address\",\"internalType\":\"contractILightClient\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPortPrefix\",\"inputs\":[{\"name\":\"_portPrefix\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"timeout\",\"inputs\":[{\"name\":\"packet\",\"type\":\"tuple\",\"internalType\":\"structIbcPacket\",\"components\":[{\"name\":\"src\",\"type\":\"tuple\",\"internalType\":\"structIbcEndpoint\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"dest\",\"type\":\"tuple\",\"internalType\":\"structIbcEndpoint\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"sequence\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"timeoutHeight\",\"type\":\"tuple\",\"internalType\":\"structHeight\",\"components\":[{\"name\":\"revision_number\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"revision_height\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"timeoutTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structIcs23Proof\",\"components\":[{\"name\":\"proof\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23Proof[]\",\"components\":[{\"name\":\"path\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23ProofPath[]\",\"components\":[{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"suffix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateClient\",\"inputs\":[{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"appHash\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"connection\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"writeTimeoutPacket\",\"inputs\":[{\"name\":\"packet\",\"type\":\"tuple\",\"internalType\":\"structIbcPacket\",\"components\":[{\"name\":\"src\",\"type\":\"tuple\",\"internalType\":\"structIbcEndpoint\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"dest\",\"type\":\"tuple\",\"internalType\":\"structIbcEndpoint\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"sequence\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"timeoutHeight\",\"type\":\"tuple\",\"internalType\":\"structHeight\",\"components\":[{\"name\":\"revision_number\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"revision_height\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"timeoutTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structIcs23Proof\",\"components\":[{\"name\":\"proof\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23Proof[]\",\"components\":[{\"name\":\"path\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23ProofPath[]\",\"components\":[{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"suffix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Acknowledgement\",\"inputs\":[{\"name\":\"sourcePortAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sourceChannelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"sequence\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"AcknowledgementError\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"error\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelCloseConfirm\",\"inputs\":[{\"name\":\"portAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelCloseConfirmError\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"error\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelCloseInit\",\"inputs\":[{\"name\":\"portAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelCloseInitError\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"error\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelOpenAck\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelOpenAckError\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"error\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelOpenConfirm\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelOpenConfirmError\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"error\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelOpenInit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"version\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"ordering\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"enumChannelOrder\"},{\"name\":\"feeEnabled\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"},{\"name\":\"connectionHops\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"counterpartyPortId\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelOpenInitError\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"error\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelOpenTry\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"version\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"ordering\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"enumChannelOrder\"},{\"name\":\"feeEnabled\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"},{\"name\":\"connectionHops\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"counterpartyPortId\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"counterpartyChannelId\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelOpenTryError\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"error\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RecvPacket\",\"inputs\":[{\"name\":\"destPortAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"destChannelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"sequence\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SendPacket\",\"inputs\":[{\"name\":\"sourcePortAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sourceChannelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"packet\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"sequence\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"timeoutTimestamp\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Timeout\",\"inputs\":[{\"name\":\"sourcePortAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sourceChannelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"sequence\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TimeoutError\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"error\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WriteAckPacket\",\"inputs\":[{\"name\":\"writerPortAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"writerChannelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"sequence\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"ackPacket\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structAckPacket\",\"components\":[{\"name\":\"success\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WriteTimeoutPacket\",\"inputs\":[{\"name\":\"writerPortAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"writerChannelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"sequence\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"timeoutHeight\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structHeight\",\"components\":[{\"name\":\"revision_number\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"revision_height\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"timeoutTimestamp\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ackPacketCommitmentAlreadyExists\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"channelIdNotFound\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"channelNotOwnedByPortAddress\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"channelNotOwnedBySender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"invalidAddress\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"invalidConnection\",\"inputs\":[{\"name\":\"connection\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"type\":\"error\",\"name\":\"invalidConnectionHops\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"invalidCounterParty\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"invalidPacket\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"invalidPacketSequence\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"invalidPortPrefix\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"invalidVersion\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"lightClientNotFound\",\"inputs\":[{\"name\":\"connection\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"type\":\"error\",\"name\":\"notEnoughGas\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"packetCommitmentNotFound\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"packetNotTimedOut\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"packetReceiptAlreadyExists\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"unexpectedPacketSequence\",\"inputs\":[]}]", } // DispatcherABI is the input ABI used to generate the binding from. @@ -308,12 +308,12 @@ func (_Dispatcher *DispatcherCallerSession) GetChannel(portAddress common.Addres return _Dispatcher.Contract.GetChannel(&_Dispatcher.CallOpts, portAddress, channelId) } -// GetOptimisticConsensusState is a free data retrieval call binding the contract method 0x8dd34bb4. +// GetState is a free data retrieval call binding the contract method 0xb12f89be. // -// Solidity: function getOptimisticConsensusState(uint256 height, string connection) view returns(uint256 appHash) -func (_Dispatcher *DispatcherCaller) GetOptimisticConsensusState(opts *bind.CallOpts, height *big.Int, connection string) (*big.Int, error) { +// Solidity: function getState(uint256 height, string connection) view returns(uint256 appHash) +func (_Dispatcher *DispatcherCaller) GetState(opts *bind.CallOpts, height *big.Int, connection string) (*big.Int, error) { var out []interface{} - err := _Dispatcher.contract.Call(opts, &out, "getOptimisticConsensusState", height, connection) + err := _Dispatcher.contract.Call(opts, &out, "getState", height, connection) if err != nil { return *new(*big.Int), err @@ -325,18 +325,18 @@ func (_Dispatcher *DispatcherCaller) GetOptimisticConsensusState(opts *bind.Call } -// GetOptimisticConsensusState is a free data retrieval call binding the contract method 0x8dd34bb4. +// GetState is a free data retrieval call binding the contract method 0xb12f89be. // -// Solidity: function getOptimisticConsensusState(uint256 height, string connection) view returns(uint256 appHash) -func (_Dispatcher *DispatcherSession) GetOptimisticConsensusState(height *big.Int, connection string) (*big.Int, error) { - return _Dispatcher.Contract.GetOptimisticConsensusState(&_Dispatcher.CallOpts, height, connection) +// Solidity: function getState(uint256 height, string connection) view returns(uint256 appHash) +func (_Dispatcher *DispatcherSession) GetState(height *big.Int, connection string) (*big.Int, error) { + return _Dispatcher.Contract.GetState(&_Dispatcher.CallOpts, height, connection) } -// GetOptimisticConsensusState is a free data retrieval call binding the contract method 0x8dd34bb4. +// GetState is a free data retrieval call binding the contract method 0xb12f89be. // -// Solidity: function getOptimisticConsensusState(uint256 height, string connection) view returns(uint256 appHash) -func (_Dispatcher *DispatcherCallerSession) GetOptimisticConsensusState(height *big.Int, connection string) (*big.Int, error) { - return _Dispatcher.Contract.GetOptimisticConsensusState(&_Dispatcher.CallOpts, height, connection) +// Solidity: function getState(uint256 height, string connection) view returns(uint256 appHash) +func (_Dispatcher *DispatcherCallerSession) GetState(height *big.Int, connection string) (*big.Int, error) { + return _Dispatcher.Contract.GetState(&_Dispatcher.CallOpts, height, connection) } // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. @@ -851,25 +851,25 @@ func (_Dispatcher *DispatcherTransactorSession) TransferOwnership(newOwner commo return _Dispatcher.Contract.TransferOwnership(&_Dispatcher.TransactOpts, newOwner) } -// UpdateClientWithOptimisticConsensusState is a paid mutator transaction binding the contract method 0xcc3c51cb. +// UpdateClient is a paid mutator transaction binding the contract method 0xc899e272. // -// Solidity: function updateClientWithOptimisticConsensusState(bytes proof, uint256 height, uint256 appHash, string connection) returns() -func (_Dispatcher *DispatcherTransactor) UpdateClientWithOptimisticConsensusState(opts *bind.TransactOpts, proof []byte, height *big.Int, appHash *big.Int, connection string) (*types.Transaction, error) { - return _Dispatcher.contract.Transact(opts, "updateClientWithOptimisticConsensusState", proof, height, appHash, connection) +// Solidity: function updateClient(bytes proof, uint256 height, uint256 appHash, string connection) returns() +func (_Dispatcher *DispatcherTransactor) UpdateClient(opts *bind.TransactOpts, proof []byte, height *big.Int, appHash *big.Int, connection string) (*types.Transaction, error) { + return _Dispatcher.contract.Transact(opts, "updateClient", proof, height, appHash, connection) } -// UpdateClientWithOptimisticConsensusState is a paid mutator transaction binding the contract method 0xcc3c51cb. +// UpdateClient is a paid mutator transaction binding the contract method 0xc899e272. // -// Solidity: function updateClientWithOptimisticConsensusState(bytes proof, uint256 height, uint256 appHash, string connection) returns() -func (_Dispatcher *DispatcherSession) UpdateClientWithOptimisticConsensusState(proof []byte, height *big.Int, appHash *big.Int, connection string) (*types.Transaction, error) { - return _Dispatcher.Contract.UpdateClientWithOptimisticConsensusState(&_Dispatcher.TransactOpts, proof, height, appHash, connection) +// Solidity: function updateClient(bytes proof, uint256 height, uint256 appHash, string connection) returns() +func (_Dispatcher *DispatcherSession) UpdateClient(proof []byte, height *big.Int, appHash *big.Int, connection string) (*types.Transaction, error) { + return _Dispatcher.Contract.UpdateClient(&_Dispatcher.TransactOpts, proof, height, appHash, connection) } -// UpdateClientWithOptimisticConsensusState is a paid mutator transaction binding the contract method 0xcc3c51cb. +// UpdateClient is a paid mutator transaction binding the contract method 0xc899e272. // -// Solidity: function updateClientWithOptimisticConsensusState(bytes proof, uint256 height, uint256 appHash, string connection) returns() -func (_Dispatcher *DispatcherTransactorSession) UpdateClientWithOptimisticConsensusState(proof []byte, height *big.Int, appHash *big.Int, connection string) (*types.Transaction, error) { - return _Dispatcher.Contract.UpdateClientWithOptimisticConsensusState(&_Dispatcher.TransactOpts, proof, height, appHash, connection) +// Solidity: function updateClient(bytes proof, uint256 height, uint256 appHash, string connection) returns() +func (_Dispatcher *DispatcherTransactorSession) UpdateClient(proof []byte, height *big.Int, appHash *big.Int, connection string) (*types.Transaction, error) { + return _Dispatcher.Contract.UpdateClient(&_Dispatcher.TransactOpts, proof, height, appHash, connection) } // UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. diff --git a/bindings/go/dummylightclient/DummyLightClient.go b/bindings/go/dummylightclient/DummyLightClient.go index 87c7a3aa..e00048bf 100644 --- a/bindings/go/dummylightclient/DummyLightClient.go +++ b/bindings/go/dummylightclient/DummyLightClient.go @@ -51,7 +51,7 @@ type OpIcs23ProofPath struct { // DummyLightClientMetaData contains all meta data concerning the DummyLightClient contract. var DummyLightClientMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getState\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"appHash\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"updateClient\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"verifyMembership\",\"inputs\":[{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structIcs23Proof\",\"components\":[{\"name\":\"proof\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23Proof[]\",\"components\":[{\"name\":\"path\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23ProofPath[]\",\"components\":[{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"suffix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"verifyNonMembership\",\"inputs\":[{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structIcs23Proof\",\"components\":[{\"name\":\"proof\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23Proof[]\",\"components\":[{\"name\":\"path\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23ProofPath[]\",\"components\":[{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"suffix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"error\",\"name\":\"InvalidDummyMembershipProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidDummyNonMembershipProof\",\"inputs\":[]}]", + ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"LIGHT_CLIENT_TYPE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumLightClientType\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getState\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"appHash\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"updateClient\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"verifyMembership\",\"inputs\":[{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structIcs23Proof\",\"components\":[{\"name\":\"proof\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23Proof[]\",\"components\":[{\"name\":\"path\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23ProofPath[]\",\"components\":[{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"suffix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"verifyNonMembership\",\"inputs\":[{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structIcs23Proof\",\"components\":[{\"name\":\"proof\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23Proof[]\",\"components\":[{\"name\":\"path\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23ProofPath[]\",\"components\":[{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"suffix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"error\",\"name\":\"InvalidDummyMembershipProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidDummyNonMembershipProof\",\"inputs\":[]}]", } // DummyLightClientABI is the input ABI used to generate the binding from. @@ -200,6 +200,37 @@ func (_DummyLightClient *DummyLightClientTransactorRaw) Transact(opts *bind.Tran return _DummyLightClient.Contract.contract.Transact(opts, method, params...) } +// LIGHTCLIENTTYPE is a free data retrieval call binding the contract method 0x57c1c5f4. +// +// Solidity: function LIGHT_CLIENT_TYPE() view returns(uint8) +func (_DummyLightClient *DummyLightClientCaller) LIGHTCLIENTTYPE(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _DummyLightClient.contract.Call(opts, &out, "LIGHT_CLIENT_TYPE") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// LIGHTCLIENTTYPE is a free data retrieval call binding the contract method 0x57c1c5f4. +// +// Solidity: function LIGHT_CLIENT_TYPE() view returns(uint8) +func (_DummyLightClient *DummyLightClientSession) LIGHTCLIENTTYPE() (uint8, error) { + return _DummyLightClient.Contract.LIGHTCLIENTTYPE(&_DummyLightClient.CallOpts) +} + +// LIGHTCLIENTTYPE is a free data retrieval call binding the contract method 0x57c1c5f4. +// +// Solidity: function LIGHT_CLIENT_TYPE() view returns(uint8) +func (_DummyLightClient *DummyLightClientCallerSession) LIGHTCLIENTTYPE() (uint8, error) { + return _DummyLightClient.Contract.LIGHTCLIENTTYPE(&_DummyLightClient.CallOpts) +} + // GetState is a free data retrieval call binding the contract method 0x44c9af28. // // Solidity: function getState(uint256 ) pure returns(uint256 appHash) diff --git a/bindings/go/idispatcher/IDispatcher.go b/bindings/go/idispatcher/IDispatcher.go index b8ceafc2..5fa6b4e7 100644 --- a/bindings/go/idispatcher/IDispatcher.go +++ b/bindings/go/idispatcher/IDispatcher.go @@ -97,7 +97,7 @@ type OpIcs23ProofPath struct { // IDispatcherMetaData contains all meta data concerning the IDispatcher contract. var IDispatcherMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"acknowledgement\",\"inputs\":[{\"name\":\"packet\",\"type\":\"tuple\",\"internalType\":\"structIbcPacket\",\"components\":[{\"name\":\"src\",\"type\":\"tuple\",\"internalType\":\"structIbcEndpoint\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"dest\",\"type\":\"tuple\",\"internalType\":\"structIbcEndpoint\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"sequence\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"timeoutHeight\",\"type\":\"tuple\",\"internalType\":\"structHeight\",\"components\":[{\"name\":\"revision_number\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"revision_height\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"timeoutTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"ack\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structIcs23Proof\",\"components\":[{\"name\":\"proof\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23Proof[]\",\"components\":[{\"name\":\"path\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23ProofPath[]\",\"components\":[{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"suffix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"channelCloseConfirm\",\"inputs\":[{\"name\":\"portAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structIcs23Proof\",\"components\":[{\"name\":\"proof\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23Proof[]\",\"components\":[{\"name\":\"path\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23ProofPath[]\",\"components\":[{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"suffix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"channelCloseInit\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"channelOpenAck\",\"inputs\":[{\"name\":\"local\",\"type\":\"tuple\",\"internalType\":\"structChannelEnd\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"version\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"name\":\"connectionHops\",\"type\":\"string[]\",\"internalType\":\"string[]\"},{\"name\":\"ordering\",\"type\":\"uint8\",\"internalType\":\"enumChannelOrder\"},{\"name\":\"feeEnabled\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"counterparty\",\"type\":\"tuple\",\"internalType\":\"structChannelEnd\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"version\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structIcs23Proof\",\"components\":[{\"name\":\"proof\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23Proof[]\",\"components\":[{\"name\":\"path\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23ProofPath[]\",\"components\":[{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"suffix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"channelOpenConfirm\",\"inputs\":[{\"name\":\"local\",\"type\":\"tuple\",\"internalType\":\"structChannelEnd\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"version\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"name\":\"connectionHops\",\"type\":\"string[]\",\"internalType\":\"string[]\"},{\"name\":\"ordering\",\"type\":\"uint8\",\"internalType\":\"enumChannelOrder\"},{\"name\":\"feeEnabled\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"counterparty\",\"type\":\"tuple\",\"internalType\":\"structChannelEnd\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"version\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structIcs23Proof\",\"components\":[{\"name\":\"proof\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23Proof[]\",\"components\":[{\"name\":\"path\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23ProofPath[]\",\"components\":[{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"suffix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"channelOpenInit\",\"inputs\":[{\"name\":\"version\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"ordering\",\"type\":\"uint8\",\"internalType\":\"enumChannelOrder\"},{\"name\":\"feeEnabled\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"connectionHops\",\"type\":\"string[]\",\"internalType\":\"string[]\"},{\"name\":\"counterpartyPortId\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"channelOpenTry\",\"inputs\":[{\"name\":\"local\",\"type\":\"tuple\",\"internalType\":\"structChannelEnd\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"version\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"name\":\"ordering\",\"type\":\"uint8\",\"internalType\":\"enumChannelOrder\"},{\"name\":\"feeEnabled\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"connectionHops\",\"type\":\"string[]\",\"internalType\":\"string[]\"},{\"name\":\"counterparty\",\"type\":\"tuple\",\"internalType\":\"structChannelEnd\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"version\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structIcs23Proof\",\"components\":[{\"name\":\"proof\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23Proof[]\",\"components\":[{\"name\":\"path\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23ProofPath[]\",\"components\":[{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"suffix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"feeVault\",\"inputs\":[],\"outputs\":[{\"name\":\"feeVault\",\"type\":\"address\",\"internalType\":\"contractIFeeVault\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getChannel\",\"inputs\":[{\"name\":\"portAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"channel\",\"type\":\"tuple\",\"internalType\":\"structChannel\",\"components\":[{\"name\":\"version\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"ordering\",\"type\":\"uint8\",\"internalType\":\"enumChannelOrder\"},{\"name\":\"feeEnabled\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"connectionHops\",\"type\":\"string[]\",\"internalType\":\"string[]\"},{\"name\":\"counterpartyPortId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"counterpartyChannelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOptimisticConsensusState\",\"inputs\":[{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"connection\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"appHash\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"portPrefix\",\"inputs\":[],\"outputs\":[{\"name\":\"portPrefix\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"recvPacket\",\"inputs\":[{\"name\":\"packet\",\"type\":\"tuple\",\"internalType\":\"structIbcPacket\",\"components\":[{\"name\":\"src\",\"type\":\"tuple\",\"internalType\":\"structIbcEndpoint\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"dest\",\"type\":\"tuple\",\"internalType\":\"structIbcEndpoint\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"sequence\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"timeoutHeight\",\"type\":\"tuple\",\"internalType\":\"structHeight\",\"components\":[{\"name\":\"revision_number\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"revision_height\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"timeoutTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structIcs23Proof\",\"components\":[{\"name\":\"proof\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23Proof[]\",\"components\":[{\"name\":\"path\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23ProofPath[]\",\"components\":[{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"suffix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeConnection\",\"inputs\":[{\"name\":\"connection\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"sendPacket\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"packet\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"timeoutTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"sequence\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setClientForConnection\",\"inputs\":[{\"name\":\"connection\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"lightClient\",\"type\":\"address\",\"internalType\":\"contractILightClient\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPortPrefix\",\"inputs\":[{\"name\":\"_portPrefix\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"timeout\",\"inputs\":[{\"name\":\"packet\",\"type\":\"tuple\",\"internalType\":\"structIbcPacket\",\"components\":[{\"name\":\"src\",\"type\":\"tuple\",\"internalType\":\"structIbcEndpoint\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"dest\",\"type\":\"tuple\",\"internalType\":\"structIbcEndpoint\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"sequence\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"timeoutHeight\",\"type\":\"tuple\",\"internalType\":\"structHeight\",\"components\":[{\"name\":\"revision_number\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"revision_height\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"timeoutTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structIcs23Proof\",\"components\":[{\"name\":\"proof\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23Proof[]\",\"components\":[{\"name\":\"path\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23ProofPath[]\",\"components\":[{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"suffix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateClientWithOptimisticConsensusState\",\"inputs\":[{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"appHash\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"connection\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"writeTimeoutPacket\",\"inputs\":[{\"name\":\"packet\",\"type\":\"tuple\",\"internalType\":\"structIbcPacket\",\"components\":[{\"name\":\"src\",\"type\":\"tuple\",\"internalType\":\"structIbcEndpoint\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"dest\",\"type\":\"tuple\",\"internalType\":\"structIbcEndpoint\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"sequence\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"timeoutHeight\",\"type\":\"tuple\",\"internalType\":\"structHeight\",\"components\":[{\"name\":\"revision_number\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"revision_height\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"timeoutTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structIcs23Proof\",\"components\":[{\"name\":\"proof\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23Proof[]\",\"components\":[{\"name\":\"path\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23ProofPath[]\",\"components\":[{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"suffix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Acknowledgement\",\"inputs\":[{\"name\":\"sourcePortAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sourceChannelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"sequence\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"AcknowledgementError\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"error\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelCloseConfirm\",\"inputs\":[{\"name\":\"portAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelCloseConfirmError\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"error\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelCloseInit\",\"inputs\":[{\"name\":\"portAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelCloseInitError\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"error\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelOpenAck\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelOpenAckError\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"error\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelOpenConfirm\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelOpenConfirmError\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"error\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelOpenInit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"version\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"ordering\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"enumChannelOrder\"},{\"name\":\"feeEnabled\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"},{\"name\":\"connectionHops\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"counterpartyPortId\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelOpenInitError\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"error\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelOpenTry\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"version\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"ordering\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"enumChannelOrder\"},{\"name\":\"feeEnabled\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"},{\"name\":\"connectionHops\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"counterpartyPortId\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"counterpartyChannelId\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelOpenTryError\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"error\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RecvPacket\",\"inputs\":[{\"name\":\"destPortAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"destChannelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"sequence\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SendPacket\",\"inputs\":[{\"name\":\"sourcePortAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sourceChannelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"packet\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"sequence\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"timeoutTimestamp\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Timeout\",\"inputs\":[{\"name\":\"sourcePortAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sourceChannelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"sequence\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TimeoutError\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"error\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WriteAckPacket\",\"inputs\":[{\"name\":\"writerPortAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"writerChannelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"sequence\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"ackPacket\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structAckPacket\",\"components\":[{\"name\":\"success\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WriteTimeoutPacket\",\"inputs\":[{\"name\":\"writerPortAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"writerChannelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"sequence\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"timeoutHeight\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structHeight\",\"components\":[{\"name\":\"revision_number\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"revision_height\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"timeoutTimestamp\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false}]", + ABI: "[{\"type\":\"function\",\"name\":\"acknowledgement\",\"inputs\":[{\"name\":\"packet\",\"type\":\"tuple\",\"internalType\":\"structIbcPacket\",\"components\":[{\"name\":\"src\",\"type\":\"tuple\",\"internalType\":\"structIbcEndpoint\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"dest\",\"type\":\"tuple\",\"internalType\":\"structIbcEndpoint\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"sequence\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"timeoutHeight\",\"type\":\"tuple\",\"internalType\":\"structHeight\",\"components\":[{\"name\":\"revision_number\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"revision_height\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"timeoutTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"ack\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structIcs23Proof\",\"components\":[{\"name\":\"proof\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23Proof[]\",\"components\":[{\"name\":\"path\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23ProofPath[]\",\"components\":[{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"suffix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"channelCloseConfirm\",\"inputs\":[{\"name\":\"portAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structIcs23Proof\",\"components\":[{\"name\":\"proof\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23Proof[]\",\"components\":[{\"name\":\"path\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23ProofPath[]\",\"components\":[{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"suffix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"channelCloseInit\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"channelOpenAck\",\"inputs\":[{\"name\":\"local\",\"type\":\"tuple\",\"internalType\":\"structChannelEnd\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"version\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"name\":\"connectionHops\",\"type\":\"string[]\",\"internalType\":\"string[]\"},{\"name\":\"ordering\",\"type\":\"uint8\",\"internalType\":\"enumChannelOrder\"},{\"name\":\"feeEnabled\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"counterparty\",\"type\":\"tuple\",\"internalType\":\"structChannelEnd\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"version\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structIcs23Proof\",\"components\":[{\"name\":\"proof\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23Proof[]\",\"components\":[{\"name\":\"path\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23ProofPath[]\",\"components\":[{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"suffix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"channelOpenConfirm\",\"inputs\":[{\"name\":\"local\",\"type\":\"tuple\",\"internalType\":\"structChannelEnd\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"version\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"name\":\"connectionHops\",\"type\":\"string[]\",\"internalType\":\"string[]\"},{\"name\":\"ordering\",\"type\":\"uint8\",\"internalType\":\"enumChannelOrder\"},{\"name\":\"feeEnabled\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"counterparty\",\"type\":\"tuple\",\"internalType\":\"structChannelEnd\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"version\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structIcs23Proof\",\"components\":[{\"name\":\"proof\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23Proof[]\",\"components\":[{\"name\":\"path\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23ProofPath[]\",\"components\":[{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"suffix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"channelOpenInit\",\"inputs\":[{\"name\":\"version\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"ordering\",\"type\":\"uint8\",\"internalType\":\"enumChannelOrder\"},{\"name\":\"feeEnabled\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"connectionHops\",\"type\":\"string[]\",\"internalType\":\"string[]\"},{\"name\":\"counterpartyPortId\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"channelOpenTry\",\"inputs\":[{\"name\":\"local\",\"type\":\"tuple\",\"internalType\":\"structChannelEnd\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"version\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"name\":\"ordering\",\"type\":\"uint8\",\"internalType\":\"enumChannelOrder\"},{\"name\":\"feeEnabled\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"connectionHops\",\"type\":\"string[]\",\"internalType\":\"string[]\"},{\"name\":\"counterparty\",\"type\":\"tuple\",\"internalType\":\"structChannelEnd\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"version\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structIcs23Proof\",\"components\":[{\"name\":\"proof\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23Proof[]\",\"components\":[{\"name\":\"path\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23ProofPath[]\",\"components\":[{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"suffix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"feeVault\",\"inputs\":[],\"outputs\":[{\"name\":\"feeVault\",\"type\":\"address\",\"internalType\":\"contractIFeeVault\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getChannel\",\"inputs\":[{\"name\":\"portAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"channel\",\"type\":\"tuple\",\"internalType\":\"structChannel\",\"components\":[{\"name\":\"version\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"ordering\",\"type\":\"uint8\",\"internalType\":\"enumChannelOrder\"},{\"name\":\"feeEnabled\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"connectionHops\",\"type\":\"string[]\",\"internalType\":\"string[]\"},{\"name\":\"counterpartyPortId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"counterpartyChannelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getState\",\"inputs\":[{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"connection\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"appHash\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"portPrefix\",\"inputs\":[],\"outputs\":[{\"name\":\"portPrefix\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"recvPacket\",\"inputs\":[{\"name\":\"packet\",\"type\":\"tuple\",\"internalType\":\"structIbcPacket\",\"components\":[{\"name\":\"src\",\"type\":\"tuple\",\"internalType\":\"structIbcEndpoint\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"dest\",\"type\":\"tuple\",\"internalType\":\"structIbcEndpoint\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"sequence\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"timeoutHeight\",\"type\":\"tuple\",\"internalType\":\"structHeight\",\"components\":[{\"name\":\"revision_number\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"revision_height\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"timeoutTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structIcs23Proof\",\"components\":[{\"name\":\"proof\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23Proof[]\",\"components\":[{\"name\":\"path\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23ProofPath[]\",\"components\":[{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"suffix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeConnection\",\"inputs\":[{\"name\":\"connection\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"sendPacket\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"packet\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"timeoutTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"sequence\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setClientForConnection\",\"inputs\":[{\"name\":\"connection\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"lightClient\",\"type\":\"address\",\"internalType\":\"contractILightClient\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPortPrefix\",\"inputs\":[{\"name\":\"_portPrefix\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"timeout\",\"inputs\":[{\"name\":\"packet\",\"type\":\"tuple\",\"internalType\":\"structIbcPacket\",\"components\":[{\"name\":\"src\",\"type\":\"tuple\",\"internalType\":\"structIbcEndpoint\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"dest\",\"type\":\"tuple\",\"internalType\":\"structIbcEndpoint\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"sequence\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"timeoutHeight\",\"type\":\"tuple\",\"internalType\":\"structHeight\",\"components\":[{\"name\":\"revision_number\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"revision_height\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"timeoutTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structIcs23Proof\",\"components\":[{\"name\":\"proof\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23Proof[]\",\"components\":[{\"name\":\"path\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23ProofPath[]\",\"components\":[{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"suffix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateClient\",\"inputs\":[{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"appHash\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"connection\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"writeTimeoutPacket\",\"inputs\":[{\"name\":\"packet\",\"type\":\"tuple\",\"internalType\":\"structIbcPacket\",\"components\":[{\"name\":\"src\",\"type\":\"tuple\",\"internalType\":\"structIbcEndpoint\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"dest\",\"type\":\"tuple\",\"internalType\":\"structIbcEndpoint\",\"components\":[{\"name\":\"portId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"sequence\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"timeoutHeight\",\"type\":\"tuple\",\"internalType\":\"structHeight\",\"components\":[{\"name\":\"revision_number\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"revision_height\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"timeoutTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structIcs23Proof\",\"components\":[{\"name\":\"proof\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23Proof[]\",\"components\":[{\"name\":\"path\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23ProofPath[]\",\"components\":[{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"suffix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Acknowledgement\",\"inputs\":[{\"name\":\"sourcePortAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sourceChannelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"sequence\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"AcknowledgementError\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"error\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelCloseConfirm\",\"inputs\":[{\"name\":\"portAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelCloseConfirmError\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"error\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelCloseInit\",\"inputs\":[{\"name\":\"portAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelCloseInitError\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"error\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelOpenAck\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelOpenAckError\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"error\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelOpenConfirm\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelOpenConfirmError\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"error\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelOpenInit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"version\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"ordering\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"enumChannelOrder\"},{\"name\":\"feeEnabled\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"},{\"name\":\"connectionHops\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"counterpartyPortId\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelOpenInitError\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"error\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelOpenTry\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"version\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"ordering\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"enumChannelOrder\"},{\"name\":\"feeEnabled\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"},{\"name\":\"connectionHops\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"counterpartyPortId\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"counterpartyChannelId\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelOpenTryError\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"error\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RecvPacket\",\"inputs\":[{\"name\":\"destPortAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"destChannelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"sequence\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SendPacket\",\"inputs\":[{\"name\":\"sourcePortAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sourceChannelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"packet\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"sequence\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"timeoutTimestamp\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Timeout\",\"inputs\":[{\"name\":\"sourcePortAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sourceChannelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"sequence\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TimeoutError\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"error\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WriteAckPacket\",\"inputs\":[{\"name\":\"writerPortAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"writerChannelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"sequence\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"ackPacket\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structAckPacket\",\"components\":[{\"name\":\"success\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WriteTimeoutPacket\",\"inputs\":[{\"name\":\"writerPortAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"writerChannelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"sequence\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"timeoutHeight\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structHeight\",\"components\":[{\"name\":\"revision_number\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"revision_height\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"timeoutTimestamp\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false}]", } // IDispatcherABI is the input ABI used to generate the binding from. @@ -277,12 +277,12 @@ func (_IDispatcher *IDispatcherCallerSession) GetChannel(portAddress common.Addr return _IDispatcher.Contract.GetChannel(&_IDispatcher.CallOpts, portAddress, channelId) } -// GetOptimisticConsensusState is a free data retrieval call binding the contract method 0x8dd34bb4. +// GetState is a free data retrieval call binding the contract method 0xb12f89be. // -// Solidity: function getOptimisticConsensusState(uint256 height, string connection) view returns(uint256 appHash) -func (_IDispatcher *IDispatcherCaller) GetOptimisticConsensusState(opts *bind.CallOpts, height *big.Int, connection string) (*big.Int, error) { +// Solidity: function getState(uint256 height, string connection) view returns(uint256 appHash) +func (_IDispatcher *IDispatcherCaller) GetState(opts *bind.CallOpts, height *big.Int, connection string) (*big.Int, error) { var out []interface{} - err := _IDispatcher.contract.Call(opts, &out, "getOptimisticConsensusState", height, connection) + err := _IDispatcher.contract.Call(opts, &out, "getState", height, connection) if err != nil { return *new(*big.Int), err @@ -294,18 +294,18 @@ func (_IDispatcher *IDispatcherCaller) GetOptimisticConsensusState(opts *bind.Ca } -// GetOptimisticConsensusState is a free data retrieval call binding the contract method 0x8dd34bb4. +// GetState is a free data retrieval call binding the contract method 0xb12f89be. // -// Solidity: function getOptimisticConsensusState(uint256 height, string connection) view returns(uint256 appHash) -func (_IDispatcher *IDispatcherSession) GetOptimisticConsensusState(height *big.Int, connection string) (*big.Int, error) { - return _IDispatcher.Contract.GetOptimisticConsensusState(&_IDispatcher.CallOpts, height, connection) +// Solidity: function getState(uint256 height, string connection) view returns(uint256 appHash) +func (_IDispatcher *IDispatcherSession) GetState(height *big.Int, connection string) (*big.Int, error) { + return _IDispatcher.Contract.GetState(&_IDispatcher.CallOpts, height, connection) } -// GetOptimisticConsensusState is a free data retrieval call binding the contract method 0x8dd34bb4. +// GetState is a free data retrieval call binding the contract method 0xb12f89be. // -// Solidity: function getOptimisticConsensusState(uint256 height, string connection) view returns(uint256 appHash) -func (_IDispatcher *IDispatcherCallerSession) GetOptimisticConsensusState(height *big.Int, connection string) (*big.Int, error) { - return _IDispatcher.Contract.GetOptimisticConsensusState(&_IDispatcher.CallOpts, height, connection) +// Solidity: function getState(uint256 height, string connection) view returns(uint256 appHash) +func (_IDispatcher *IDispatcherCallerSession) GetState(height *big.Int, connection string) (*big.Int, error) { + return _IDispatcher.Contract.GetState(&_IDispatcher.CallOpts, height, connection) } // PortPrefix is a free data retrieval call binding the contract method 0x7774a6d3. @@ -633,25 +633,25 @@ func (_IDispatcher *IDispatcherTransactorSession) Timeout(packet IbcPacket, proo return _IDispatcher.Contract.Timeout(&_IDispatcher.TransactOpts, packet, proof) } -// UpdateClientWithOptimisticConsensusState is a paid mutator transaction binding the contract method 0xcc3c51cb. +// UpdateClient is a paid mutator transaction binding the contract method 0xc899e272. // -// Solidity: function updateClientWithOptimisticConsensusState(bytes proof, uint256 height, uint256 appHash, string connection) returns() -func (_IDispatcher *IDispatcherTransactor) UpdateClientWithOptimisticConsensusState(opts *bind.TransactOpts, proof []byte, height *big.Int, appHash *big.Int, connection string) (*types.Transaction, error) { - return _IDispatcher.contract.Transact(opts, "updateClientWithOptimisticConsensusState", proof, height, appHash, connection) +// Solidity: function updateClient(bytes proof, uint256 height, uint256 appHash, string connection) returns() +func (_IDispatcher *IDispatcherTransactor) UpdateClient(opts *bind.TransactOpts, proof []byte, height *big.Int, appHash *big.Int, connection string) (*types.Transaction, error) { + return _IDispatcher.contract.Transact(opts, "updateClient", proof, height, appHash, connection) } -// UpdateClientWithOptimisticConsensusState is a paid mutator transaction binding the contract method 0xcc3c51cb. +// UpdateClient is a paid mutator transaction binding the contract method 0xc899e272. // -// Solidity: function updateClientWithOptimisticConsensusState(bytes proof, uint256 height, uint256 appHash, string connection) returns() -func (_IDispatcher *IDispatcherSession) UpdateClientWithOptimisticConsensusState(proof []byte, height *big.Int, appHash *big.Int, connection string) (*types.Transaction, error) { - return _IDispatcher.Contract.UpdateClientWithOptimisticConsensusState(&_IDispatcher.TransactOpts, proof, height, appHash, connection) +// Solidity: function updateClient(bytes proof, uint256 height, uint256 appHash, string connection) returns() +func (_IDispatcher *IDispatcherSession) UpdateClient(proof []byte, height *big.Int, appHash *big.Int, connection string) (*types.Transaction, error) { + return _IDispatcher.Contract.UpdateClient(&_IDispatcher.TransactOpts, proof, height, appHash, connection) } -// UpdateClientWithOptimisticConsensusState is a paid mutator transaction binding the contract method 0xcc3c51cb. +// UpdateClient is a paid mutator transaction binding the contract method 0xc899e272. // -// Solidity: function updateClientWithOptimisticConsensusState(bytes proof, uint256 height, uint256 appHash, string connection) returns() -func (_IDispatcher *IDispatcherTransactorSession) UpdateClientWithOptimisticConsensusState(proof []byte, height *big.Int, appHash *big.Int, connection string) (*types.Transaction, error) { - return _IDispatcher.Contract.UpdateClientWithOptimisticConsensusState(&_IDispatcher.TransactOpts, proof, height, appHash, connection) +// Solidity: function updateClient(bytes proof, uint256 height, uint256 appHash, string connection) returns() +func (_IDispatcher *IDispatcherTransactorSession) UpdateClient(proof []byte, height *big.Int, appHash *big.Int, connection string) (*types.Transaction, error) { + return _IDispatcher.Contract.UpdateClient(&_IDispatcher.TransactOpts, proof, height, appHash, connection) } // WriteTimeoutPacket is a paid mutator transaction binding the contract method 0x5d7adf96. diff --git a/bindings/go/ilightclient/ILightClient.go b/bindings/go/ilightclient/ILightClient.go index d3a2b67d..4b7ff29b 100644 --- a/bindings/go/ilightclient/ILightClient.go +++ b/bindings/go/ilightclient/ILightClient.go @@ -51,7 +51,7 @@ type OpIcs23ProofPath struct { // ILightClientMetaData contains all meta data concerning the ILightClient contract. var ILightClientMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"getState\",\"inputs\":[{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"updateClient\",\"inputs\":[{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"appHash\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"verifyMembership\",\"inputs\":[{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structIcs23Proof\",\"components\":[{\"name\":\"proof\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23Proof[]\",\"components\":[{\"name\":\"path\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23ProofPath[]\",\"components\":[{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"suffix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"expectedValue\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"verifyNonMembership\",\"inputs\":[{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structIcs23Proof\",\"components\":[{\"name\":\"proof\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23Proof[]\",\"components\":[{\"name\":\"path\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23ProofPath[]\",\"components\":[{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"suffix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"}]", + ABI: "[{\"type\":\"function\",\"name\":\"LIGHT_CLIENT_TYPE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumLightClientType\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getState\",\"inputs\":[{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"updateClient\",\"inputs\":[{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"appHash\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"verifyMembership\",\"inputs\":[{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structIcs23Proof\",\"components\":[{\"name\":\"proof\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23Proof[]\",\"components\":[{\"name\":\"path\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23ProofPath[]\",\"components\":[{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"suffix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"expectedValue\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"verifyNonMembership\",\"inputs\":[{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structIcs23Proof\",\"components\":[{\"name\":\"proof\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23Proof[]\",\"components\":[{\"name\":\"path\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23ProofPath[]\",\"components\":[{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"suffix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"}]", } // ILightClientABI is the input ABI used to generate the binding from. @@ -200,6 +200,37 @@ func (_ILightClient *ILightClientTransactorRaw) Transact(opts *bind.TransactOpts return _ILightClient.Contract.contract.Transact(opts, method, params...) } +// LIGHTCLIENTTYPE is a free data retrieval call binding the contract method 0x57c1c5f4. +// +// Solidity: function LIGHT_CLIENT_TYPE() view returns(uint8) +func (_ILightClient *ILightClientCaller) LIGHTCLIENTTYPE(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _ILightClient.contract.Call(opts, &out, "LIGHT_CLIENT_TYPE") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// LIGHTCLIENTTYPE is a free data retrieval call binding the contract method 0x57c1c5f4. +// +// Solidity: function LIGHT_CLIENT_TYPE() view returns(uint8) +func (_ILightClient *ILightClientSession) LIGHTCLIENTTYPE() (uint8, error) { + return _ILightClient.Contract.LIGHTCLIENTTYPE(&_ILightClient.CallOpts) +} + +// LIGHTCLIENTTYPE is a free data retrieval call binding the contract method 0x57c1c5f4. +// +// Solidity: function LIGHT_CLIENT_TYPE() view returns(uint8) +func (_ILightClient *ILightClientCallerSession) LIGHTCLIENTTYPE() (uint8, error) { + return _ILightClient.Contract.LIGHTCLIENTTYPE(&_ILightClient.CallOpts) +} + // GetState is a free data retrieval call binding the contract method 0x44c9af28. // // Solidity: function getState(uint256 height) view returns(uint256) diff --git a/bindings/go/optimisticlightclient/OptimisticLightClient.go b/bindings/go/optimisticlightclient/OptimisticLightClient.go index 9d996777..f5452369 100644 --- a/bindings/go/optimisticlightclient/OptimisticLightClient.go +++ b/bindings/go/optimisticlightclient/OptimisticLightClient.go @@ -51,7 +51,7 @@ type OpIcs23ProofPath struct { // OptimisticLightClientMetaData contains all meta data concerning the OptimisticLightClient contract. var OptimisticLightClientMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"fraudProofWindowSeconds_\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"verifier_\",\"type\":\"address\",\"internalType\":\"contractIProofVerifier\"},{\"name\":\"_l1BlockProvider\",\"type\":\"address\",\"internalType\":\"contractL1Block\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"consensusStates\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"fraudProofEndtime\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"fraudProofWindowSeconds\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getFraudProofEndtime\",\"inputs\":[{\"name\":\"peptideHeight\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"fraudProofEndTime\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getState\",\"inputs\":[{\"name\":\"peptideHeight\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"peptideAppHash\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStateAndEndTime\",\"inputs\":[{\"name\":\"peptideHeight\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"peptideAppHash\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"fraudProofEndTime\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"ended\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"l1BlockProvider\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractL1Block\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"updateClient\",\"inputs\":[{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"peptideHeight\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"peptideAppHash\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"verifier\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIProofVerifier\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"verifyMembership\",\"inputs\":[{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structIcs23Proof\",\"components\":[{\"name\":\"proof\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23Proof[]\",\"components\":[{\"name\":\"path\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23ProofPath[]\",\"components\":[{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"suffix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"expectedValue\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"verifyNonMembership\",\"inputs\":[{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structIcs23Proof\",\"components\":[{\"name\":\"proof\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23Proof[]\",\"components\":[{\"name\":\"path\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23ProofPath[]\",\"components\":[{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"suffix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"view\"},{\"type\":\"error\",\"name\":\"AppHashHasNotPassedFraudProofWindow\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CannotUpdatePendingOptimisticConsensusState\",\"inputs\":[]}]", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"fraudProofWindowSeconds_\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"verifier_\",\"type\":\"address\",\"internalType\":\"contractIProofVerifier\"},{\"name\":\"_l1BlockProvider\",\"type\":\"address\",\"internalType\":\"contractL1Block\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"LIGHT_CLIENT_TYPE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumLightClientType\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"consensusStates\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"fraudProofEndtime\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"fraudProofWindowSeconds\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getFraudProofEndtime\",\"inputs\":[{\"name\":\"polymerHeight\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"fraudProofEndTime\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getState\",\"inputs\":[{\"name\":\"polymerHeight\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"polymerAppHash\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStateAndEndTime\",\"inputs\":[{\"name\":\"polymerHeight\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"polymerAppHash\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"fraudProofEndTime\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"ended\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"l1BlockProvider\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractL1Block\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"updateClient\",\"inputs\":[{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"polymerHeight\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"polymerAppHash\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"verifier\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIProofVerifier\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"verifyMembership\",\"inputs\":[{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structIcs23Proof\",\"components\":[{\"name\":\"proof\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23Proof[]\",\"components\":[{\"name\":\"path\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23ProofPath[]\",\"components\":[{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"suffix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"expectedValue\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"verifyNonMembership\",\"inputs\":[{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structIcs23Proof\",\"components\":[{\"name\":\"proof\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23Proof[]\",\"components\":[{\"name\":\"path\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23ProofPath[]\",\"components\":[{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"suffix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"view\"},{\"type\":\"error\",\"name\":\"AppHashHasNotPassedFraudProofWindow\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CannotUpdatePendingOptimisticConsensusState\",\"inputs\":[]}]", } // OptimisticLightClientABI is the input ABI used to generate the binding from. @@ -200,6 +200,37 @@ func (_OptimisticLightClient *OptimisticLightClientTransactorRaw) Transact(opts return _OptimisticLightClient.Contract.contract.Transact(opts, method, params...) } +// LIGHTCLIENTTYPE is a free data retrieval call binding the contract method 0x57c1c5f4. +// +// Solidity: function LIGHT_CLIENT_TYPE() view returns(uint8) +func (_OptimisticLightClient *OptimisticLightClientCaller) LIGHTCLIENTTYPE(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _OptimisticLightClient.contract.Call(opts, &out, "LIGHT_CLIENT_TYPE") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// LIGHTCLIENTTYPE is a free data retrieval call binding the contract method 0x57c1c5f4. +// +// Solidity: function LIGHT_CLIENT_TYPE() view returns(uint8) +func (_OptimisticLightClient *OptimisticLightClientSession) LIGHTCLIENTTYPE() (uint8, error) { + return _OptimisticLightClient.Contract.LIGHTCLIENTTYPE(&_OptimisticLightClient.CallOpts) +} + +// LIGHTCLIENTTYPE is a free data retrieval call binding the contract method 0x57c1c5f4. +// +// Solidity: function LIGHT_CLIENT_TYPE() view returns(uint8) +func (_OptimisticLightClient *OptimisticLightClientCallerSession) LIGHTCLIENTTYPE() (uint8, error) { + return _OptimisticLightClient.Contract.LIGHTCLIENTTYPE(&_OptimisticLightClient.CallOpts) +} + // ConsensusStates is a free data retrieval call binding the contract method 0x1b738a22. // // Solidity: function consensusStates(uint256 ) view returns(uint256) @@ -295,10 +326,10 @@ func (_OptimisticLightClient *OptimisticLightClientCallerSession) FraudProofWind // GetFraudProofEndtime is a free data retrieval call binding the contract method 0xd56ff842. // -// Solidity: function getFraudProofEndtime(uint256 peptideHeight) view returns(uint256 fraudProofEndTime) -func (_OptimisticLightClient *OptimisticLightClientCaller) GetFraudProofEndtime(opts *bind.CallOpts, peptideHeight *big.Int) (*big.Int, error) { +// Solidity: function getFraudProofEndtime(uint256 polymerHeight) view returns(uint256 fraudProofEndTime) +func (_OptimisticLightClient *OptimisticLightClientCaller) GetFraudProofEndtime(opts *bind.CallOpts, polymerHeight *big.Int) (*big.Int, error) { var out []interface{} - err := _OptimisticLightClient.contract.Call(opts, &out, "getFraudProofEndtime", peptideHeight) + err := _OptimisticLightClient.contract.Call(opts, &out, "getFraudProofEndtime", polymerHeight) if err != nil { return *new(*big.Int), err @@ -312,24 +343,24 @@ func (_OptimisticLightClient *OptimisticLightClientCaller) GetFraudProofEndtime( // GetFraudProofEndtime is a free data retrieval call binding the contract method 0xd56ff842. // -// Solidity: function getFraudProofEndtime(uint256 peptideHeight) view returns(uint256 fraudProofEndTime) -func (_OptimisticLightClient *OptimisticLightClientSession) GetFraudProofEndtime(peptideHeight *big.Int) (*big.Int, error) { - return _OptimisticLightClient.Contract.GetFraudProofEndtime(&_OptimisticLightClient.CallOpts, peptideHeight) +// Solidity: function getFraudProofEndtime(uint256 polymerHeight) view returns(uint256 fraudProofEndTime) +func (_OptimisticLightClient *OptimisticLightClientSession) GetFraudProofEndtime(polymerHeight *big.Int) (*big.Int, error) { + return _OptimisticLightClient.Contract.GetFraudProofEndtime(&_OptimisticLightClient.CallOpts, polymerHeight) } // GetFraudProofEndtime is a free data retrieval call binding the contract method 0xd56ff842. // -// Solidity: function getFraudProofEndtime(uint256 peptideHeight) view returns(uint256 fraudProofEndTime) -func (_OptimisticLightClient *OptimisticLightClientCallerSession) GetFraudProofEndtime(peptideHeight *big.Int) (*big.Int, error) { - return _OptimisticLightClient.Contract.GetFraudProofEndtime(&_OptimisticLightClient.CallOpts, peptideHeight) +// Solidity: function getFraudProofEndtime(uint256 polymerHeight) view returns(uint256 fraudProofEndTime) +func (_OptimisticLightClient *OptimisticLightClientCallerSession) GetFraudProofEndtime(polymerHeight *big.Int) (*big.Int, error) { + return _OptimisticLightClient.Contract.GetFraudProofEndtime(&_OptimisticLightClient.CallOpts, polymerHeight) } // GetState is a free data retrieval call binding the contract method 0x44c9af28. // -// Solidity: function getState(uint256 peptideHeight) view returns(uint256 peptideAppHash) -func (_OptimisticLightClient *OptimisticLightClientCaller) GetState(opts *bind.CallOpts, peptideHeight *big.Int) (*big.Int, error) { +// Solidity: function getState(uint256 polymerHeight) view returns(uint256 polymerAppHash) +func (_OptimisticLightClient *OptimisticLightClientCaller) GetState(opts *bind.CallOpts, polymerHeight *big.Int) (*big.Int, error) { var out []interface{} - err := _OptimisticLightClient.contract.Call(opts, &out, "getState", peptideHeight) + err := _OptimisticLightClient.contract.Call(opts, &out, "getState", polymerHeight) if err != nil { return *new(*big.Int), err @@ -343,31 +374,31 @@ func (_OptimisticLightClient *OptimisticLightClientCaller) GetState(opts *bind.C // GetState is a free data retrieval call binding the contract method 0x44c9af28. // -// Solidity: function getState(uint256 peptideHeight) view returns(uint256 peptideAppHash) -func (_OptimisticLightClient *OptimisticLightClientSession) GetState(peptideHeight *big.Int) (*big.Int, error) { - return _OptimisticLightClient.Contract.GetState(&_OptimisticLightClient.CallOpts, peptideHeight) +// Solidity: function getState(uint256 polymerHeight) view returns(uint256 polymerAppHash) +func (_OptimisticLightClient *OptimisticLightClientSession) GetState(polymerHeight *big.Int) (*big.Int, error) { + return _OptimisticLightClient.Contract.GetState(&_OptimisticLightClient.CallOpts, polymerHeight) } // GetState is a free data retrieval call binding the contract method 0x44c9af28. // -// Solidity: function getState(uint256 peptideHeight) view returns(uint256 peptideAppHash) -func (_OptimisticLightClient *OptimisticLightClientCallerSession) GetState(peptideHeight *big.Int) (*big.Int, error) { - return _OptimisticLightClient.Contract.GetState(&_OptimisticLightClient.CallOpts, peptideHeight) +// Solidity: function getState(uint256 polymerHeight) view returns(uint256 polymerAppHash) +func (_OptimisticLightClient *OptimisticLightClientCallerSession) GetState(polymerHeight *big.Int) (*big.Int, error) { + return _OptimisticLightClient.Contract.GetState(&_OptimisticLightClient.CallOpts, polymerHeight) } // GetStateAndEndTime is a free data retrieval call binding the contract method 0xb9a1e87b. // -// Solidity: function getStateAndEndTime(uint256 peptideHeight) view returns(uint256 peptideAppHash, uint256 fraudProofEndTime, bool ended) -func (_OptimisticLightClient *OptimisticLightClientCaller) GetStateAndEndTime(opts *bind.CallOpts, peptideHeight *big.Int) (struct { - PeptideAppHash *big.Int +// Solidity: function getStateAndEndTime(uint256 polymerHeight) view returns(uint256 polymerAppHash, uint256 fraudProofEndTime, bool ended) +func (_OptimisticLightClient *OptimisticLightClientCaller) GetStateAndEndTime(opts *bind.CallOpts, polymerHeight *big.Int) (struct { + PolymerAppHash *big.Int FraudProofEndTime *big.Int Ended bool }, error) { var out []interface{} - err := _OptimisticLightClient.contract.Call(opts, &out, "getStateAndEndTime", peptideHeight) + err := _OptimisticLightClient.contract.Call(opts, &out, "getStateAndEndTime", polymerHeight) outstruct := new(struct { - PeptideAppHash *big.Int + PolymerAppHash *big.Int FraudProofEndTime *big.Int Ended bool }) @@ -375,7 +406,7 @@ func (_OptimisticLightClient *OptimisticLightClientCaller) GetStateAndEndTime(op return *outstruct, err } - outstruct.PeptideAppHash = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + outstruct.PolymerAppHash = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) outstruct.FraudProofEndTime = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) outstruct.Ended = *abi.ConvertType(out[2], new(bool)).(*bool) @@ -385,24 +416,24 @@ func (_OptimisticLightClient *OptimisticLightClientCaller) GetStateAndEndTime(op // GetStateAndEndTime is a free data retrieval call binding the contract method 0xb9a1e87b. // -// Solidity: function getStateAndEndTime(uint256 peptideHeight) view returns(uint256 peptideAppHash, uint256 fraudProofEndTime, bool ended) -func (_OptimisticLightClient *OptimisticLightClientSession) GetStateAndEndTime(peptideHeight *big.Int) (struct { - PeptideAppHash *big.Int +// Solidity: function getStateAndEndTime(uint256 polymerHeight) view returns(uint256 polymerAppHash, uint256 fraudProofEndTime, bool ended) +func (_OptimisticLightClient *OptimisticLightClientSession) GetStateAndEndTime(polymerHeight *big.Int) (struct { + PolymerAppHash *big.Int FraudProofEndTime *big.Int Ended bool }, error) { - return _OptimisticLightClient.Contract.GetStateAndEndTime(&_OptimisticLightClient.CallOpts, peptideHeight) + return _OptimisticLightClient.Contract.GetStateAndEndTime(&_OptimisticLightClient.CallOpts, polymerHeight) } // GetStateAndEndTime is a free data retrieval call binding the contract method 0xb9a1e87b. // -// Solidity: function getStateAndEndTime(uint256 peptideHeight) view returns(uint256 peptideAppHash, uint256 fraudProofEndTime, bool ended) -func (_OptimisticLightClient *OptimisticLightClientCallerSession) GetStateAndEndTime(peptideHeight *big.Int) (struct { - PeptideAppHash *big.Int +// Solidity: function getStateAndEndTime(uint256 polymerHeight) view returns(uint256 polymerAppHash, uint256 fraudProofEndTime, bool ended) +func (_OptimisticLightClient *OptimisticLightClientCallerSession) GetStateAndEndTime(polymerHeight *big.Int) (struct { + PolymerAppHash *big.Int FraudProofEndTime *big.Int Ended bool }, error) { - return _OptimisticLightClient.Contract.GetStateAndEndTime(&_OptimisticLightClient.CallOpts, peptideHeight) + return _OptimisticLightClient.Contract.GetStateAndEndTime(&_OptimisticLightClient.CallOpts, polymerHeight) } // L1BlockProvider is a free data retrieval call binding the contract method 0xeb772058. @@ -527,21 +558,21 @@ func (_OptimisticLightClient *OptimisticLightClientCallerSession) VerifyNonMembe // UpdateClient is a paid mutator transaction binding the contract method 0x49ff245e. // -// Solidity: function updateClient(bytes proof, uint256 peptideHeight, uint256 peptideAppHash) returns() -func (_OptimisticLightClient *OptimisticLightClientTransactor) UpdateClient(opts *bind.TransactOpts, proof []byte, peptideHeight *big.Int, peptideAppHash *big.Int) (*types.Transaction, error) { - return _OptimisticLightClient.contract.Transact(opts, "updateClient", proof, peptideHeight, peptideAppHash) +// Solidity: function updateClient(bytes proof, uint256 polymerHeight, uint256 polymerAppHash) returns() +func (_OptimisticLightClient *OptimisticLightClientTransactor) UpdateClient(opts *bind.TransactOpts, proof []byte, polymerHeight *big.Int, polymerAppHash *big.Int) (*types.Transaction, error) { + return _OptimisticLightClient.contract.Transact(opts, "updateClient", proof, polymerHeight, polymerAppHash) } // UpdateClient is a paid mutator transaction binding the contract method 0x49ff245e. // -// Solidity: function updateClient(bytes proof, uint256 peptideHeight, uint256 peptideAppHash) returns() -func (_OptimisticLightClient *OptimisticLightClientSession) UpdateClient(proof []byte, peptideHeight *big.Int, peptideAppHash *big.Int) (*types.Transaction, error) { - return _OptimisticLightClient.Contract.UpdateClient(&_OptimisticLightClient.TransactOpts, proof, peptideHeight, peptideAppHash) +// Solidity: function updateClient(bytes proof, uint256 polymerHeight, uint256 polymerAppHash) returns() +func (_OptimisticLightClient *OptimisticLightClientSession) UpdateClient(proof []byte, polymerHeight *big.Int, polymerAppHash *big.Int) (*types.Transaction, error) { + return _OptimisticLightClient.Contract.UpdateClient(&_OptimisticLightClient.TransactOpts, proof, polymerHeight, polymerAppHash) } // UpdateClient is a paid mutator transaction binding the contract method 0x49ff245e. // -// Solidity: function updateClient(bytes proof, uint256 peptideHeight, uint256 peptideAppHash) returns() -func (_OptimisticLightClient *OptimisticLightClientTransactorSession) UpdateClient(proof []byte, peptideHeight *big.Int, peptideAppHash *big.Int) (*types.Transaction, error) { - return _OptimisticLightClient.Contract.UpdateClient(&_OptimisticLightClient.TransactOpts, proof, peptideHeight, peptideAppHash) +// Solidity: function updateClient(bytes proof, uint256 polymerHeight, uint256 polymerAppHash) returns() +func (_OptimisticLightClient *OptimisticLightClientTransactorSession) UpdateClient(proof []byte, polymerHeight *big.Int, polymerAppHash *big.Int) (*types.Transaction, error) { + return _OptimisticLightClient.Contract.UpdateClient(&_OptimisticLightClient.TransactOpts, proof, polymerHeight, polymerAppHash) } diff --git a/contracts/core/Dispatcher.sol b/contracts/core/Dispatcher.sol index a05e2f9f..cce3085e 100644 --- a/contracts/core/Dispatcher.sol +++ b/contracts/core/Dispatcher.sol @@ -110,7 +110,7 @@ contract Dispatcher is Ownable2StepUpgradeable, UUPSUpgradeable, ReentrancyGuard portPrefixLen = uint32(bytes(_portPrefix).length); } - // updateClientWithOptimisticConsensusState updates the client + // updateClient updates the client // with the optimistic consensus state. The optimistic consensus // is accepted and will be open for verify in the fraud proof // window. @@ -121,12 +121,7 @@ contract Dispatcher is Ownable2StepUpgradeable, UUPSUpgradeable, ReentrancyGuard * @dev This function updates the client with optimistic consensus state. * It should be called after verifying the optimistic consensus state on the main chain. */ - function updateClientWithOptimisticConsensusState( - bytes calldata proof, - uint256 height, - uint256 appHash, - string calldata connection - ) external { + function updateClient(bytes calldata proof, uint256 height, uint256 appHash, string calldata connection) external { return _getLightClientFromConnection(connection).updateClient(proof, height, appHash); } @@ -685,11 +680,7 @@ contract Dispatcher is Ownable2StepUpgradeable, UUPSUpgradeable, ReentrancyGuard * @param connection The connection the client corresponds to; used to find the light client. * @return appHash The apphash at the given height */ - function getOptimisticConsensusState(uint256 height, string calldata connection) - external - view - returns (uint256 appHash) - { + function getState(uint256 height, string calldata connection) external view returns (uint256 appHash) { return _getLightClientFromConnection(connection).getState(height); } diff --git a/contracts/core/OptimisticLightClient.sol b/contracts/core/OptimisticLightClient.sol index e3bf725f..4db90f3c 100644 --- a/contracts/core/OptimisticLightClient.sol +++ b/contracts/core/OptimisticLightClient.sol @@ -22,6 +22,7 @@ import {L1Header, IProofVerifier, OpL2StateProof, Ics23Proof} from "../interface import {ILightClient} from "../interfaces/ILightClient.sol"; // we need this import to generate docs import {L1Block} from "optimism/L2/L1Block.sol"; import {IOptimisticLightClient} from "../interfaces/IOptimisticLightClient.sol"; +import {LightClientType} from "../interfaces/ILightClient.sol"; /** * @title OptimisticLightClient @@ -29,10 +30,16 @@ import {IOptimisticLightClient} from "../interfaces/IOptimisticLightClient.sol"; * @dev This specific light client implementation uses the same client that is used in the op-stack */ contract OptimisticLightClient is IOptimisticLightClient { - // consensusStates maps from the peptideHeight to the peptideAppHash. + LightClientType public constant LIGHT_CLIENT_TYPE = LightClientType.OptimisticLightClient; // Stored as a constant + // for + // cheap on-chain use + uint8 private _LightClientType = uint8(LIGHT_CLIENT_TYPE); // Also redundantly stored as a private mutable type in + // case it needs to be accessed in any proofs + + // consensusStates maps from the polymerHeight to the polymerAppHash. mapping(uint256 => uint256) public consensusStates; - // fraudProofEndtime maps from the peptideAppHash to the fraud proof end time. + // fraudProofEndtime maps from the polymerAppHash to the fraud proof end time. mapping(uint256 => uint256) public fraudProofEndtime; uint256 public fraudProofWindowSeconds; IProofVerifier public verifier; @@ -50,20 +57,20 @@ contract OptimisticLightClient is IOptimisticLightClient { /** * @inheritdoc ILightClient */ - function updateClient(bytes calldata proof, uint256 peptideHeight, uint256 peptideAppHash) external override { + function updateClient(bytes calldata proof, uint256 polymerHeight, uint256 polymerAppHash) external override { (L1Header memory l1header, OpL2StateProof memory stateProof) = abi.decode(proof, (L1Header, OpL2StateProof)); - uint256 hash = consensusStates[peptideHeight]; + uint256 hash = consensusStates[polymerHeight]; if (hash == 0) { - // if this is a new peptideAppHash we need to verify the provided proof. This method will revert in case + // if this is a new polymerAppHash we need to verify the provided proof. This method will revert in case // of invalid proof. verifier.verifyStateUpdate( - l1header, stateProof, bytes32(peptideAppHash), l1BlockProvider.hash(), l1BlockProvider.number() + l1header, stateProof, bytes32(polymerAppHash), l1BlockProvider.hash(), l1BlockProvider.number() ); - // a new peptideAppHash - consensusStates[peptideHeight] = peptideAppHash; - fraudProofEndtime[peptideAppHash] = block.timestamp + fraudProofWindowSeconds; - } else if (hash != peptideAppHash) { + // a new polymerAppHash + consensusStates[polymerHeight] = polymerAppHash; + fraudProofEndtime[polymerAppHash] = block.timestamp + fraudProofWindowSeconds; + } else if (hash != polymerAppHash) { revert CannotUpdatePendingOptimisticConsensusState(); } } @@ -71,19 +78,19 @@ contract OptimisticLightClient is IOptimisticLightClient { /** * @inheritdoc ILightClient */ - function getState(uint256 peptideHeight) external view returns (uint256 peptideAppHash) { - return _getState(peptideHeight); + function getState(uint256 polymerHeight) external view returns (uint256 polymerAppHash) { + return _getState(polymerHeight); } /** * @inheritdoc IOptimisticLightClient */ - function getStateAndEndTime(uint256 peptideHeight) + function getStateAndEndTime(uint256 polymerHeight) external view - returns (uint256 peptideAppHash, uint256 fraudProofEndTime, bool ended) + returns (uint256 polymerAppHash, uint256 fraudProofEndTime, bool ended) { - return _getStateAndEndTime(peptideHeight); + return _getStateAndEndTime(polymerHeight); } /** @@ -96,41 +103,41 @@ contract OptimisticLightClient is IOptimisticLightClient { // a proof generated at height H can only be verified against state root (app hash) from block H - 1. // this means the relayer must have updated the contract with the app hash from the previous block and // that is why we use proof.height - 1 here. - (uint256 peptideAppHash,, bool ended) = _getStateAndEndTime(proof.height - 1); + (uint256 polymerAppHash,, bool ended) = _getStateAndEndTime(proof.height - 1); if (!ended) revert AppHashHasNotPassedFraudProofWindow(); - verifier.verifyMembership(bytes32(peptideAppHash), key, expectedValue, proof); + verifier.verifyMembership(bytes32(polymerAppHash), key, expectedValue, proof); } /** * @inheritdoc ILightClient */ function verifyNonMembership(Ics23Proof calldata proof, bytes calldata key) external view { - (uint256 peptideAppHash,, bool ended) = _getStateAndEndTime(proof.height - 1); + (uint256 polymerAppHash,, bool ended) = _getStateAndEndTime(proof.height - 1); if (!ended) revert AppHashHasNotPassedFraudProofWindow(); - verifier.verifyNonMembership(bytes32(peptideAppHash), key, proof); + verifier.verifyNonMembership(bytes32(polymerAppHash), key, proof); } /** * @inheritdoc IOptimisticLightClient */ - function getFraudProofEndtime(uint256 peptideHeight) external view returns (uint256 fraudProofEndTime) { - uint256 hash = consensusStates[peptideHeight]; + function getFraudProofEndtime(uint256 polymerHeight) external view returns (uint256 fraudProofEndTime) { + uint256 hash = consensusStates[polymerHeight]; return fraudProofEndtime[hash]; } - function _getState(uint256 height) internal view returns (uint256 peptideAppHash) { - peptideAppHash = consensusStates[height]; + function _getState(uint256 height) internal view returns (uint256 polymerAppHash) { + polymerAppHash = consensusStates[height]; } /** - * @dev Returns the internal state of the light client at a given peptideHeight. + * @dev Returns the internal state of the light client at a given polymerHeight. */ - function _getStateAndEndTime(uint256 peptideHeight) + function _getStateAndEndTime(uint256 polymerHeight) internal view - returns (uint256 peptideAppHash, uint256 fraudProofEndTime, bool ended) + returns (uint256 polymerAppHash, uint256 fraudProofEndTime, bool ended) { - uint256 hash = consensusStates[peptideHeight]; + uint256 hash = consensusStates[polymerHeight]; return (hash, fraudProofEndtime[hash], hash != 0 && block.timestamp >= fraudProofEndtime[hash]); } } diff --git a/contracts/core/OptimisticProofVerifier.sol b/contracts/core/OptimisticProofVerifier.sol index 79941544..2584095c 100644 --- a/contracts/core/OptimisticProofVerifier.sol +++ b/contracts/core/OptimisticProofVerifier.sol @@ -22,6 +22,7 @@ import {RLPReader} from "optimism/libraries/rlp/RLPReader.sol"; import {RLPWriter} from "optimism/libraries/rlp/RLPWriter.sol"; import {L1Header, OpL2StateProof} from "../interfaces/IProofVerifier.sol"; import {AppStateVerifier} from "../base/AppStateVerifier.sol"; +import {IProofVerifier} from "../interfaces/IProofVerifier.sol"; /** * @title OptimisticProofVerifier diff --git a/contracts/interfaces/IDispatcher.sol b/contracts/interfaces/IDispatcher.sol index 0ccb8102..eaa9eda6 100644 --- a/contracts/interfaces/IDispatcher.sol +++ b/contracts/interfaces/IDispatcher.sol @@ -26,12 +26,7 @@ import {IFeeVault} from "./IFeeVault.sol"; interface IDispatcher is IbcDispatcher, IbcEventsEmitter { function setPortPrefix(string calldata _portPrefix) external; - function updateClientWithOptimisticConsensusState( - bytes calldata proof, - uint256 height, - uint256 appHash, - string calldata connection - ) external; + function updateClient(bytes calldata proof, uint256 height, uint256 appHash, string calldata connection) external; /** * This function is called by a 'relayer' on behalf of a dApp. @@ -105,10 +100,7 @@ interface IDispatcher is IbcDispatcher, IbcEventsEmitter { function recvPacket(IbcPacket calldata packet, Ics23Proof calldata proof) external; function feeVault() external returns (IFeeVault feeVault); - function getOptimisticConsensusState(uint256 height, string calldata connection) - external - view - returns (uint256 appHash); + function getState(uint256 height, string calldata connection) external view returns (uint256 appHash); function getChannel(address portAddress, bytes32 channelId) external view returns (Channel memory channel); } diff --git a/contracts/interfaces/ILightClient.sol b/contracts/interfaces/ILightClient.sol index 1c8f4dab..6a23f0f6 100644 --- a/contracts/interfaces/ILightClient.sol +++ b/contracts/interfaces/ILightClient.sol @@ -18,6 +18,13 @@ pragma solidity ^0.8.0; import {Ics23Proof} from "./IProofVerifier.sol"; +enum LightClientType { + SimTestLightClient, // Note: not deployed on any mainnets + OptimisticLightClient, // Our native opstack light client + SequencerLightClient // Our native sequencer light client + +} + /** * @title ILightClient * @author Polymer Labs @@ -53,4 +60,10 @@ interface ILightClient { * Returns the apphash at a given height */ function getState(uint256 height) external view returns (uint256); + + /* + * Returns the type of the light client, useful for relayers to know which light client implementation is at which + address. + */ + function LIGHT_CLIENT_TYPE() external view returns (LightClientType); } diff --git a/contracts/utils/DummyLightClient.sol b/contracts/utils/DummyLightClient.sol index e6c5361d..d5683ef3 100644 --- a/contracts/utils/DummyLightClient.sol +++ b/contracts/utils/DummyLightClient.sol @@ -16,7 +16,7 @@ */ pragma solidity ^0.8.0; -import {ILightClient, Ics23Proof} from "../interfaces/ILightClient.sol"; +import {ILightClient, Ics23Proof, LightClientType} from "../interfaces/ILightClient.sol"; /** * @title DummyLightClient @@ -25,6 +25,10 @@ import {ILightClient, Ics23Proof} from "../interfaces/ILightClient.sol"; * The logic for checking if the proof length is greater than zero is naive. */ contract DummyLightClient is ILightClient { + uint8 private _LightClientType = uint8(LIGHT_CLIENT_TYPE); // Also redundantly stored as a private mutable type in + // cheap on-chain use case it needs to be accessed in any proofs + LightClientType public constant LIGHT_CLIENT_TYPE = LightClientType.SimTestLightClient; // Stored as a constant for + error InvalidDummyMembershipProof(); error InvalidDummyNonMembershipProof(); diff --git a/src/evm/contracts/Dispatcher.ts b/src/evm/contracts/Dispatcher.ts index 5ed02c72..ad627293 100644 --- a/src/evm/contracts/Dispatcher.ts +++ b/src/evm/contracts/Dispatcher.ts @@ -161,7 +161,7 @@ export interface DispatcherInterface extends Interface { | "channelOpenTry" | "feeVault" | "getChannel" - | "getOptimisticConsensusState" + | "getState" | "initialize" | "owner" | "pendingOwner" @@ -176,7 +176,7 @@ export interface DispatcherInterface extends Interface { | "setPortPrefix" | "timeout" | "transferOwnership" - | "updateClientWithOptimisticConsensusState" + | "updateClient" | "upgradeTo" | "upgradeToAndCall" | "writeTimeoutPacket" @@ -271,7 +271,7 @@ export interface DispatcherInterface extends Interface { values: [AddressLike, BytesLike] ): string; encodeFunctionData( - functionFragment: "getOptimisticConsensusState", + functionFragment: "getState", values: [BigNumberish, string] ): string; encodeFunctionData( @@ -328,7 +328,7 @@ export interface DispatcherInterface extends Interface { values: [AddressLike] ): string; encodeFunctionData( - functionFragment: "updateClientWithOptimisticConsensusState", + functionFragment: "updateClient", values: [BytesLike, BigNumberish, BigNumberish, string] ): string; encodeFunctionData( @@ -378,10 +378,7 @@ export interface DispatcherInterface extends Interface { ): Result; decodeFunctionResult(functionFragment: "feeVault", data: BytesLike): Result; decodeFunctionResult(functionFragment: "getChannel", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "getOptimisticConsensusState", - data: BytesLike - ): Result; + decodeFunctionResult(functionFragment: "getState", data: BytesLike): Result; decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; decodeFunctionResult( @@ -421,7 +418,7 @@ export interface DispatcherInterface extends Interface { data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "updateClientWithOptimisticConsensusState", + functionFragment: "updateClient", data: BytesLike ): Result; decodeFunctionResult(functionFragment: "upgradeTo", data: BytesLike): Result; @@ -1000,7 +997,7 @@ export interface Dispatcher extends BaseContract { "view" >; - getOptimisticConsensusState: TypedContractMethod< + getState: TypedContractMethod< [height: BigNumberish, connection: string], [bigint], "view" @@ -1066,7 +1063,7 @@ export interface Dispatcher extends BaseContract { "nonpayable" >; - updateClientWithOptimisticConsensusState: TypedContractMethod< + updateClient: TypedContractMethod< [ proof: BytesLike, height: BigNumberish, @@ -1185,7 +1182,7 @@ export interface Dispatcher extends BaseContract { "view" >; getFunction( - nameOrSignature: "getOptimisticConsensusState" + nameOrSignature: "getState" ): TypedContractMethod< [height: BigNumberish, connection: string], [bigint], @@ -1254,7 +1251,7 @@ export interface Dispatcher extends BaseContract { nameOrSignature: "transferOwnership" ): TypedContractMethod<[newOwner: AddressLike], [void], "nonpayable">; getFunction( - nameOrSignature: "updateClientWithOptimisticConsensusState" + nameOrSignature: "updateClient" ): TypedContractMethod< [ proof: BytesLike, diff --git a/src/evm/contracts/DummyLightClient.ts b/src/evm/contracts/DummyLightClient.ts index 76b37304..e84b64ff 100644 --- a/src/evm/contracts/DummyLightClient.ts +++ b/src/evm/contracts/DummyLightClient.ts @@ -59,12 +59,17 @@ export type Ics23ProofStructOutput = [ export interface DummyLightClientInterface extends Interface { getFunction( nameOrSignature: + | "LIGHT_CLIENT_TYPE" | "getState" | "updateClient" | "verifyMembership" | "verifyNonMembership" ): FunctionFragment; + encodeFunctionData( + functionFragment: "LIGHT_CLIENT_TYPE", + values?: undefined + ): string; encodeFunctionData( functionFragment: "getState", values: [BigNumberish] @@ -82,6 +87,10 @@ export interface DummyLightClientInterface extends Interface { values: [Ics23ProofStruct, BytesLike] ): string; + decodeFunctionResult( + functionFragment: "LIGHT_CLIENT_TYPE", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "getState", data: BytesLike): Result; decodeFunctionResult( functionFragment: "updateClient", @@ -140,6 +149,8 @@ export interface DummyLightClient extends BaseContract { event?: TCEvent ): Promise; + LIGHT_CLIENT_TYPE: TypedContractMethod<[], [bigint], "view">; + getState: TypedContractMethod<[arg0: BigNumberish], [bigint], "view">; updateClient: TypedContractMethod< @@ -164,6 +175,9 @@ export interface DummyLightClient extends BaseContract { key: string | FunctionFragment ): T; + getFunction( + nameOrSignature: "LIGHT_CLIENT_TYPE" + ): TypedContractMethod<[], [bigint], "view">; getFunction( nameOrSignature: "getState" ): TypedContractMethod<[arg0: BigNumberish], [bigint], "view">; diff --git a/src/evm/contracts/IDispatcher.ts b/src/evm/contracts/IDispatcher.ts index 3ffa1b26..25da8355 100644 --- a/src/evm/contracts/IDispatcher.ts +++ b/src/evm/contracts/IDispatcher.ts @@ -160,7 +160,7 @@ export interface IDispatcherInterface extends Interface { | "channelOpenTry" | "feeVault" | "getChannel" - | "getOptimisticConsensusState" + | "getState" | "portPrefix" | "recvPacket" | "removeConnection" @@ -168,7 +168,7 @@ export interface IDispatcherInterface extends Interface { | "setClientForConnection" | "setPortPrefix" | "timeout" - | "updateClientWithOptimisticConsensusState" + | "updateClient" | "writeTimeoutPacket" ): FunctionFragment; @@ -251,7 +251,7 @@ export interface IDispatcherInterface extends Interface { values: [AddressLike, BytesLike] ): string; encodeFunctionData( - functionFragment: "getOptimisticConsensusState", + functionFragment: "getState", values: [BigNumberish, string] ): string; encodeFunctionData( @@ -283,7 +283,7 @@ export interface IDispatcherInterface extends Interface { values: [IbcPacketStruct, Ics23ProofStruct] ): string; encodeFunctionData( - functionFragment: "updateClientWithOptimisticConsensusState", + functionFragment: "updateClient", values: [BytesLike, BigNumberish, BigNumberish, string] ): string; encodeFunctionData( @@ -321,10 +321,7 @@ export interface IDispatcherInterface extends Interface { ): Result; decodeFunctionResult(functionFragment: "feeVault", data: BytesLike): Result; decodeFunctionResult(functionFragment: "getChannel", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "getOptimisticConsensusState", - data: BytesLike - ): Result; + decodeFunctionResult(functionFragment: "getState", data: BytesLike): Result; decodeFunctionResult(functionFragment: "portPrefix", data: BytesLike): Result; decodeFunctionResult(functionFragment: "recvPacket", data: BytesLike): Result; decodeFunctionResult( @@ -342,7 +339,7 @@ export interface IDispatcherInterface extends Interface { ): Result; decodeFunctionResult(functionFragment: "timeout", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "updateClientWithOptimisticConsensusState", + functionFragment: "updateClient", data: BytesLike ): Result; decodeFunctionResult( @@ -839,7 +836,7 @@ export interface IDispatcher extends BaseContract { "view" >; - getOptimisticConsensusState: TypedContractMethod< + getState: TypedContractMethod< [height: BigNumberish, connection: string], [bigint], "view" @@ -883,7 +880,7 @@ export interface IDispatcher extends BaseContract { "nonpayable" >; - updateClientWithOptimisticConsensusState: TypedContractMethod< + updateClient: TypedContractMethod< [ proof: BytesLike, height: BigNumberish, @@ -987,7 +984,7 @@ export interface IDispatcher extends BaseContract { "view" >; getFunction( - nameOrSignature: "getOptimisticConsensusState" + nameOrSignature: "getState" ): TypedContractMethod< [height: BigNumberish, connection: string], [bigint], @@ -1031,7 +1028,7 @@ export interface IDispatcher extends BaseContract { "nonpayable" >; getFunction( - nameOrSignature: "updateClientWithOptimisticConsensusState" + nameOrSignature: "updateClient" ): TypedContractMethod< [ proof: BytesLike, diff --git a/src/evm/contracts/ILightClient.ts b/src/evm/contracts/ILightClient.ts index fb1e5510..493d2870 100644 --- a/src/evm/contracts/ILightClient.ts +++ b/src/evm/contracts/ILightClient.ts @@ -59,12 +59,17 @@ export type Ics23ProofStructOutput = [ export interface ILightClientInterface extends Interface { getFunction( nameOrSignature: + | "LIGHT_CLIENT_TYPE" | "getState" | "updateClient" | "verifyMembership" | "verifyNonMembership" ): FunctionFragment; + encodeFunctionData( + functionFragment: "LIGHT_CLIENT_TYPE", + values?: undefined + ): string; encodeFunctionData( functionFragment: "getState", values: [BigNumberish] @@ -82,6 +87,10 @@ export interface ILightClientInterface extends Interface { values: [Ics23ProofStruct, BytesLike] ): string; + decodeFunctionResult( + functionFragment: "LIGHT_CLIENT_TYPE", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "getState", data: BytesLike): Result; decodeFunctionResult( functionFragment: "updateClient", @@ -140,6 +149,8 @@ export interface ILightClient extends BaseContract { event?: TCEvent ): Promise; + LIGHT_CLIENT_TYPE: TypedContractMethod<[], [bigint], "view">; + getState: TypedContractMethod<[height: BigNumberish], [bigint], "view">; updateClient: TypedContractMethod< @@ -164,6 +175,9 @@ export interface ILightClient extends BaseContract { key: string | FunctionFragment ): T; + getFunction( + nameOrSignature: "LIGHT_CLIENT_TYPE" + ): TypedContractMethod<[], [bigint], "view">; getFunction( nameOrSignature: "getState" ): TypedContractMethod<[height: BigNumberish], [bigint], "view">; diff --git a/src/evm/contracts/OptimisticLightClient.ts b/src/evm/contracts/OptimisticLightClient.ts index fa7286d7..b3267ddc 100644 --- a/src/evm/contracts/OptimisticLightClient.ts +++ b/src/evm/contracts/OptimisticLightClient.ts @@ -59,6 +59,7 @@ export type Ics23ProofStructOutput = [ export interface OptimisticLightClientInterface extends Interface { getFunction( nameOrSignature: + | "LIGHT_CLIENT_TYPE" | "consensusStates" | "fraudProofEndtime" | "fraudProofWindowSeconds" @@ -72,6 +73,10 @@ export interface OptimisticLightClientInterface extends Interface { | "verifyNonMembership" ): FunctionFragment; + encodeFunctionData( + functionFragment: "LIGHT_CLIENT_TYPE", + values?: undefined + ): string; encodeFunctionData( functionFragment: "consensusStates", values: [BigNumberish] @@ -114,6 +119,10 @@ export interface OptimisticLightClientInterface extends Interface { values: [Ics23ProofStruct, BytesLike] ): string; + decodeFunctionResult( + functionFragment: "LIGHT_CLIENT_TYPE", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "consensusStates", data: BytesLike @@ -197,6 +206,8 @@ export interface OptimisticLightClient extends BaseContract { event?: TCEvent ): Promise; + LIGHT_CLIENT_TYPE: TypedContractMethod<[], [bigint], "view">; + consensusStates: TypedContractMethod<[arg0: BigNumberish], [bigint], "view">; fraudProofEndtime: TypedContractMethod< @@ -208,22 +219,22 @@ export interface OptimisticLightClient extends BaseContract { fraudProofWindowSeconds: TypedContractMethod<[], [bigint], "view">; getFraudProofEndtime: TypedContractMethod< - [peptideHeight: BigNumberish], + [polymerHeight: BigNumberish], [bigint], "view" >; getState: TypedContractMethod< - [peptideHeight: BigNumberish], + [polymerHeight: BigNumberish], [bigint], "view" >; getStateAndEndTime: TypedContractMethod< - [peptideHeight: BigNumberish], + [polymerHeight: BigNumberish], [ [bigint, bigint, boolean] & { - peptideAppHash: bigint; + polymerAppHash: bigint; fraudProofEndTime: bigint; ended: boolean; } @@ -236,8 +247,8 @@ export interface OptimisticLightClient extends BaseContract { updateClient: TypedContractMethod< [ proof: BytesLike, - peptideHeight: BigNumberish, - peptideAppHash: BigNumberish + polymerHeight: BigNumberish, + polymerAppHash: BigNumberish ], [void], "nonpayable" @@ -261,6 +272,9 @@ export interface OptimisticLightClient extends BaseContract { key: string | FunctionFragment ): T; + getFunction( + nameOrSignature: "LIGHT_CLIENT_TYPE" + ): TypedContractMethod<[], [bigint], "view">; getFunction( nameOrSignature: "consensusStates" ): TypedContractMethod<[arg0: BigNumberish], [bigint], "view">; @@ -272,17 +286,17 @@ export interface OptimisticLightClient extends BaseContract { ): TypedContractMethod<[], [bigint], "view">; getFunction( nameOrSignature: "getFraudProofEndtime" - ): TypedContractMethod<[peptideHeight: BigNumberish], [bigint], "view">; + ): TypedContractMethod<[polymerHeight: BigNumberish], [bigint], "view">; getFunction( nameOrSignature: "getState" - ): TypedContractMethod<[peptideHeight: BigNumberish], [bigint], "view">; + ): TypedContractMethod<[polymerHeight: BigNumberish], [bigint], "view">; getFunction( nameOrSignature: "getStateAndEndTime" ): TypedContractMethod< - [peptideHeight: BigNumberish], + [polymerHeight: BigNumberish], [ [bigint, bigint, boolean] & { - peptideAppHash: bigint; + polymerAppHash: bigint; fraudProofEndTime: bigint; ended: boolean; } @@ -297,8 +311,8 @@ export interface OptimisticLightClient extends BaseContract { ): TypedContractMethod< [ proof: BytesLike, - peptideHeight: BigNumberish, - peptideAppHash: BigNumberish + polymerHeight: BigNumberish, + polymerAppHash: BigNumberish ], [void], "nonpayable" diff --git a/src/evm/contracts/factories/Dispatcher__factory.ts b/src/evm/contracts/factories/Dispatcher__factory.ts index 0d4758f3..a89cfda3 100644 --- a/src/evm/contracts/factories/Dispatcher__factory.ts +++ b/src/evm/contracts/factories/Dispatcher__factory.ts @@ -706,7 +706,7 @@ const _abi = [ }, { type: "function", - name: "getOptimisticConsensusState", + name: "getState", inputs: [ { name: "height", @@ -1170,7 +1170,7 @@ const _abi = [ }, { type: "function", - name: "updateClientWithOptimisticConsensusState", + name: "updateClient", inputs: [ { name: "proof", @@ -2090,7 +2090,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000e7565b600054610100900460ff1615620000935760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e5576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6080516158656200011f60003960008181610c1f01528181610c68015281816113c201528181611402015261149501526158656000f3fe6080604052600436106101c25760003560e01c8063715018a6116100f75780639f59ae7111610095578063cc3c51cb11610064578063cc3c51cb1461051e578063e30c39781461053e578063f2fde38b1461055c578063f90b8e961461057c57600080fd5b80639f59ae7114610486578063ba5a4d25146104a6578063c00fa7c0146104c6578063c3e1155c146104e657600080fd5b80637ab4339d116100d15780637ab4339d1461040857806381bc079b146104285780638da5cb5b146104485780638dd34bb41461046657600080fd5b8063715018a6146103bc5780637774a6d3146103d157806379ba5097146103f357600080fd5b8063478222c211610164578063556d51781161013e578063556d51781461033c5780635d7adf961461035c5780636050b5f31461037c5780636b67055e1461039c57600080fd5b8063478222c2146102cd5780634f1ef2861461030657806352d1902d1461031957600080fd5b80633659cfe6116101a05780633659cfe614610240578063418925b71461026057806342852d2414610280578063429446b6146102ad57600080fd5b80631eb9fc86146101c75780632494546b146101e95780632bf5d19d14610220575b600080fd5b3480156101d357600080fd5b506101e76101e2366004613faf565b61059c565b005b3480156101f557600080fd5b5060fa546102069063ffffffff1681565b60405163ffffffff90911681526020015b60405180910390f35b34801561022c57600080fd5b506101e761023b366004614085565b610926565b34801561024c57600080fd5b506101e761025b36600461412f565b610c15565b34801561026c57600080fd5b506101e761027b36600461418d565b610cfd565b34801561028c57600080fd5b506102a061029b36600461424e565b610db6565b6040516102179190614351565b3480156102b957600080fd5b506101e76102c8366004613faf565b61110e565b3480156102d957600080fd5b50610105546102ee906001600160a01b031681565b6040516001600160a01b039091168152602001610217565b6101e76103143660046144a4565b6113b8565b34801561032557600080fd5b5061032e611488565b604051908152602001610217565b34801561034857600080fd5b506101e7610357366004614507565b61153b565b34801561036857600080fd5b506101e761037736600461456f565b611553565b34801561038857600080fd5b506101e761039736600461456f565b611863565b3480156103a857600080fd5b506101e76103b736600461456f565b611875565b3480156103c857600080fd5b506101e7611f67565b3480156103dd57600080fd5b506103e6611f7b565b60405161021791906145c8565b3480156103ff57600080fd5b506101e7612009565b34801561041457600080fd5b506101e76104233660046145fb565b612080565b34801561043457600080fd5b506101e761044336600461464c565b612209565b34801561045457600080fd5b506033546001600160a01b03166102ee565b34801561047257600080fd5b5061032e610481366004614665565b6122d1565b34801561049257600080fd5b506101e76104a13660046146b0565b61238a565b3480156104b257600080fd5b506101e76104c13660046146f1565b6123df565b3480156104d257600080fd5b506101e76104e13660046146b0565b61291b565b3480156104f257600080fd5b50610506610501366004614795565b612957565b6040516001600160401b039091168152602001610217565b34801561052a57600080fd5b506101e76105393660046147f2565b612aab565b34801561054a57600080fd5b506065546001600160a01b03166102ee565b34801561056857600080fd5b506101e761057736600461412f565b612b56565b34801561058857600080fd5b506101e7610597366004614874565b612bc7565b6105a46131f4565b60028510156105c65760405163af0ba14d60e01b815260040160405180910390fd5b6105ec6105d388806148cc565b60208a01356105e286806148cc565b876020013561324d565b61064e8686600081811061060257610602614912565b905060200281019061061491906148cc565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061328892505050565b6001600160a01b031663cb535ab58273__$d825222459c46c14afb2efe0967c30e98d$__634f9b0fb36106818c806148cc565b8d602001356040518463ffffffff1660e01b81526004016106a493929190614951565b600060405180830381865af41580156106c1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106e991908101906149c5565b73__$d825222459c46c14afb2efe0967c30e98d$__6325e0dd0e60078a8e806040019061071691906148cc565b8f8f6107228e806148cc565b8f602001356040518a63ffffffff1660e01b815260040161074b99989796959493929190614a4e565b600060405180830381865af4158015610768573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261079091908101906149c5565b6040518463ffffffff1660e01b81526004016107ae93929190614b68565b600060405180830381600087803b1580156107c857600080fd5b505af11580156107dc573d6000803e3d6000fd5b50600092506107f791506107f2905089806148cc565b613307565b9050600080610869836301d08fc560e71b6020808e01359089013561081f60408b018b6148cc565b6040516024016108329493929190614d16565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261339a565b9150915081156108ce57610882838b8b8b8b8b8b613486565b826001600160a01b03167fcf8be9ab2b5edf8beb2c45abe8e0cc7646318ac19f6c3164ba2e19e93a8a32af8b602001356040516108c191815260200190565b60405180910390a2610910565b826001600160a01b03167f971a4433f5bff5f011728a4123aeeca4b5275ac20b013cf276e65510491ac26f8260405161090791906145c8565b60405180910390a25b50505061091d6001609755565b50505050505050565b61092e6131f4565b6002831461094f5760405163af0ba14d60e01b815260040160405180910390fd5b61095c6105d388806148cc565b6109728484600081811061060257610602614912565b6001600160a01b031663cb535ab58273__$d825222459c46c14afb2efe0967c30e98d$__634f9b0fb36109a58c806148cc565b8d602001356040518463ffffffff1660e01b81526004016109c893929190614951565b600060405180830381865af41580156109e5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a0d91908101906149c5565b73__$d825222459c46c14afb2efe0967c30e98d$__6325e0dd0e60068c8e8060400190610a3a91906148cc565b8d8d610a468e806148cc565b8f602001356040518a63ffffffff1660e01b8152600401610a6f99989796959493929190614a4e565b600060405180830381865af4158015610a8c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ab491908101906149c5565b6040518463ffffffff1660e01b8152600401610ad293929190614b68565b600060405180830381600087803b158015610aec57600080fd5b505af1158015610b00573d6000803e3d6000fd5b5060009250610b1691506107f2905089806148cc565b9050600080610b6c83634bdb559760e01b8b8a8a8f602001358b8060000190610b3f91906148cc565b8d602001358e8060400190610b5491906148cc565b60405160240161083299989796959493929190614d86565b915091508115610bdc57826001600160a01b03167ff910705a7a768eb5958f281a5f84cae8bffc5dd811ca5cd303dda140a423698c82806020019051810190610bb59190614deb565b8b8b8b8b610bc38c806148cc565b8d602001356040516108c1989796959493929190614e33565b826001600160a01b03167f9e2fe55a3b54b57f82334c273f8d048cd7f05ad19c16cf334276a8c1fec4b6fd8260405161090791906145c8565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610c665760405162461bcd60e51b8152600401610c5d90614e99565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610caf6000805160206157e9833981519152546001600160a01b031690565b6001600160a01b031614610cd55760405162461bcd60e51b8152600401610c5d90614ee5565b610cde81613726565b60408051600080825260208201909252610cfa9183919061372e565b50565b610d056131f4565b600283141580610d13575080155b15610d3157604051637d6ba8a560e01b815260040160405180910390fd5b6000879003610d535760405163f61bbcf360e01b815260040160405180910390fd5b336001600160a01b03167f20fd8a5856711b18d00def4aa6abafbe00ce6d60795e015cc1cad35eb9b463598989898989898989604051610d9a989796959493929190614f31565b60405180910390a2610dac6001609755565b5050505050505050565b610dfc6040805160e08101909152606081526020810160008152602001600015158152602001606081526020016060815260200160008019168152602001606081525090565b6001600160a01b038316600090815260fb6020908152604080832085845290915290819020815160e08101909252805482908290610e3990614f91565b80601f0160208091040260200160405190810160405280929190818152602001828054610e6590614f91565b8015610eb25780601f10610e8757610100808354040283529160200191610eb2565b820191906000526020600020905b815481529060010190602001808311610e9557829003601f168201915b5050509183525050600182015460209091019060ff166002811115610ed957610ed96142d2565b6002811115610eea57610eea6142d2565b81526001820154610100900460ff161515602080830191909152600283018054604080518285028101850182528281529401939260009084015b82821015610fd0578382906000526020600020018054610f4390614f91565b80601f0160208091040260200160405190810160405280929190818152602001828054610f6f90614f91565b8015610fbc5780601f10610f9157610100808354040283529160200191610fbc565b820191906000526020600020905b815481529060010190602001808311610f9f57829003601f168201915b505050505081526020019060010190610f24565b505050508152602001600382018054610fe890614f91565b80601f016020809104026020016040519081016040528092919081815260200182805461101490614f91565b80156110615780601f1061103657610100808354040283529160200191611061565b820191906000526020600020905b81548152906001019060200180831161104457829003601f168201915b505050505081526020016004820154815260200160058201805461108490614f91565b80601f01602080910402602001604051908101604052809291908181526020018280546110b090614f91565b80156110fd5780601f106110d2576101008083540402835291602001916110fd565b820191906000526020600020905b8154815290600101906020018083116110e057829003601f168201915b505050505081525050905092915050565b6111166131f4565b60028510156111385760405163af0ba14d60e01b815260040160405180910390fd5b6111456105d388806148cc565b61115b8686600081811061060257610602614912565b6001600160a01b031663cb535ab58273__$d825222459c46c14afb2efe0967c30e98d$__634f9b0fb361118e8c806148cc565b8d602001356040518463ffffffff1660e01b81526004016111b193929190614951565b600060405180830381865af41580156111ce573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111f691908101906149c5565b73__$d825222459c46c14afb2efe0967c30e98d$__6325e0dd0e60088a8e806040019061122391906148cc565b8f8f61122f8e806148cc565b8f602001356040518a63ffffffff1660e01b815260040161125899989796959493929190614a4e565b600060405180830381865af4158015611275573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261129d91908101906149c5565b6040518463ffffffff1660e01b81526004016112bb93929190614b68565b600060405180830381600087803b1580156112d557600080fd5b505af11580156112e9573d6000803e3d6000fd5b50600092506112ff91506107f2905089806148cc565b90506000806113278363fad28a2460e01b8c6020013560405160240161083291815260200190565b91509150811561137f57611340838b8b8b8b8b8b613486565b826001600160a01b03167fe80f571f70f7cabf9d7ac60ece08421be374117776c311c327a083ca398f802f8b602001356040516108c191815260200190565b826001600160a01b03167ff6a58ef30f66943749e8c29c661c84da143a1c8ed017f5faa92b509e0000875a8260405161090791906145c8565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036114005760405162461bcd60e51b8152600401610c5d90614e99565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114496000805160206157e9833981519152546001600160a01b031690565b6001600160a01b03161461146f5760405162461bcd60e51b8152600401610c5d90614ee5565b61147882613726565b6114848282600161372e565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146115285760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610c5d565b506000805160206157e983398151915290565b611543613899565b61154e8383836138f3565b505050565b61155b6131f4565b61157461156b6020840184614fc5565b6020013561398e565b6001600160a01b031663cb535ab58273__$d825222459c46c14afb2efe0967c30e98d$__634b5728d1866040518263ffffffff1660e01b81526004016115ba9190615047565b600060405180830381865af41580156115d7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115ff91908101906149c5565b604051637e4794ed60e11b815273__$d825222459c46c14afb2efe0967c30e98d$__9063fc8f29da90611636908990600401615047565b602060405180830381865af4158015611653573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116779190615109565b60405160200161168991815260200190565b6040516020818303038152906040526040518463ffffffff1660e01b81526004016116b693929190614b68565b600060405180830381600087803b1580156116d057600080fd5b505af11580156116e4573d6000803e3d6000fd5b5050505060006117078380602001906116fd9190614fc5565b6107f290806148cc565b6001600160a01b0381166000908152610100602090815260408220929350909190829061173690870187614fc5565b602001358152602001908152602001600020600085604001602081019061175d9190615122565b6001600160401b0316815260208101919091526040016000205460ff169050801561179b5760405163066c745760e01b815260040160405180910390fd5b6117c36117ae60e0860160c08701615122565b6117be60c0870160a08801615122565b613a59565b6117e0576040516312c9cc9f60e01b815260040160405180910390fd5b6117ed6020850185614fc5565b602001356001600160a01b0383167fedbcd9eeb09d85c3ea1b5bf002c04478059cb261cab82c903885cefccae374bc61182c6060880160408901615122565b6080880161184060e08a0160c08b01615122565b60405161184f9392919061513d565b60405180910390a350506114846001609755565b61186b6131f4565b6114846001609755565b61187d6131f4565b61188d61156b6020840184614fc5565b6001600160a01b031663cb535ab58273__$d825222459c46c14afb2efe0967c30e98d$__634b5728d1866040518263ffffffff1660e01b81526004016118d39190615047565b600060405180830381865af41580156118f0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261191891908101906149c5565b604051637e4794ed60e11b815273__$d825222459c46c14afb2efe0967c30e98d$__9063fc8f29da9061194f908990600401615047565b602060405180830381865af415801561196c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119909190615109565b6040516020016119a291815260200190565b6040516020818303038152906040526040518463ffffffff1660e01b81526004016119cf93929190614b68565b600060405180830381600087803b1580156119e957600080fd5b505af11580156119fd573d6000803e3d6000fd5b505050506000611a168380602001906116fd9190614fc5565b6001600160a01b03811660009081526101006020908152604082209293509091908290611a4590870187614fc5565b6020013581526020019081526020016000206000856040016020810190611a6c9190615122565b6001600160401b0316815260208101919091526040016000205460ff1690508015611aaa5760405163066c745760e01b815260040160405180910390fd5b6001600160a01b03821660009081526101006020908152604082206001929091611ad690880188614fc5565b6020013581526020019081526020016000206000866040016020810190611afd9190615122565b6001600160401b031681526020810191909152604001600020805460ff191691151591909117905560026001600160a01b038316600090815260fb6020908152604082209190611b4f90880188614fc5565b60209081013582528101919091526040016000206001015460ff166002811115611b7b57611b7b6142d2565b03611c7a576001600160a01b038216600090815260fd6020908152604082209190611ba890870187614fc5565b60209081013582528101919091526040908101600020546001600160401b031690611bd99060608701908701615122565b6001600160401b031614611c005760405163362a414d60e01b815260040160405180910390fd5b611c106060850160408601615122565b611c1b90600161516d565b6001600160a01b038316600090815260fd6020908152604082209190611c4390880188614fc5565b60200135815260200190815260200160002060006101000a8154816001600160401b0302191690836001600160401b031602179055505b611c876020850185614fc5565b602001356001600160a01b0383167fde5b57e6566d68a30b0979431df3d5df6db3b9aa89f8820f595b9315bf86d067611cc66060880160408901615122565b6040516001600160401b03909116815260200160405180910390a3611cf46117ae60e0860160c08701615122565b15611d7757611d066020850185614fc5565b602001356001600160a01b0383167fedbcd9eeb09d85c3ea1b5bf002c04478059cb261cab82c903885cefccae374bc611d456060880160408901615122565b60808801611d5960e08a0160c08b01615122565b604051611d689392919061513d565b60405180910390a3505061186b565b604080518082019091526000815260606020820152600080611dac85634dcc0aa660e01b896040516024016108329190615257565b915091508115611dd15780806020019051810190611dca919061526a565b9250611de9565b60408051808201909152600081526020810182905292505b6001600160a01b0385166000908152610101602090815260408220908290611e13908b018b614fc5565b6020013581526020019081526020016000206000896040016020810190611e3a9190615122565b6001600160401b0316815260208101919091526040016000205460ff1690508015611e7857604051637aa549d360e01b815260040160405180910390fd5b6001600160a01b03861660009081526101016020908152604082206001929091611ea4908c018c614fc5565b60200135815260200190815260200160002060008a6040016020810190611ecb9190615122565b6001600160401b03168152602080820192909252604001600020805460ff191692151592909217909155611f0190890189614fc5565b602001356001600160a01b0387167fa32e6f42b1d63fb83ad73b009a6dbb9413d1da02e95b1bb08f081815eea8db20611f4060608c0160408d01615122565b87604051611f4f929190615320565b60405180910390a35050505050506114846001609755565b611f6f613899565b611f796000613aa7565b565b60f98054611f8890614f91565b80601f0160208091040260200160405190810160405280929190818152602001828054611fb490614f91565b80156120015780601f10611fd657610100808354040283529160200191612001565b820191906000526020600020905b815481529060010190602001808311611fe457829003601f168201915b505050505081565b60655433906001600160a01b031681146120775760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610c5d565b610cfa81613aa7565b600054600290610100900460ff161580156120a2575060005460ff8083169116105b6121055760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610c5d565b6000805461ffff191660ff8316176101001790556121216131f4565b82516000036121435760405163e8cf362360e01b815260040160405180910390fd5b6001600160a01b03821661216a5760405163cbdd34cf60e01b815260040160405180910390fd5b612172613ac0565b61217a613aef565b60f96121868482615388565b50825160fa805463ffffffff191663ffffffff90921691909117905561010580546001600160a01b0319166001600160a01b03841617905560016097556000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b6122116131f4565b61221a81613b1e565b33600090815260fb6020908152604080832084845290915281209061223f8282613e39565b60018201805461ffff1916905561225a600283016000613e73565b612268600383016000613e39565b60048201600090556005820160006122809190613e39565b505060008181526101036020526040812061229a91613e39565b604051819033907f21372e37743553ba8e5f61239803174a827c7732d53ec8adcb76c6b3bb2c13f190600090a3610cfa6001609755565b600061231283838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061328892505050565b6001600160a01b03166344c9af28856040518263ffffffff1660e01b815260040161233f91815260200190565b602060405180830381865afa15801561235c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123809190615109565b90505b9392505050565b612392613899565b60008190036123b45760405163e8cf362360e01b815260040160405180910390fd5b60f96123c1828483615447565b5060fa805463ffffffff191663ffffffff9290921691909117905550565b6123e76131f4565b60006123f66116fd8680614fc5565b905061240561156b8680614fc5565b6001600160a01b031663cb535ab58373__$d825222459c46c14afb2efe0967c30e98d$__6311a7a373896040518263ffffffff1660e01b815260040161244b9190615047565b600060405180830381865af4158015612468573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261249091908101906149c5565b6040516374e9704560e01b815273__$d825222459c46c14afb2efe0967c30e98d$__906374e97045906124c9908b908b90600401615507565b602060405180830381865af41580156124e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061250a9190615109565b60405160200161251c91815260200190565b6040516020818303038152906040526040518463ffffffff1660e01b815260040161254993929190614b68565b600060405180830381600087803b15801561256357600080fd5b505af1158015612577573d6000803e3d6000fd5b505050506001600160a01b038116600090815260ff602052604081208161259e8880614fc5565b60200135815260200190815260200160002060008760400160208101906125c59190615122565b6001600160401b0316815260208101919091526040016000205460ff169050806126025760405163ca89746b60e01b815260040160405180910390fd5b6000806126a184637e1d42b560e01b8a73__$d825222459c46c14afb2efe0967c30e98d$__63360b8cd78c8c6040518363ffffffff1660e01b815260040161264b929190615507565b600060405180830381865af4158015612668573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612690919081019061526a565b60405160240161083292919061551b565b9150915081156128c55760026001600160a01b038516600090815260fb60205260408120906126d08b80614fc5565b60209081013582528101919091526040016000206001015460ff1660028111156126fc576126fc6142d2565b036127f1576001600160a01b038416600090815260fe60205260408120906127248a80614fc5565b60209081013582528101919091526040908101600020546001600160401b0316906127559060608b01908b01615122565b6001600160401b03161461277c5760405163362a414d60e01b815260040160405180910390fd5b61278c6060890160408a01615122565b61279790600161516d565b6001600160a01b038516600090815260fe60205260408120906127ba8b80614fc5565b60200135815260200190815260200160002060006101000a8154816001600160401b0302191690836001600160401b031602179055505b6001600160a01b038416600090815260ff60205260408120906128148a80614fc5565b602001358152602001908152602001600020600089604001602081019061283b9190615122565b6001600160401b031681526020810191909152604001600020805460ff191690556128668880614fc5565b602001356001600160a01b0385167fe46f6591236abe528fe47a3b281fb002524dadd3e62b1f317ed285d07273c3b16128a560608c0160408d01615122565b6040516001600160401b03909116815260200160405180910390a3612907565b836001600160a01b03167f625eea143c9dae6915c809da47016c22d9cd006c3ace7c345c5cbcf57d3aefbc826040516128fe91906145c8565b60405180910390a25b505050506129156001609755565b50505050565b612923613899565b6101048282604051612936929190615540565b90815260405190819003602001902080546001600160a01b03191690555050565b60006129616131f4565b61296a85613b1e565b42826001600160401b0316116129935760405163551ea0fb60e11b815260040160405180910390fd5b5033600090815260fc602090815260408083208784529091528120546001600160401b0316908190036129d957604051631e510bfb60e21b815260040160405180910390fd5b33600090815260ff6020908152604080832088845282528083206001600160401b03851684529091529020805460ff19166001908117909155612a1d90829061516d565b33600081815260fc602090815260408083208a845290915290819020805467ffffffffffffffff19166001600160401b03949094169390931790925590518691907fb5bff96e18da044e4e34510d16df9053b9f1920f6a960732e5aaf22fe9b8013690612a91908890889087908990615550565b60405180910390a3612aa36001609755565b949350505050565b612aea82828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061328892505050565b6001600160a01b03166349ff245e878787876040518563ffffffff1660e01b8152600401612b1b9493929190615585565b600060405180830381600087803b158015612b3557600080fd5b505af1158015612b49573d6000803e3d6000fd5b505050505b505050505050565b612b5e613899565b606580546001600160a01b0383166001600160a01b03199091168117909155612b8f6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b612bcf6131f4565b6001600160a01b038316612bf65760405163cbdd34cf60e01b815260040160405180910390fd5b6001600160a01b038316600090815260fb60209081526040808320858452909152808220815160e08101909252805482908290612c3290614f91565b80601f0160208091040260200160405190810160405280929190818152602001828054612c5e90614f91565b8015612cab5780601f10612c8057610100808354040283529160200191612cab565b820191906000526020600020905b815481529060010190602001808311612c8e57829003601f168201915b5050509183525050600182015460209091019060ff166002811115612cd257612cd26142d2565b6002811115612ce357612ce36142d2565b81526001820154610100900460ff161515602080830191909152600283018054604080518285028101850182528281529401939260009084015b82821015612dc9578382906000526020600020018054612d3c90614f91565b80601f0160208091040260200160405190810160405280929190818152602001828054612d6890614f91565b8015612db55780601f10612d8a57610100808354040283529160200191612db5565b820191906000526020600020905b815481529060010190602001808311612d9857829003601f168201915b505050505081526020019060010190612d1d565b505050508152602001600382018054612de190614f91565b80601f0160208091040260200160405190810160405280929190818152602001828054612e0d90614f91565b8015612e5a5780601f10612e2f57610100808354040283529160200191612e5a565b820191906000526020600020905b815481529060010190602001808311612e3d57829003601f168201915b5050505050815260200160048201548152602001600582018054612e7d90614f91565b80601f0160208091040260200160405190810160405280929190818152602001828054612ea990614f91565b8015612ef65780601f10612ecb57610100808354040283529160200191612ef6565b820191906000526020600020905b815481529060010190602001808311612ed957829003601f168201915b5050509190925250505060a0810151909150612f2557604051634d93b09d60e11b815260040160405180910390fd5b612f2e8361398e565b6001600160a01b031663cb535ab58373__$d825222459c46c14afb2efe0967c30e98d$__636f6547268560c00151886040518363ffffffff1660e01b8152600401612f7a9291906155ac565b600060405180830381865af4158015612f97573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612fbf91908101906149c5565b602085015185516060870151608088015160a0890151604051631f621e1560e31b815273__$d825222459c46c14afb2efe0967c30e98d$__9563fb10f0a8956130159560099592949193909291906004016155ce565b600060405180830381865af4158015613032573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261305a91908101906149c5565b6040518463ffffffff1660e01b815260040161307893929190614b68565b600060405180830381600087803b15801561309257600080fd5b505af11580156130a6573d6000803e3d6000fd5b505050506000806130d686633f9fdbe460e01b8786608001518760a0015160405160240161083293929190615676565b6001600160a01b038816600090815260fb602090815260408083208a845290915281209294509092506131098282613e39565b60018201805461ffff19169055613124600283016000613e73565b613132600383016000613e39565b600482016000905560058201600061314a9190613e39565b505060008581526101036020526040812061316491613e39565b81156131a55760405185906001600160a01b038816907f5f010dbbd6bf46aec8131c5456301a75cd688d3cca9bc8380c9e26301be2072990600090a36131e7565b856001600160a01b03167fc9d36d7a317cb116925d5cb66f0069fe825822fe23e9cf3f421c38cf444caa30826040516131de91906145c8565b60405180910390a25b50505061154e6001609755565b6002609754036132465760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610c5d565b6002609755565b841580613258575081155b80613261575083155b8061326a575080155b15612b4e57604051637d6ba8a560e01b815260040160405180910390fd5b600081516000036132b65760405163524e171160e01b81526020600482015260006024820152604401610c5d565b610104826040516132c7919061569f565b908152604051908190036020019020546001600160a01b0316905080613302578160405163036c4d8760e11b8152600401610c5d91906145c8565b919050565b60fa5460009073__$f61eb90c6f674e787d51c07f105fa231e2$__9063a1ef9a989061333c90859063ffffffff1681886156b1565b6040518363ffffffff1660e01b8152600401613359929190615507565b602060405180830381865af4158015613376573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061238391906156db565b600060606001600160a01b0384163b6133e257505060408051808201909152601481527318d85b1b081d1bc81b9bdb8b58dbdb9d1c9858dd60621b602082015260009061347f565b60005a9050846001600160a01b0316846040516133ff919061569f565b6000604051808303816000865af19150503d806000811461343c576040519150601f19603f3d011682016040523d82523d6000602084013e613441565b606091505b5090935091508215801561345f575061345b6040826156f8565b5a11155b1561347d5760405163b08ede0960e01b815260040160405180910390fd5b505b9250929050565b6040518060e001604052808780604001906134a191906148cc565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050908252506020018460028111156134ed576134ed6142d2565b81528315156020820152604001613504868861571a565b815260200161351383806148cc565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050908252506020838101359082015260400161356188806148cc565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509390945250506001600160a01b038a16815260fb602090815260408083208b83013584529091529020825190915081906135cb9082615388565b50602082015160018083018054909160ff19909116908360028111156135f3576135f36142d2565b021790555060408201516001820180549115156101000261ff001990921691909117905560608201518051613632916002840191602090910190613e91565b50608082015160038201906136479082615388565b5060a0820151600482015560c082015160058201906136669082615388565b5050506001600160a01b038716600081815260fc602090815260408083208a8301358085529083528184208054600167ffffffffffffffff19918216811790925586865260fd85528386208387528552838620805482168317905595855260fe84528285209185529252822080549093161790915585908590816136ec576136ec614912565b90506020028101906136fe91906148cc565b60208089013560009081526101039091526040902091610dac919083615447565b6001609755565b610cfa613899565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156137615761154e83613b59565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156137bb575060408051601f3d908101601f191682019092526137b891810190615109565b60015b61381e5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610c5d565b6000805160206157e9833981519152811461388d5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610c5d565b5061154e838383613bf5565b6033546001600160a01b03163314611f795760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c5d565b600082900361391f5760405163524e171160e01b81526020600482015260006024820152604401610c5d565b6001600160a01b0381166139465760405163cbdd34cf60e01b815260040160405180910390fd5b80610104848460405161395a929190615540565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b0319909216919091179055505050565b60008181526101036020526040812080548291906139ab90614f91565b80601f01602080910402602001604051908101604052809291908181526020018280546139d790614f91565b8015613a245780601f106139f957610100808354040283529160200191613a24565b820191906000526020600020905b815481529060010190602001808311613a0757829003601f168201915b505050505090508051600003613a50576040516363b99a9d60e11b815260048101849052602401610c5d565b61238381613288565b60006001600160401b03831615801590613a7c5750826001600160401b03164210155b8061238357506001600160401b038216158015906123835750506001600160401b0316431015919050565b606580546001600160a01b0319169055610cfa81613c1a565b600054610100900460ff16613ae75760405162461bcd60e51b8152600401610c5d9061579d565b611f79613c6c565b600054610100900460ff16613b165760405162461bcd60e51b8152600401610c5d9061579d565b611f79613c9c565b33600090815260fb60209081526040808320848452909152902060040154610cfa57604051631109bfb360e31b815260040160405180910390fd5b6001600160a01b0381163b613bc65760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610c5d565b6000805160206157e983398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b613bfe83613cc3565b600082511180613c0b5750805b1561154e576129158383613d03565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16613c935760405162461bcd60e51b8152600401610c5d9061579d565b611f7933613aa7565b600054610100900460ff1661371f5760405162461bcd60e51b8152600401610c5d9061579d565b613ccc81613b59565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606123838383604051806060016040528060278152602001615809602791396060600080856001600160a01b031685604051613d40919061569f565b600060405180830381855af49150503d8060008114613d7b576040519150601f19603f3d011682016040523d82523d6000602084013e613d80565b606091505b5091509150613d9186838387613d9b565b9695505050505050565b60608315613e0a578251600003613e03576001600160a01b0385163b613e035760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610c5d565b5081612aa3565b612aa38383815115613e1f5781518083602001fd5b8060405162461bcd60e51b8152600401610c5d91906145c8565b508054613e4590614f91565b6000825580601f10613e55575050565b601f016020900490600052602060002090810190610cfa9190613ee7565b5080546000825590600052602060002090810190610cfa9190613efc565b828054828255906000526020600020908101928215613ed7579160200282015b82811115613ed75782518290613ec79082615388565b5091602001919060010190613eb1565b50613ee3929150613efc565b5090565b5b80821115613ee35760008155600101613ee8565b80821115613ee3576000613f108282613e39565b50600101613efc565b600060608284031215613f2b57600080fd5b50919050565b60008083601f840112613f4357600080fd5b5081356001600160401b03811115613f5a57600080fd5b6020830191508360208260051b850101111561347f57600080fd5b80356003811061330257600080fd5b8015158114610cfa57600080fd5b803561330281613f84565b600060408284031215613f2b57600080fd5b600080600080600080600060c0888a031215613fca57600080fd5b87356001600160401b0380821115613fe157600080fd5b613fed8b838c01613f19565b985060208a013591508082111561400357600080fd5b61400f8b838c01613f31565b909850965086915061402360408b01613f75565b955061403160608b01613f92565b945060808a013591508082111561404757600080fd5b6140538b838c01613f19565b935060a08a013591508082111561406957600080fd5b506140768a828b01613f9d565b91505092959891949750929550565b600080600080600080600060c0888a0312156140a057600080fd5b87356001600160401b03808211156140b757600080fd5b6140c38b838c01613f19565b98506140d160208b01613f75565b97506140df60408b01613f92565b965060608a01359150808211156140f557600080fd5b6141018b838c01613f31565b909650945060808a013591508082111561404757600080fd5b6001600160a01b0381168114610cfa57600080fd5b60006020828403121561414157600080fd5b81356123838161411a565b60008083601f84011261415e57600080fd5b5081356001600160401b0381111561417557600080fd5b60208301915083602082850101111561347f57600080fd5b60008060008060008060008060a0898b0312156141a957600080fd5b88356001600160401b03808211156141c057600080fd5b6141cc8c838d0161414c565b909a5098508891506141e060208c01613f75565b975060408b013591506141f282613f84565b90955060608a0135908082111561420857600080fd5b6142148c838d01613f31565b909650945060808b013591508082111561422d57600080fd5b5061423a8b828c0161414c565b999c989b5096995094979396929594505050565b6000806040838503121561426157600080fd5b823561426c8161411a565b946020939093013593505050565b60005b8381101561429557818101518382015260200161427d565b838111156129155750506000910152565b600081518084526142be81602086016020860161427a565b601f01601f19169290920160200192915050565b634e487b7160e01b600052602160045260246000fd5b600381106142f8576142f86142d2565b9052565b600081518084526020808501808196508360051b8101915082860160005b858110156143445782840389526143328483516142a6565b9885019893509084019060010161431a565b5091979650505050505050565b602081526000825160e0602084015261436e6101008401826142a6565b9050602084015161438260408501826142e8565b506040840151151560608401526060840151601f19808584030160808601526143ab83836142fc565b925060808601519150808584030160a08601526143c883836142a6565b925060a086015160c086015260c08601519150808584030160e0860152506143f082826142a6565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715614437576144376143f9565b604052919050565b60006001600160401b03821115614458576144586143f9565b50601f01601f191660200190565b60006144796144748461443f565b61440f565b905082815283838301111561448d57600080fd5b828260208301376000602084830101529392505050565b600080604083850312156144b757600080fd5b82356144c28161411a565b915060208301356001600160401b038111156144dd57600080fd5b8301601f810185136144ee57600080fd5b6144fd85823560208401614466565b9150509250929050565b60008060006040848603121561451c57600080fd5b83356001600160401b0381111561453257600080fd5b61453e8682870161414c565b90945092505060208401356145528161411a565b809150509250925092565b600060e08284031215613f2b57600080fd5b6000806040838503121561458257600080fd5b82356001600160401b038082111561459957600080fd5b6145a58683870161455d565b935060208501359150808211156145bb57600080fd5b506144fd85828601613f9d565b60208152600061238360208301846142a6565b600082601f8301126145ec57600080fd5b61238383833560208501614466565b6000806040838503121561460e57600080fd5b82356001600160401b0381111561462457600080fd5b614630858286016145db565b92505060208301356146418161411a565b809150509250929050565b60006020828403121561465e57600080fd5b5035919050565b60008060006040848603121561467a57600080fd5b8335925060208401356001600160401b0381111561469757600080fd5b6146a38682870161414c565b9497909650939450505050565b600080602083850312156146c357600080fd5b82356001600160401b038111156146d957600080fd5b6146e58582860161414c565b90969095509350505050565b6000806000806060858703121561470757600080fd5b84356001600160401b038082111561471e57600080fd5b61472a8883890161455d565b9550602087013591508082111561474057600080fd5b61474c8883890161414c565b9095509350604087013591508082111561476557600080fd5b5061477287828801613f9d565b91505092959194509250565b80356001600160401b038116811461330257600080fd5b600080600080606085870312156147ab57600080fd5b8435935060208501356001600160401b038111156147c857600080fd5b6147d48782880161414c565b90945092506147e790506040860161477e565b905092959194509250565b6000806000806000806080878903121561480b57600080fd5b86356001600160401b038082111561482257600080fd5b61482e8a838b0161414c565b90985096506020890135955060408901359450606089013591508082111561485557600080fd5b5061486289828a0161414c565b979a9699509497509295939492505050565b60008060006060848603121561488957600080fd5b83356148948161411a565b92506020840135915060408401356001600160401b038111156148b657600080fd5b6148c286828701613f9d565b9150509250925092565b6000808335601e198436030181126148e357600080fd5b8301803591506001600160401b038211156148fd57600080fd5b60200191503681900382131561347f57600080fd5b634e487b7160e01b600052603260045260246000fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b604081526000614965604083018587614928565b9050826020830152949350505050565b60006149836144748461443f565b905082815283838301111561499757600080fd5b61238383602083018461427a565b600082601f8301126149b657600080fd5b61238383835160208501614975565b6000602082840312156149d757600080fd5b81516001600160401b038111156149ed57600080fd5b612aa3848285016149a5565b600a81106142f8576142f86142d2565b6000808335601e19843603018112614a2057600080fd5b83016020810192503590506001600160401b03811115614a3f57600080fd5b80360382131561347f57600080fd5b614a58818b6149f9565b60006020614a688184018c6142e8565b60c06040840152614a7d60c084018a8c614928565b8381036060850152878152818101600589901b820183018a60005b8b811015614ad257848303601f19018452614ab3828e614a09565b614abe858284614928565b958801959450505090850190600101614a98565b50508581036080870152614ae781898b614928565b9450505050508260a08301529a9950505050505050505050565b6000808335601e19843603018112614b1857600080fd5b83016020810192503590506001600160401b03811115614b3757600080fd5b8060051b360382131561347f57600080fd5b60008235603e19833603018112614b5f57600080fd5b90910192915050565b6000606080835260a0808401614b7e8889614b01565b60408786018190529281905260059260c08089019083861b8a01018460005b85811015614cde578b830360bf19018452813536889003607e19018112614bc357600080fd5b87016080848101614bd48380614b01565b928752908290528b860191808c1b87018d0191908160005b82811015614c5c57898503609f19018652614c078285614b49565b614c118182614a09565b8e8852614c218f89018284614928565b9150506020614c3281840184614a09565b9350888303828a0152614c46838583614928565b9982019998505093909301925050600101614bec565b5050505060209150614c7082840184614a09565b87830384890152614c82838284614928565b92505050614c9288840184614a09565b8783038a890152614ca4838284614928565b92505050614cb48d840184614a09565b93508682038e880152614cc8828583614928565b9783019796505050929092019150600101614b9d565b505060208d013560808b015289810360208b0152614cfc818d6142a6565b97505050878603818901525050505050613d9181856142a6565b848152836020820152606060408201526000613d91606083018486614928565b81835260006020808501808196508560051b810191508460005b87811015614344578284038952614d678288614a09565b614d72868284614928565b9a87019a9550505090840190600101614d50565b614d90818b6142e8565b60c060208201526000614da760c083018a8c614d36565b8860408401528281036060840152614dc081888a614928565b905085608084015282810360a0840152614ddb818587614928565b9c9b505050505050505050505050565b600060208284031215614dfd57600080fd5b81516001600160401b03811115614e1357600080fd5b8201601f81018413614e2457600080fd5b612aa384825160208401614975565b60c081526000614e4660c083018b6142a6565b614e53602084018b6142e8565b88151560408401528281036060840152614e6e81888a614d36565b90508281036080840152614e83818688614928565b9150508260a08301529998505050505050505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b60a081526000614f4560a083018a8c614928565b614f52602084018a6142e8565b87151560408401528281036060840152614f6d818789614d36565b90508281036080840152614f82818587614928565b9b9a5050505050505050505050565b600181811c90821680614fa557607f821691505b602082108103613f2b57634e487b7160e01b600052602260045260246000fd5b60008235603e19833603018112614fdb57600080fd5b9190910192915050565b6000614ff18283614a09565b60408552615003604086018284614928565b915050602083013560208501528091505092915050565b6001600160401b038061502c8361477e565b1683528061503c6020840161477e565b166020840152505050565b6020815260006150578384614b49565b60e0602084015261506c610100840182614fe5565b905061507b6020850185614b49565b601f19808584030160408601526150928383614fe5565b92506150a06040870161477e565b91506001600160401b0380831660608701526150bf6060880188614a09565b9350828786030160808801526150d6858583614928565b9450506150e960a087016080890161501a565b806150f660c0890161477e565b1660e08701525050508091505092915050565b60006020828403121561511b57600080fd5b5051919050565b60006020828403121561513457600080fd5b6123838261477e565b6001600160401b038481168252608082019061515c602084018661501a565b808416606084015250949350505050565b60006001600160401b0380831681851680830382111561519d57634e487b7160e01b600052601160045260246000fd5b01949350505050565b60006151b28283614b49565b60e084526151c360e0850182614fe5565b90506151d26020840184614b49565b84820360208601526151e48282614fe5565b9150506151f36040840161477e565b6001600160401b0380821660408701526152106060860186614a09565b92508684036060880152615225848483614928565b935050615238608087016080870161501a565b8061524560c0870161477e565b1660c087015250508091505092915050565b60208152600061238360208301846151a6565b60006020828403121561527c57600080fd5b81516001600160401b038082111561529357600080fd5b90830190604082860312156152a757600080fd5b6040516040810181811083821117156152c2576152c26143f9565b60405282516152d081613f84565b81526020830151828111156152e457600080fd5b6152f0878286016149a5565b60208301525095945050505050565b8051151582526000602082015160406020850152612aa360408501826142a6565b6001600160401b038316815260406020820152600061238060408301846152ff565b601f82111561154e57600081815260208120601f850160051c810160208610156153695750805b601f850160051c820191505b81811015612b4e57828155600101615375565b81516001600160401b038111156153a1576153a16143f9565b6153b5816153af8454614f91565b84615342565b602080601f8311600181146153ea57600084156153d25750858301515b600019600386901b1c1916600185901b178555612b4e565b600085815260208120601f198616915b82811015615419578886015182559484019460019091019084016153fa565b50858210156154375787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160401b0383111561545e5761545e6143f9565b6154728361546c8354614f91565b83615342565b6000601f8411600181146154a6576000851561548e5750838201355b600019600387901b1c1916600186901b178355615500565b600083815260209020601f19861690835b828110156154d757868501358255602094850194600190920191016154b7565b50868210156154f45760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b602081526000612380602083018486614928565b60408152600061552e60408301856151a6565b82810360208401526143f081856152ff565b8183823760009101908152919050565b606081526000615564606083018688614928565b6001600160401b039485166020840152929093166040909101529392505050565b606081526000615599606083018688614928565b6020830194909452506040015292915050565b6040815260006155bf60408301856142a6565b90508260208301529392505050565b6155d881886149f9565b600060206155e8818401896142e8565b60c060408401526155fc60c08401886142a6565b8381036060850152865180825282820190600581901b83018401848a0160005b8381101561564a57601f198684030185526156388383516142a6565b9487019492509086019060010161561c565b5050868103608088015261565e818a6142a6565b955050505050508260a0830152979650505050505050565b83815260606020820152600061568f60608301856142a6565b9050826040830152949350505050565b60008251614fdb81846020870161427a565b600080858511156156c157600080fd5b838611156156ce57600080fd5b5050820193919092039150565b6000602082840312156156ed57600080fd5b81516123838161411a565b60008261571557634e487b7160e01b600052601260045260246000fd5b500490565b60006001600160401b0380841115615734576157346143f9565b8360051b602061574581830161440f565b86815291850191818101903684111561575d57600080fd5b865b84811015615791578035868111156157775760008081fd5b61578336828b016145db565b84525091830191830161575f565b50979650505050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212200a920586f19e48cb725d7494aca359287e44cef635fa0eb47c16f74eaf3bcf3c64736f6c634300080f0033"; + "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000e7565b600054610100900460ff1615620000935760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e5576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6080516158656200011f60003960008181610c1f01528181610c68015281816113c201528181611402015261149501526158656000f3fe6080604052600436106101c25760003560e01c8063715018a6116100f7578063b12f89be11610095578063c899e27211610064578063c899e2721461051e578063e30c39781461053e578063f2fde38b1461055c578063f90b8e961461057c57600080fd5b8063b12f89be14610486578063ba5a4d25146104a6578063c00fa7c0146104c6578063c3e1155c146104e657600080fd5b80637ab4339d116100d15780637ab4339d1461040857806381bc079b146104285780638da5cb5b146104485780639f59ae711461046657600080fd5b8063715018a6146103bc5780637774a6d3146103d157806379ba5097146103f357600080fd5b8063478222c211610164578063556d51781161013e578063556d51781461033c5780635d7adf961461035c5780636050b5f31461037c5780636b67055e1461039c57600080fd5b8063478222c2146102cd5780634f1ef2861461030657806352d1902d1461031957600080fd5b80633659cfe6116101a05780633659cfe614610240578063418925b71461026057806342852d2414610280578063429446b6146102ad57600080fd5b80631eb9fc86146101c75780632494546b146101e95780632bf5d19d14610220575b600080fd5b3480156101d357600080fd5b506101e76101e2366004613faf565b61059c565b005b3480156101f557600080fd5b5060fa546102069063ffffffff1681565b60405163ffffffff90911681526020015b60405180910390f35b34801561022c57600080fd5b506101e761023b366004614085565b610926565b34801561024c57600080fd5b506101e761025b36600461412f565b610c15565b34801561026c57600080fd5b506101e761027b36600461418d565b610cfd565b34801561028c57600080fd5b506102a061029b36600461424e565b610db6565b6040516102179190614351565b3480156102b957600080fd5b506101e76102c8366004613faf565b61110e565b3480156102d957600080fd5b50610105546102ee906001600160a01b031681565b6040516001600160a01b039091168152602001610217565b6101e76103143660046144a4565b6113b8565b34801561032557600080fd5b5061032e611488565b604051908152602001610217565b34801561034857600080fd5b506101e7610357366004614507565b61153b565b34801561036857600080fd5b506101e761037736600461456f565b611553565b34801561038857600080fd5b506101e761039736600461456f565b611863565b3480156103a857600080fd5b506101e76103b736600461456f565b611875565b3480156103c857600080fd5b506101e7611f67565b3480156103dd57600080fd5b506103e6611f7b565b60405161021791906145c8565b3480156103ff57600080fd5b506101e7612009565b34801561041457600080fd5b506101e76104233660046145fb565b612080565b34801561043457600080fd5b506101e761044336600461464c565b612209565b34801561045457600080fd5b506033546001600160a01b03166102ee565b34801561047257600080fd5b506101e7610481366004614665565b6122d1565b34801561049257600080fd5b5061032e6104a13660046146a6565b612326565b3480156104b257600080fd5b506101e76104c13660046146f1565b6123df565b3480156104d257600080fd5b506101e76104e1366004614665565b61291b565b3480156104f257600080fd5b50610506610501366004614795565b612957565b6040516001600160401b039091168152602001610217565b34801561052a57600080fd5b506101e76105393660046147f2565b612aab565b34801561054a57600080fd5b506065546001600160a01b03166102ee565b34801561056857600080fd5b506101e761057736600461412f565b612b56565b34801561058857600080fd5b506101e7610597366004614874565b612bc7565b6105a46131f4565b60028510156105c65760405163af0ba14d60e01b815260040160405180910390fd5b6105ec6105d388806148cc565b60208a01356105e286806148cc565b876020013561324d565b61064e8686600081811061060257610602614912565b905060200281019061061491906148cc565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061328892505050565b6001600160a01b031663cb535ab58273__$d825222459c46c14afb2efe0967c30e98d$__634f9b0fb36106818c806148cc565b8d602001356040518463ffffffff1660e01b81526004016106a493929190614951565b600060405180830381865af41580156106c1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106e991908101906149c5565b73__$d825222459c46c14afb2efe0967c30e98d$__6325e0dd0e60078a8e806040019061071691906148cc565b8f8f6107228e806148cc565b8f602001356040518a63ffffffff1660e01b815260040161074b99989796959493929190614a4e565b600060405180830381865af4158015610768573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261079091908101906149c5565b6040518463ffffffff1660e01b81526004016107ae93929190614b68565b600060405180830381600087803b1580156107c857600080fd5b505af11580156107dc573d6000803e3d6000fd5b50600092506107f791506107f2905089806148cc565b613307565b9050600080610869836301d08fc560e71b6020808e01359089013561081f60408b018b6148cc565b6040516024016108329493929190614d16565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261339a565b9150915081156108ce57610882838b8b8b8b8b8b613486565b826001600160a01b03167fcf8be9ab2b5edf8beb2c45abe8e0cc7646318ac19f6c3164ba2e19e93a8a32af8b602001356040516108c191815260200190565b60405180910390a2610910565b826001600160a01b03167f971a4433f5bff5f011728a4123aeeca4b5275ac20b013cf276e65510491ac26f8260405161090791906145c8565b60405180910390a25b50505061091d6001609755565b50505050505050565b61092e6131f4565b6002831461094f5760405163af0ba14d60e01b815260040160405180910390fd5b61095c6105d388806148cc565b6109728484600081811061060257610602614912565b6001600160a01b031663cb535ab58273__$d825222459c46c14afb2efe0967c30e98d$__634f9b0fb36109a58c806148cc565b8d602001356040518463ffffffff1660e01b81526004016109c893929190614951565b600060405180830381865af41580156109e5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a0d91908101906149c5565b73__$d825222459c46c14afb2efe0967c30e98d$__6325e0dd0e60068c8e8060400190610a3a91906148cc565b8d8d610a468e806148cc565b8f602001356040518a63ffffffff1660e01b8152600401610a6f99989796959493929190614a4e565b600060405180830381865af4158015610a8c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ab491908101906149c5565b6040518463ffffffff1660e01b8152600401610ad293929190614b68565b600060405180830381600087803b158015610aec57600080fd5b505af1158015610b00573d6000803e3d6000fd5b5060009250610b1691506107f2905089806148cc565b9050600080610b6c83634bdb559760e01b8b8a8a8f602001358b8060000190610b3f91906148cc565b8d602001358e8060400190610b5491906148cc565b60405160240161083299989796959493929190614d86565b915091508115610bdc57826001600160a01b03167ff910705a7a768eb5958f281a5f84cae8bffc5dd811ca5cd303dda140a423698c82806020019051810190610bb59190614deb565b8b8b8b8b610bc38c806148cc565b8d602001356040516108c1989796959493929190614e33565b826001600160a01b03167f9e2fe55a3b54b57f82334c273f8d048cd7f05ad19c16cf334276a8c1fec4b6fd8260405161090791906145c8565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610c665760405162461bcd60e51b8152600401610c5d90614e99565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610caf6000805160206157e9833981519152546001600160a01b031690565b6001600160a01b031614610cd55760405162461bcd60e51b8152600401610c5d90614ee5565b610cde81613726565b60408051600080825260208201909252610cfa9183919061372e565b50565b610d056131f4565b600283141580610d13575080155b15610d3157604051637d6ba8a560e01b815260040160405180910390fd5b6000879003610d535760405163f61bbcf360e01b815260040160405180910390fd5b336001600160a01b03167f20fd8a5856711b18d00def4aa6abafbe00ce6d60795e015cc1cad35eb9b463598989898989898989604051610d9a989796959493929190614f31565b60405180910390a2610dac6001609755565b5050505050505050565b610dfc6040805160e08101909152606081526020810160008152602001600015158152602001606081526020016060815260200160008019168152602001606081525090565b6001600160a01b038316600090815260fb6020908152604080832085845290915290819020815160e08101909252805482908290610e3990614f91565b80601f0160208091040260200160405190810160405280929190818152602001828054610e6590614f91565b8015610eb25780601f10610e8757610100808354040283529160200191610eb2565b820191906000526020600020905b815481529060010190602001808311610e9557829003601f168201915b5050509183525050600182015460209091019060ff166002811115610ed957610ed96142d2565b6002811115610eea57610eea6142d2565b81526001820154610100900460ff161515602080830191909152600283018054604080518285028101850182528281529401939260009084015b82821015610fd0578382906000526020600020018054610f4390614f91565b80601f0160208091040260200160405190810160405280929190818152602001828054610f6f90614f91565b8015610fbc5780601f10610f9157610100808354040283529160200191610fbc565b820191906000526020600020905b815481529060010190602001808311610f9f57829003601f168201915b505050505081526020019060010190610f24565b505050508152602001600382018054610fe890614f91565b80601f016020809104026020016040519081016040528092919081815260200182805461101490614f91565b80156110615780601f1061103657610100808354040283529160200191611061565b820191906000526020600020905b81548152906001019060200180831161104457829003601f168201915b505050505081526020016004820154815260200160058201805461108490614f91565b80601f01602080910402602001604051908101604052809291908181526020018280546110b090614f91565b80156110fd5780601f106110d2576101008083540402835291602001916110fd565b820191906000526020600020905b8154815290600101906020018083116110e057829003601f168201915b505050505081525050905092915050565b6111166131f4565b60028510156111385760405163af0ba14d60e01b815260040160405180910390fd5b6111456105d388806148cc565b61115b8686600081811061060257610602614912565b6001600160a01b031663cb535ab58273__$d825222459c46c14afb2efe0967c30e98d$__634f9b0fb361118e8c806148cc565b8d602001356040518463ffffffff1660e01b81526004016111b193929190614951565b600060405180830381865af41580156111ce573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111f691908101906149c5565b73__$d825222459c46c14afb2efe0967c30e98d$__6325e0dd0e60088a8e806040019061122391906148cc565b8f8f61122f8e806148cc565b8f602001356040518a63ffffffff1660e01b815260040161125899989796959493929190614a4e565b600060405180830381865af4158015611275573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261129d91908101906149c5565b6040518463ffffffff1660e01b81526004016112bb93929190614b68565b600060405180830381600087803b1580156112d557600080fd5b505af11580156112e9573d6000803e3d6000fd5b50600092506112ff91506107f2905089806148cc565b90506000806113278363fad28a2460e01b8c6020013560405160240161083291815260200190565b91509150811561137f57611340838b8b8b8b8b8b613486565b826001600160a01b03167fe80f571f70f7cabf9d7ac60ece08421be374117776c311c327a083ca398f802f8b602001356040516108c191815260200190565b826001600160a01b03167ff6a58ef30f66943749e8c29c661c84da143a1c8ed017f5faa92b509e0000875a8260405161090791906145c8565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036114005760405162461bcd60e51b8152600401610c5d90614e99565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114496000805160206157e9833981519152546001600160a01b031690565b6001600160a01b03161461146f5760405162461bcd60e51b8152600401610c5d90614ee5565b61147882613726565b6114848282600161372e565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146115285760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610c5d565b506000805160206157e983398151915290565b611543613899565b61154e8383836138f3565b505050565b61155b6131f4565b61157461156b6020840184614fc5565b6020013561398e565b6001600160a01b031663cb535ab58273__$d825222459c46c14afb2efe0967c30e98d$__634b5728d1866040518263ffffffff1660e01b81526004016115ba9190615047565b600060405180830381865af41580156115d7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115ff91908101906149c5565b604051637e4794ed60e11b815273__$d825222459c46c14afb2efe0967c30e98d$__9063fc8f29da90611636908990600401615047565b602060405180830381865af4158015611653573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116779190615109565b60405160200161168991815260200190565b6040516020818303038152906040526040518463ffffffff1660e01b81526004016116b693929190614b68565b600060405180830381600087803b1580156116d057600080fd5b505af11580156116e4573d6000803e3d6000fd5b5050505060006117078380602001906116fd9190614fc5565b6107f290806148cc565b6001600160a01b0381166000908152610100602090815260408220929350909190829061173690870187614fc5565b602001358152602001908152602001600020600085604001602081019061175d9190615122565b6001600160401b0316815260208101919091526040016000205460ff169050801561179b5760405163066c745760e01b815260040160405180910390fd5b6117c36117ae60e0860160c08701615122565b6117be60c0870160a08801615122565b613a59565b6117e0576040516312c9cc9f60e01b815260040160405180910390fd5b6117ed6020850185614fc5565b602001356001600160a01b0383167fedbcd9eeb09d85c3ea1b5bf002c04478059cb261cab82c903885cefccae374bc61182c6060880160408901615122565b6080880161184060e08a0160c08b01615122565b60405161184f9392919061513d565b60405180910390a350506114846001609755565b61186b6131f4565b6114846001609755565b61187d6131f4565b61188d61156b6020840184614fc5565b6001600160a01b031663cb535ab58273__$d825222459c46c14afb2efe0967c30e98d$__634b5728d1866040518263ffffffff1660e01b81526004016118d39190615047565b600060405180830381865af41580156118f0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261191891908101906149c5565b604051637e4794ed60e11b815273__$d825222459c46c14afb2efe0967c30e98d$__9063fc8f29da9061194f908990600401615047565b602060405180830381865af415801561196c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119909190615109565b6040516020016119a291815260200190565b6040516020818303038152906040526040518463ffffffff1660e01b81526004016119cf93929190614b68565b600060405180830381600087803b1580156119e957600080fd5b505af11580156119fd573d6000803e3d6000fd5b505050506000611a168380602001906116fd9190614fc5565b6001600160a01b03811660009081526101006020908152604082209293509091908290611a4590870187614fc5565b6020013581526020019081526020016000206000856040016020810190611a6c9190615122565b6001600160401b0316815260208101919091526040016000205460ff1690508015611aaa5760405163066c745760e01b815260040160405180910390fd5b6001600160a01b03821660009081526101006020908152604082206001929091611ad690880188614fc5565b6020013581526020019081526020016000206000866040016020810190611afd9190615122565b6001600160401b031681526020810191909152604001600020805460ff191691151591909117905560026001600160a01b038316600090815260fb6020908152604082209190611b4f90880188614fc5565b60209081013582528101919091526040016000206001015460ff166002811115611b7b57611b7b6142d2565b03611c7a576001600160a01b038216600090815260fd6020908152604082209190611ba890870187614fc5565b60209081013582528101919091526040908101600020546001600160401b031690611bd99060608701908701615122565b6001600160401b031614611c005760405163362a414d60e01b815260040160405180910390fd5b611c106060850160408601615122565b611c1b90600161516d565b6001600160a01b038316600090815260fd6020908152604082209190611c4390880188614fc5565b60200135815260200190815260200160002060006101000a8154816001600160401b0302191690836001600160401b031602179055505b611c876020850185614fc5565b602001356001600160a01b0383167fde5b57e6566d68a30b0979431df3d5df6db3b9aa89f8820f595b9315bf86d067611cc66060880160408901615122565b6040516001600160401b03909116815260200160405180910390a3611cf46117ae60e0860160c08701615122565b15611d7757611d066020850185614fc5565b602001356001600160a01b0383167fedbcd9eeb09d85c3ea1b5bf002c04478059cb261cab82c903885cefccae374bc611d456060880160408901615122565b60808801611d5960e08a0160c08b01615122565b604051611d689392919061513d565b60405180910390a3505061186b565b604080518082019091526000815260606020820152600080611dac85634dcc0aa660e01b896040516024016108329190615257565b915091508115611dd15780806020019051810190611dca919061526a565b9250611de9565b60408051808201909152600081526020810182905292505b6001600160a01b0385166000908152610101602090815260408220908290611e13908b018b614fc5565b6020013581526020019081526020016000206000896040016020810190611e3a9190615122565b6001600160401b0316815260208101919091526040016000205460ff1690508015611e7857604051637aa549d360e01b815260040160405180910390fd5b6001600160a01b03861660009081526101016020908152604082206001929091611ea4908c018c614fc5565b60200135815260200190815260200160002060008a6040016020810190611ecb9190615122565b6001600160401b03168152602080820192909252604001600020805460ff191692151592909217909155611f0190890189614fc5565b602001356001600160a01b0387167fa32e6f42b1d63fb83ad73b009a6dbb9413d1da02e95b1bb08f081815eea8db20611f4060608c0160408d01615122565b87604051611f4f929190615320565b60405180910390a35050505050506114846001609755565b611f6f613899565b611f796000613aa7565b565b60f98054611f8890614f91565b80601f0160208091040260200160405190810160405280929190818152602001828054611fb490614f91565b80156120015780601f10611fd657610100808354040283529160200191612001565b820191906000526020600020905b815481529060010190602001808311611fe457829003601f168201915b505050505081565b60655433906001600160a01b031681146120775760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610c5d565b610cfa81613aa7565b600054600290610100900460ff161580156120a2575060005460ff8083169116105b6121055760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610c5d565b6000805461ffff191660ff8316176101001790556121216131f4565b82516000036121435760405163e8cf362360e01b815260040160405180910390fd5b6001600160a01b03821661216a5760405163cbdd34cf60e01b815260040160405180910390fd5b612172613ac0565b61217a613aef565b60f96121868482615388565b50825160fa805463ffffffff191663ffffffff90921691909117905561010580546001600160a01b0319166001600160a01b03841617905560016097556000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b6122116131f4565b61221a81613b1e565b33600090815260fb6020908152604080832084845290915281209061223f8282613e39565b60018201805461ffff1916905561225a600283016000613e73565b612268600383016000613e39565b60048201600090556005820160006122809190613e39565b505060008181526101036020526040812061229a91613e39565b604051819033907f21372e37743553ba8e5f61239803174a827c7732d53ec8adcb76c6b3bb2c13f190600090a3610cfa6001609755565b6122d9613899565b60008190036122fb5760405163e8cf362360e01b815260040160405180910390fd5b60f9612308828483615447565b5060fa805463ffffffff191663ffffffff9290921691909117905550565b600061236783838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061328892505050565b6001600160a01b03166344c9af28856040518263ffffffff1660e01b815260040161239491815260200190565b602060405180830381865afa1580156123b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d59190615109565b90505b9392505050565b6123e76131f4565b60006123f66116fd8680614fc5565b905061240561156b8680614fc5565b6001600160a01b031663cb535ab58373__$d825222459c46c14afb2efe0967c30e98d$__6311a7a373896040518263ffffffff1660e01b815260040161244b9190615047565b600060405180830381865af4158015612468573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261249091908101906149c5565b6040516374e9704560e01b815273__$d825222459c46c14afb2efe0967c30e98d$__906374e97045906124c9908b908b90600401615507565b602060405180830381865af41580156124e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061250a9190615109565b60405160200161251c91815260200190565b6040516020818303038152906040526040518463ffffffff1660e01b815260040161254993929190614b68565b600060405180830381600087803b15801561256357600080fd5b505af1158015612577573d6000803e3d6000fd5b505050506001600160a01b038116600090815260ff602052604081208161259e8880614fc5565b60200135815260200190815260200160002060008760400160208101906125c59190615122565b6001600160401b0316815260208101919091526040016000205460ff169050806126025760405163ca89746b60e01b815260040160405180910390fd5b6000806126a184637e1d42b560e01b8a73__$d825222459c46c14afb2efe0967c30e98d$__63360b8cd78c8c6040518363ffffffff1660e01b815260040161264b929190615507565b600060405180830381865af4158015612668573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612690919081019061526a565b60405160240161083292919061551b565b9150915081156128c55760026001600160a01b038516600090815260fb60205260408120906126d08b80614fc5565b60209081013582528101919091526040016000206001015460ff1660028111156126fc576126fc6142d2565b036127f1576001600160a01b038416600090815260fe60205260408120906127248a80614fc5565b60209081013582528101919091526040908101600020546001600160401b0316906127559060608b01908b01615122565b6001600160401b03161461277c5760405163362a414d60e01b815260040160405180910390fd5b61278c6060890160408a01615122565b61279790600161516d565b6001600160a01b038516600090815260fe60205260408120906127ba8b80614fc5565b60200135815260200190815260200160002060006101000a8154816001600160401b0302191690836001600160401b031602179055505b6001600160a01b038416600090815260ff60205260408120906128148a80614fc5565b602001358152602001908152602001600020600089604001602081019061283b9190615122565b6001600160401b031681526020810191909152604001600020805460ff191690556128668880614fc5565b602001356001600160a01b0385167fe46f6591236abe528fe47a3b281fb002524dadd3e62b1f317ed285d07273c3b16128a560608c0160408d01615122565b6040516001600160401b03909116815260200160405180910390a3612907565b836001600160a01b03167f625eea143c9dae6915c809da47016c22d9cd006c3ace7c345c5cbcf57d3aefbc826040516128fe91906145c8565b60405180910390a25b505050506129156001609755565b50505050565b612923613899565b6101048282604051612936929190615540565b90815260405190819003602001902080546001600160a01b03191690555050565b60006129616131f4565b61296a85613b1e565b42826001600160401b0316116129935760405163551ea0fb60e11b815260040160405180910390fd5b5033600090815260fc602090815260408083208784529091528120546001600160401b0316908190036129d957604051631e510bfb60e21b815260040160405180910390fd5b33600090815260ff6020908152604080832088845282528083206001600160401b03851684529091529020805460ff19166001908117909155612a1d90829061516d565b33600081815260fc602090815260408083208a845290915290819020805467ffffffffffffffff19166001600160401b03949094169390931790925590518691907fb5bff96e18da044e4e34510d16df9053b9f1920f6a960732e5aaf22fe9b8013690612a91908890889087908990615550565b60405180910390a3612aa36001609755565b949350505050565b612aea82828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061328892505050565b6001600160a01b03166349ff245e878787876040518563ffffffff1660e01b8152600401612b1b9493929190615585565b600060405180830381600087803b158015612b3557600080fd5b505af1158015612b49573d6000803e3d6000fd5b505050505b505050505050565b612b5e613899565b606580546001600160a01b0383166001600160a01b03199091168117909155612b8f6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b612bcf6131f4565b6001600160a01b038316612bf65760405163cbdd34cf60e01b815260040160405180910390fd5b6001600160a01b038316600090815260fb60209081526040808320858452909152808220815160e08101909252805482908290612c3290614f91565b80601f0160208091040260200160405190810160405280929190818152602001828054612c5e90614f91565b8015612cab5780601f10612c8057610100808354040283529160200191612cab565b820191906000526020600020905b815481529060010190602001808311612c8e57829003601f168201915b5050509183525050600182015460209091019060ff166002811115612cd257612cd26142d2565b6002811115612ce357612ce36142d2565b81526001820154610100900460ff161515602080830191909152600283018054604080518285028101850182528281529401939260009084015b82821015612dc9578382906000526020600020018054612d3c90614f91565b80601f0160208091040260200160405190810160405280929190818152602001828054612d6890614f91565b8015612db55780601f10612d8a57610100808354040283529160200191612db5565b820191906000526020600020905b815481529060010190602001808311612d9857829003601f168201915b505050505081526020019060010190612d1d565b505050508152602001600382018054612de190614f91565b80601f0160208091040260200160405190810160405280929190818152602001828054612e0d90614f91565b8015612e5a5780601f10612e2f57610100808354040283529160200191612e5a565b820191906000526020600020905b815481529060010190602001808311612e3d57829003601f168201915b5050505050815260200160048201548152602001600582018054612e7d90614f91565b80601f0160208091040260200160405190810160405280929190818152602001828054612ea990614f91565b8015612ef65780601f10612ecb57610100808354040283529160200191612ef6565b820191906000526020600020905b815481529060010190602001808311612ed957829003601f168201915b5050509190925250505060a0810151909150612f2557604051634d93b09d60e11b815260040160405180910390fd5b612f2e8361398e565b6001600160a01b031663cb535ab58373__$d825222459c46c14afb2efe0967c30e98d$__636f6547268560c00151886040518363ffffffff1660e01b8152600401612f7a9291906155ac565b600060405180830381865af4158015612f97573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612fbf91908101906149c5565b602085015185516060870151608088015160a0890151604051631f621e1560e31b815273__$d825222459c46c14afb2efe0967c30e98d$__9563fb10f0a8956130159560099592949193909291906004016155ce565b600060405180830381865af4158015613032573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261305a91908101906149c5565b6040518463ffffffff1660e01b815260040161307893929190614b68565b600060405180830381600087803b15801561309257600080fd5b505af11580156130a6573d6000803e3d6000fd5b505050506000806130d686633f9fdbe460e01b8786608001518760a0015160405160240161083293929190615676565b6001600160a01b038816600090815260fb602090815260408083208a845290915281209294509092506131098282613e39565b60018201805461ffff19169055613124600283016000613e73565b613132600383016000613e39565b600482016000905560058201600061314a9190613e39565b505060008581526101036020526040812061316491613e39565b81156131a55760405185906001600160a01b038816907f5f010dbbd6bf46aec8131c5456301a75cd688d3cca9bc8380c9e26301be2072990600090a36131e7565b856001600160a01b03167fc9d36d7a317cb116925d5cb66f0069fe825822fe23e9cf3f421c38cf444caa30826040516131de91906145c8565b60405180910390a25b50505061154e6001609755565b6002609754036132465760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610c5d565b6002609755565b841580613258575081155b80613261575083155b8061326a575080155b15612b4e57604051637d6ba8a560e01b815260040160405180910390fd5b600081516000036132b65760405163524e171160e01b81526020600482015260006024820152604401610c5d565b610104826040516132c7919061569f565b908152604051908190036020019020546001600160a01b0316905080613302578160405163036c4d8760e11b8152600401610c5d91906145c8565b919050565b60fa5460009073__$f61eb90c6f674e787d51c07f105fa231e2$__9063a1ef9a989061333c90859063ffffffff1681886156b1565b6040518363ffffffff1660e01b8152600401613359929190615507565b602060405180830381865af4158015613376573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d891906156db565b600060606001600160a01b0384163b6133e257505060408051808201909152601481527318d85b1b081d1bc81b9bdb8b58dbdb9d1c9858dd60621b602082015260009061347f565b60005a9050846001600160a01b0316846040516133ff919061569f565b6000604051808303816000865af19150503d806000811461343c576040519150601f19603f3d011682016040523d82523d6000602084013e613441565b606091505b5090935091508215801561345f575061345b6040826156f8565b5a11155b1561347d5760405163b08ede0960e01b815260040160405180910390fd5b505b9250929050565b6040518060e001604052808780604001906134a191906148cc565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050908252506020018460028111156134ed576134ed6142d2565b81528315156020820152604001613504868861571a565b815260200161351383806148cc565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050908252506020838101359082015260400161356188806148cc565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509390945250506001600160a01b038a16815260fb602090815260408083208b83013584529091529020825190915081906135cb9082615388565b50602082015160018083018054909160ff19909116908360028111156135f3576135f36142d2565b021790555060408201516001820180549115156101000261ff001990921691909117905560608201518051613632916002840191602090910190613e91565b50608082015160038201906136479082615388565b5060a0820151600482015560c082015160058201906136669082615388565b5050506001600160a01b038716600081815260fc602090815260408083208a8301358085529083528184208054600167ffffffffffffffff19918216811790925586865260fd85528386208387528552838620805482168317905595855260fe84528285209185529252822080549093161790915585908590816136ec576136ec614912565b90506020028101906136fe91906148cc565b60208089013560009081526101039091526040902091610dac919083615447565b6001609755565b610cfa613899565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156137615761154e83613b59565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156137bb575060408051601f3d908101601f191682019092526137b891810190615109565b60015b61381e5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610c5d565b6000805160206157e9833981519152811461388d5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610c5d565b5061154e838383613bf5565b6033546001600160a01b03163314611f795760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c5d565b600082900361391f5760405163524e171160e01b81526020600482015260006024820152604401610c5d565b6001600160a01b0381166139465760405163cbdd34cf60e01b815260040160405180910390fd5b80610104848460405161395a929190615540565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b0319909216919091179055505050565b60008181526101036020526040812080548291906139ab90614f91565b80601f01602080910402602001604051908101604052809291908181526020018280546139d790614f91565b8015613a245780601f106139f957610100808354040283529160200191613a24565b820191906000526020600020905b815481529060010190602001808311613a0757829003601f168201915b505050505090508051600003613a50576040516363b99a9d60e11b815260048101849052602401610c5d565b6123d881613288565b60006001600160401b03831615801590613a7c5750826001600160401b03164210155b806123d857506001600160401b038216158015906123d85750506001600160401b0316431015919050565b606580546001600160a01b0319169055610cfa81613c1a565b600054610100900460ff16613ae75760405162461bcd60e51b8152600401610c5d9061579d565b611f79613c6c565b600054610100900460ff16613b165760405162461bcd60e51b8152600401610c5d9061579d565b611f79613c9c565b33600090815260fb60209081526040808320848452909152902060040154610cfa57604051631109bfb360e31b815260040160405180910390fd5b6001600160a01b0381163b613bc65760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610c5d565b6000805160206157e983398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b613bfe83613cc3565b600082511180613c0b5750805b1561154e576129158383613d03565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16613c935760405162461bcd60e51b8152600401610c5d9061579d565b611f7933613aa7565b600054610100900460ff1661371f5760405162461bcd60e51b8152600401610c5d9061579d565b613ccc81613b59565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606123d88383604051806060016040528060278152602001615809602791396060600080856001600160a01b031685604051613d40919061569f565b600060405180830381855af49150503d8060008114613d7b576040519150601f19603f3d011682016040523d82523d6000602084013e613d80565b606091505b5091509150613d9186838387613d9b565b9695505050505050565b60608315613e0a578251600003613e03576001600160a01b0385163b613e035760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610c5d565b5081612aa3565b612aa38383815115613e1f5781518083602001fd5b8060405162461bcd60e51b8152600401610c5d91906145c8565b508054613e4590614f91565b6000825580601f10613e55575050565b601f016020900490600052602060002090810190610cfa9190613ee7565b5080546000825590600052602060002090810190610cfa9190613efc565b828054828255906000526020600020908101928215613ed7579160200282015b82811115613ed75782518290613ec79082615388565b5091602001919060010190613eb1565b50613ee3929150613efc565b5090565b5b80821115613ee35760008155600101613ee8565b80821115613ee3576000613f108282613e39565b50600101613efc565b600060608284031215613f2b57600080fd5b50919050565b60008083601f840112613f4357600080fd5b5081356001600160401b03811115613f5a57600080fd5b6020830191508360208260051b850101111561347f57600080fd5b80356003811061330257600080fd5b8015158114610cfa57600080fd5b803561330281613f84565b600060408284031215613f2b57600080fd5b600080600080600080600060c0888a031215613fca57600080fd5b87356001600160401b0380821115613fe157600080fd5b613fed8b838c01613f19565b985060208a013591508082111561400357600080fd5b61400f8b838c01613f31565b909850965086915061402360408b01613f75565b955061403160608b01613f92565b945060808a013591508082111561404757600080fd5b6140538b838c01613f19565b935060a08a013591508082111561406957600080fd5b506140768a828b01613f9d565b91505092959891949750929550565b600080600080600080600060c0888a0312156140a057600080fd5b87356001600160401b03808211156140b757600080fd5b6140c38b838c01613f19565b98506140d160208b01613f75565b97506140df60408b01613f92565b965060608a01359150808211156140f557600080fd5b6141018b838c01613f31565b909650945060808a013591508082111561404757600080fd5b6001600160a01b0381168114610cfa57600080fd5b60006020828403121561414157600080fd5b81356123d88161411a565b60008083601f84011261415e57600080fd5b5081356001600160401b0381111561417557600080fd5b60208301915083602082850101111561347f57600080fd5b60008060008060008060008060a0898b0312156141a957600080fd5b88356001600160401b03808211156141c057600080fd5b6141cc8c838d0161414c565b909a5098508891506141e060208c01613f75565b975060408b013591506141f282613f84565b90955060608a0135908082111561420857600080fd5b6142148c838d01613f31565b909650945060808b013591508082111561422d57600080fd5b5061423a8b828c0161414c565b999c989b5096995094979396929594505050565b6000806040838503121561426157600080fd5b823561426c8161411a565b946020939093013593505050565b60005b8381101561429557818101518382015260200161427d565b838111156129155750506000910152565b600081518084526142be81602086016020860161427a565b601f01601f19169290920160200192915050565b634e487b7160e01b600052602160045260246000fd5b600381106142f8576142f86142d2565b9052565b600081518084526020808501808196508360051b8101915082860160005b858110156143445782840389526143328483516142a6565b9885019893509084019060010161431a565b5091979650505050505050565b602081526000825160e0602084015261436e6101008401826142a6565b9050602084015161438260408501826142e8565b506040840151151560608401526060840151601f19808584030160808601526143ab83836142fc565b925060808601519150808584030160a08601526143c883836142a6565b925060a086015160c086015260c08601519150808584030160e0860152506143f082826142a6565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715614437576144376143f9565b604052919050565b60006001600160401b03821115614458576144586143f9565b50601f01601f191660200190565b60006144796144748461443f565b61440f565b905082815283838301111561448d57600080fd5b828260208301376000602084830101529392505050565b600080604083850312156144b757600080fd5b82356144c28161411a565b915060208301356001600160401b038111156144dd57600080fd5b8301601f810185136144ee57600080fd5b6144fd85823560208401614466565b9150509250929050565b60008060006040848603121561451c57600080fd5b83356001600160401b0381111561453257600080fd5b61453e8682870161414c565b90945092505060208401356145528161411a565b809150509250925092565b600060e08284031215613f2b57600080fd5b6000806040838503121561458257600080fd5b82356001600160401b038082111561459957600080fd5b6145a58683870161455d565b935060208501359150808211156145bb57600080fd5b506144fd85828601613f9d565b6020815260006123d860208301846142a6565b600082601f8301126145ec57600080fd5b6123d883833560208501614466565b6000806040838503121561460e57600080fd5b82356001600160401b0381111561462457600080fd5b614630858286016145db565b92505060208301356146418161411a565b809150509250929050565b60006020828403121561465e57600080fd5b5035919050565b6000806020838503121561467857600080fd5b82356001600160401b0381111561468e57600080fd5b61469a8582860161414c565b90969095509350505050565b6000806000604084860312156146bb57600080fd5b8335925060208401356001600160401b038111156146d857600080fd5b6146e48682870161414c565b9497909650939450505050565b6000806000806060858703121561470757600080fd5b84356001600160401b038082111561471e57600080fd5b61472a8883890161455d565b9550602087013591508082111561474057600080fd5b61474c8883890161414c565b9095509350604087013591508082111561476557600080fd5b5061477287828801613f9d565b91505092959194509250565b80356001600160401b038116811461330257600080fd5b600080600080606085870312156147ab57600080fd5b8435935060208501356001600160401b038111156147c857600080fd5b6147d48782880161414c565b90945092506147e790506040860161477e565b905092959194509250565b6000806000806000806080878903121561480b57600080fd5b86356001600160401b038082111561482257600080fd5b61482e8a838b0161414c565b90985096506020890135955060408901359450606089013591508082111561485557600080fd5b5061486289828a0161414c565b979a9699509497509295939492505050565b60008060006060848603121561488957600080fd5b83356148948161411a565b92506020840135915060408401356001600160401b038111156148b657600080fd5b6148c286828701613f9d565b9150509250925092565b6000808335601e198436030181126148e357600080fd5b8301803591506001600160401b038211156148fd57600080fd5b60200191503681900382131561347f57600080fd5b634e487b7160e01b600052603260045260246000fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b604081526000614965604083018587614928565b9050826020830152949350505050565b60006149836144748461443f565b905082815283838301111561499757600080fd5b6123d883602083018461427a565b600082601f8301126149b657600080fd5b6123d883835160208501614975565b6000602082840312156149d757600080fd5b81516001600160401b038111156149ed57600080fd5b612aa3848285016149a5565b600a81106142f8576142f86142d2565b6000808335601e19843603018112614a2057600080fd5b83016020810192503590506001600160401b03811115614a3f57600080fd5b80360382131561347f57600080fd5b614a58818b6149f9565b60006020614a688184018c6142e8565b60c06040840152614a7d60c084018a8c614928565b8381036060850152878152818101600589901b820183018a60005b8b811015614ad257848303601f19018452614ab3828e614a09565b614abe858284614928565b958801959450505090850190600101614a98565b50508581036080870152614ae781898b614928565b9450505050508260a08301529a9950505050505050505050565b6000808335601e19843603018112614b1857600080fd5b83016020810192503590506001600160401b03811115614b3757600080fd5b8060051b360382131561347f57600080fd5b60008235603e19833603018112614b5f57600080fd5b90910192915050565b6000606080835260a0808401614b7e8889614b01565b60408786018190529281905260059260c08089019083861b8a01018460005b85811015614cde578b830360bf19018452813536889003607e19018112614bc357600080fd5b87016080848101614bd48380614b01565b928752908290528b860191808c1b87018d0191908160005b82811015614c5c57898503609f19018652614c078285614b49565b614c118182614a09565b8e8852614c218f89018284614928565b9150506020614c3281840184614a09565b9350888303828a0152614c46838583614928565b9982019998505093909301925050600101614bec565b5050505060209150614c7082840184614a09565b87830384890152614c82838284614928565b92505050614c9288840184614a09565b8783038a890152614ca4838284614928565b92505050614cb48d840184614a09565b93508682038e880152614cc8828583614928565b9783019796505050929092019150600101614b9d565b505060208d013560808b015289810360208b0152614cfc818d6142a6565b97505050878603818901525050505050613d9181856142a6565b848152836020820152606060408201526000613d91606083018486614928565b81835260006020808501808196508560051b810191508460005b87811015614344578284038952614d678288614a09565b614d72868284614928565b9a87019a9550505090840190600101614d50565b614d90818b6142e8565b60c060208201526000614da760c083018a8c614d36565b8860408401528281036060840152614dc081888a614928565b905085608084015282810360a0840152614ddb818587614928565b9c9b505050505050505050505050565b600060208284031215614dfd57600080fd5b81516001600160401b03811115614e1357600080fd5b8201601f81018413614e2457600080fd5b612aa384825160208401614975565b60c081526000614e4660c083018b6142a6565b614e53602084018b6142e8565b88151560408401528281036060840152614e6e81888a614d36565b90508281036080840152614e83818688614928565b9150508260a08301529998505050505050505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b60a081526000614f4560a083018a8c614928565b614f52602084018a6142e8565b87151560408401528281036060840152614f6d818789614d36565b90508281036080840152614f82818587614928565b9b9a5050505050505050505050565b600181811c90821680614fa557607f821691505b602082108103613f2b57634e487b7160e01b600052602260045260246000fd5b60008235603e19833603018112614fdb57600080fd5b9190910192915050565b6000614ff18283614a09565b60408552615003604086018284614928565b915050602083013560208501528091505092915050565b6001600160401b038061502c8361477e565b1683528061503c6020840161477e565b166020840152505050565b6020815260006150578384614b49565b60e0602084015261506c610100840182614fe5565b905061507b6020850185614b49565b601f19808584030160408601526150928383614fe5565b92506150a06040870161477e565b91506001600160401b0380831660608701526150bf6060880188614a09565b9350828786030160808801526150d6858583614928565b9450506150e960a087016080890161501a565b806150f660c0890161477e565b1660e08701525050508091505092915050565b60006020828403121561511b57600080fd5b5051919050565b60006020828403121561513457600080fd5b6123d88261477e565b6001600160401b038481168252608082019061515c602084018661501a565b808416606084015250949350505050565b60006001600160401b0380831681851680830382111561519d57634e487b7160e01b600052601160045260246000fd5b01949350505050565b60006151b28283614b49565b60e084526151c360e0850182614fe5565b90506151d26020840184614b49565b84820360208601526151e48282614fe5565b9150506151f36040840161477e565b6001600160401b0380821660408701526152106060860186614a09565b92508684036060880152615225848483614928565b935050615238608087016080870161501a565b8061524560c0870161477e565b1660c087015250508091505092915050565b6020815260006123d860208301846151a6565b60006020828403121561527c57600080fd5b81516001600160401b038082111561529357600080fd5b90830190604082860312156152a757600080fd5b6040516040810181811083821117156152c2576152c26143f9565b60405282516152d081613f84565b81526020830151828111156152e457600080fd5b6152f0878286016149a5565b60208301525095945050505050565b8051151582526000602082015160406020850152612aa360408501826142a6565b6001600160401b03831681526040602082015260006123d560408301846152ff565b601f82111561154e57600081815260208120601f850160051c810160208610156153695750805b601f850160051c820191505b81811015612b4e57828155600101615375565b81516001600160401b038111156153a1576153a16143f9565b6153b5816153af8454614f91565b84615342565b602080601f8311600181146153ea57600084156153d25750858301515b600019600386901b1c1916600185901b178555612b4e565b600085815260208120601f198616915b82811015615419578886015182559484019460019091019084016153fa565b50858210156154375787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160401b0383111561545e5761545e6143f9565b6154728361546c8354614f91565b83615342565b6000601f8411600181146154a6576000851561548e5750838201355b600019600387901b1c1916600186901b178355615500565b600083815260209020601f19861690835b828110156154d757868501358255602094850194600190920191016154b7565b50868210156154f45760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b6020815260006123d5602083018486614928565b60408152600061552e60408301856151a6565b82810360208401526143f081856152ff565b8183823760009101908152919050565b606081526000615564606083018688614928565b6001600160401b039485166020840152929093166040909101529392505050565b606081526000615599606083018688614928565b6020830194909452506040015292915050565b6040815260006155bf60408301856142a6565b90508260208301529392505050565b6155d881886149f9565b600060206155e8818401896142e8565b60c060408401526155fc60c08401886142a6565b8381036060850152865180825282820190600581901b83018401848a0160005b8381101561564a57601f198684030185526156388383516142a6565b9487019492509086019060010161561c565b5050868103608088015261565e818a6142a6565b955050505050508260a0830152979650505050505050565b83815260606020820152600061568f60608301856142a6565b9050826040830152949350505050565b60008251614fdb81846020870161427a565b600080858511156156c157600080fd5b838611156156ce57600080fd5b5050820193919092039150565b6000602082840312156156ed57600080fd5b81516123d88161411a565b60008261571557634e487b7160e01b600052601260045260246000fd5b500490565b60006001600160401b0380841115615734576157346143f9565b8360051b602061574581830161440f565b86815291850191818101903684111561575d57600080fd5b865b84811015615791578035868111156157775760008081fd5b61578336828b016145db565b84525091830191830161575f565b50979650505050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220bf8a17eff072122ba44ed6aa283e975964c11923f10fd06add4b4e9ef36c245264736f6c634300080f0033"; type DispatcherConstructorParams = | [linkLibraryAddresses: DispatcherLibraryAddresses, signer?: Signer] diff --git a/src/evm/contracts/factories/DummyLightClient__factory.ts b/src/evm/contracts/factories/DummyLightClient__factory.ts index 0df55e64..6a12a0e3 100644 --- a/src/evm/contracts/factories/DummyLightClient__factory.ts +++ b/src/evm/contracts/factories/DummyLightClient__factory.ts @@ -20,6 +20,19 @@ const _abi = [ inputs: [], stateMutability: "nonpayable", }, + { + type: "function", + name: "LIGHT_CLIENT_TYPE", + inputs: [], + outputs: [ + { + name: "", + type: "uint8", + internalType: "enum LightClientType", + }, + ], + stateMutability: "view", + }, { type: "function", name: "getState", @@ -208,7 +221,7 @@ const _abi = [ ] as const; const _bytecode = - "0x608060405234801561001057600080fd5b5061037b806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806344c9af281461005157806349ff245e14610077578063cb535ab51461008d578063fdaab4e5146100a0575b600080fd5b61006561005f366004610106565b50600090565b60405190815260200160405180910390f35b61008b61008536600461011f565b50505050565b005b61008b61009b366004610259565b6100b3565b61008b6100ae3660046102e1565b6100dd565b82602001356000036100d857604051636cb681eb60e01b815260040160405180910390fd5b505050565b816020013560000361010257604051631e76ddb960e21b815260040160405180910390fd5b5050565b60006020828403121561011857600080fd5b5035919050565b6000806000806060858703121561013557600080fd5b843567ffffffffffffffff8082111561014d57600080fd5b818701915087601f83011261016157600080fd5b81358181111561017057600080fd5b88602082850101111561018257600080fd5b6020928301999098509187013596604001359550909350505050565b6000604082840312156101b057600080fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126101dd57600080fd5b813567ffffffffffffffff808211156101f8576101f86101b6565b604051601f8301601f19908116603f01168101908282118183101715610220576102206101b6565b8160405283815286602085880101111561023957600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060006060848603121561026e57600080fd5b833567ffffffffffffffff8082111561028657600080fd5b6102928783880161019e565b945060208601359150808211156102a857600080fd5b6102b4878388016101cc565b935060408601359150808211156102ca57600080fd5b506102d7868287016101cc565b9150509250925092565b600080604083850312156102f457600080fd5b823567ffffffffffffffff8082111561030c57600080fd5b6103188683870161019e565b9350602085013591508082111561032e57600080fd5b5061033b858286016101cc565b915050925092905056fea2646970667358221220faadd2b4cc359ab81e40d78c07b1dc38ed3b108471a1ab1cbc0fa2addf67cbfd64736f6c634300080f0033"; + "0x60806040526000805460ff1916905534801561001a57600080fd5b506103c48061002a6000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c806344c9af281461005c57806349ff245e1461008357806357c1c5f414610099578063cb535ab5146100ae578063fdaab4e5146100c1575b600080fd5b61007061006a366004610127565b50600090565b6040519081526020015b60405180910390f35b610097610091366004610140565b50505050565b005b6100a1600081565b60405161007a91906101bf565b6100976100bc3660046102a2565b6100d4565b6100976100cf36600461032a565b6100fe565b82602001356000036100f957604051636cb681eb60e01b815260040160405180910390fd5b505050565b816020013560000361012357604051631e76ddb960e21b815260040160405180910390fd5b5050565b60006020828403121561013957600080fd5b5035919050565b6000806000806060858703121561015657600080fd5b843567ffffffffffffffff8082111561016e57600080fd5b818701915087601f83011261018257600080fd5b81358181111561019157600080fd5b8860208285010111156101a357600080fd5b6020928301999098509187013596604001359550909350505050565b60208101600383106101e157634e487b7160e01b600052602160045260246000fd5b91905290565b6000604082840312156101f957600080fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261022657600080fd5b813567ffffffffffffffff80821115610241576102416101ff565b604051601f8301601f19908116603f01168101908282118183101715610269576102696101ff565b8160405283815286602085880101111561028257600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806000606084860312156102b757600080fd5b833567ffffffffffffffff808211156102cf57600080fd5b6102db878388016101e7565b945060208601359150808211156102f157600080fd5b6102fd87838801610215565b9350604086013591508082111561031357600080fd5b5061032086828701610215565b9150509250925092565b6000806040838503121561033d57600080fd5b823567ffffffffffffffff8082111561035557600080fd5b610361868387016101e7565b9350602085013591508082111561037757600080fd5b5061038485828601610215565b915050925092905056fea2646970667358221220e5c271ef052030be1efeb842e5495c10402ee2fe037d7268a06b66359d79280464736f6c634300080f0033"; type DummyLightClientConstructorParams = | [signer?: Signer] diff --git a/src/evm/contracts/factories/IDispatcher__factory.ts b/src/evm/contracts/factories/IDispatcher__factory.ts index 67e1b009..41d49af2 100644 --- a/src/evm/contracts/factories/IDispatcher__factory.ts +++ b/src/evm/contracts/factories/IDispatcher__factory.ts @@ -688,7 +688,7 @@ const _abi = [ }, { type: "function", - name: "getOptimisticConsensusState", + name: "getState", inputs: [ { name: "height", @@ -1062,7 +1062,7 @@ const _abi = [ }, { type: "function", - name: "updateClientWithOptimisticConsensusState", + name: "updateClient", inputs: [ { name: "proof", diff --git a/src/evm/contracts/factories/ILightClient__factory.ts b/src/evm/contracts/factories/ILightClient__factory.ts index 4577c1be..79cd0ecd 100644 --- a/src/evm/contracts/factories/ILightClient__factory.ts +++ b/src/evm/contracts/factories/ILightClient__factory.ts @@ -6,6 +6,19 @@ import { Contract, Interface, type ContractRunner } from "ethers"; import type { ILightClient, ILightClientInterface } from "../ILightClient"; const _abi = [ + { + type: "function", + name: "LIGHT_CLIENT_TYPE", + inputs: [], + outputs: [ + { + name: "", + type: "uint8", + internalType: "enum LightClientType", + }, + ], + stateMutability: "view", + }, { type: "function", name: "getState", diff --git a/src/evm/contracts/factories/OptimisticLightClient__factory.ts b/src/evm/contracts/factories/OptimisticLightClient__factory.ts index 70e517ff..d5fa95cf 100644 --- a/src/evm/contracts/factories/OptimisticLightClient__factory.ts +++ b/src/evm/contracts/factories/OptimisticLightClient__factory.ts @@ -42,6 +42,19 @@ const _abi = [ ], stateMutability: "nonpayable", }, + { + type: "function", + name: "LIGHT_CLIENT_TYPE", + inputs: [], + outputs: [ + { + name: "", + type: "uint8", + internalType: "enum LightClientType", + }, + ], + stateMutability: "view", + }, { type: "function", name: "consensusStates", @@ -98,7 +111,7 @@ const _abi = [ name: "getFraudProofEndtime", inputs: [ { - name: "peptideHeight", + name: "polymerHeight", type: "uint256", internalType: "uint256", }, @@ -117,14 +130,14 @@ const _abi = [ name: "getState", inputs: [ { - name: "peptideHeight", + name: "polymerHeight", type: "uint256", internalType: "uint256", }, ], outputs: [ { - name: "peptideAppHash", + name: "polymerAppHash", type: "uint256", internalType: "uint256", }, @@ -136,14 +149,14 @@ const _abi = [ name: "getStateAndEndTime", inputs: [ { - name: "peptideHeight", + name: "polymerHeight", type: "uint256", internalType: "uint256", }, ], outputs: [ { - name: "peptideAppHash", + name: "polymerAppHash", type: "uint256", internalType: "uint256", }, @@ -183,12 +196,12 @@ const _abi = [ internalType: "bytes", }, { - name: "peptideHeight", + name: "polymerHeight", type: "uint256", internalType: "uint256", }, { - name: "peptideAppHash", + name: "polymerAppHash", type: "uint256", internalType: "uint256", }, @@ -355,7 +368,7 @@ const _abi = [ ] as const; const _bytecode = - "0x608060405234801561001057600080fd5b50604051610fbf380380610fbf83398101604081905261002f91610084565b63ffffffff92909216600255600380546001600160a01b039283166001600160a01b031991821617909155600480549290931691161790556100da565b6001600160a01b038116811461008157600080fd5b50565b60008060006060848603121561009957600080fd5b835163ffffffff811681146100ad57600080fd5b60208501519093506100be8161006c565b60408501519092506100cf8161006c565b809150509250925092565b610ed6806100e96000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806363042720116100715780636304272014610161578063b9a1e87b1461016a578063cb535ab51461019a578063d56ff842146101ad578063eb772058146101d8578063fdaab4e5146101eb57600080fd5b80631b738a22146100ae5780632b7ac3f3146100e157806334b80a411461010c57806344c9af281461012c57806349ff245e1461014c575b600080fd5b6100ce6100bc36600461057a565b60006020819052908152604090205481565b6040519081526020015b60405180910390f35b6003546100f4906001600160a01b031681565b6040516001600160a01b0390911681526020016100d8565b6100ce61011a36600461057a565b60016020526000908152604090205481565b6100ce61013a36600461057a565b60009081526020819052604090205490565b61015f61015a3660046105db565b6101fe565b005b6100ce60025481565b61017d61017836600461057a565b6103be565b6040805193845260208401929092521515908201526060016100d8565b61015f6101a8366004610643565b6103d9565b6100ce6101bb36600461057a565b600090815260208181526040808320548352600190915290205490565b6004546100f4906001600160a01b031681565b61015f6101f93660046106d7565b610489565b60008061020d85870187610956565b600086815260208190526040812054929450909250819003610395576003546004805460408051624dead360e51b815290516001600160a01b0394851694630a1bb8b594899489948c9493909116926309bd5a60928281019260209291908290030181865afa158015610284573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a89190610a09565b60048054604080516341c0fac560e11b815290516001600160a01b0390921692638381f58a9282820192602092908290030181865afa1580156102ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103139190610a22565b6040518663ffffffff1660e01b8152600401610333959493929190610ad4565b60006040518083038186803b15801561034b57600080fd5b505afa15801561035f573d6000803e3d6000fd5b5050506000868152602081905260409020859055506002546103819042610ba1565b6000858152600160205260409020556103b5565b8381146103b55760405163f0cd4ed960e01b815260040160405180910390fd5b50505050505050565b60008060006103cc8461052e565b9250925092509193909250565b6000806103f36103ee600160208a0135610bb9565b61052e565b92505091508061041657604051631234d8dd60e01b815260040160405180910390fd5b60035460405163c2f0329f60e01b81526001600160a01b039091169063c2f0329f906104509085908a908a908a908a908f90600401610e28565b60006040518083038186803b15801561046857600080fd5b505afa15801561047c573d6000803e3d6000fd5b5050505050505050505050565b60008061049e6103ee60016020880135610bb9565b9250509150806104c157604051631234d8dd60e01b815260040160405180910390fd5b600354604051630a9b7b5d60e21b81526001600160a01b0390911690632a6ded74906104f7908590889088908b90600401610e69565b60006040518083038186803b15801561050f57600080fd5b505afa158015610523573d6000803e3d6000fd5b505050505050505050565b600081815260208181526040808320548084526001909252822054829182918190811580159061056c57506000838152600160205260409020544210155b935093509350509193909250565b60006020828403121561058c57600080fd5b5035919050565b60008083601f8401126105a557600080fd5b5081356001600160401b038111156105bc57600080fd5b6020830191508360208285010111156105d457600080fd5b9250929050565b600080600080606085870312156105f157600080fd5b84356001600160401b0381111561060757600080fd5b61061387828801610593565b90989097506020870135966040013595509350505050565b60006040828403121561063d57600080fd5b50919050565b60008060008060006060868803121561065b57600080fd5b85356001600160401b038082111561067257600080fd5b61067e89838a0161062b565b9650602088013591508082111561069457600080fd5b6106a089838a01610593565b909650945060408801359150808211156106b957600080fd5b506106c688828901610593565b969995985093965092949392505050565b6000806000604084860312156106ec57600080fd5b83356001600160401b038082111561070357600080fd5b61070f8783880161062b565b9450602086013591508082111561072557600080fd5b5061073286828701610593565b9497909650939450505050565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b03811182821017156107775761077761073f565b60405290565b604051601f8201601f191681016001600160401b03811182821017156107a5576107a561073f565b604052919050565b6000601f83818401126107bf57600080fd5b823560206001600160401b03808311156107db576107db61073f565b8260051b6107ea83820161077d565b938452868101830193838101908986111561080457600080fd5b84890192505b85831015610894578235848111156108225760008081fd5b8901603f81018b136108345760008081fd5b8581013560408682111561084a5761084a61073f565b61085b828b01601f1916890161077d565b8281528d828486010111156108705760008081fd5b828285018a830137600092810189019290925250835250918401919084019061080a565b9998505050505050505050565b6001600160401b03811681146108b657600080fd5b50565b6000608082840312156108cb57600080fd5b604051608081016001600160401b0382821081831117156108ee576108ee61073f565b81604052829350843591508082111561090657600080fd5b610912868387016107ad565b8352602085013591508082111561092857600080fd5b50610935858286016107ad565b60208301525060408301356040820152606083013560608201525092915050565b6000806040838503121561096957600080fd5b82356001600160401b038082111561098057600080fd5b908401906060828703121561099457600080fd5b61099c610755565b8235828111156109ab57600080fd5b6109b7888286016107ad565b82525060208301356020820152604083013592506109d4836108a1565b8260408201528094505060208501359150808211156109f257600080fd5b506109ff858286016108b9565b9150509250929050565b600060208284031215610a1b57600080fd5b5051919050565b600060208284031215610a3457600080fd5b8151610a3f816108a1565b9392505050565b600081518084526020808501808196508360051b810191508286016000805b86811015610ac6578385038a5282518051808752835b81811015610a96578281018901518882018a01528801610a7b565b81811115610aa6578489838a0101525b509a87019a601f01601f1916959095018601945091850191600101610a65565b509298975050505050505050565b60a0815260008651606060a0840152610af1610100840182610a46565b9050602088015160c08401526001600160401b0360408901511660e08401528281036020840152865160808252610b2b6080830182610a46565b905060208801518282036020840152610b448282610a46565b91505060408801516040830152606088015160608301528092505050846040830152836060830152610b8160808301846001600160401b03169052565b9695505050505050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610bb457610bb4610b8b565b500190565b600082821015610bcb57610bcb610b8b565b500390565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000808335601e19843603018112610c1057600080fd5b83016020810192503590506001600160401b03811115610c2f57600080fd5b8060051b36038213156105d457600080fd5b6000808335601e19843603018112610c5857600080fd5b83016020810192503590506001600160401b03811115610c7757600080fd5b8036038213156105d457600080fd5b600060408301610c968384610bf9565b604086528281845260608701905060608260051b88010193508260005b83811015610e0f57888603605f1901835236859003607e1901823512610cd857600080fd5b8482350160808701610cea8283610bf9565b60808a528281845260a08b01905060a08260051b8c010193508260005b83811015610d88578c8603609f19018352813536869003603e19018112610d2d57600080fd5b8501610d398180610c41565b60408952610d4b60408a018284610bd0565b915050610d5b6020830183610c41565b925088820360208a0152610d70828483610bd0565b98505050602093840193929092019150600101610d07565b5050505050610d9a6020830183610c41565b89830360208b0152610dad838284610bd0565b92505050610dbe6040830183610c41565b89830360408b0152610dd1838284610bd0565b92505050610de26060830183610c41565b925088820360608a0152610df7828483610bd0565b98505050602093840193929092019150600101610cb3565b5050505050602083013560208501528091505092915050565b868152608060208201526000610e42608083018789610bd0565b8281036040840152610e55818688610bd0565b905082810360608401526108948185610c86565b848152606060208201526000610e83606083018587610bd0565b8281036040840152610e958185610c86565b97965050505050505056fea2646970667358221220853ec805731e7eed5df82abdd45c9074563932fa41032ccff8917caac32afd9f64736f6c634300080f0033"; + "0x60806040526000805460ff1916600117905534801561001d57600080fd5b5060405161103638038061103683398101604081905261003c91610091565b63ffffffff92909216600355600480546001600160a01b039283166001600160a01b031991821617909155600580549290931691161790556100e7565b6001600160a01b038116811461008e57600080fd5b50565b6000806000606084860312156100a657600080fd5b835163ffffffff811681146100ba57600080fd5b60208501519093506100cb81610079565b60408501519092506100dc81610079565b809150509250925092565b610f40806100f66000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806363042720116100715780636304272014610181578063b9a1e87b1461018a578063cb535ab5146101ba578063d56ff842146101cd578063eb772058146101fa578063fdaab4e51461020d57600080fd5b80631b738a22146100b95780632b7ac3f3146100ec57806334b80a411461011757806344c9af281461013757806349ff245e1461015757806357c1c5f41461016c575b600080fd5b6100d96100c73660046105bc565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b6004546100ff906001600160a01b031681565b6040516001600160a01b0390911681526020016100e3565b6100d96101253660046105bc565b60026020526000908152604090205481565b6100d96101453660046105bc565b60009081526001602052604090205490565b61016a61016536600461061d565b610220565b005b610174600181565b6040516100e3919061066d565b6100d960035481565b61019d6101983660046105bc565b6103eb565b6040805193845260208401929092521515908201526060016100e3565b61016a6101c83660046106ad565b610406565b6100d96101db3660046105bc565b6000908152600160209081526040808320548352600290915290205490565b6005546100ff906001600160a01b031681565b61016a61021b366004610741565b6104ca565b60008061022f858701876109c0565b6000868152600160205260408120549294509092508190036103c2576004805460055460408051624dead360e51b815290516001600160a01b0393841694630a1bb8b594899489948c9492909116926309bd5a609282820192602092908290030181865afa1580156102a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102c99190610a73565b600560009054906101000a90046001600160a01b03166001600160a01b0316638381f58a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561031c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103409190610a8c565b6040518663ffffffff1660e01b8152600401610360959493929190610b3e565b60006040518083038186803b15801561037857600080fd5b505afa15801561038c573d6000803e3d6000fd5b5050506000868152600160205260409020859055506003546103ae9042610c0b565b6000858152600260205260409020556103e2565b8381146103e25760405163f0cd4ed960e01b815260040160405180910390fd5b50505050505050565b60008060006103f98461056e565b9250925092509193909250565b60008061042061041b600160208a0135610c23565b61056e565b92505091508061044357604051631234d8dd60e01b815260040160405180910390fd5b600460009054906101000a90046001600160a01b03166001600160a01b031663c2f0329f8360001b888888888d6040518763ffffffff1660e01b815260040161049196959493929190610e92565b60006040518083038186803b1580156104a957600080fd5b505afa1580156104bd573d6000803e3d6000fd5b5050505050505050505050565b6000806104df61041b60016020880135610c23565b92505091508061050257604051631234d8dd60e01b815260040160405180910390fd5b60048054604051630a9b7b5d60e21b81526001600160a01b0390911691632a6ded7491610537918691899189918c9101610ed3565b60006040518083038186803b15801561054f57600080fd5b505afa158015610563573d6000803e3d6000fd5b505050505050505050565b600081815260016020908152604080832054808452600290925282205482918291819081158015906105ae57506000838152600260205260409020544210155b935093509350509193909250565b6000602082840312156105ce57600080fd5b5035919050565b60008083601f8401126105e757600080fd5b5081356001600160401b038111156105fe57600080fd5b60208301915083602082850101111561061657600080fd5b9250929050565b6000806000806060858703121561063357600080fd5b84356001600160401b0381111561064957600080fd5b610655878288016105d5565b90989097506020870135966040013595509350505050565b602081016003831061068f57634e487b7160e01b600052602160045260246000fd5b91905290565b6000604082840312156106a757600080fd5b50919050565b6000806000806000606086880312156106c557600080fd5b85356001600160401b03808211156106dc57600080fd5b6106e889838a01610695565b965060208801359150808211156106fe57600080fd5b61070a89838a016105d5565b9096509450604088013591508082111561072357600080fd5b50610730888289016105d5565b969995985093965092949392505050565b60008060006040848603121561075657600080fd5b83356001600160401b038082111561076d57600080fd5b61077987838801610695565b9450602086013591508082111561078f57600080fd5b5061079c868287016105d5565b9497909650939450505050565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b03811182821017156107e1576107e16107a9565b60405290565b604051601f8201601f191681016001600160401b038111828210171561080f5761080f6107a9565b604052919050565b6000601f838184011261082957600080fd5b823560206001600160401b0380831115610845576108456107a9565b8260051b6108548382016107e7565b938452868101830193838101908986111561086e57600080fd5b84890192505b858310156108fe5782358481111561088c5760008081fd5b8901603f81018b1361089e5760008081fd5b858101356040868211156108b4576108b46107a9565b6108c5828b01601f191689016107e7565b8281528d828486010111156108da5760008081fd5b828285018a8301376000928101890192909252508352509184019190840190610874565b9998505050505050505050565b6001600160401b038116811461092057600080fd5b50565b60006080828403121561093557600080fd5b604051608081016001600160401b038282108183111715610958576109586107a9565b81604052829350843591508082111561097057600080fd5b61097c86838701610817565b8352602085013591508082111561099257600080fd5b5061099f85828601610817565b60208301525060408301356040820152606083013560608201525092915050565b600080604083850312156109d357600080fd5b82356001600160401b03808211156109ea57600080fd5b90840190606082870312156109fe57600080fd5b610a066107bf565b823582811115610a1557600080fd5b610a2188828601610817565b8252506020830135602082015260408301359250610a3e8361090b565b826040820152809450506020850135915080821115610a5c57600080fd5b50610a6985828601610923565b9150509250929050565b600060208284031215610a8557600080fd5b5051919050565b600060208284031215610a9e57600080fd5b8151610aa98161090b565b9392505050565b600081518084526020808501808196508360051b810191508286016000805b86811015610b30578385038a5282518051808752835b81811015610b00578281018901518882018a01528801610ae5565b81811115610b10578489838a0101525b509a87019a601f01601f1916959095018601945091850191600101610acf565b509298975050505050505050565b60a0815260008651606060a0840152610b5b610100840182610ab0565b9050602088015160c08401526001600160401b0360408901511660e08401528281036020840152865160808252610b956080830182610ab0565b905060208801518282036020840152610bae8282610ab0565b91505060408801516040830152606088015160608301528092505050846040830152836060830152610beb60808301846001600160401b03169052565b9695505050505050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610c1e57610c1e610bf5565b500190565b600082821015610c3557610c35610bf5565b500390565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000808335601e19843603018112610c7a57600080fd5b83016020810192503590506001600160401b03811115610c9957600080fd5b8060051b360382131561061657600080fd5b6000808335601e19843603018112610cc257600080fd5b83016020810192503590506001600160401b03811115610ce157600080fd5b80360382131561061657600080fd5b600060408301610d008384610c63565b604086528281845260608701905060608260051b88010193508260005b83811015610e7957888603605f1901835236859003607e1901823512610d4257600080fd5b8482350160808701610d548283610c63565b60808a528281845260a08b01905060a08260051b8c010193508260005b83811015610df2578c8603609f19018352813536869003603e19018112610d9757600080fd5b8501610da38180610cab565b60408952610db560408a018284610c3a565b915050610dc56020830183610cab565b925088820360208a0152610dda828483610c3a565b98505050602093840193929092019150600101610d71565b5050505050610e046020830183610cab565b89830360208b0152610e17838284610c3a565b92505050610e286040830183610cab565b89830360408b0152610e3b838284610c3a565b92505050610e4c6060830183610cab565b925088820360608a0152610e61828483610c3a565b98505050602093840193929092019150600101610d1d565b5050505050602083013560208501528091505092915050565b868152608060208201526000610eac608083018789610c3a565b8281036040840152610ebf818688610c3a565b905082810360608401526108fe8185610cf0565b848152606060208201526000610eed606083018587610c3a565b8281036040840152610eff8185610cf0565b97965050505050505056fea264697066735822122002704f39522eba69937029ffb29e1a22a80c40ab8029a5a547a981d55cb5e56b64736f6c634300080f0033"; type OptimisticLightClientConstructorParams = | [signer?: Signer] diff --git a/src/evm/contracts/factories/OptimisticProofVerifier__factory.ts b/src/evm/contracts/factories/OptimisticProofVerifier__factory.ts index 7c615b10..a73819d0 100644 --- a/src/evm/contracts/factories/OptimisticProofVerifier__factory.ts +++ b/src/evm/contracts/factories/OptimisticProofVerifier__factory.ts @@ -312,7 +312,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60806040523480156200001157600080fd5b5060405162002df638038062002df683398101604081905262000034916200005a565b600080546001600160a01b0319166001600160a01b03929092169190911790556200008c565b6000602082840312156200006d57600080fd5b81516001600160a01b03811681146200008557600080fd5b9392505050565b612d5a806200009c6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80630a1bb8b5146100515780632a6ded741461006657806359c1b56b14610079578063c2f0329f146100a8575b600080fd5b61006461005f3660046124f8565b6100bb565b005b6100646100743660046125ec565b6103bb565b60005461008c906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b6100646100b636600461265e565b6103d4565b6100cb60608601604087016126f9565b6001600160401b0316816001600160401b0316146100fc57604051630fd8993960e21b815260040160405180910390fd5b6101176101098680612714565b610112916127a3565b6105be565b80519060200120821461013c5760405162fa512960e01b815260040160405180910390fd5b6101468580612714565b600881811061015757610157612877565b9050602002810190610169919061288d565b6040516101779291906128d3565b60405180910390206101a386604001602081019061019591906126f9565b6001600160401b03166105ff565b80519060200120146101c857604051633395483760e01b815260040160405180910390fd5b6101d28580612714565b60038181106101e3576101e3612877565b90506020028101906101f5919061288d565b6040516102039291906128d3565b6040518091039020610239866020013560405160200161022591815260200190565b604051602081830303815290604052610618565b805190602001201461025e576040516313d643bd60e21b815260040160405180910390fd5b6000805460405160609190911b6bffffffffffffffffffffffff191660208201526102c5906102c0906102bb9060340160408051601f198184030181529190526102a88980612714565b6102b1916127a3565b8a60200135610671565b610694565b6106f0565b9050600061033a86604001356040516020016102e391815260200190565b60408051601f198184030181529190526103006020890189612714565b610309916127a3565b61032c8560028151811061031f5761031f612877565b6020026020010151610913565b610335906128e3565b610671565b905061034d61034882610694565b610913565b610356906128e3565b6040805160006020820181905291810188905260608082019290925290880135608082015260a00160405160208183030381529060405280519060200120146103b2576040516330d26e5760e11b815260040160405180910390fd5b50505050505050565b604051632974974360e01b815260040160405180910390fd5b6103de8180612714565b60008181106103ef576103ef612877565b90506020028101906104019190612907565b61040f90602081019061288d565b60405161041d9291906128d3565b604051809103902085856040516104359291906128d3565b60405180910390201461045b5760405163026a287560e51b815260040160405180910390fd5b6104658180612714565b600081811061047657610476612877565b90506020028101906104889190612907565b61049690604081019061288d565b6040516104a49291906128d3565b604051809103902083836040516104bc9291906128d3565b6040518091039020146104e2576040516310d9300f60e11b815260040160405180910390fd5b6105176104ef8280612714565b600081811061050057610500612877565b90506020028101906105129190612907565b610a36565b6105218280612714565b600181811061053257610532612877565b90506020028101906105449190612907565b61055290604081019061288d565b61055b91612927565b1461057957604051636589f0e160e11b815260040160405180910390fd5b6105976105868280612714565b600181811061050057610500612877565b86146105b6576040516392cb8fbb60e01b815260040160405180910390fd5b505050505050565b60606105c982610c5a565b90506105d7815160c0610d93565b816040516020016105e9929190612980565b6040516020818303038152906040529050919050565b606061061261060d83610f3e565b610618565b92915050565b606081516001148015610645575060808260008151811061063b5761063b612877565b016020015160f81c105b1561064e575090565b61065a82516080610d93565b826040516020016105e9929190612980565b919050565b6060600061067e8561106a565b905061068b818585611086565b95945050505050565b604080518082019091526000808252602082015260008251116106d25760405162461bcd60e51b81526004016106c99061299d565b60405180910390fd5b50604080518082019091528151815260209182019181019190915290565b6060600080600061070085611916565b91945092509050600181600181111561071b5761071b612a0d565b1461078e5760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016106c9565b845161079a8385612a39565b146108025760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016106c9565b604080516020808252610420820190925290816020015b60408051808201909152600080825260208201528152602001906001900390816108195790505093506000835b86518110156109075760008061088c6040518060400160405280858c600001516108709190612a51565b8152602001858c602001516108859190612a39565b9052611916565b5091509150604051806040016040528083836108a89190612a39565b8152602001848b602001516108bd9190612a39565b8152508885815181106108d2576108d2612877565b60209081029190910101526108e8600185612a39565b93506108f48183612a39565b6108fe9084612a39565b92505050610846565b50845250919392505050565b6060600080600061092385611916565b91945092509050600081600181111561093e5761093e612a0d565b146109b15760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016106c9565b6109bb8284612a39565b855114610a275760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016106c9565b61068b85602001518484611fd9565b6000806002610a48604085018561288d565b604051610a569291906128d3565b602060405180830381855afa158015610a73573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610a969190612a68565b90506002610aa7606085018561288d565b610abe610ab7602088018861288d565b905061206c565b610acb602088018861288d565b610ad5602061206c565b87604051602001610aec9796959493929190612a81565b60408051601f1981840301815290829052610b0691612ac5565b602060405180830381855afa158015610b23573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610b469190612a68565b915060005b610b558480612714565b9050811015610c53576002610b6a8580612714565b83818110610b7a57610b7a612877565b9050602002810190610b8c9190612ad1565b610b96908061288d565b85610ba18880612714565b86818110610bb157610bb1612877565b9050602002810190610bc39190612ad1565b610bd190602081019061288d565b604051602001610be5959493929190612ae7565b60408051601f1981840301815290829052610bff91612ac5565b602060405180830381855afa158015610c1c573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610c3f9190612a68565b925080610c4b81612b0f565b915050610b4b565b5050919050565b60608151600003610c7e5760408051600080825260208201909252905b5092915050565b6000805b8351811015610cc557838181518110610c9d57610c9d612877565b60200260200101515182610cb19190612a39565b915080610cbd81612b0f565b915050610c82565b816001600160401b03811115610cdd57610cdd61275d565b6040519080825280601f01601f191660200182016040528015610d07576020820181803683370190505b50925060009050602083015b8451821015610d8b576000858381518110610d3057610d30612877565b602002602001015190506000602082019050610d4e838284516120db565b868481518110610d6057610d60612877565b60200260200101515183610d749190612a39565b925050508180610d8390612b0f565b925050610d13565b505050919050565b60606038831015610df95760408051600180825281830190925290602082018180368337019050509050610dc78284612b28565b60f81b81600081518110610ddd57610ddd612877565b60200101906001600160f81b031916908160001a905350610612565b600060015b610e088186612b63565b15610e2e5781610e1781612b0f565b9250610e27905061010082612b77565b9050610dfe565b610e39826001612a39565b6001600160401b03811115610e5057610e5061275d565b6040519080825280601f01601f191660200182016040528015610e7a576020820181803683370190505b509250610e878483612b28565b610e92906037612b28565b60f81b83600081518110610ea857610ea8612877565b60200101906001600160f81b031916908160001a905350600190505b818111610f3657610100610ed88284612a51565b610ee490610100612c7a565b610eee9087612b63565b610ef89190612c86565b60f81b838281518110610f0d57610f0d612877565b60200101906001600160f81b031916908160001a90535080610f2e81612b0f565b915050610ec4565b505092915050565b6060600082604051602001610f5591815260200190565b604051602081830303815290604052905060005b6020811015610fac57818181518110610f8457610f84612877565b01602001516001600160f81b031916600003610fac5780610fa481612b0f565b915050610f69565b610fb7816020612a51565b6001600160401b03811115610fce57610fce61275d565b6040519080825280601f01601f191660200182016040528015610ff8576020820181803683370190505b50925060005b8351811015610d8b57828261101281612b0f565b93508151811061102457611024612877565b602001015160f81c60f81b84828151811061104157611041612877565b60200101906001600160f81b031916908160001a9053508061106281612b0f565b915050610ffe565b606081805190602001206040516020016105e991815260200190565b606060008451116110d15760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016106c9565b60006110dc84612138565b905060006110e98661221c565b905060008460405160200161110091815260200190565b60405160208183030381529060405290506000805b84518110156118b857600085828151811061113257611132612877565b6020026020010151905084518311156111a45760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016106c9565b8260000361124357805180516020918201206040516111f2926111cc92910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b61123e5760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016106c9565b611339565b8051516020116112c9578051805160209182012060405161126d926111cc92910190815260200190565b61123e5760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016106c9565b8051845160208087019190912082519190920120146113395760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016106c9565b61134560106001612a39565b816020015151036114e0578451830361147857611372816020015160108151811061031f5761031f612877565b965060008751116113eb5760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016106c9565b600186516113f99190612a51565b821461146d5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016106c9565b50505050505061190f565b600085848151811061148c5761148c612877565b602001015160f81c60f81b60f81c9050600082602001518260ff16815181106114b7576114b7612877565b602002602001015190506114ca8161227f565b95506114d7600186612a39565b945050506118a5565b60028160200151510361184c5760006114f8826122a4565b905060008160008151811061150f5761150f612877565b016020015160f81c90506000611526600283612c9a565b611531906002612cbc565b90506000611542848360ff166122c8565b905060006115508a896122c8565b9050600061155e83836122fe565b9050808351146115d65760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016106c9565b60ff8516600214806115eb575060ff85166003145b1561178c57808251146116665760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016106c9565b611680876020015160018151811061031f5761031f612877565b9c5060008d51116116f95760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016106c9565b60018c516117079190612a51565b881461177b5760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016106c9565b50505050505050505050505061190f565b60ff8516158061179f575060ff85166001145b156117de576117cb87602001516001815181106117be576117be612877565b602002602001015161227f565b99506117d7818a612a39565b9850611841565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016106c9565b5050505050506118a5565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016106c9565b50806118b081612b0f565b915050611115565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016106c9565b9392505050565b60008060008084600001511161193e5760405162461bcd60e51b81526004016106c99061299d565b6020840151805160001a607f8111611963576000600160009450945094505050611fd2565b60b78111611ac0576000611978608083612a51565b9050808760000151116119f85760405162461bcd60e51b815260206004820152604e6024820152600080516020612d0583398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016106c9565b6001838101516001600160f81b0319169082141580611a255750600160ff1b6001600160f81b0319821610155b611aad5760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016106c9565b5060019550935060009250611fd2915050565b60bf8111611d01576000611ad560b783612a51565b905080876000015111611b585760405162461bcd60e51b81526020600482015260516024820152600080516020612d0583398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016106c9565b60018301516001600160f81b0319166000819003611bdf5760405162461bcd60e51b815260206004820152604a6024820152600080516020612d0583398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016106c9565b600184015160088302610100031c60378111611c625760405162461bcd60e51b81526020600482015260486024820152600080516020612d0583398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016106c9565b611c6c8184612a39565b895111611ce45760405162461bcd60e51b815260206004820152604c6024820152600080516020612d0583398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016106c9565b611cef836001612a39565b9750955060009450611fd29350505050565b60f78111611da3576000611d1660c083612a51565b905080876000015111611d925760405162461bcd60e51b815260206004820152604a6024820152600080516020612d0583398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016106c9565b600195509350849250611fd2915050565b6000611db060f783612a51565b905080876000015111611e2f5760405162461bcd60e51b815260206004820152604d6024820152600080516020612d0583398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016106c9565b60018301516001600160f81b0319166000819003611eb45760405162461bcd60e51b81526020600482015260486024820152600080516020612d0583398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016106c9565b600184015160088302610100031c60378111611f355760405162461bcd60e51b81526020600482015260466024820152600080516020612d0583398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016106c9565b611f3f8184612a39565b895111611fb55760405162461bcd60e51b815260206004820152604a6024820152600080516020612d0583398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016106c9565b611fc0836001612a39565b9750955060019450611fd29350505050565b9193909250565b6060816001600160401b03811115611ff357611ff361275d565b6040519080825280601f01601f19166020018201604052801561201d576020820181803683370190505b509050811561190f5760006120328486612a39565b90506020820160005b8481101561205357828101518282015260200161203b565b84811115612062576000858301525b5050509392505050565b6060805b608083106120ae578083607f1660801760f81b604051602001612094929190612cdf565b60408051601f198184030190525260079290921c91612070565b808360f81b6040516020016120c4929190612cdf565b604051602081830303815290604052915050919050565b8282825b6020811061211757815183526120f6602084612a39565b9250612103602083612a39565b9150612110602082612a51565b90506120df565b905182516020929092036101000a6000190180199091169116179052505050565b8051606090806001600160401b038111156121555761215561275d565b60405190808252806020026020018201604052801561219a57816020015b60408051808201909152606080825260208201528152602001906001900390816121735790505b50915060005b81811015610c535760405180604001604052808583815181106121c5576121c5612877565b602002602001015181526020016121f48684815181106121e7576121e7612877565b602002602001015161237b565b81525083828151811061220957612209612877565b60209081029190910101526001016121a0565b606080604051905082518060011b603f8101601f1916830160405280835250602084016020830160005b83811015612274578060011b82018184015160001a8060041c8253600f811660018301535050600101612246565b509295945050505050565b6060602082600001511061229b5761229682610913565b610612565b61061282612389565b60606106126122c3836020015160008151811061031f5761031f612877565b61221c565b6060825182106122e75750604080516020810190915260008152610612565b61190f83838486516122f99190612a51565b61239f565b6000808251845110612311578251612314565b83515b90505b808210801561236b575082828151811061233357612333612877565b602001015160f81c60f81b6001600160f81b03191684838151811061235a5761235a612877565b01602001516001600160f81b031916145b15610c7757816001019150612317565b60606106126102c083610694565b6060610612826020015160008460000151611fd9565b60608182601f0110156123e55760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016106c9565b8282840110156124285760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016106c9565b8183018451101561246f5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016106c9565b60608215801561248e57604051915060008252602082016040526124d8565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156124c75780518352602092830192016124af565b5050858452601f01601f1916604052505b50949350505050565b80356001600160401b038116811461066c57600080fd5b600080600080600060a0868803121561251057600080fd5b85356001600160401b038082111561252757600080fd5b908701906060828a03121561253b57600080fd5b9095506020870135908082111561255157600080fd5b5086016080818903121561256457600080fd5b93506040860135925060608601359150612580608087016124e1565b90509295509295909350565b60008083601f84011261259e57600080fd5b5081356001600160401b038111156125b557600080fd5b6020830191508360208285010111156125cd57600080fd5b9250929050565b6000604082840312156125e657600080fd5b50919050565b6000806000806060858703121561260257600080fd5b8435935060208501356001600160401b038082111561262057600080fd5b61262c8883890161258c565b9095509350604087013591508082111561264557600080fd5b50612652878288016125d4565b91505092959194509250565b6000806000806000806080878903121561267757600080fd5b8635955060208701356001600160401b038082111561269557600080fd5b6126a18a838b0161258c565b909750955060408901359150808211156126ba57600080fd5b6126c68a838b0161258c565b909550935060608901359150808211156126df57600080fd5b506126ec89828a016125d4565b9150509295509295509295565b60006020828403121561270b57600080fd5b61190f826124e1565b6000808335601e1984360301811261272b57600080fd5b8301803591506001600160401b0382111561274557600080fd5b6020019150600581901b36038213156125cd57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561279b5761279b61275d565b604052919050565b60006001600160401b03808411156127bd576127bd61275d565b8360051b60206127ce818301612773565b8681529185019181810190368411156127e657600080fd5b865b8481101561286b578035868111156128005760008081fd5b8801601f36818301126128135760008081fd5b8135888111156128255761282561275d565b612836818301601f19168801612773565b9150808252368782850101111561284d5760008081fd5b808784018884013760009082018701528452509183019183016127e8565b50979650505050505050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126128a457600080fd5b8301803591506001600160401b038211156128be57600080fd5b6020019150368190038213156125cd57600080fd5b8183823760009101908152919050565b805160208083015191908110156125e65760001960209190910360031b1b16919050565b60008235607e1983360301811261291d57600080fd5b9190910192915050565b8035602083101561061257600019602084900360031b1b1692915050565b6000815160005b81811015612966576020818501810151868301520161294c565b81811115612975576000828601525b509290920192915050565b600061299561298f8386612945565b84612945565b949350505050565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a00190565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115612a4c57612a4c612a23565b500190565b600082821015612a6357612a63612a23565b500390565b600060208284031215612a7a57600080fd5b5051919050565b86888237600087820160008152612a988189612945565b9050858782376000908601908152612ab08186612945565b93845250506020909101979650505050505050565b600061190f8284612945565b60008235603e1983360301811261291d57600080fd5b8486823760008582018581528385602083013760009301602001928352509095945050505050565b600060018201612b2157612b21612a23565b5060010190565b600060ff821660ff84168060ff03821115612b4557612b45612a23565b019392505050565b634e487b7160e01b600052601260045260246000fd5b600082612b7257612b72612b4d565b500490565b6000816000190483118215151615612b9157612b91612a23565b500290565b600181815b80851115612bd1578160001904821115612bb757612bb7612a23565b80851615612bc457918102915b93841c9390800290612b9b565b509250929050565b600082612be857506001610612565b81612bf557506000610612565b8160018114612c0b5760028114612c1557612c31565b6001915050610612565b60ff841115612c2657612c26612a23565b50506001821b610612565b5060208310610133831016604e8410600b8410161715612c54575081810a610612565b612c5e8383612b96565b8060001904821115612c7257612c72612a23565b029392505050565b600061190f8383612bd9565b600082612c9557612c95612b4d565b500690565b600060ff831680612cad57612cad612b4d565b8060ff84160691505092915050565b600060ff821660ff841680821015612cd657612cd6612a23565b90039392505050565b6000612ceb8285612945565b6001600160f81b0319939093168352505060010191905056fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a26469706673582212209e632f2ebe718eaf171beff3a587db8cd04e1567f1fe2678d3184a18d19b52ad64736f6c634300080f0033"; + "0x60806040523480156200001157600080fd5b5060405162002df638038062002df683398101604081905262000034916200005a565b600080546001600160a01b0319166001600160a01b03929092169190911790556200008c565b6000602082840312156200006d57600080fd5b81516001600160a01b03811681146200008557600080fd5b9392505050565b612d5a806200009c6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80630a1bb8b5146100515780632a6ded741461006657806359c1b56b14610079578063c2f0329f146100a8575b600080fd5b61006461005f3660046124f8565b6100bb565b005b6100646100743660046125ec565b6103bb565b60005461008c906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b6100646100b636600461265e565b6103d4565b6100cb60608601604087016126f9565b6001600160401b0316816001600160401b0316146100fc57604051630fd8993960e21b815260040160405180910390fd5b6101176101098680612714565b610112916127a3565b6105be565b80519060200120821461013c5760405162fa512960e01b815260040160405180910390fd5b6101468580612714565b600881811061015757610157612877565b9050602002810190610169919061288d565b6040516101779291906128d3565b60405180910390206101a386604001602081019061019591906126f9565b6001600160401b03166105ff565b80519060200120146101c857604051633395483760e01b815260040160405180910390fd5b6101d28580612714565b60038181106101e3576101e3612877565b90506020028101906101f5919061288d565b6040516102039291906128d3565b6040518091039020610239866020013560405160200161022591815260200190565b604051602081830303815290604052610618565b805190602001201461025e576040516313d643bd60e21b815260040160405180910390fd5b6000805460405160609190911b6bffffffffffffffffffffffff191660208201526102c5906102c0906102bb9060340160408051601f198184030181529190526102a88980612714565b6102b1916127a3565b8a60200135610671565b610694565b6106f0565b9050600061033a86604001356040516020016102e391815260200190565b60408051601f198184030181529190526103006020890189612714565b610309916127a3565b61032c8560028151811061031f5761031f612877565b6020026020010151610913565b610335906128e3565b610671565b905061034d61034882610694565b610913565b610356906128e3565b6040805160006020820181905291810188905260608082019290925290880135608082015260a00160405160208183030381529060405280519060200120146103b2576040516330d26e5760e11b815260040160405180910390fd5b50505050505050565b604051632974974360e01b815260040160405180910390fd5b6103de8180612714565b60008181106103ef576103ef612877565b90506020028101906104019190612907565b61040f90602081019061288d565b60405161041d9291906128d3565b604051809103902085856040516104359291906128d3565b60405180910390201461045b5760405163026a287560e51b815260040160405180910390fd5b6104658180612714565b600081811061047657610476612877565b90506020028101906104889190612907565b61049690604081019061288d565b6040516104a49291906128d3565b604051809103902083836040516104bc9291906128d3565b6040518091039020146104e2576040516310d9300f60e11b815260040160405180910390fd5b6105176104ef8280612714565b600081811061050057610500612877565b90506020028101906105129190612907565b610a36565b6105218280612714565b600181811061053257610532612877565b90506020028101906105449190612907565b61055290604081019061288d565b61055b91612927565b1461057957604051636589f0e160e11b815260040160405180910390fd5b6105976105868280612714565b600181811061050057610500612877565b86146105b6576040516392cb8fbb60e01b815260040160405180910390fd5b505050505050565b60606105c982610c5a565b90506105d7815160c0610d93565b816040516020016105e9929190612980565b6040516020818303038152906040529050919050565b606061061261060d83610f3e565b610618565b92915050565b606081516001148015610645575060808260008151811061063b5761063b612877565b016020015160f81c105b1561064e575090565b61065a82516080610d93565b826040516020016105e9929190612980565b919050565b6060600061067e8561106a565b905061068b818585611086565b95945050505050565b604080518082019091526000808252602082015260008251116106d25760405162461bcd60e51b81526004016106c99061299d565b60405180910390fd5b50604080518082019091528151815260209182019181019190915290565b6060600080600061070085611916565b91945092509050600181600181111561071b5761071b612a0d565b1461078e5760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016106c9565b845161079a8385612a39565b146108025760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016106c9565b604080516020808252610420820190925290816020015b60408051808201909152600080825260208201528152602001906001900390816108195790505093506000835b86518110156109075760008061088c6040518060400160405280858c600001516108709190612a51565b8152602001858c602001516108859190612a39565b9052611916565b5091509150604051806040016040528083836108a89190612a39565b8152602001848b602001516108bd9190612a39565b8152508885815181106108d2576108d2612877565b60209081029190910101526108e8600185612a39565b93506108f48183612a39565b6108fe9084612a39565b92505050610846565b50845250919392505050565b6060600080600061092385611916565b91945092509050600081600181111561093e5761093e612a0d565b146109b15760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016106c9565b6109bb8284612a39565b855114610a275760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016106c9565b61068b85602001518484611fd9565b6000806002610a48604085018561288d565b604051610a569291906128d3565b602060405180830381855afa158015610a73573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610a969190612a68565b90506002610aa7606085018561288d565b610abe610ab7602088018861288d565b905061206c565b610acb602088018861288d565b610ad5602061206c565b87604051602001610aec9796959493929190612a81565b60408051601f1981840301815290829052610b0691612ac5565b602060405180830381855afa158015610b23573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610b469190612a68565b915060005b610b558480612714565b9050811015610c53576002610b6a8580612714565b83818110610b7a57610b7a612877565b9050602002810190610b8c9190612ad1565b610b96908061288d565b85610ba18880612714565b86818110610bb157610bb1612877565b9050602002810190610bc39190612ad1565b610bd190602081019061288d565b604051602001610be5959493929190612ae7565b60408051601f1981840301815290829052610bff91612ac5565b602060405180830381855afa158015610c1c573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610c3f9190612a68565b925080610c4b81612b0f565b915050610b4b565b5050919050565b60608151600003610c7e5760408051600080825260208201909252905b5092915050565b6000805b8351811015610cc557838181518110610c9d57610c9d612877565b60200260200101515182610cb19190612a39565b915080610cbd81612b0f565b915050610c82565b816001600160401b03811115610cdd57610cdd61275d565b6040519080825280601f01601f191660200182016040528015610d07576020820181803683370190505b50925060009050602083015b8451821015610d8b576000858381518110610d3057610d30612877565b602002602001015190506000602082019050610d4e838284516120db565b868481518110610d6057610d60612877565b60200260200101515183610d749190612a39565b925050508180610d8390612b0f565b925050610d13565b505050919050565b60606038831015610df95760408051600180825281830190925290602082018180368337019050509050610dc78284612b28565b60f81b81600081518110610ddd57610ddd612877565b60200101906001600160f81b031916908160001a905350610612565b600060015b610e088186612b63565b15610e2e5781610e1781612b0f565b9250610e27905061010082612b77565b9050610dfe565b610e39826001612a39565b6001600160401b03811115610e5057610e5061275d565b6040519080825280601f01601f191660200182016040528015610e7a576020820181803683370190505b509250610e878483612b28565b610e92906037612b28565b60f81b83600081518110610ea857610ea8612877565b60200101906001600160f81b031916908160001a905350600190505b818111610f3657610100610ed88284612a51565b610ee490610100612c7a565b610eee9087612b63565b610ef89190612c86565b60f81b838281518110610f0d57610f0d612877565b60200101906001600160f81b031916908160001a90535080610f2e81612b0f565b915050610ec4565b505092915050565b6060600082604051602001610f5591815260200190565b604051602081830303815290604052905060005b6020811015610fac57818181518110610f8457610f84612877565b01602001516001600160f81b031916600003610fac5780610fa481612b0f565b915050610f69565b610fb7816020612a51565b6001600160401b03811115610fce57610fce61275d565b6040519080825280601f01601f191660200182016040528015610ff8576020820181803683370190505b50925060005b8351811015610d8b57828261101281612b0f565b93508151811061102457611024612877565b602001015160f81c60f81b84828151811061104157611041612877565b60200101906001600160f81b031916908160001a9053508061106281612b0f565b915050610ffe565b606081805190602001206040516020016105e991815260200190565b606060008451116110d15760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016106c9565b60006110dc84612138565b905060006110e98661221c565b905060008460405160200161110091815260200190565b60405160208183030381529060405290506000805b84518110156118b857600085828151811061113257611132612877565b6020026020010151905084518311156111a45760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016106c9565b8260000361124357805180516020918201206040516111f2926111cc92910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b61123e5760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016106c9565b611339565b8051516020116112c9578051805160209182012060405161126d926111cc92910190815260200190565b61123e5760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016106c9565b8051845160208087019190912082519190920120146113395760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016106c9565b61134560106001612a39565b816020015151036114e0578451830361147857611372816020015160108151811061031f5761031f612877565b965060008751116113eb5760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016106c9565b600186516113f99190612a51565b821461146d5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016106c9565b50505050505061190f565b600085848151811061148c5761148c612877565b602001015160f81c60f81b60f81c9050600082602001518260ff16815181106114b7576114b7612877565b602002602001015190506114ca8161227f565b95506114d7600186612a39565b945050506118a5565b60028160200151510361184c5760006114f8826122a4565b905060008160008151811061150f5761150f612877565b016020015160f81c90506000611526600283612c9a565b611531906002612cbc565b90506000611542848360ff166122c8565b905060006115508a896122c8565b9050600061155e83836122fe565b9050808351146115d65760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016106c9565b60ff8516600214806115eb575060ff85166003145b1561178c57808251146116665760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016106c9565b611680876020015160018151811061031f5761031f612877565b9c5060008d51116116f95760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016106c9565b60018c516117079190612a51565b881461177b5760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016106c9565b50505050505050505050505061190f565b60ff8516158061179f575060ff85166001145b156117de576117cb87602001516001815181106117be576117be612877565b602002602001015161227f565b99506117d7818a612a39565b9850611841565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016106c9565b5050505050506118a5565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016106c9565b50806118b081612b0f565b915050611115565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016106c9565b9392505050565b60008060008084600001511161193e5760405162461bcd60e51b81526004016106c99061299d565b6020840151805160001a607f8111611963576000600160009450945094505050611fd2565b60b78111611ac0576000611978608083612a51565b9050808760000151116119f85760405162461bcd60e51b815260206004820152604e6024820152600080516020612d0583398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016106c9565b6001838101516001600160f81b0319169082141580611a255750600160ff1b6001600160f81b0319821610155b611aad5760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016106c9565b5060019550935060009250611fd2915050565b60bf8111611d01576000611ad560b783612a51565b905080876000015111611b585760405162461bcd60e51b81526020600482015260516024820152600080516020612d0583398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016106c9565b60018301516001600160f81b0319166000819003611bdf5760405162461bcd60e51b815260206004820152604a6024820152600080516020612d0583398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016106c9565b600184015160088302610100031c60378111611c625760405162461bcd60e51b81526020600482015260486024820152600080516020612d0583398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016106c9565b611c6c8184612a39565b895111611ce45760405162461bcd60e51b815260206004820152604c6024820152600080516020612d0583398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016106c9565b611cef836001612a39565b9750955060009450611fd29350505050565b60f78111611da3576000611d1660c083612a51565b905080876000015111611d925760405162461bcd60e51b815260206004820152604a6024820152600080516020612d0583398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016106c9565b600195509350849250611fd2915050565b6000611db060f783612a51565b905080876000015111611e2f5760405162461bcd60e51b815260206004820152604d6024820152600080516020612d0583398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016106c9565b60018301516001600160f81b0319166000819003611eb45760405162461bcd60e51b81526020600482015260486024820152600080516020612d0583398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016106c9565b600184015160088302610100031c60378111611f355760405162461bcd60e51b81526020600482015260466024820152600080516020612d0583398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016106c9565b611f3f8184612a39565b895111611fb55760405162461bcd60e51b815260206004820152604a6024820152600080516020612d0583398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016106c9565b611fc0836001612a39565b9750955060019450611fd29350505050565b9193909250565b6060816001600160401b03811115611ff357611ff361275d565b6040519080825280601f01601f19166020018201604052801561201d576020820181803683370190505b509050811561190f5760006120328486612a39565b90506020820160005b8481101561205357828101518282015260200161203b565b84811115612062576000858301525b5050509392505050565b6060805b608083106120ae578083607f1660801760f81b604051602001612094929190612cdf565b60408051601f198184030190525260079290921c91612070565b808360f81b6040516020016120c4929190612cdf565b604051602081830303815290604052915050919050565b8282825b6020811061211757815183526120f6602084612a39565b9250612103602083612a39565b9150612110602082612a51565b90506120df565b905182516020929092036101000a6000190180199091169116179052505050565b8051606090806001600160401b038111156121555761215561275d565b60405190808252806020026020018201604052801561219a57816020015b60408051808201909152606080825260208201528152602001906001900390816121735790505b50915060005b81811015610c535760405180604001604052808583815181106121c5576121c5612877565b602002602001015181526020016121f48684815181106121e7576121e7612877565b602002602001015161237b565b81525083828151811061220957612209612877565b60209081029190910101526001016121a0565b606080604051905082518060011b603f8101601f1916830160405280835250602084016020830160005b83811015612274578060011b82018184015160001a8060041c8253600f811660018301535050600101612246565b509295945050505050565b6060602082600001511061229b5761229682610913565b610612565b61061282612389565b60606106126122c3836020015160008151811061031f5761031f612877565b61221c565b6060825182106122e75750604080516020810190915260008152610612565b61190f83838486516122f99190612a51565b61239f565b6000808251845110612311578251612314565b83515b90505b808210801561236b575082828151811061233357612333612877565b602001015160f81c60f81b6001600160f81b03191684838151811061235a5761235a612877565b01602001516001600160f81b031916145b15610c7757816001019150612317565b60606106126102c083610694565b6060610612826020015160008460000151611fd9565b60608182601f0110156123e55760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016106c9565b8282840110156124285760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016106c9565b8183018451101561246f5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016106c9565b60608215801561248e57604051915060008252602082016040526124d8565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156124c75780518352602092830192016124af565b5050858452601f01601f1916604052505b50949350505050565b80356001600160401b038116811461066c57600080fd5b600080600080600060a0868803121561251057600080fd5b85356001600160401b038082111561252757600080fd5b908701906060828a03121561253b57600080fd5b9095506020870135908082111561255157600080fd5b5086016080818903121561256457600080fd5b93506040860135925060608601359150612580608087016124e1565b90509295509295909350565b60008083601f84011261259e57600080fd5b5081356001600160401b038111156125b557600080fd5b6020830191508360208285010111156125cd57600080fd5b9250929050565b6000604082840312156125e657600080fd5b50919050565b6000806000806060858703121561260257600080fd5b8435935060208501356001600160401b038082111561262057600080fd5b61262c8883890161258c565b9095509350604087013591508082111561264557600080fd5b50612652878288016125d4565b91505092959194509250565b6000806000806000806080878903121561267757600080fd5b8635955060208701356001600160401b038082111561269557600080fd5b6126a18a838b0161258c565b909750955060408901359150808211156126ba57600080fd5b6126c68a838b0161258c565b909550935060608901359150808211156126df57600080fd5b506126ec89828a016125d4565b9150509295509295509295565b60006020828403121561270b57600080fd5b61190f826124e1565b6000808335601e1984360301811261272b57600080fd5b8301803591506001600160401b0382111561274557600080fd5b6020019150600581901b36038213156125cd57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561279b5761279b61275d565b604052919050565b60006001600160401b03808411156127bd576127bd61275d565b8360051b60206127ce818301612773565b8681529185019181810190368411156127e657600080fd5b865b8481101561286b578035868111156128005760008081fd5b8801601f36818301126128135760008081fd5b8135888111156128255761282561275d565b612836818301601f19168801612773565b9150808252368782850101111561284d5760008081fd5b808784018884013760009082018701528452509183019183016127e8565b50979650505050505050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126128a457600080fd5b8301803591506001600160401b038211156128be57600080fd5b6020019150368190038213156125cd57600080fd5b8183823760009101908152919050565b805160208083015191908110156125e65760001960209190910360031b1b16919050565b60008235607e1983360301811261291d57600080fd5b9190910192915050565b8035602083101561061257600019602084900360031b1b1692915050565b6000815160005b81811015612966576020818501810151868301520161294c565b81811115612975576000828601525b509290920192915050565b600061299561298f8386612945565b84612945565b949350505050565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a00190565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115612a4c57612a4c612a23565b500190565b600082821015612a6357612a63612a23565b500390565b600060208284031215612a7a57600080fd5b5051919050565b86888237600087820160008152612a988189612945565b9050858782376000908601908152612ab08186612945565b93845250506020909101979650505050505050565b600061190f8284612945565b60008235603e1983360301811261291d57600080fd5b8486823760008582018581528385602083013760009301602001928352509095945050505050565b600060018201612b2157612b21612a23565b5060010190565b600060ff821660ff84168060ff03821115612b4557612b45612a23565b019392505050565b634e487b7160e01b600052601260045260246000fd5b600082612b7257612b72612b4d565b500490565b6000816000190483118215151615612b9157612b91612a23565b500290565b600181815b80851115612bd1578160001904821115612bb757612bb7612a23565b80851615612bc457918102915b93841c9390800290612b9b565b509250929050565b600082612be857506001610612565b81612bf557506000610612565b8160018114612c0b5760028114612c1557612c31565b6001915050610612565b60ff841115612c2657612c26612a23565b50506001821b610612565b5060208310610133831016604e8410600b8410161715612c54575081810a610612565b612c5e8383612b96565b8060001904821115612c7257612c72612a23565b029392505050565b600061190f8383612bd9565b600082612c9557612c95612b4d565b500690565b600060ff831680612cad57612cad612b4d565b8060ff84160691505092915050565b600060ff821660ff841680821015612cd657612cd6612a23565b90039392505050565b6000612ceb8285612945565b6001600160f81b0319939093168352505060010191905056fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a264697066735822122046571bd43c1d899dd96b17e9ebb51b0c8a40f7817ab8dba106766ee5486b071e64736f6c634300080f0033"; type OptimisticProofVerifierConstructorParams = | [signer?: Signer] diff --git a/test/Dispatcher/Dispatcher.client.t.sol b/test/Dispatcher/Dispatcher.client.t.sol index 7578ab71..53a58c88 100644 --- a/test/Dispatcher/Dispatcher.client.t.sol +++ b/test/Dispatcher/Dispatcher.client.t.sol @@ -15,17 +15,13 @@ abstract contract DispatcherUpdateClientTestSuite is Base { function test_updateOptimisticConsensusState_success() public { // trick the L1Block contract into thinking it is updated with the right l1 header setL1BlockAttributes(keccak256(RLPWriter.writeList(l1header.header)), l1header.number); - dispatcherProxy.updateClientWithOptimisticConsensusState( - abi.encode(l1header, validStateProof), 1, uint256(apphash), "connection-0" - ); + dispatcherProxy.updateClient(abi.encode(l1header, validStateProof), 1, uint256(apphash), "connection-0"); } function test_updateOptimisticConsensusState_failure() public { setL1BlockAttributes(keccak256(RLPWriter.writeList(l1header.header)), l1header.number); vm.expectRevert("MerkleTrie: ran out of proof elements"); - dispatcherProxy.updateClientWithOptimisticConsensusState( - abi.encode(l1header, invalidStateProof), 1, uint256(apphash), "connection-0" - ); + dispatcherProxy.updateClient(abi.encode(l1header, invalidStateProof), 1, uint256(apphash), "connection-0"); } }