diff --git a/bindings/go/earth/Earth.go b/bindings/go/earth/Earth.go index 90f567b0..7884af2b 100644 --- a/bindings/go/earth/Earth.go +++ b/bindings/go/earth/Earth.go @@ -45,7 +45,7 @@ type UniversalPacket struct { // EarthMetaData contains all meta data concerning the Earth contract. var EarthMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_middleware\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"ackPackets\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"packet\",\"type\":\"tuple\",\"internalType\":\"structUniversalPacket\",\"components\":[{\"name\":\"srcPortAddr\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"mwBitmap\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"destPortAddr\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"appData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"ack\",\"type\":\"tuple\",\"internalType\":\"structAckPacket\",\"components\":[{\"name\":\"success\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"authorizeChannel\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"authorizeMiddleware\",\"inputs\":[{\"name\":\"middleware\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"authorizedChannelIds\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"authorizedMws\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"generateAckPacket\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"srcPortAddr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"appData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"ackPacket\",\"type\":\"tuple\",\"internalType\":\"structAckPacket\",\"components\":[{\"name\":\"success\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"greet\",\"inputs\":[{\"name\":\"destPortAddr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"timeoutTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"greetWithFee\",\"inputs\":[{\"name\":\"destPortAddr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"timeoutTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimits\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"gasPrices\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}],\"outputs\":[{\"name\":\"sequence\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"mw\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"onRecvUniversalPacket\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"packet\",\"type\":\"tuple\",\"internalType\":\"structUniversalPacket\",\"components\":[{\"name\":\"srcPortAddr\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"mwBitmap\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"destPortAddr\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"appData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"ackPacket\",\"type\":\"tuple\",\"internalType\":\"structAckPacket\",\"components\":[{\"name\":\"success\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"onTimeoutUniversalPacket\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"packet\",\"type\":\"tuple\",\"internalType\":\"structUniversalPacket\",\"components\":[{\"name\":\"srcPortAddr\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"mwBitmap\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"destPortAddr\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"appData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"onUniversalAcknowledgement\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"packet\",\"type\":\"tuple\",\"internalType\":\"structUniversalPacket\",\"components\":[{\"name\":\"srcPortAddr\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"mwBitmap\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"destPortAddr\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"appData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"ack\",\"type\":\"tuple\",\"internalType\":\"structAckPacket\",\"components\":[{\"name\":\"success\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"recvedPackets\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"packet\",\"type\":\"tuple\",\"internalType\":\"structUniversalPacket\",\"components\":[{\"name\":\"srcPortAddr\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"mwBitmap\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"destPortAddr\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"appData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setDefaultMw\",\"inputs\":[{\"name\":\"_middleware\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"timeoutPackets\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"packet\",\"type\":\"tuple\",\"internalType\":\"structUniversalPacket\",\"components\":[{\"name\":\"srcPortAddr\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"mwBitmap\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"destPortAddr\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"appData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"UnauthorizedIbcMiddleware\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ackAddressMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ackDataTooShort\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"invalidChannelId\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"unauthorizedChannel\",\"inputs\":[]}]", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_middleware\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"ackPackets\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"packet\",\"type\":\"tuple\",\"internalType\":\"structUniversalPacket\",\"components\":[{\"name\":\"srcPortAddr\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"mwBitmap\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"destPortAddr\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"appData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"ack\",\"type\":\"tuple\",\"internalType\":\"structAckPacket\",\"components\":[{\"name\":\"success\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"authorizeChannel\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"authorizedChannelIds\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"generateAckPacket\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"srcPortAddr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"appData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"ackPacket\",\"type\":\"tuple\",\"internalType\":\"structAckPacket\",\"components\":[{\"name\":\"success\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"greet\",\"inputs\":[{\"name\":\"destPortAddr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"timeoutTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"greetWithFee\",\"inputs\":[{\"name\":\"destPortAddr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"timeoutTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimits\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"gasPrices\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}],\"outputs\":[{\"name\":\"sequence\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"onRecvUniversalPacket\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"packet\",\"type\":\"tuple\",\"internalType\":\"structUniversalPacket\",\"components\":[{\"name\":\"srcPortAddr\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"mwBitmap\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"destPortAddr\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"appData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"ackPacket\",\"type\":\"tuple\",\"internalType\":\"structAckPacket\",\"components\":[{\"name\":\"success\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"onTimeoutUniversalPacket\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"packet\",\"type\":\"tuple\",\"internalType\":\"structUniversalPacket\",\"components\":[{\"name\":\"srcPortAddr\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"mwBitmap\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"destPortAddr\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"appData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"onUniversalAcknowledgement\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"packet\",\"type\":\"tuple\",\"internalType\":\"structUniversalPacket\",\"components\":[{\"name\":\"srcPortAddr\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"mwBitmap\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"destPortAddr\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"appData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"ack\",\"type\":\"tuple\",\"internalType\":\"structAckPacket\",\"components\":[{\"name\":\"success\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"recvedPackets\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"packet\",\"type\":\"tuple\",\"internalType\":\"structUniversalPacket\",\"components\":[{\"name\":\"srcPortAddr\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"mwBitmap\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"destPortAddr\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"appData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"timeoutPackets\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"packet\",\"type\":\"tuple\",\"internalType\":\"structUniversalPacket\",\"components\":[{\"name\":\"srcPortAddr\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"mwBitmap\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"destPortAddr\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"appData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"uch\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"updateUch\",\"inputs\":[{\"name\":\"_newUch\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CallerNotUCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidUCHAddress\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ackAddressMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ackDataTooShort\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"invalidChannelId\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"unauthorizedChannel\",\"inputs\":[]}]", } // EarthABI is the input ABI used to generate the binding from. @@ -275,37 +275,6 @@ func (_Earth *EarthCallerSession) AuthorizedChannelIds(arg0 [32]byte) (bool, err return _Earth.Contract.AuthorizedChannelIds(&_Earth.CallOpts, arg0) } -// AuthorizedMws is a free data retrieval call binding the contract method 0x3a7fbcbd. -// -// Solidity: function authorizedMws(address ) view returns(bool) -func (_Earth *EarthCaller) AuthorizedMws(opts *bind.CallOpts, arg0 common.Address) (bool, error) { - var out []interface{} - err := _Earth.contract.Call(opts, &out, "authorizedMws", arg0) - - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err - -} - -// AuthorizedMws is a free data retrieval call binding the contract method 0x3a7fbcbd. -// -// Solidity: function authorizedMws(address ) view returns(bool) -func (_Earth *EarthSession) AuthorizedMws(arg0 common.Address) (bool, error) { - return _Earth.Contract.AuthorizedMws(&_Earth.CallOpts, arg0) -} - -// AuthorizedMws is a free data retrieval call binding the contract method 0x3a7fbcbd. -// -// Solidity: function authorizedMws(address ) view returns(bool) -func (_Earth *EarthCallerSession) AuthorizedMws(arg0 common.Address) (bool, error) { - return _Earth.Contract.AuthorizedMws(&_Earth.CallOpts, arg0) -} - // GenerateAckPacket is a free data retrieval call binding the contract method 0x866f3f97. // // Solidity: function generateAckPacket(bytes32 , address srcPortAddr, bytes appData) view returns((bool,bytes) ackPacket) @@ -337,37 +306,6 @@ func (_Earth *EarthCallerSession) GenerateAckPacket(arg0 [32]byte, srcPortAddr c return _Earth.Contract.GenerateAckPacket(&_Earth.CallOpts, arg0, srcPortAddr, appData) } -// Mw is a free data retrieval call binding the contract method 0xa742d78c. -// -// Solidity: function mw() view returns(address) -func (_Earth *EarthCaller) Mw(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _Earth.contract.Call(opts, &out, "mw") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Mw is a free data retrieval call binding the contract method 0xa742d78c. -// -// Solidity: function mw() view returns(address) -func (_Earth *EarthSession) Mw() (common.Address, error) { - return _Earth.Contract.Mw(&_Earth.CallOpts) -} - -// Mw is a free data retrieval call binding the contract method 0xa742d78c. -// -// Solidity: function mw() view returns(address) -func (_Earth *EarthCallerSession) Mw() (common.Address, error) { - return _Earth.Contract.Mw(&_Earth.CallOpts) -} - // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. // // Solidity: function owner() view returns(address) @@ -489,6 +427,37 @@ func (_Earth *EarthCallerSession) TimeoutPackets(arg0 *big.Int) (struct { return _Earth.Contract.TimeoutPackets(&_Earth.CallOpts, arg0) } +// Uch is a free data retrieval call binding the contract method 0x2cc422d9. +// +// Solidity: function uch() view returns(address) +func (_Earth *EarthCaller) Uch(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Earth.contract.Call(opts, &out, "uch") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Uch is a free data retrieval call binding the contract method 0x2cc422d9. +// +// Solidity: function uch() view returns(address) +func (_Earth *EarthSession) Uch() (common.Address, error) { + return _Earth.Contract.Uch(&_Earth.CallOpts) +} + +// Uch is a free data retrieval call binding the contract method 0x2cc422d9. +// +// Solidity: function uch() view returns(address) +func (_Earth *EarthCallerSession) Uch() (common.Address, error) { + return _Earth.Contract.Uch(&_Earth.CallOpts) +} + // AuthorizeChannel is a paid mutator transaction binding the contract method 0x92dfa392. // // Solidity: function authorizeChannel(bytes32 channelId) returns() @@ -510,27 +479,6 @@ func (_Earth *EarthTransactorSession) AuthorizeChannel(channelId [32]byte) (*typ return _Earth.Contract.AuthorizeChannel(&_Earth.TransactOpts, channelId) } -// AuthorizeMiddleware is a paid mutator transaction binding the contract method 0x3b90b042. -// -// Solidity: function authorizeMiddleware(address middleware) returns() -func (_Earth *EarthTransactor) AuthorizeMiddleware(opts *bind.TransactOpts, middleware common.Address) (*types.Transaction, error) { - return _Earth.contract.Transact(opts, "authorizeMiddleware", middleware) -} - -// AuthorizeMiddleware is a paid mutator transaction binding the contract method 0x3b90b042. -// -// Solidity: function authorizeMiddleware(address middleware) returns() -func (_Earth *EarthSession) AuthorizeMiddleware(middleware common.Address) (*types.Transaction, error) { - return _Earth.Contract.AuthorizeMiddleware(&_Earth.TransactOpts, middleware) -} - -// AuthorizeMiddleware is a paid mutator transaction binding the contract method 0x3b90b042. -// -// Solidity: function authorizeMiddleware(address middleware) returns() -func (_Earth *EarthTransactorSession) AuthorizeMiddleware(middleware common.Address) (*types.Transaction, error) { - return _Earth.Contract.AuthorizeMiddleware(&_Earth.TransactOpts, middleware) -} - // Greet is a paid mutator transaction binding the contract method 0xd24ba024. // // Solidity: function greet(address destPortAddr, bytes32 channelId, bytes message, uint64 timeoutTimestamp) returns() @@ -657,27 +605,6 @@ func (_Earth *EarthTransactorSession) RenounceOwnership() (*types.Transaction, e return _Earth.Contract.RenounceOwnership(&_Earth.TransactOpts) } -// SetDefaultMw is a paid mutator transaction binding the contract method 0x00e82cef. -// -// Solidity: function setDefaultMw(address _middleware) returns() -func (_Earth *EarthTransactor) SetDefaultMw(opts *bind.TransactOpts, _middleware common.Address) (*types.Transaction, error) { - return _Earth.contract.Transact(opts, "setDefaultMw", _middleware) -} - -// SetDefaultMw is a paid mutator transaction binding the contract method 0x00e82cef. -// -// Solidity: function setDefaultMw(address _middleware) returns() -func (_Earth *EarthSession) SetDefaultMw(_middleware common.Address) (*types.Transaction, error) { - return _Earth.Contract.SetDefaultMw(&_Earth.TransactOpts, _middleware) -} - -// SetDefaultMw is a paid mutator transaction binding the contract method 0x00e82cef. -// -// Solidity: function setDefaultMw(address _middleware) returns() -func (_Earth *EarthTransactorSession) SetDefaultMw(_middleware common.Address) (*types.Transaction, error) { - return _Earth.Contract.SetDefaultMw(&_Earth.TransactOpts, _middleware) -} - // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. // // Solidity: function transferOwnership(address newOwner) returns() @@ -699,6 +626,27 @@ func (_Earth *EarthTransactorSession) TransferOwnership(newOwner common.Address) return _Earth.Contract.TransferOwnership(&_Earth.TransactOpts, newOwner) } +// UpdateUch is a paid mutator transaction binding the contract method 0x1b2f37d0. +// +// Solidity: function updateUch(address _newUch) returns() +func (_Earth *EarthTransactor) UpdateUch(opts *bind.TransactOpts, _newUch common.Address) (*types.Transaction, error) { + return _Earth.contract.Transact(opts, "updateUch", _newUch) +} + +// UpdateUch is a paid mutator transaction binding the contract method 0x1b2f37d0. +// +// Solidity: function updateUch(address _newUch) returns() +func (_Earth *EarthSession) UpdateUch(_newUch common.Address) (*types.Transaction, error) { + return _Earth.Contract.UpdateUch(&_Earth.TransactOpts, _newUch) +} + +// UpdateUch is a paid mutator transaction binding the contract method 0x1b2f37d0. +// +// Solidity: function updateUch(address _newUch) returns() +func (_Earth *EarthTransactorSession) UpdateUch(_newUch common.Address) (*types.Transaction, error) { + return _Earth.Contract.UpdateUch(&_Earth.TransactOpts, _newUch) +} + // Receive is a paid mutator transaction binding the contract receive function. // // Solidity: receive() payable returns() diff --git a/contracts/base/GeneralMiddleware.sol b/contracts/base/GeneralMiddleware.sol index 3d00a7c4..1259411e 100644 --- a/contracts/base/GeneralMiddleware.sol +++ b/contracts/base/GeneralMiddleware.sol @@ -71,8 +71,8 @@ contract GeneralMiddleware is IbcMwUser, IbcMiddleware, IbcMwEventsEmitter, IbcM bytes32 destPortAddr, bytes calldata appData, uint64 timeoutTimestamp, - uint256[2] calldata gasLimits, - uint256[2] calldata gasPrices + uint256[2] memory gasLimits, + uint256[2] memory gasPrices ) external payable override returns (uint64 sequence) {} function sendMWPacket( diff --git a/contracts/core/Dispatcher.sol b/contracts/core/Dispatcher.sol index a6f4b894..771ec749 100644 --- a/contracts/core/Dispatcher.sol +++ b/contracts/core/Dispatcher.sol @@ -48,7 +48,8 @@ contract Dispatcher is OwnableUpgradeable, UUPSUpgradeable, ReentrancyGuard, IDi string public portPrefix; uint32 public portPrefixLen; - mapping(address => mapping(bytes32 => Channel)) private _portChannelMap; + mapping(address => mapping(bytes32 => Channel)) private _portChannelMap; // Mapping used to check if a channel is + // owned by a port mapping(address => mapping(bytes32 => uint64)) private _nextSequenceSend; // keep track of received packets' sequences to ensure channel ordering is enforced for ordered channels mapping(address => mapping(bytes32 => uint64)) private _nextSequenceRecv; @@ -158,9 +159,10 @@ contract Dispatcher is OwnableUpgradeable, UUPSUpgradeable, ReentrancyGuard, IDi /** * @notice Initializes the channel opening process with the specified parameters. This is the first step in the channel * handshake, initiated directly by the dapp which wishes to establish a channel with the receiver. - * @param ordering The ordering of the channel (ORDERED or UNORDERED). + * @param ordering The ordering of the channel (ORDERED or UNORDERED). Note: ORDERED channels are not currently + * supported * @param feeEnabled A boolean indicating whether fees are enabled for the channel. Note: This value isn't currently - * used + * used, and is not being verified in light client proofs. * @param connectionHops The list of connection hops associated with the channel, with the first channel in this * array always starting from the chain this contract is deployed on * @param counterpartyPortId The port ID of the counterparty. @@ -204,8 +206,10 @@ contract Dispatcher is OwnableUpgradeable, UUPSUpgradeable, ReentrancyGuard, IDi * succeeds, the dApp should return the selected version and the emitted even will be relayed to the IBC/VIBC hub * chain. * @param local The counterparty information for the receiver. - * @param ordering The ordering of the channel (ORDERED or UNORDERED). - * @param feeEnabled Whether fees are enabled for the channel. Note: This value isn't currently used + * @param ordering The ordering of the channel (ORDERED or UNORDERED). Note: ORDERED channels are not currently + * supported + * @param feeEnabled Whether fees are enabled for the channel. Note: This value isn't currently used, and is not + * being verified in light client proofs * @param connectionHops The list of connection hops associated with the channel; with the first channel in this * array always starting from the chain this contract is deployed on * @param counterparty The counterparty information of the sender @@ -278,9 +282,10 @@ contract Dispatcher is OwnableUpgradeable, UUPSUpgradeable, ReentrancyGuard, IDi * @param local The counterparty information for the local channel. * @param connectionHops The list of connection hops associated with the channel, with the first channel in this * array always starting from the chain this contract is deployed on. - * @param ordering The ordering of the channel (ORDERED or UNORDERED). + * @param ordering The ordering of the channel (ORDERED or UNORDERED). Note: ORDERED channels are not currently + * supported * @param feeEnabled A boolean indicating whether fees are enabled for the channel. Note: This value isn't currently - * used + * used and is not being verified in light client proofs. * @param counterparty The counterparty information for the channel. * @param proof The proof that the counterparty is in the ACK_PENDING state (i.e. that it responded with a * successful channelOpenTry ) @@ -338,9 +343,12 @@ contract Dispatcher is OwnableUpgradeable, UUPSUpgradeable, ReentrancyGuard, IDi * The receiver should implement the onChannelConnect method to handle the last channel handshake method: * ChannelOpenConfirm * @param local The counterparty information for the local channel. - * @param ordering The ordering of the channel (ORDERED or UNORDERED). + * @param ordering The ordering of the channel (ORDERED or UNORDERED). Note: ORDERED channels are not currently + * supported * @param connectionHops The list of connection hops associated with the channel, with the first channel in this * array always starting from the chain this contract is deployed on. + * @param feeEnabled A boolean indicating whether fees are enabled for the channel. Note: This value isn't currently + * used and is not being verified in light client proofs. * @param counterparty The counterparty information for the channel. * @param proof The proof of channel opening confirm. * @dev This function initiates the channel opening confirm process by calling the onChanOpenConfirm function of the @@ -396,6 +404,7 @@ contract Dispatcher is OwnableUpgradeable, UUPSUpgradeable, ReentrancyGuard, IDi function channelCloseInit(bytes32 channelId) external nonReentrant { Channel memory channel = _portChannelMap[msg.sender][channelId]; if (channel.counterpartyChannelId == bytes32(0)) { + // _portChannelMap is used to check ownership of a channel by a port revert IBCErrors.channelNotOwnedBySender(); } (bool success, bytes memory data) = _callIfContract( @@ -439,6 +448,7 @@ contract Dispatcher is OwnableUpgradeable, UUPSUpgradeable, ReentrancyGuard, IDi // ensure port owns channel Channel memory channel = _portChannelMap[portAddress][channelId]; if (channel.counterpartyChannelId == bytes32(0)) { + // _portChannelMap is used to check ownership of a channel by a port revert IBCErrors.channelNotOwnedByPortAddress(); } @@ -494,6 +504,7 @@ contract Dispatcher is OwnableUpgradeable, UUPSUpgradeable, ReentrancyGuard, IDi { // ensure port owns channel if (_portChannelMap[msg.sender][channelId].counterpartyChannelId == bytes32(0)) { + // _portChannelMap is used to check ownership of a channel by a port revert IBCErrors.channelNotOwnedBySender(); } if (timeoutTimestamp <= block.timestamp) { @@ -684,6 +695,7 @@ contract Dispatcher is OwnableUpgradeable, UUPSUpgradeable, ReentrancyGuard, IDi * default values per EVM. */ function getChannel(address portAddress, bytes32 channelId) external view returns (Channel memory channel) { + // _portChannelMap is used to check ownership of a channel by a port channel = _portChannelMap[portAddress][channelId]; } @@ -720,9 +732,9 @@ contract Dispatcher is OwnableUpgradeable, UUPSUpgradeable, ReentrancyGuard, IDi * @param local The details of the local counterparty. * @param connectionHops The connection hops associated with the channel, with the first channel in this * array always starting from the chain this contract is deployed on. - * @param ordering The ordering of the channel. + * @param ordering The ordering of the channel. Note: ORDERED channels are not currently supported * @param feeEnabled A boolean indicating whether fees are enabled for the channel. Note: This value isn't currently - * used + * used and is not being verified in light client proofs. * @param counterparty The details of the counterparty. */ function _connectChannel( @@ -735,7 +747,7 @@ contract Dispatcher is OwnableUpgradeable, UUPSUpgradeable, ReentrancyGuard, IDi ) internal { // We don't need to check that a channel isn't already present between a portAddress and a chanenlId since // polymer chain verification should prevent double registration of the same channel (with the execption of the - // feeEnabled state, thoguh this isn't currently used anywhere so change a channel's feeEnabled state shouldn't + // feeEnabled state, though this isn't currently used anywhere so change a channel's feeEnabled state shouldn't // have any outcome) _portChannelMap[address(portAddress)][local.channelId] = Channel( local.version, diff --git a/contracts/core/FeeVault.sol b/contracts/core/FeeVault.sol index c56d01a2..630a55d2 100644 --- a/contracts/core/FeeVault.sol +++ b/contracts/core/FeeVault.sol @@ -26,6 +26,8 @@ contract FeeVault is Ownable, ReentrancyGuard, IFeeVault { /** * @notice Deposits the send packet fee for a given channel and sequence that is used for relaying recieve and * acknowledge steps of a packet handhsake after a dapp has called the sendPacket on dispatcher. + * @notice If you are relaying your own packets, you should not call this method. + * @notice Use the Polymer fee estimation api to get the required fees to ensure that enough fees are sent. * @dev This function calculates the required fee based on provided gas limits and gas prices, * and reverts if the sent value does not match the calculated fee. * The first entry in `gasLimits` and `gasPrices` arrays corresponds to `recvPacket` fees, @@ -38,6 +40,10 @@ contract FeeVault is Ownable, ReentrancyGuard, IFeeVault { * @param gasPrices An array containing two gas price values: * - gasPrices[0] for `recvPacket` fees, for the dest chain * - gasPrices[1] for `ackPacket` fees, for the src chain + * @notice The total fees sent in the msg.value should be equal to the total gasLimits[0] * gasPrices[0] + + * gasLimits[1] * gasPrices[1]. The transaction will revert if a higher or lower value is sent + * @dev Note: if you're having trouble with your packet data being mysteriously lost, try passing in the gasLimits + * and gasPrices as memory, solidity sometimes misbehaves when trying to pass in too much calldata. */ function depositSendPacketFee( bytes32 channelId, @@ -55,6 +61,7 @@ contract FeeVault is Ownable, ReentrancyGuard, IFeeVault { /** * @notice Deposits the fee for a channel handshake, to pay a relayer for relaying the channelOpenTry, * channelOpenConfirm, and channelOpenAck steps after a dapp has called channelOpenInit + * @notice If you are relaying your own channelHandshake transactions, you should not call this method. * @dev The fee amount that needs to be sent for Polymer to relay the whole channel handshake can be queried on the * web2 layer. * @param src The address of the sender, should be the address in the localportId. diff --git a/contracts/core/UniversalChannelHandler.sol b/contracts/core/UniversalChannelHandler.sol index 7de73e99..d0458775 100644 --- a/contracts/core/UniversalChannelHandler.sol +++ b/contracts/core/UniversalChannelHandler.sol @@ -72,7 +72,7 @@ contract UniversalChannelHandler is IbcReceiverBaseUpgradeable, FeeSender, UUPSU } /** - * @notice Sends a universal packet over an IBC channel + * @notice Sends a universal packet over an IBC channel, without sending relaying fees to the FeeVault * @param channelId The channel ID through which the packet is sent on the dispatcher * @param destPortAddr The destination port address * @param appData The packet data to be sent @@ -92,11 +92,23 @@ contract UniversalChannelHandler is IbcReceiverBaseUpgradeable, FeeSender, UUPSU } /** - * @notice Sends a universal packet over an IBC channel + * @notice Sends a universal packet over an IBC channel, and deposits relaying fees to a FeeVault within the same + * tx. * @param channelId The channel ID through which the packet is sent on the dispatcher * @param destPortAddr The destination port address * @param appData The packet data to be sent * @param timeoutTimestamp of when the packet can timeout + * @param gasLimits An array containing two gas limit values: + * - gasLimits[0] for `recvPacket` fees + * - gasLimits[1] for `ackPacket` fees. + * @param gasPrices An array containing two gas price values: + * - gasPrices[0] for `recvPacket` fees, for the dest chain + * - gasPrices[1] for `ackPacket` fees, for the src chain + * @notice The total fees sent in the msg.value should be equal to the total gasLimits[0] * gasPrices[0] + + * gasLimits[1] * gasPrices[1]. The transaction will revert if a higher or lower value is sent + * @notice if you are relaying your own transactions, you should not call this method, and instead call + * sendUniversalPacket + * @notice Use the Polymer fee estimation api to get the required fees to ensure that enough fees are sent. */ function sendUniversalPacketWithFee( bytes32 channelId, diff --git a/contracts/examples/Earth.sol b/contracts/examples/Earth.sol index be53099a..f755c423 100644 --- a/contracts/examples/Earth.sol +++ b/contracts/examples/Earth.sol @@ -58,11 +58,31 @@ contract Earth is IbcUniversalPacketReceiverBase { * @param timeoutTimestamp The timeout timestamp for the packet. */ function greet(address destPortAddr, bytes32 channelId, bytes calldata message, uint64 timeoutTimestamp) external { - IbcUniversalPacketSender(mw).sendUniversalPacket( + IbcUniversalPacketSender(uch).sendUniversalPacket( channelId, IbcUtils.toBytes32(destPortAddr), message, timeoutTimestamp ); } + /** + * @notice Sends a universal packet with fee. + * @param destPortAddr The destination port address. + * @param channelId The channel ID. + * @param message The message to send. + * @param timeoutTimestamp The timeout timestamp. + * @param gasLimits The gas limits for the packet and the ack. + * @param gasPrices The gas prices for the packet and the ack. + * @return sequence The sequence number of the packet. + * @param gasLimits An array containing two gas limit values: + * - gasLimits[0] for `recvPacket` fees + * - gasLimits[1] for `ackPacket` fees. + * @param gasPrices An array containing two gas price values: + * - gasPrices[0] for `recvPacket` fees, for the dest chain + * - gasPrices[1] for `ackPacket` fees, for the src chain + * @notice If you are relaying your own packets, you should not call this method, and instead call greet. + * @notice The total fees sent in the msg.value should be equal to the total gasLimits[0] * gasPrices[0] + + * @notice Use the Polymer fee estimation api to get the required fees to ensure that enough fees are sent. + * gasLimits[1] * gasPrices[1]. The transaction will revert if a higher or lower value is sent + */ function greetWithFee( address destPortAddr, bytes32 channelId, @@ -71,14 +91,22 @@ contract Earth is IbcUniversalPacketReceiverBase { uint256[2] memory gasLimits, uint256[2] memory gasPrices ) external payable returns (uint64 sequence) { - return IUniversalChannelHandler(mw).sendUniversalPacketWithFee{value: msg.value}( + return IUniversalChannelHandler(uch).sendUniversalPacketWithFee{value: msg.value}( channelId, IbcUtils.toBytes32(destPortAddr), message, timeoutTimestamp, gasLimits, gasPrices ); } + /** + * @notice Handles the recv callback of a universal packet. + * @param channelId The channel ID. + * @param packet The universal packet. + * @return ackPacket The acknowledgement packet. + * @dev It's recommended to always validate the authorized channel of any packet or channel using the + * onlyAuthorizedChannel modifier. + */ function onRecvUniversalPacket(bytes32 channelId, UniversalPacket calldata packet) external - onlyIbcMw + onlyUCH onlyAuthorizedChannel(channelId) returns (AckPacket memory ackPacket) { @@ -86,9 +114,17 @@ contract Earth is IbcUniversalPacketReceiverBase { return this.generateAckPacket(channelId, IbcUtils.toAddress(packet.srcPortAddr), packet.appData); } + /** + * @notice Handles the acknowledgement of a universal packet. + * @param channelId The channel ID. + * @param packet The universal packet. + * @param ack The acknowledgement packet. + * @dev It's recommended to always validate the authorized channel of any packet or channel using the + * onlyAuthorizedChannel modifier. + */ function onUniversalAcknowledgement(bytes32 channelId, UniversalPacket memory packet, AckPacket calldata ack) external - onlyIbcMw + onlyUCH onlyAuthorizedChannel(channelId) { // verify packet's destPortAddr is the ack's first encoded address. See generateAckPacket()) @@ -98,16 +134,25 @@ contract Earth is IbcUniversalPacketReceiverBase { ackPackets.push(UcAckWithChannel(channelId, packet, ack)); } + /** + * @notice Handles the timeout of a universal packet. Timeouts are currently unimplemented, so this handler is + * unused. + * @param channelId The channel ID. + * @param packet The universal packet. + * @dev It's recommended to always validate the authorized channel of any packet or channel using the + * onlyAuthorizedChannel modifier. + */ function onTimeoutUniversalPacket(bytes32 channelId, UniversalPacket calldata packet) external - onlyIbcMw + onlyUCH onlyAuthorizedChannel(channelId) { timeoutPackets.push(UcPacketWithChannel(channelId, packet)); } /** - * @notice Authorize a channel that can receive/ack packets to this contract. + * @notice Authorize a channel that can receive/ack packets to this contract. If channels are not validated, this + * could allow any arbitrary dapps to trigger callbacks on this dapp. * @param channelId The channel id to authorize; should be packet.dest.channelId for recv packets & * packet.src.channelId for ack packets. */ diff --git a/contracts/examples/Mars.sol b/contracts/examples/Mars.sol index fea2ef52..f4a7a532 100644 --- a/contracts/examples/Mars.sol +++ b/contracts/examples/Mars.sol @@ -41,6 +41,10 @@ contract Mars is IbcReceiverBase, IbcReceiver, FeeSender { constructor(IbcDispatcher _dispatcher) IbcReceiverBase(_dispatcher) {} + /** + * @notice trigger a channelInit in the dispatcher with no relayer fees. + * @notice If you want polymer to relay txs for you, use triggerChannelInitWithFee instead. + */ function triggerChannelInit( string calldata version, ChannelOrder ordering, @@ -51,6 +55,11 @@ contract Mars is IbcReceiverBase, IbcReceiver, FeeSender { dispatcher.channelOpenInit(version, ordering, feeEnabled, connectionHops, counterpartyPortId); } + /** + * @notice trigger a channelInit in the dispatcher with an additional call to deposit a fee into the FeeVault + * @notice This should not be used if you are relaying your own txs, and triggerChannelInit should instead be + * called. + */ function triggerChannelInitWithFee( string calldata version, ChannelOrder ordering, @@ -63,6 +72,12 @@ contract Mars is IbcReceiverBase, IbcReceiver, FeeSender { _depositOpenChannelFee(_dispatcher, version, ordering, connectionHops, counterpartyPortId); } + /** + * @notice Callback for receiving a packet; triggered when a counterparty sends an an IBC packet + * @param packet The IBC packet received + * @return ackPacket The acknowledgement packet generated in response + * @dev Make sure to validate packet's source and destiation channels and ports. + */ function onRecvPacket(IbcPacket memory packet) external virtual @@ -75,14 +90,30 @@ contract Mars is IbcReceiverBase, IbcReceiver, FeeSender { return AckPacket(true, abi.encodePacked('{ "account": "account", "reply": "got the message" }')); } + /** + * @notice Callback for acknowledging a packet; triggered on reciept of an IBC packet by the counterparty + * @dev Make sure to validate packet's source and destiation channels and ports. + */ function onAcknowledgementPacket(IbcPacket calldata, AckPacket calldata ack) external virtual onlyIbcDispatcher { ackPackets.push(ack); } + /** + * @notice Callback for handling a packet timeout + * @notice Direct timeouts are currently unimplemented, so this callback is currently unused. Packets can still be + * indirectly timedout in the recieve callback. + * @param packet The IBC packet that has timed out + * @dev Make sure to validate packet's source and destiation channels and ports. + */ function onTimeoutPacket(IbcPacket calldata packet) external virtual onlyIbcDispatcher { timeoutPackets.push(packet); } + /** + * @notice Handles channel close callback on the dest chain + * @param channelId The unique identifier of the channel + * @dev Make sure to validate channelId and counterpartyVersion + */ function onChanCloseConfirm(bytes32 channelId, string calldata, bytes32) external virtual onlyIbcDispatcher { // logic to determine if the channel should be closed bool channelFound = false; @@ -97,8 +128,7 @@ contract Mars is IbcReceiverBase, IbcReceiver, FeeSender { } /** - * This func triggers channel closure from the dApp. - * Func args can be arbitary, as long as dispatcher.channelCloseInit is invoked propperly. + * Trigger a channel close handhake */ function triggerChannelClose(bytes32 channelId) external onlyOwner { dispatcher.channelCloseInit(channelId); @@ -125,18 +155,33 @@ contract Mars is IbcReceiverBase, IbcReceiver, FeeSender { * @param message The greeting message to be sent. * @param channelId The ID of the channel to send the packet to. * @param timeoutTimestamp The timestamp at which the packet will expire if not received. + * @notice If you are relaying your own packets, you should not call this method, and instead call greet. + * @param gasLimits An array containing two gas limit values: + * - gasLimits[0] for `recvPacket` fees + * - gasLimits[1] for `ackPacket` fees. + * @param gasPrices An array containing two gas price values: + * - gasPrices[0] for `recvPacket` fees, for the dest chain + * - gasPrices[1] for `ackPacket` fees, for the src chain + * @notice The total fees sent in the msg.value should be equal to the total gasLimits[0] * gasPrices[0] + + * @notice Use the Polymer fee estimation api to get the required fees to ensure that enough fees are sent. + * gasLimits[1] * gasPrices[1]. The transaction will revert if a higher or lower value is sent */ function greetWithFee( string calldata message, bytes32 channelId, uint64 timeoutTimestamp, - uint256[2] calldata gasLimits, - uint256[2] calldata gasPrices + uint256[2] memory gasLimits, + uint256[2] memory gasPrices ) external payable returns (uint64 sequence) { sequence = dispatcher.sendPacket(channelId, bytes(message), timeoutTimestamp); _depositSendPacketFee(dispatcher, channelId, sequence, gasLimits, gasPrices); } + /** + * @notice Handles the channel close init event + * @dev Make sure to validate channelId and counterpartyVersion + * @param version The channel version + */ function onChanOpenInit(ChannelOrder, string[] calldata, string calldata, string calldata version) external view @@ -147,6 +192,14 @@ contract Mars is IbcReceiverBase, IbcReceiver, FeeSender { return _openChannel(version); } + /** + * @notice Handles the channel open try event (step 2 of the open channel handshake) + * @dev Make sure to validate that the counterparty version is indeed one supported by the dapp; this callback + * should + * revert if not. + * @param counterpartyVersion The version string provided by the counterparty + * @return selectedVersion The selected version string + */ // solhint-disable-next-line ordering function onChanOpenTry( ChannelOrder, @@ -159,6 +212,12 @@ contract Mars is IbcReceiverBase, IbcReceiver, FeeSender { return _connectChannel(channelId, counterpartyVersion); } + /** + * @notice Handles the channel open acknowledgment event (step 3 of the open channel handshake) + * @dev Make sure to validate channelId and counterpartyVersion + * @param channelId The unique identifier of the channel + * @param counterpartyVersion The version string provided by the counterparty + */ function onChanOpenAck(bytes32 channelId, bytes32, string calldata counterpartyVersion) external virtual @@ -167,6 +226,11 @@ contract Mars is IbcReceiverBase, IbcReceiver, FeeSender { _connectChannel(channelId, counterpartyVersion); } + /** + * @notice Handles the channel open confirmation event (step 4 of the open channel handshake) + * @dev Make sure to validate channelId and counterpartyVersion + * @param channelId The unique identifier of the channel + */ function onChanOpenConfirm(bytes32 channelId) external onlyIbcDispatcher {} function _connectChannel(bytes32 channelId, string calldata counterpartyVersion) diff --git a/contracts/implementation_templates/FeeSender.sol b/contracts/implementation_templates/FeeSender.sol index 06e28006..8da2550d 100644 --- a/contracts/implementation_templates/FeeSender.sol +++ b/contracts/implementation_templates/FeeSender.sol @@ -20,18 +20,58 @@ pragma solidity 0.8.15; import {IbcDispatcher} from "../interfaces/IbcDispatcher.sol"; import {ChannelOrder} from "../libs/Ibc.sol"; -/// Contract with +/** + */ +/** + * @title FeeSender + * @notice This contract provides methods to deposit fees for sendPacket and channelOpenInit calls, so that they can be + * relayed by polymer. + * @notice Contracts don't need to inherit from this contract if they plan to relay their own packets and channel + * handshake txs. + * @notice Use the Polymer fee estimation api to get the required fees to ensure that enough fees are sent. + */ abstract contract FeeSender { + /** + * @notice Deposits the send packet relayer fee for a given channel and sequence into the FeeVault. + * @notice If you are relaying your own packets, you should not call this method. + * @param dispatcher The dispatcher contract that the corresponding sendPacket will be called on. + * @param channelId The channel id to deposit fees for that the packet is sent over. + * @param sequence The sequence of the packet to deposit fees for. This is returned from the sendPacket call. + * @param gasLimits An array containing two gas limit values: + * - gasLimits[0] for `recvPacket` fees + * - gasLimits[1] for `ackPacket` fees. + * @param gasPrices An array containing two gas price values: + * - gasPrices[0] for `recvPacket` fees, for the dest chain + * - gasPrices[1] for `ackPacket` fees, for the src chain + * @notice The total fees sent in the msg.value should be equal to the total gasLimits[0] * gasPrices[0] + + * @notice Use the Polymer fee estimation api to get the required fees to ensure that enough fees are sent. + * @dev Note: We have to have gasLimits and gasPrices as memory arrays. We cannot have them as calldata arrays + * because solidity has weird behavior with using too much calldata in stacked calls + * gasLimits[1] * gasPrices[1]. The transaction will revert if a higher or lower value is sent + */ function _depositSendPacketFee( IbcDispatcher dispatcher, bytes32 channelId, uint64 sequence, - uint256[2] calldata gasLimits, - uint256[2] calldata gasPrices + uint256[2] memory gasLimits, + uint256[2] memory gasPrices ) internal { dispatcher.feeVault().depositSendPacketFee{value: msg.value}(channelId, sequence, gasLimits, gasPrices); } + /** + * @notice Deposits the open channel fee for a given channel and sequence into the FeeVault. + * @notice If you are relaying your own channelHandshake transactions, you should not call this method. + * @param dispatcher The dispatcher contract the channelOpenInit was called on. + * @param version The version of the channelOpenInit call, used to identify which chanOpenInit call fees were + * deposited for. + * @param ordering The ordering of the channelOpenInit call, used to identify which chanOpenInit call fees were + * deposited for. + * @param connectionHops The connection hops for the channelOpenInit call, used to identify which channelOpenInit + * call fees were deposited for . + * @param counterpartyPortId The counterparty port ID for the channelOpenInit call, used to identify which + * channelOpenInit call fees were deposited for . + */ function _depositOpenChannelFee( IbcDispatcher dispatcher, string memory version, diff --git a/contracts/interfaces/IbcMiddleware.sol b/contracts/interfaces/IbcMiddleware.sol index 80a2df64..e8da1aaf 100644 --- a/contracts/interfaces/IbcMiddleware.sol +++ b/contracts/interfaces/IbcMiddleware.sol @@ -192,6 +192,60 @@ interface IbcMwEventsEmitter { ); } +/** + * @title IbcMwUser + * @dev Contracts that send and recv universal packets via IBC MW should inherit IbcMwUser or implement similiar + * functions. + * @notice IbcMwUser ensures only authorized IBC middleware can call IBC callback functions. + */ +abstract contract UCHUser is Ownable { + // default middleware + address public uch; + + error CallerNotUCH(); + error InvalidUCHAddress(); + error ackDataTooShort(); + error ackAddressMismatch(); + + /** + * @dev Modifier to restrict access to only the IBC middleware. + * Only the address with the IBC_ROLE can execute the function. + * Should add this modifier to all IBC-related callback functions. + */ + modifier onlyUCH() { + if (msg.sender != uch) { + revert CallerNotUCH(); + } + _; + } + + /** + * @dev Constructor function that takes an IbcMiddleware address and grants the IBC_ROLE to the Polymer IBC + * Dispatcher. + * @param _uch The address of the uch contract. + */ + constructor(address _uch) Ownable() { + uch = _uch; + } + + /// This function is called for plain Ether transfers, i.e. for every call with empty calldata. + // An empty function body is sufficient to receive packet fee refunds. + receive() external payable {} + + /** + * @dev register an authorized middleware so that modifier onlyIbcMw can be used to restrict access to only + * authorized middleware. + * Only the address with the IBC_ROLE can execute the function. + * @notice Should add this modifier to all IBC-related callback functions. + */ + function updateUch(address _newUch) external onlyOwner { + if (_newUch == address(0)) { + revert InvalidUCHAddress(); + } + uch = _newUch; + } +} + /** * @title IbcMwUser * @dev Contracts that send and recv universal packets via IBC MW should inherit IbcMwUser or implement similiar @@ -260,7 +314,7 @@ contract IbcMwUser is Ownable { } } -abstract contract IbcUniversalPacketReceiverBase is IbcMwUser, IbcUniversalPacketReceiver { +abstract contract IbcUniversalPacketReceiverBase is UCHUser, IbcUniversalPacketReceiver { mapping(bytes32 => bool) public authorizedChannelIds; /** @@ -273,7 +327,7 @@ abstract contract IbcUniversalPacketReceiverBase is IbcMwUser, IbcUniversalPacke _; } - constructor(address _middleware) IbcMwUser(_middleware) {} + constructor(address _uch) UCHUser(_uch) {} /** * @dev Authorize a channel to be used by middleware. diff --git a/contracts/interfaces/IbcReceiver.sol b/contracts/interfaces/IbcReceiver.sol index d7759e31..e9c5f0bb 100644 --- a/contracts/interfaces/IbcReceiver.sol +++ b/contracts/interfaces/IbcReceiver.sol @@ -118,6 +118,8 @@ interface IbcPacketReceiver { /** * @notice Callback for handling a packet timeout + * @notice Direct timeouts are currently unimplemented, so this callback is currently unused. Packets can still be + * indirectly timedout in the recieve callback. * @param packet The IBC packet that has timed out * @dev Make sure to validate packet's source and destiation channels and ports. */ diff --git a/package.json b/package.json index 12f6061f..cdabdb83 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@open-ibc/vibc-core-smart-contracts", - "version": "2.1.9", + "version": "2.1.10", "main": "dist/index.js", "bin": { "verify-vibc-core-smart-contracts": "./dist/scripts/verify-contract-script.js", diff --git a/src/evm/contracts/Earth.ts b/src/evm/contracts/Earth.ts index 17f50cdf..c141c3f6 100644 --- a/src/evm/contracts/Earth.ts +++ b/src/evm/contracts/Earth.ts @@ -54,22 +54,20 @@ export interface EarthInterface extends Interface { nameOrSignature: | "ackPackets" | "authorizeChannel" - | "authorizeMiddleware" | "authorizedChannelIds" - | "authorizedMws" | "generateAckPacket" | "greet" | "greetWithFee" - | "mw" | "onRecvUniversalPacket" | "onTimeoutUniversalPacket" | "onUniversalAcknowledgement" | "owner" | "recvedPackets" | "renounceOwnership" - | "setDefaultMw" | "timeoutPackets" | "transferOwnership" + | "uch" + | "updateUch" ): FunctionFragment; getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; @@ -82,18 +80,10 @@ export interface EarthInterface extends Interface { functionFragment: "authorizeChannel", values: [BytesLike] ): string; - encodeFunctionData( - functionFragment: "authorizeMiddleware", - values: [AddressLike] - ): string; encodeFunctionData( functionFragment: "authorizedChannelIds", values: [BytesLike] ): string; - encodeFunctionData( - functionFragment: "authorizedMws", - values: [AddressLike] - ): string; encodeFunctionData( functionFragment: "generateAckPacket", values: [BytesLike, AddressLike, BytesLike] @@ -113,7 +103,6 @@ export interface EarthInterface extends Interface { [BigNumberish, BigNumberish] ] ): string; - encodeFunctionData(functionFragment: "mw", values?: undefined): string; encodeFunctionData( functionFragment: "onRecvUniversalPacket", values: [BytesLike, UniversalPacketStruct] @@ -135,10 +124,6 @@ export interface EarthInterface extends Interface { functionFragment: "renounceOwnership", values?: undefined ): string; - encodeFunctionData( - functionFragment: "setDefaultMw", - values: [AddressLike] - ): string; encodeFunctionData( functionFragment: "timeoutPackets", values: [BigNumberish] @@ -147,24 +132,21 @@ export interface EarthInterface extends Interface { functionFragment: "transferOwnership", values: [AddressLike] ): string; + encodeFunctionData(functionFragment: "uch", values?: undefined): string; + encodeFunctionData( + functionFragment: "updateUch", + values: [AddressLike] + ): string; decodeFunctionResult(functionFragment: "ackPackets", data: BytesLike): Result; decodeFunctionResult( functionFragment: "authorizeChannel", data: BytesLike ): Result; - decodeFunctionResult( - functionFragment: "authorizeMiddleware", - data: BytesLike - ): Result; decodeFunctionResult( functionFragment: "authorizedChannelIds", data: BytesLike ): Result; - decodeFunctionResult( - functionFragment: "authorizedMws", - data: BytesLike - ): Result; decodeFunctionResult( functionFragment: "generateAckPacket", data: BytesLike @@ -174,7 +156,6 @@ export interface EarthInterface extends Interface { functionFragment: "greetWithFee", data: BytesLike ): Result; - decodeFunctionResult(functionFragment: "mw", data: BytesLike): Result; decodeFunctionResult( functionFragment: "onRecvUniversalPacket", data: BytesLike @@ -196,10 +177,6 @@ export interface EarthInterface extends Interface { functionFragment: "renounceOwnership", data: BytesLike ): Result; - decodeFunctionResult( - functionFragment: "setDefaultMw", - data: BytesLike - ): Result; decodeFunctionResult( functionFragment: "timeoutPackets", data: BytesLike @@ -208,6 +185,8 @@ export interface EarthInterface extends Interface { functionFragment: "transferOwnership", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "uch", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "updateUch", data: BytesLike): Result; } export namespace OwnershipTransferredEvent { @@ -284,20 +263,12 @@ export interface Earth extends BaseContract { "nonpayable" >; - authorizeMiddleware: TypedContractMethod< - [middleware: AddressLike], - [void], - "nonpayable" - >; - authorizedChannelIds: TypedContractMethod< [arg0: BytesLike], [boolean], "view" >; - authorizedMws: TypedContractMethod<[arg0: AddressLike], [boolean], "view">; - generateAckPacket: TypedContractMethod< [arg0: BytesLike, srcPortAddr: AddressLike, appData: BytesLike], [AckPacketStructOutput], @@ -328,8 +299,6 @@ export interface Earth extends BaseContract { "payable" >; - mw: TypedContractMethod<[], [string], "view">; - onRecvUniversalPacket: TypedContractMethod< [channelId: BytesLike, packet: UniversalPacketStruct], [AckPacketStructOutput], @@ -363,12 +332,6 @@ export interface Earth extends BaseContract { renounceOwnership: TypedContractMethod<[], [void], "nonpayable">; - setDefaultMw: TypedContractMethod< - [_middleware: AddressLike], - [void], - "nonpayable" - >; - timeoutPackets: TypedContractMethod< [arg0: BigNumberish], [ @@ -386,6 +349,10 @@ export interface Earth extends BaseContract { "nonpayable" >; + uch: TypedContractMethod<[], [string], "view">; + + updateUch: TypedContractMethod<[_newUch: AddressLike], [void], "nonpayable">; + getFunction( key: string | FunctionFragment ): T; @@ -406,15 +373,9 @@ export interface Earth extends BaseContract { getFunction( nameOrSignature: "authorizeChannel" ): TypedContractMethod<[channelId: BytesLike], [void], "nonpayable">; - getFunction( - nameOrSignature: "authorizeMiddleware" - ): TypedContractMethod<[middleware: AddressLike], [void], "nonpayable">; getFunction( nameOrSignature: "authorizedChannelIds" ): TypedContractMethod<[arg0: BytesLike], [boolean], "view">; - getFunction( - nameOrSignature: "authorizedMws" - ): TypedContractMethod<[arg0: AddressLike], [boolean], "view">; getFunction( nameOrSignature: "generateAckPacket" ): TypedContractMethod< @@ -448,7 +409,6 @@ export interface Earth extends BaseContract { [bigint], "payable" >; - getFunction(nameOrSignature: "mw"): TypedContractMethod<[], [string], "view">; getFunction( nameOrSignature: "onRecvUniversalPacket" ): TypedContractMethod< @@ -488,9 +448,6 @@ export interface Earth extends BaseContract { getFunction( nameOrSignature: "renounceOwnership" ): TypedContractMethod<[], [void], "nonpayable">; - getFunction( - nameOrSignature: "setDefaultMw" - ): TypedContractMethod<[_middleware: AddressLike], [void], "nonpayable">; getFunction( nameOrSignature: "timeoutPackets" ): TypedContractMethod< @@ -506,6 +463,12 @@ export interface Earth extends BaseContract { getFunction( nameOrSignature: "transferOwnership" ): TypedContractMethod<[newOwner: AddressLike], [void], "nonpayable">; + getFunction( + nameOrSignature: "uch" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "updateUch" + ): TypedContractMethod<[_newUch: AddressLike], [void], "nonpayable">; getEvent( key: "OwnershipTransferred" diff --git a/src/evm/contracts/factories/Dispatcher__factory.ts b/src/evm/contracts/factories/Dispatcher__factory.ts index 6179fcfa..9b65ff6a 100644 --- a/src/evm/contracts/factories/Dispatcher__factory.ts +++ b/src/evm/contracts/factories/Dispatcher__factory.ts @@ -2111,7 +2111,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a0604052306080523480156200001557600080fd5b506001606555620000256200002b565b620000ec565b600054610100900460ff1615620000985760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000ea576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b608051615d6f6200012460003960008181610bf801528181610c41015281816114420152818161148201526115150152615d6f6000f3fe60806040526004361061019c5760003560e01c80636b67055e116100ec578063940265cb1161008a578063c00fa7c011610064578063c00fa7c0146104dc578063c3e1155c146104fc578063f2fde38b14610534578063f90b8e961461055457600080fd5b8063940265cb146104675780639f59ae711461049c578063ba5a4d25146104bc57600080fd5b80637ab4339d116100c65780637ab4339d146103cc57806381bc079b146103ec5780638da5cb5b1461040c5780638dd34bb41461042a57600080fd5b80636b67055e14610375578063715018a6146103955780637774a6d3146103aa57600080fd5b8063429446b61161015957806352d1902d1161013357806352d1902d146102f2578063556d5178146103155780635d7adf96146103355780636050b5f31461035557600080fd5b8063429446b614610287578063478222c2146102a75780634f1ef286146102df57600080fd5b80631eb9fc86146101a15780632494546b146101c35780632bf5d19d146101fa5780633659cfe61461021a578063418925b71461023a57806342852d241461025a575b600080fd5b3480156101ad57600080fd5b506101c16101bc3660046142c9565b610574565b005b3480156101cf57600080fd5b506097546101e09063ffffffff1681565b60405163ffffffff90911681526020015b60405180910390f35b34801561020657600080fd5b506101c161021536600461439f565b6108fe565b34801561022657600080fd5b506101c1610235366004614449565b610bee565b34801561024657600080fd5b506101c16102553660046144a7565b610cd6565b34801561026657600080fd5b5061027a610275366004614568565b610e36565b6040516101f1919061466b565b34801561029357600080fd5b506101c16102a23660046142c9565b61118e565b3480156102b357600080fd5b5060a2546102c7906001600160a01b031681565b6040516001600160a01b0390911681526020016101f1565b6101c16102ed3660046147be565b611438565b3480156102fe57600080fd5b50610307611508565b6040519081526020016101f1565b34801561032157600080fd5b506101c1610330366004614821565b6115bb565b34801561034157600080fd5b506101c1610350366004614889565b6115d3565b34801561036157600080fd5b506101c1610370366004614889565b6118e2565b34801561038157600080fd5b506101c1610390366004614889565b6118f4565b3480156103a157600080fd5b506101c1611fe2565b3480156103b657600080fd5b506103bf611ff6565b6040516101f191906148e2565b3480156103d857600080fd5b506101c16103e7366004614915565b612084565b3480156103f857600080fd5b506101c1610407366004614966565b612204565b34801561041857600080fd5b506033546001600160a01b03166102c7565b34801561043657600080fd5b5061044a61044536600461497f565b612652565b6040805193845260208401929092521515908201526060016101f1565b34801561047357600080fd5b506104876104823660046149ca565b612713565b604080519283529015156020830152016101f1565b3480156104a857600080fd5b506101c16104b7366004614a73565b6127d7565b3480156104c857600080fd5b506101c16104d7366004614ab4565b61282c565b3480156104e857600080fd5b506101c16104f7366004614a73565b612d68565b34801561050857600080fd5b5061051c610517366004614b58565b612da3565b6040516001600160401b0390911681526020016101f1565b34801561054057600080fd5b506101c161054f366004614449565b612f29565b34801561056057600080fd5b506101c161056f366004614bb5565b612f9f565b61057c6135b4565b600285101561059e5760405163af0ba14d60e01b815260040160405180910390fd5b6105c46105ab8880614c0d565b60208a01356105ba8680614c0d565b876020013561360d565b610626868660008181106105da576105da614c53565b90506020028101906105ec9190614c0d565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061365092505050565b6001600160a01b031663cb535ab58273__$d825222459c46c14afb2efe0967c30e98d$__634f9b0fb36106598c80614c0d565b8d602001356040518463ffffffff1660e01b815260040161067c93929190614c92565b600060405180830381865af4158015610699573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106c19190810190614d06565b73__$d825222459c46c14afb2efe0967c30e98d$__6325e0dd0e60078a8e80604001906106ee9190614c0d565b8f8f6106fa8e80614c0d565b8f602001356040518a63ffffffff1660e01b815260040161072399989796959493929190614d8f565b600060405180830381865af4158015610740573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107689190810190614d06565b6040518463ffffffff1660e01b815260040161078693929190614ea9565b600060405180830381600087803b1580156107a057600080fd5b505af11580156107b4573d6000803e3d6000fd5b50600092506107cf91506107ca90508980614c0d565b6136ce565b9050600080610841836301d08fc560e71b6020808e0135908901356107f760408b018b614c0d565b60405160240161080a9493929190615057565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613768565b9150915081156108a65761085a838b8b8b8b8b8b613854565b826001600160a01b03167fcf8be9ab2b5edf8beb2c45abe8e0cc7646318ac19f6c3164ba2e19e93a8a32af8b6020013560405161089991815260200190565b60405180910390a26108e8565b826001600160a01b03167f971a4433f5bff5f011728a4123aeeca4b5275ac20b013cf276e65510491ac26f826040516108df91906148e2565b60405180910390a25b5050506108f56001606555565b50505050505050565b6109066135b4565b60028310156109285760405163af0ba14d60e01b815260040160405180910390fd5b6109356105ab8880614c0d565b61094b848460008181106105da576105da614c53565b6001600160a01b031663cb535ab58273__$d825222459c46c14afb2efe0967c30e98d$__634f9b0fb361097e8c80614c0d565b8d602001356040518463ffffffff1660e01b81526004016109a193929190614c92565b600060405180830381865af41580156109be573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109e69190810190614d06565b73__$d825222459c46c14afb2efe0967c30e98d$__6325e0dd0e60068c8e8060400190610a139190614c0d565b8d8d610a1f8e80614c0d565b8f602001356040518a63ffffffff1660e01b8152600401610a4899989796959493929190614d8f565b600060405180830381865af4158015610a65573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a8d9190810190614d06565b6040518463ffffffff1660e01b8152600401610aab93929190614ea9565b600060405180830381600087803b158015610ac557600080fd5b505af1158015610ad9573d6000803e3d6000fd5b5060009250610aef91506107ca90508980614c0d565b9050600080610b4583634bdb559760e01b8b8a8a8f602001358b8060000190610b189190614c0d565b8d602001358e8060400190610b2d9190614c0d565b60405160240161080a999897969594939291906150c7565b915091508115610bb557826001600160a01b03167ff910705a7a768eb5958f281a5f84cae8bffc5dd811ca5cd303dda140a423698c82806020019051810190610b8e919061512c565b8b8b8b8b610b9c8c80614c0d565b8d60200135604051610899989796959493929190615174565b826001600160a01b03167f9e2fe55a3b54b57f82334c273f8d048cd7f05ad19c16cf334276a8c1fec4b6fd826040516108df91906148e2565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610c3f5760405162461bcd60e51b8152600401610c36906151da565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610c88600080516020615cf3833981519152546001600160a01b031690565b6001600160a01b031614610cae5760405162461bcd60e51b8152600401610c3690615226565b610cb781613aec565b60408051600080825260208201909252610cd391839190613af4565b50565b610cde6135b4565b6002831080610ceb575080155b15610d0957604051637d6ba8a560e01b815260040160405180910390fd5b600086858585858d8d604051602001610d289796959493929190615272565b6040516020818303038152906040529050600080610d6e33637a9ccc4b60e01b85604051602001610d5a9291906152c9565b604051602081830303815290604052613768565b915091508115610ddd57336001600160a01b03167f20fd8a5856711b18d00def4aa6abafbe00ce6d60795e015cc1cad35eb9b4635982806020019051810190610db7919061512c565b8b8b8b8b8b8b604051610dd097969594939291906152fa565b60405180910390a2610e1f565b336001600160a01b03167f69c1283cce89382f0f9ddf19b7c4f05b4d9b3c30c84fc148b1ec800284be58d582604051610e1691906148e2565b60405180910390a25b505050610e2c6001606555565b5050505050505050565b610e7c6040805160e08101909152606081526020810160008152602001600015158152602001606081526020016060815260200160008019168152602001606081525090565b6001600160a01b038316600090815260986020908152604080832085845290915290819020815160e08101909252805482908290610eb99061534a565b80601f0160208091040260200160405190810160405280929190818152602001828054610ee59061534a565b8015610f325780601f10610f0757610100808354040283529160200191610f32565b820191906000526020600020905b815481529060010190602001808311610f1557829003601f168201915b5050509183525050600182015460209091019060ff166002811115610f5957610f596145ec565b6002811115610f6a57610f6a6145ec565b81526001820154610100900460ff161515602080830191909152600283018054604080518285028101850182528281529401939260009084015b82821015611050578382906000526020600020018054610fc39061534a565b80601f0160208091040260200160405190810160405280929190818152602001828054610fef9061534a565b801561103c5780601f106110115761010080835404028352916020019161103c565b820191906000526020600020905b81548152906001019060200180831161101f57829003601f168201915b505050505081526020019060010190610fa4565b5050505081526020016003820180546110689061534a565b80601f01602080910402602001604051908101604052809291908181526020018280546110949061534a565b80156110e15780601f106110b6576101008083540402835291602001916110e1565b820191906000526020600020905b8154815290600101906020018083116110c457829003601f168201915b50505050508152602001600482015481526020016005820180546111049061534a565b80601f01602080910402602001604051908101604052809291908181526020018280546111309061534a565b801561117d5780601f106111525761010080835404028352916020019161117d565b820191906000526020600020905b81548152906001019060200180831161116057829003601f168201915b505050505081525050905092915050565b6111966135b4565b60028510156111b85760405163af0ba14d60e01b815260040160405180910390fd5b6111c56105ab8880614c0d565b6111db868660008181106105da576105da614c53565b6001600160a01b031663cb535ab58273__$d825222459c46c14afb2efe0967c30e98d$__634f9b0fb361120e8c80614c0d565b8d602001356040518463ffffffff1660e01b815260040161123193929190614c92565b600060405180830381865af415801561124e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112769190810190614d06565b73__$d825222459c46c14afb2efe0967c30e98d$__6325e0dd0e60088a8e80604001906112a39190614c0d565b8f8f6112af8e80614c0d565b8f602001356040518a63ffffffff1660e01b81526004016112d899989796959493929190614d8f565b600060405180830381865af41580156112f5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261131d9190810190614d06565b6040518463ffffffff1660e01b815260040161133b93929190614ea9565b600060405180830381600087803b15801561135557600080fd5b505af1158015611369573d6000803e3d6000fd5b506000925061137f91506107ca90508980614c0d565b90506000806113a78363fad28a2460e01b8c6020013560405160240161080a91815260200190565b9150915081156113ff576113c0838b8b8b8b8b8b613854565b826001600160a01b03167fe80f571f70f7cabf9d7ac60ece08421be374117776c311c327a083ca398f802f8b6020013560405161089991815260200190565b826001600160a01b03167ff6a58ef30f66943749e8c29c661c84da143a1c8ed017f5faa92b509e0000875a826040516108df91906148e2565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036114805760405162461bcd60e51b8152600401610c36906151da565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114c9600080516020615cf3833981519152546001600160a01b031690565b6001600160a01b0316146114ef5760405162461bcd60e51b8152600401610c3690615226565b6114f882613aec565b61150482826001613af4565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146115a85760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610c36565b50600080516020615cf383398151915290565b6115c3613c5f565b6115ce838383613cb9565b505050565b6115db6135b4565b6115f46115eb602084018461537e565b60200135613d53565b6001600160a01b031663cb535ab58273__$d825222459c46c14afb2efe0967c30e98d$__634b5728d1866040518263ffffffff1660e01b815260040161163a9190615400565b600060405180830381865af4158015611657573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261167f9190810190614d06565b604051637e4794ed60e11b815273__$d825222459c46c14afb2efe0967c30e98d$__9063fc8f29da906116b6908990600401615400565b602060405180830381865af41580156116d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f791906154c2565b60405160200161170991815260200190565b6040516020818303038152906040526040518463ffffffff1660e01b815260040161173693929190614ea9565b600060405180830381600087803b15801561175057600080fd5b505af1158015611764573d6000803e3d6000fd5b50505050600061178783806020019061177d919061537e565b6107ca9080614c0d565b6001600160a01b0381166000908152609d60209081526040822092935090919082906117b59087018761537e565b60200135815260200190815260200160002060008560400160208101906117dc91906154db565b6001600160401b0316815260208101919091526040016000205460ff169050801561181a5760405163066c745760e01b815260040160405180910390fd5b61184261182d60e0860160c087016154db565b61183d60c0870160a088016154db565b613e1d565b61185f576040516312c9cc9f60e01b815260040160405180910390fd5b61186c602085018561537e565b602001356001600160a01b0383167fedbcd9eeb09d85c3ea1b5bf002c04478059cb261cab82c903885cefccae374bc6118ab60608801604089016154db565b608088016118bf60e08a0160c08b016154db565b6040516118ce939291906154f6565b60405180910390a350506115046001606555565b6118ea6135b4565b6115046001606555565b6118fc6135b4565b61190c6115eb602084018461537e565b6001600160a01b031663cb535ab58273__$d825222459c46c14afb2efe0967c30e98d$__634b5728d1866040518263ffffffff1660e01b81526004016119529190615400565b600060405180830381865af415801561196f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119979190810190614d06565b604051637e4794ed60e11b815273__$d825222459c46c14afb2efe0967c30e98d$__9063fc8f29da906119ce908990600401615400565b602060405180830381865af41580156119eb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a0f91906154c2565b604051602001611a2191815260200190565b6040516020818303038152906040526040518463ffffffff1660e01b8152600401611a4e93929190614ea9565b600060405180830381600087803b158015611a6857600080fd5b505af1158015611a7c573d6000803e3d6000fd5b505050506000611a9583806020019061177d919061537e565b6001600160a01b0381166000908152609d6020908152604082209293509091908290611ac39087018761537e565b6020013581526020019081526020016000206000856040016020810190611aea91906154db565b6001600160401b0316815260208101919091526040016000205460ff1690508015611b285760405163066c745760e01b815260040160405180910390fd5b6001600160a01b0382166000908152609d6020908152604082206001929091611b539088018861537e565b6020013581526020019081526020016000206000866040016020810190611b7a91906154db565b6001600160401b031681526020810191909152604001600020805460ff191691151591909117905560026001600160a01b038316600090815260986020908152604082209190611bcc9088018861537e565b60209081013582528101919091526040016000206001015460ff166002811115611bf857611bf86145ec565b03611cf7576001600160a01b0382166000908152609a6020908152604082209190611c259087018761537e565b60209081013582528101919091526040908101600020546001600160401b031690611c5690606087019087016154db565b6001600160401b031614611c7d5760405163362a414d60e01b815260040160405180910390fd5b611c8d60608501604086016154db565b611c98906001615526565b6001600160a01b0383166000908152609a6020908152604082209190611cc09088018861537e565b60200135815260200190815260200160002060006101000a8154816001600160401b0302191690836001600160401b031602179055505b611d04602085018561537e565b602001356001600160a01b0383167fde5b57e6566d68a30b0979431df3d5df6db3b9aa89f8820f595b9315bf86d067611d4360608801604089016154db565b6040516001600160401b03909116815260200160405180910390a3611d7161182d60e0860160c087016154db565b15611df457611d83602085018561537e565b602001356001600160a01b0383167fedbcd9eeb09d85c3ea1b5bf002c04478059cb261cab82c903885cefccae374bc611dc260608801604089016154db565b60808801611dd660e08a0160c08b016154db565b604051611de5939291906154f6565b60405180910390a350506118ea565b604080518082019091526000815260606020820152600080611e2985634dcc0aa660e01b8960405160240161080a9190615610565b915091508115611e4e5780806020019051810190611e479190615623565b9250611e66565b60408051808201909152600081526020810182905292505b6001600160a01b0385166000908152609e602090815260408220908290611e8f908b018b61537e565b6020013581526020019081526020016000206000896040016020810190611eb691906154db565b6001600160401b0316815260208101919091526040016000205460ff1690508015611ef457604051637aa549d360e01b815260040160405180910390fd5b6001600160a01b0386166000908152609e6020908152604082206001929091611f1f908c018c61537e565b60200135815260200190815260200160002060008a6040016020810190611f4691906154db565b6001600160401b03168152602080820192909252604001600020805460ff191692151592909217909155611f7c9089018961537e565b602001356001600160a01b0387167fa32e6f42b1d63fb83ad73b009a6dbb9413d1da02e95b1bb08f081815eea8db20611fbb60608c0160408d016154db565b87604051611fca9291906156d9565b60405180910390a35050505050506115046001606555565b611fea613c5f565b611ff46000613e6b565b565b609680546120039061534a565b80601f016020809104026020016040519081016040528092919081815260200182805461202f9061534a565b801561207c5780601f106120515761010080835404028352916020019161207c565b820191906000526020600020905b81548152906001019060200180831161205f57829003601f168201915b505050505081565b600054600290610100900460ff161580156120a6575060005460ff8083169116105b6121095760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610c36565b6000805461ffff191660ff8316176101001790556121256135b4565b82516000036121475760405163e8cf362360e01b815260040160405180910390fd5b6001600160a01b03821661216e5760405163cbdd34cf60e01b815260040160405180910390fd5b612176613ebd565b60966121828482615741565b5082516097805463ffffffff191663ffffffff90921691909117905560a280546001600160a01b0319166001600160a01b03841617905560016065556000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b61220c6135b4565b336000908152609860209081526040808320848452909152808220815160e0810190925280548290829061223f9061534a565b80601f016020809104026020016040519081016040528092919081815260200182805461226b9061534a565b80156122b85780601f1061228d576101008083540402835291602001916122b8565b820191906000526020600020905b81548152906001019060200180831161229b57829003601f168201915b5050509183525050600182015460209091019060ff1660028111156122df576122df6145ec565b60028111156122f0576122f06145ec565b81526001820154610100900460ff161515602080830191909152600283018054604080518285028101850182528281529401939260009084015b828210156123d65783829060005260206000200180546123499061534a565b80601f01602080910402602001604051908101604052809291908181526020018280546123759061534a565b80156123c25780601f10612397576101008083540402835291602001916123c2565b820191906000526020600020905b8154815290600101906020018083116123a557829003601f168201915b50505050508152602001906001019061232a565b5050505081526020016003820180546123ee9061534a565b80601f016020809104026020016040519081016040528092919081815260200182805461241a9061534a565b80156124675780601f1061243c57610100808354040283529160200191612467565b820191906000526020600020905b81548152906001019060200180831161244a57829003601f168201915b505050505081526020016004820154815260200160058201805461248a9061534a565b80601f01602080910402602001604051908101604052809291908181526020018280546124b69061534a565b80156125035780601f106124d857610100808354040283529160200191612503565b820191906000526020600020905b8154815290600101906020018083116124e657829003601f168201915b5050509190925250505060a081015190915061253257604051631109bfb360e31b815260040160405180910390fd5b60008061255e33631eb7dd5e60e01b8686608001518760a0015160405160240161080a93929190615800565b33600090815260986020908152604080832089845290915281209294509092506125888282614153565b60018201805461ffff191690556125a360028301600061418d565b6125b1600383016000614153565b60048201600090556005820160006125c99190614153565b5050811561260357604051849033907f21372e37743553ba8e5f61239803174a827c7732d53ec8adcb76c6b3bb2c13f190600090a3612645565b336001600160a01b03167fb1be59c1bcd39c54c7132a8e0d321af5db427575ddb3265560d8862804f4381b8260405161263c91906148e2565b60405180910390a25b505050610cd36001606555565b600080600061269685858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061365092505050565b6001600160a01b03166344c9af28876040518263ffffffff1660e01b81526004016126c391815260200190565b606060405180830381865afa1580156126e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127049190615829565b92509250925093509350939050565b60008061275584848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061365092505050565b6001600160a01b0316635922f420898989896040518563ffffffff1660e01b815260040161278694939291906158b7565b60408051808303816000875af11580156127a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127c8919061597c565b91509150965096945050505050565b6127df613c5f565b60008190036128015760405163e8cf362360e01b815260040160405180910390fd5b609661280e8284836159a1565b506097805463ffffffff191663ffffffff9290921691909117905550565b6128346135b4565b600061284361177d868061537e565b90506128526115eb868061537e565b6001600160a01b031663cb535ab58373__$d825222459c46c14afb2efe0967c30e98d$__6311a7a373896040518263ffffffff1660e01b81526004016128989190615400565b600060405180830381865af41580156128b5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128dd9190810190614d06565b6040516374e9704560e01b815273__$d825222459c46c14afb2efe0967c30e98d$__906374e9704590612916908b908b90600401615a61565b602060405180830381865af4158015612933573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061295791906154c2565b60405160200161296991815260200190565b6040516020818303038152906040526040518463ffffffff1660e01b815260040161299693929190614ea9565b600060405180830381600087803b1580156129b057600080fd5b505af11580156129c4573d6000803e3d6000fd5b505050506001600160a01b0381166000908152609c60205260408120816129eb888061537e565b6020013581526020019081526020016000206000876040016020810190612a1291906154db565b6001600160401b0316815260208101919091526040016000205460ff16905080612a4f5760405163ca89746b60e01b815260040160405180910390fd5b600080612aee84637e1d42b560e01b8a73__$d825222459c46c14afb2efe0967c30e98d$__63360b8cd78c8c6040518363ffffffff1660e01b8152600401612a98929190615a61565b600060405180830381865af4158015612ab5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612add9190810190615623565b60405160240161080a929190615a75565b915091508115612d125760026001600160a01b038516600090815260986020526040812090612b1d8b8061537e565b60209081013582528101919091526040016000206001015460ff166002811115612b4957612b496145ec565b03612c3e576001600160a01b0384166000908152609b6020526040812090612b718a8061537e565b60209081013582528101919091526040908101600020546001600160401b031690612ba29060608b01908b016154db565b6001600160401b031614612bc95760405163362a414d60e01b815260040160405180910390fd5b612bd96060890160408a016154db565b612be4906001615526565b6001600160a01b0385166000908152609b6020526040812090612c078b8061537e565b60200135815260200190815260200160002060006101000a8154816001600160401b0302191690836001600160401b031602179055505b6001600160a01b0384166000908152609c6020526040812090612c618a8061537e565b6020013581526020019081526020016000206000896040016020810190612c8891906154db565b6001600160401b031681526020810191909152604001600020805460ff19169055612cb3888061537e565b602001356001600160a01b0385167fe46f6591236abe528fe47a3b281fb002524dadd3e62b1f317ed285d07273c3b1612cf260608c0160408d016154db565b6040516001600160401b03909116815260200160405180910390a3612d54565b836001600160a01b03167f625eea143c9dae6915c809da47016c22d9cd006c3ace7c345c5cbcf57d3aefbc82604051612d4b91906148e2565b60405180910390a25b50505050612d626001606555565b50505050565b612d70613c5f565b60a18282604051612d82929190615a9a565b90815260405190819003602001902080546001600160a01b03191690555050565b6000612dad6135b4565b336000908152609860209081526040808320888452909152902060040154612de857604051631109bfb360e31b815260040160405180910390fd5b42826001600160401b031611612e115760405163551ea0fb60e11b815260040160405180910390fd5b503360009081526099602090815260408083208784529091528120546001600160401b031690819003612e5757604051631e510bfb60e21b815260040160405180910390fd5b336000908152609c6020908152604080832088845282528083206001600160401b03851684529091529020805460ff19166001908117909155612e9b908290615526565b3360008181526099602090815260408083208a845290915290819020805467ffffffffffffffff19166001600160401b03949094169390931790925590518691907fb5bff96e18da044e4e34510d16df9053b9f1920f6a960732e5aaf22fe9b8013690612f0f908890889087908990615aaa565b60405180910390a3612f216001606555565b949350505050565b612f31613c5f565b6001600160a01b038116612f965760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c36565b610cd381613e6b565b612fa76135b4565b6001600160a01b038316612fce5760405163cbdd34cf60e01b815260040160405180910390fd5b6001600160a01b0383166000908152609860209081526040808320858452909152808220815160e0810190925280548290829061300a9061534a565b80601f01602080910402602001604051908101604052809291908181526020018280546130369061534a565b80156130835780601f1061305857610100808354040283529160200191613083565b820191906000526020600020905b81548152906001019060200180831161306657829003601f168201915b5050509183525050600182015460209091019060ff1660028111156130aa576130aa6145ec565b60028111156130bb576130bb6145ec565b81526001820154610100900460ff161515602080830191909152600283018054604080518285028101850182528281529401939260009084015b828210156131a15783829060005260206000200180546131149061534a565b80601f01602080910402602001604051908101604052809291908181526020018280546131409061534a565b801561318d5780601f106131625761010080835404028352916020019161318d565b820191906000526020600020905b81548152906001019060200180831161317057829003601f168201915b5050505050815260200190600101906130f5565b5050505081526020016003820180546131b99061534a565b80601f01602080910402602001604051908101604052809291908181526020018280546131e59061534a565b80156132325780601f1061320757610100808354040283529160200191613232565b820191906000526020600020905b81548152906001019060200180831161321557829003601f168201915b50505050508152602001600482015481526020016005820180546132559061534a565b80601f01602080910402602001604051908101604052809291908181526020018280546132819061534a565b80156132ce5780601f106132a3576101008083540402835291602001916132ce565b820191906000526020600020905b8154815290600101906020018083116132b157829003601f168201915b5050509190925250505060a08101519091506132fd57604051634d93b09d60e11b815260040160405180910390fd5b61330683613d53565b6001600160a01b031663cb535ab58373__$d825222459c46c14afb2efe0967c30e98d$__636f6547268560c00151886040518363ffffffff1660e01b8152600401613352929190615adf565b600060405180830381865af415801561336f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526133979190810190614d06565b602085015185516060870151608088015160a0890151604051631f621e1560e31b815273__$d825222459c46c14afb2efe0967c30e98d$__9563fb10f0a8956133ed956009959294919390929190600401615b01565b600060405180830381865af415801561340a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526134329190810190614d06565b6040518463ffffffff1660e01b815260040161345093929190614ea9565b600060405180830381600087803b15801561346a57600080fd5b505af115801561347e573d6000803e3d6000fd5b505050506000806134ae86633f9fdbe460e01b8786608001518760a0015160405160240161080a93929190615800565b6001600160a01b03881660009081526098602090815260408083208a845290915281209294509092506134e18282614153565b60018201805461ffff191690556134fc60028301600061418d565b61350a600383016000614153565b60048201600090556005820160006135229190614153565b505081156135655760405185906001600160a01b038816907f5f010dbbd6bf46aec8131c5456301a75cd688d3cca9bc8380c9e26301be2072990600090a36135a7565b856001600160a01b03167fc9d36d7a317cb116925d5cb66f0069fe825822fe23e9cf3f421c38cf444caa308260405161359e91906148e2565b60405180910390a25b5050506115ce6001606555565b6002606554036136065760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610c36565b6002606555565b841580613618575081155b80613621575083155b8061362a575080155b1561364857604051637d6ba8a560e01b815260040160405180910390fd5b505050505050565b6000815160000361367e5760405163524e171160e01b81526020600482015260006024820152604401610c36565b60a18260405161368e9190615ba9565b908152604051908190036020019020546001600160a01b03169050806136c9578160405163036c4d8760e11b8152600401610c3691906148e2565b919050565b60975460009073__$f61eb90c6f674e787d51c07f105fa231e2$__9063a1ef9a989061370390859063ffffffff168188615bbb565b6040518363ffffffff1660e01b8152600401613720929190615a61565b602060405180830381865af415801561373d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137619190615be5565b9392505050565b600060606001600160a01b0384163b6137b057505060408051808201909152601481527318d85b1b081d1bc81b9bdb8b58dbdb9d1c9858dd60621b602082015260009061384d565b60005a9050846001600160a01b0316846040516137cd9190615ba9565b6000604051808303816000865af19150503d806000811461380a576040519150601f19603f3d011682016040523d82523d6000602084013e61380f565b606091505b5090935091508215801561382d5750613829604082615c02565b5a11155b1561384b5760405163b08ede0960e01b815260040160405180910390fd5b505b9250929050565b6040518060e0016040528087806040019061386f9190614c0d565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050908252506020018460028111156138bb576138bb6145ec565b815283151560208201526040016138d28688615c24565b81526020016138e18380614c0d565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050908252506020838101359082015260400161392f8880614c0d565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509390945250506001600160a01b038a1681526098602090815260408083208b83013584529091529020825190915081906139999082615741565b50602082015160018083018054909160ff19909116908360028111156139c1576139c16145ec565b021790555060408201516001820180549115156101000261ff001990921691909117905560608201518051613a009160028401916020909101906141ab565b5060808201516003820190613a159082615741565b5060a0820151600482015560c08201516005820190613a349082615741565b5050506001600160a01b03871660008181526099602090815260408083208a8301358085529083528184208054600167ffffffffffffffff199182168117909255868652609a855283862083875285528386208054821683179055958552609b8452828520918552925282208054909316179091558590859081613aba57613aba614c53565b9050602002810190613acc9190614c0d565b602080890135600090815260a09091526040902091610e2c9190836159a1565b610cd3613c5f565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615613b27576115ce83613eec565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015613b81575060408051601f3d908101601f19168201909252613b7e918101906154c2565b60015b613be45760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610c36565b600080516020615cf38339815191528114613c535760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610c36565b506115ce838383613f88565b6033546001600160a01b03163314611ff45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c36565b6000829003613ce55760405163524e171160e01b81526020600482015260006024820152604401610c36565b6001600160a01b038116613d0c5760405163cbdd34cf60e01b815260040160405180910390fd5b8060a18484604051613d1f929190615a9a565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b0319909216919091179055505050565b600081815260a0602052604081208054829190613d6f9061534a565b80601f0160208091040260200160405190810160405280929190818152602001828054613d9b9061534a565b8015613de85780601f10613dbd57610100808354040283529160200191613de8565b820191906000526020600020905b815481529060010190602001808311613dcb57829003601f168201915b505050505090508051600003613e14576040516363b99a9d60e11b815260048101849052602401610c36565b61376181613650565b60006001600160401b03831615801590613e405750826001600160401b03164210155b8061376157506001600160401b038216158015906137615750506001600160401b0316431015919050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16613ee45760405162461bcd60e51b8152600401610c3690615ca7565b611ff4613fad565b6001600160a01b0381163b613f595760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610c36565b600080516020615cf383398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b613f9183613fdd565b600082511180613f9e5750805b156115ce57612d62838361401d565b600054610100900460ff16613fd45760405162461bcd60e51b8152600401610c3690615ca7565b611ff433613e6b565b613fe681613eec565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606137618383604051806060016040528060278152602001615d13602791396060600080856001600160a01b03168560405161405a9190615ba9565b600060405180830381855af49150503d8060008114614095576040519150601f19603f3d011682016040523d82523d6000602084013e61409a565b606091505b50915091506140ab868383876140b5565b9695505050505050565b6060831561412457825160000361411d576001600160a01b0385163b61411d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610c36565b5081612f21565b612f2183838151156141395781518083602001fd5b8060405162461bcd60e51b8152600401610c3691906148e2565b50805461415f9061534a565b6000825580601f1061416f575050565b601f016020900490600052602060002090810190610cd39190614201565b5080546000825590600052602060002090810190610cd39190614216565b8280548282559060005260206000209081019282156141f1579160200282015b828111156141f157825182906141e19082615741565b50916020019190600101906141cb565b506141fd929150614216565b5090565b5b808211156141fd5760008155600101614202565b808211156141fd57600061422a8282614153565b50600101614216565b60006060828403121561424557600080fd5b50919050565b60008083601f84011261425d57600080fd5b5081356001600160401b0381111561427457600080fd5b6020830191508360208260051b850101111561384d57600080fd5b8035600381106136c957600080fd5b8015158114610cd357600080fd5b80356136c98161429e565b60006040828403121561424557600080fd5b600080600080600080600060c0888a0312156142e457600080fd5b87356001600160401b03808211156142fb57600080fd5b6143078b838c01614233565b985060208a013591508082111561431d57600080fd5b6143298b838c0161424b565b909850965086915061433d60408b0161428f565b955061434b60608b016142ac565b945060808a013591508082111561436157600080fd5b61436d8b838c01614233565b935060a08a013591508082111561438357600080fd5b506143908a828b016142b7565b91505092959891949750929550565b600080600080600080600060c0888a0312156143ba57600080fd5b87356001600160401b03808211156143d157600080fd5b6143dd8b838c01614233565b98506143eb60208b0161428f565b97506143f960408b016142ac565b965060608a013591508082111561440f57600080fd5b61441b8b838c0161424b565b909650945060808a013591508082111561436157600080fd5b6001600160a01b0381168114610cd357600080fd5b60006020828403121561445b57600080fd5b813561376181614434565b60008083601f84011261447857600080fd5b5081356001600160401b0381111561448f57600080fd5b60208301915083602082850101111561384d57600080fd5b60008060008060008060008060a0898b0312156144c357600080fd5b88356001600160401b03808211156144da57600080fd5b6144e68c838d01614466565b909a5098508891506144fa60208c0161428f565b975060408b0135915061450c8261429e565b90955060608a0135908082111561452257600080fd5b61452e8c838d0161424b565b909650945060808b013591508082111561454757600080fd5b506145548b828c01614466565b999c989b5096995094979396929594505050565b6000806040838503121561457b57600080fd5b823561458681614434565b946020939093013593505050565b60005b838110156145af578181015183820152602001614597565b83811115612d625750506000910152565b600081518084526145d8816020860160208601614594565b601f01601f19169290920160200192915050565b634e487b7160e01b600052602160045260246000fd5b60038110614612576146126145ec565b9052565b600081518084526020808501808196508360051b8101915082860160005b8581101561465e57828403895261464c8483516145c0565b98850198935090840190600101614634565b5091979650505050505050565b602081526000825160e060208401526146886101008401826145c0565b9050602084015161469c6040850182614602565b506040840151151560608401526060840151601f19808584030160808601526146c58383614616565b925060808601519150808584030160a08601526146e283836145c0565b925060a086015160c086015260c08601519150808584030160e08601525061470a82826145c0565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561475157614751614713565b604052919050565b60006001600160401b0382111561477257614772614713565b50601f01601f191660200190565b600061479361478e84614759565b614729565b90508281528383830111156147a757600080fd5b828260208301376000602084830101529392505050565b600080604083850312156147d157600080fd5b82356147dc81614434565b915060208301356001600160401b038111156147f757600080fd5b8301601f8101851361480857600080fd5b61481785823560208401614780565b9150509250929050565b60008060006040848603121561483657600080fd5b83356001600160401b0381111561484c57600080fd5b61485886828701614466565b909450925050602084013561486c81614434565b809150509250925092565b600060e0828403121561424557600080fd5b6000806040838503121561489c57600080fd5b82356001600160401b03808211156148b357600080fd5b6148bf86838701614877565b935060208501359150808211156148d557600080fd5b50614817858286016142b7565b60208152600061376160208301846145c0565b600082601f83011261490657600080fd5b61376183833560208501614780565b6000806040838503121561492857600080fd5b82356001600160401b0381111561493e57600080fd5b61494a858286016148f5565b925050602083013561495b81614434565b809150509250929050565b60006020828403121561497857600080fd5b5035919050565b60008060006040848603121561499457600080fd5b8335925060208401356001600160401b038111156149b157600080fd5b6149bd86828701614466565b9497909650939450505050565b60008060008060008060a087890312156149e357600080fd5b86356001600160401b03808211156149fa57600080fd5b614a068a838b01614233565b97506020890135915080821115614a1c57600080fd5b908801906080828b031215614a3057600080fd5b909550604088013594506060880135935060808801359080821115614a5457600080fd5b50614a6189828a01614466565b979a9699509497509295939492505050565b60008060208385031215614a8657600080fd5b82356001600160401b03811115614a9c57600080fd5b614aa885828601614466565b90969095509350505050565b60008060008060608587031215614aca57600080fd5b84356001600160401b0380821115614ae157600080fd5b614aed88838901614877565b95506020870135915080821115614b0357600080fd5b614b0f88838901614466565b90955093506040870135915080821115614b2857600080fd5b50614b35878288016142b7565b91505092959194509250565b80356001600160401b03811681146136c957600080fd5b60008060008060608587031215614b6e57600080fd5b8435935060208501356001600160401b03811115614b8b57600080fd5b614b9787828801614466565b9094509250614baa905060408601614b41565b905092959194509250565b600080600060608486031215614bca57600080fd5b8335614bd581614434565b92506020840135915060408401356001600160401b03811115614bf757600080fd5b614c03868287016142b7565b9150509250925092565b6000808335601e19843603018112614c2457600080fd5b8301803591506001600160401b03821115614c3e57600080fd5b60200191503681900382131561384d57600080fd5b634e487b7160e01b600052603260045260246000fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b604081526000614ca6604083018587614c69565b9050826020830152949350505050565b6000614cc461478e84614759565b9050828152838383011115614cd857600080fd5b613761836020830184614594565b600082601f830112614cf757600080fd5b61376183835160208501614cb6565b600060208284031215614d1857600080fd5b81516001600160401b03811115614d2e57600080fd5b612f2184828501614ce6565b600a8110614612576146126145ec565b6000808335601e19843603018112614d6157600080fd5b83016020810192503590506001600160401b03811115614d8057600080fd5b80360382131561384d57600080fd5b614d99818b614d3a565b60006020614da98184018c614602565b60c06040840152614dbe60c084018a8c614c69565b8381036060850152878152818101600589901b820183018a60005b8b811015614e1357848303601f19018452614df4828e614d4a565b614dff858284614c69565b958801959450505090850190600101614dd9565b50508581036080870152614e2881898b614c69565b9450505050508260a08301529a9950505050505050505050565b6000808335601e19843603018112614e5957600080fd5b83016020810192503590506001600160401b03811115614e7857600080fd5b8060051b360382131561384d57600080fd5b60008235603e19833603018112614ea057600080fd5b90910192915050565b6000606080835260a0808401614ebf8889614e42565b60408786018190529281905260059260c08089019083861b8a01018460005b8581101561501f578b830360bf19018452813536889003607e19018112614f0457600080fd5b87016080848101614f158380614e42565b928752908290528b860191808c1b87018d0191908160005b82811015614f9d57898503609f19018652614f488285614e8a565b614f528182614d4a565b8e8852614f628f89018284614c69565b9150506020614f7381840184614d4a565b9350888303828a0152614f87838583614c69565b9982019998505093909301925050600101614f2d565b5050505060209150614fb182840184614d4a565b87830384890152614fc3838284614c69565b92505050614fd388840184614d4a565b8783038a890152614fe5838284614c69565b92505050614ff58d840184614d4a565b93508682038e880152615009828583614c69565b9783019796505050929092019150600101614ede565b505060208d013560808b015289810360208b015261503d818d6145c0565b975050508786038189015250505050506140ab81856145c0565b8481528360208201526060604082015260006140ab606083018486614c69565b81835260006020808501808196508560051b810191508460005b8781101561465e5782840389526150a88288614d4a565b6150b3868284614c69565b9a87019a9550505090840190600101615091565b6150d1818b614602565b60c0602082015260006150e860c083018a8c615077565b886040840152828103606084015261510181888a614c69565b905085608084015282810360a084015261511c818587614c69565b9c9b505050505050505050505050565b60006020828403121561513e57600080fd5b81516001600160401b0381111561515457600080fd5b8201601f8101841361516557600080fd5b612f2184825160208401614cb6565b60c08152600061518760c083018b6145c0565b615194602084018b614602565b881515604084015282810360608401526151af81888a615077565b905082810360808401526151c4818688614c69565b9150508260a08301529998505050505050505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b61527c8189614602565b60806020820152600061529360808301888a615077565b82810360408401526152a6818789614c69565b905082810360608401526152bb818587614c69565b9a9950505050505050505050565b6001600160e01b03198316815281516000906152ec816004850160208701614594565b919091016004019392505050565b60a08152600061530d60a083018a6145c0565b61531a602084018a614602565b87151560408401528281036060840152615335818789615077565b905082810360808401526152bb818587614c69565b600181811c9082168061535e57607f821691505b60208210810361424557634e487b7160e01b600052602260045260246000fd5b60008235603e1983360301811261539457600080fd5b9190910192915050565b60006153aa8283614d4a565b604085526153bc604086018284614c69565b915050602083013560208501528091505092915050565b6001600160401b03806153e583614b41565b168352806153f560208401614b41565b166020840152505050565b6020815260006154108384614e8a565b60e0602084015261542561010084018261539e565b90506154346020850185614e8a565b601f198085840301604086015261544b838361539e565b925061545960408701614b41565b91506001600160401b0380831660608701526154786060880188614d4a565b93508287860301608088015261548f858583614c69565b9450506154a260a08701608089016153d3565b806154af60c08901614b41565b1660e08701525050508091505092915050565b6000602082840312156154d457600080fd5b5051919050565b6000602082840312156154ed57600080fd5b61376182614b41565b6001600160401b038481168252608082019061551560208401866153d3565b808416606084015250949350505050565b60006001600160401b0380831681851680830382111561555657634e487b7160e01b600052601160045260246000fd5b01949350505050565b600061556b8283614e8a565b60e0845261557c60e085018261539e565b905061558b6020840184614e8a565b848203602086015261559d828261539e565b9150506155ac60408401614b41565b6001600160401b0380821660408701526155c96060860186614d4a565b925086840360608801526155de848483614c69565b9350506155f160808701608087016153d3565b806155fe60c08701614b41565b1660c087015250508091505092915050565b602081526000613761602083018461555f565b60006020828403121561563557600080fd5b81516001600160401b038082111561564c57600080fd5b908301906040828603121561566057600080fd5b60405160408101818110838211171561567b5761567b614713565b60405282516156898161429e565b815260208301518281111561569d57600080fd5b6156a987828601614ce6565b60208301525095945050505050565b8051151582526000602082015160406020850152612f2160408501826145c0565b6001600160401b0383168152604060208201526000612f2160408301846156b8565b601f8211156115ce57600081815260208120601f850160051c810160208610156157225750805b601f850160051c820191505b818110156136485782815560010161572e565b81516001600160401b0381111561575a5761575a614713565b61576e81615768845461534a565b846156fb565b602080601f8311600181146157a3576000841561578b5750858301515b600019600386901b1c1916600185901b178555613648565b600085815260208120601f198616915b828110156157d2578886015182559484019460019091019084016157b3565b50858210156157f05787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b83815260606020820152600061581960608301856145c0565b9050826040830152949350505050565b60008060006060848603121561583e57600080fd5b8351925060208401519150604084015161486c8161429e565b60008383855260208086019550808560051b8301018460005b878110156158aa57848303601f1901895261588b8288614d4a565b615896858284614c69565b9a86019a9450505090830190600101615870565b5090979650505050505050565b6080815260006158c78687614e42565b606060808501526158dc60e085018284615857565b915050602087013560a08401526001600160401b036158fd60408901614b41565b1660c084015282810360208401526159158687614e42565b60808352615927608084018284615857565b9150506159376020880188614e42565b838303602085015261594a838284615857565b925050506040870135604083015260608701356060830152809250505083604083015282606083015295945050505050565b6000806040838503121561598f57600080fd5b82519150602083015161495b8161429e565b6001600160401b038311156159b8576159b8614713565b6159cc836159c6835461534a565b836156fb565b6000601f841160018114615a0057600085156159e85750838201355b600019600387901b1c1916600186901b178355615a5a565b600083815260209020601f19861690835b82811015615a315786850135825560209485019460019092019101615a11565b5086821015615a4e5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b602081526000612f21602083018486614c69565b604081526000615a88604083018561555f565b828103602084015261470a81856156b8565b8183823760009101908152919050565b606081526000615abe606083018688614c69565b6001600160401b039485166020840152929093166040909101529392505050565b604081526000615af260408301856145c0565b90508260208301529392505050565b615b0b8188614d3a565b60006020615b1b81840189614602565b60c06040840152615b2f60c08401886145c0565b8381036060850152865180825282820190600581901b83018401848a0160005b83811015615b7d57601f19868403018552615b6b8383516145c0565b94870194925090860190600101615b4f565b50508681036080880152615b91818a6145c0565b955050505050508260a0830152979650505050505050565b60008251615394818460208701614594565b60008085851115615bcb57600080fd5b83861115615bd857600080fd5b5050820193919092039150565b600060208284031215615bf757600080fd5b815161376181614434565b600082615c1f57634e487b7160e01b600052601260045260246000fd5b500490565b60006001600160401b0380841115615c3e57615c3e614713565b8360051b6020615c4f818301614729565b868152918501918181019036841115615c6757600080fd5b865b84811015615c9b57803586811115615c815760008081fd5b615c8d36828b016148f5565b845250918301918301615c69565b50979650505050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b82cb4ba61dc36b471674117e46d804e4091dd590c0668c77ef65ad9b24ead2e64736f6c634300080f0033"; + "0x60a0604052306080523480156200001557600080fd5b506001606555620000256200002b565b620000ec565b600054610100900460ff1615620000985760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000ea576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b608051615d6f6200012460003960008181610bf801528181610c41015281816114420152818161148201526115150152615d6f6000f3fe60806040526004361061019c5760003560e01c80636b67055e116100ec578063940265cb1161008a578063c00fa7c011610064578063c00fa7c0146104dc578063c3e1155c146104fc578063f2fde38b14610534578063f90b8e961461055457600080fd5b8063940265cb146104675780639f59ae711461049c578063ba5a4d25146104bc57600080fd5b80637ab4339d116100c65780637ab4339d146103cc57806381bc079b146103ec5780638da5cb5b1461040c5780638dd34bb41461042a57600080fd5b80636b67055e14610375578063715018a6146103955780637774a6d3146103aa57600080fd5b8063429446b61161015957806352d1902d1161013357806352d1902d146102f2578063556d5178146103155780635d7adf96146103355780636050b5f31461035557600080fd5b8063429446b614610287578063478222c2146102a75780634f1ef286146102df57600080fd5b80631eb9fc86146101a15780632494546b146101c35780632bf5d19d146101fa5780633659cfe61461021a578063418925b71461023a57806342852d241461025a575b600080fd5b3480156101ad57600080fd5b506101c16101bc3660046142c9565b610574565b005b3480156101cf57600080fd5b506097546101e09063ffffffff1681565b60405163ffffffff90911681526020015b60405180910390f35b34801561020657600080fd5b506101c161021536600461439f565b6108fe565b34801561022657600080fd5b506101c1610235366004614449565b610bee565b34801561024657600080fd5b506101c16102553660046144a7565b610cd6565b34801561026657600080fd5b5061027a610275366004614568565b610e36565b6040516101f1919061466b565b34801561029357600080fd5b506101c16102a23660046142c9565b61118e565b3480156102b357600080fd5b5060a2546102c7906001600160a01b031681565b6040516001600160a01b0390911681526020016101f1565b6101c16102ed3660046147be565b611438565b3480156102fe57600080fd5b50610307611508565b6040519081526020016101f1565b34801561032157600080fd5b506101c1610330366004614821565b6115bb565b34801561034157600080fd5b506101c1610350366004614889565b6115d3565b34801561036157600080fd5b506101c1610370366004614889565b6118e2565b34801561038157600080fd5b506101c1610390366004614889565b6118f4565b3480156103a157600080fd5b506101c1611fe2565b3480156103b657600080fd5b506103bf611ff6565b6040516101f191906148e2565b3480156103d857600080fd5b506101c16103e7366004614915565b612084565b3480156103f857600080fd5b506101c1610407366004614966565b612204565b34801561041857600080fd5b506033546001600160a01b03166102c7565b34801561043657600080fd5b5061044a61044536600461497f565b612652565b6040805193845260208401929092521515908201526060016101f1565b34801561047357600080fd5b506104876104823660046149ca565b612713565b604080519283529015156020830152016101f1565b3480156104a857600080fd5b506101c16104b7366004614a73565b6127d7565b3480156104c857600080fd5b506101c16104d7366004614ab4565b61282c565b3480156104e857600080fd5b506101c16104f7366004614a73565b612d68565b34801561050857600080fd5b5061051c610517366004614b58565b612da3565b6040516001600160401b0390911681526020016101f1565b34801561054057600080fd5b506101c161054f366004614449565b612f29565b34801561056057600080fd5b506101c161056f366004614bb5565b612f9f565b61057c6135b4565b600285101561059e5760405163af0ba14d60e01b815260040160405180910390fd5b6105c46105ab8880614c0d565b60208a01356105ba8680614c0d565b876020013561360d565b610626868660008181106105da576105da614c53565b90506020028101906105ec9190614c0d565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061365092505050565b6001600160a01b031663cb535ab58273__$d825222459c46c14afb2efe0967c30e98d$__634f9b0fb36106598c80614c0d565b8d602001356040518463ffffffff1660e01b815260040161067c93929190614c92565b600060405180830381865af4158015610699573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106c19190810190614d06565b73__$d825222459c46c14afb2efe0967c30e98d$__6325e0dd0e60078a8e80604001906106ee9190614c0d565b8f8f6106fa8e80614c0d565b8f602001356040518a63ffffffff1660e01b815260040161072399989796959493929190614d8f565b600060405180830381865af4158015610740573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107689190810190614d06565b6040518463ffffffff1660e01b815260040161078693929190614ea9565b600060405180830381600087803b1580156107a057600080fd5b505af11580156107b4573d6000803e3d6000fd5b50600092506107cf91506107ca90508980614c0d565b6136ce565b9050600080610841836301d08fc560e71b6020808e0135908901356107f760408b018b614c0d565b60405160240161080a9493929190615057565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613768565b9150915081156108a65761085a838b8b8b8b8b8b613854565b826001600160a01b03167fcf8be9ab2b5edf8beb2c45abe8e0cc7646318ac19f6c3164ba2e19e93a8a32af8b6020013560405161089991815260200190565b60405180910390a26108e8565b826001600160a01b03167f971a4433f5bff5f011728a4123aeeca4b5275ac20b013cf276e65510491ac26f826040516108df91906148e2565b60405180910390a25b5050506108f56001606555565b50505050505050565b6109066135b4565b60028310156109285760405163af0ba14d60e01b815260040160405180910390fd5b6109356105ab8880614c0d565b61094b848460008181106105da576105da614c53565b6001600160a01b031663cb535ab58273__$d825222459c46c14afb2efe0967c30e98d$__634f9b0fb361097e8c80614c0d565b8d602001356040518463ffffffff1660e01b81526004016109a193929190614c92565b600060405180830381865af41580156109be573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109e69190810190614d06565b73__$d825222459c46c14afb2efe0967c30e98d$__6325e0dd0e60068c8e8060400190610a139190614c0d565b8d8d610a1f8e80614c0d565b8f602001356040518a63ffffffff1660e01b8152600401610a4899989796959493929190614d8f565b600060405180830381865af4158015610a65573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a8d9190810190614d06565b6040518463ffffffff1660e01b8152600401610aab93929190614ea9565b600060405180830381600087803b158015610ac557600080fd5b505af1158015610ad9573d6000803e3d6000fd5b5060009250610aef91506107ca90508980614c0d565b9050600080610b4583634bdb559760e01b8b8a8a8f602001358b8060000190610b189190614c0d565b8d602001358e8060400190610b2d9190614c0d565b60405160240161080a999897969594939291906150c7565b915091508115610bb557826001600160a01b03167ff910705a7a768eb5958f281a5f84cae8bffc5dd811ca5cd303dda140a423698c82806020019051810190610b8e919061512c565b8b8b8b8b610b9c8c80614c0d565b8d60200135604051610899989796959493929190615174565b826001600160a01b03167f9e2fe55a3b54b57f82334c273f8d048cd7f05ad19c16cf334276a8c1fec4b6fd826040516108df91906148e2565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610c3f5760405162461bcd60e51b8152600401610c36906151da565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610c88600080516020615cf3833981519152546001600160a01b031690565b6001600160a01b031614610cae5760405162461bcd60e51b8152600401610c3690615226565b610cb781613aec565b60408051600080825260208201909252610cd391839190613af4565b50565b610cde6135b4565b6002831080610ceb575080155b15610d0957604051637d6ba8a560e01b815260040160405180910390fd5b600086858585858d8d604051602001610d289796959493929190615272565b6040516020818303038152906040529050600080610d6e33637a9ccc4b60e01b85604051602001610d5a9291906152c9565b604051602081830303815290604052613768565b915091508115610ddd57336001600160a01b03167f20fd8a5856711b18d00def4aa6abafbe00ce6d60795e015cc1cad35eb9b4635982806020019051810190610db7919061512c565b8b8b8b8b8b8b604051610dd097969594939291906152fa565b60405180910390a2610e1f565b336001600160a01b03167f69c1283cce89382f0f9ddf19b7c4f05b4d9b3c30c84fc148b1ec800284be58d582604051610e1691906148e2565b60405180910390a25b505050610e2c6001606555565b5050505050505050565b610e7c6040805160e08101909152606081526020810160008152602001600015158152602001606081526020016060815260200160008019168152602001606081525090565b6001600160a01b038316600090815260986020908152604080832085845290915290819020815160e08101909252805482908290610eb99061534a565b80601f0160208091040260200160405190810160405280929190818152602001828054610ee59061534a565b8015610f325780601f10610f0757610100808354040283529160200191610f32565b820191906000526020600020905b815481529060010190602001808311610f1557829003601f168201915b5050509183525050600182015460209091019060ff166002811115610f5957610f596145ec565b6002811115610f6a57610f6a6145ec565b81526001820154610100900460ff161515602080830191909152600283018054604080518285028101850182528281529401939260009084015b82821015611050578382906000526020600020018054610fc39061534a565b80601f0160208091040260200160405190810160405280929190818152602001828054610fef9061534a565b801561103c5780601f106110115761010080835404028352916020019161103c565b820191906000526020600020905b81548152906001019060200180831161101f57829003601f168201915b505050505081526020019060010190610fa4565b5050505081526020016003820180546110689061534a565b80601f01602080910402602001604051908101604052809291908181526020018280546110949061534a565b80156110e15780601f106110b6576101008083540402835291602001916110e1565b820191906000526020600020905b8154815290600101906020018083116110c457829003601f168201915b50505050508152602001600482015481526020016005820180546111049061534a565b80601f01602080910402602001604051908101604052809291908181526020018280546111309061534a565b801561117d5780601f106111525761010080835404028352916020019161117d565b820191906000526020600020905b81548152906001019060200180831161116057829003601f168201915b505050505081525050905092915050565b6111966135b4565b60028510156111b85760405163af0ba14d60e01b815260040160405180910390fd5b6111c56105ab8880614c0d565b6111db868660008181106105da576105da614c53565b6001600160a01b031663cb535ab58273__$d825222459c46c14afb2efe0967c30e98d$__634f9b0fb361120e8c80614c0d565b8d602001356040518463ffffffff1660e01b815260040161123193929190614c92565b600060405180830381865af415801561124e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112769190810190614d06565b73__$d825222459c46c14afb2efe0967c30e98d$__6325e0dd0e60088a8e80604001906112a39190614c0d565b8f8f6112af8e80614c0d565b8f602001356040518a63ffffffff1660e01b81526004016112d899989796959493929190614d8f565b600060405180830381865af41580156112f5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261131d9190810190614d06565b6040518463ffffffff1660e01b815260040161133b93929190614ea9565b600060405180830381600087803b15801561135557600080fd5b505af1158015611369573d6000803e3d6000fd5b506000925061137f91506107ca90508980614c0d565b90506000806113a78363fad28a2460e01b8c6020013560405160240161080a91815260200190565b9150915081156113ff576113c0838b8b8b8b8b8b613854565b826001600160a01b03167fe80f571f70f7cabf9d7ac60ece08421be374117776c311c327a083ca398f802f8b6020013560405161089991815260200190565b826001600160a01b03167ff6a58ef30f66943749e8c29c661c84da143a1c8ed017f5faa92b509e0000875a826040516108df91906148e2565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036114805760405162461bcd60e51b8152600401610c36906151da565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114c9600080516020615cf3833981519152546001600160a01b031690565b6001600160a01b0316146114ef5760405162461bcd60e51b8152600401610c3690615226565b6114f882613aec565b61150482826001613af4565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146115a85760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610c36565b50600080516020615cf383398151915290565b6115c3613c5f565b6115ce838383613cb9565b505050565b6115db6135b4565b6115f46115eb602084018461537e565b60200135613d53565b6001600160a01b031663cb535ab58273__$d825222459c46c14afb2efe0967c30e98d$__634b5728d1866040518263ffffffff1660e01b815260040161163a9190615400565b600060405180830381865af4158015611657573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261167f9190810190614d06565b604051637e4794ed60e11b815273__$d825222459c46c14afb2efe0967c30e98d$__9063fc8f29da906116b6908990600401615400565b602060405180830381865af41580156116d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f791906154c2565b60405160200161170991815260200190565b6040516020818303038152906040526040518463ffffffff1660e01b815260040161173693929190614ea9565b600060405180830381600087803b15801561175057600080fd5b505af1158015611764573d6000803e3d6000fd5b50505050600061178783806020019061177d919061537e565b6107ca9080614c0d565b6001600160a01b0381166000908152609d60209081526040822092935090919082906117b59087018761537e565b60200135815260200190815260200160002060008560400160208101906117dc91906154db565b6001600160401b0316815260208101919091526040016000205460ff169050801561181a5760405163066c745760e01b815260040160405180910390fd5b61184261182d60e0860160c087016154db565b61183d60c0870160a088016154db565b613e1d565b61185f576040516312c9cc9f60e01b815260040160405180910390fd5b61186c602085018561537e565b602001356001600160a01b0383167fedbcd9eeb09d85c3ea1b5bf002c04478059cb261cab82c903885cefccae374bc6118ab60608801604089016154db565b608088016118bf60e08a0160c08b016154db565b6040516118ce939291906154f6565b60405180910390a350506115046001606555565b6118ea6135b4565b6115046001606555565b6118fc6135b4565b61190c6115eb602084018461537e565b6001600160a01b031663cb535ab58273__$d825222459c46c14afb2efe0967c30e98d$__634b5728d1866040518263ffffffff1660e01b81526004016119529190615400565b600060405180830381865af415801561196f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119979190810190614d06565b604051637e4794ed60e11b815273__$d825222459c46c14afb2efe0967c30e98d$__9063fc8f29da906119ce908990600401615400565b602060405180830381865af41580156119eb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a0f91906154c2565b604051602001611a2191815260200190565b6040516020818303038152906040526040518463ffffffff1660e01b8152600401611a4e93929190614ea9565b600060405180830381600087803b158015611a6857600080fd5b505af1158015611a7c573d6000803e3d6000fd5b505050506000611a9583806020019061177d919061537e565b6001600160a01b0381166000908152609d6020908152604082209293509091908290611ac39087018761537e565b6020013581526020019081526020016000206000856040016020810190611aea91906154db565b6001600160401b0316815260208101919091526040016000205460ff1690508015611b285760405163066c745760e01b815260040160405180910390fd5b6001600160a01b0382166000908152609d6020908152604082206001929091611b539088018861537e565b6020013581526020019081526020016000206000866040016020810190611b7a91906154db565b6001600160401b031681526020810191909152604001600020805460ff191691151591909117905560026001600160a01b038316600090815260986020908152604082209190611bcc9088018861537e565b60209081013582528101919091526040016000206001015460ff166002811115611bf857611bf86145ec565b03611cf7576001600160a01b0382166000908152609a6020908152604082209190611c259087018761537e565b60209081013582528101919091526040908101600020546001600160401b031690611c5690606087019087016154db565b6001600160401b031614611c7d5760405163362a414d60e01b815260040160405180910390fd5b611c8d60608501604086016154db565b611c98906001615526565b6001600160a01b0383166000908152609a6020908152604082209190611cc09088018861537e565b60200135815260200190815260200160002060006101000a8154816001600160401b0302191690836001600160401b031602179055505b611d04602085018561537e565b602001356001600160a01b0383167fde5b57e6566d68a30b0979431df3d5df6db3b9aa89f8820f595b9315bf86d067611d4360608801604089016154db565b6040516001600160401b03909116815260200160405180910390a3611d7161182d60e0860160c087016154db565b15611df457611d83602085018561537e565b602001356001600160a01b0383167fedbcd9eeb09d85c3ea1b5bf002c04478059cb261cab82c903885cefccae374bc611dc260608801604089016154db565b60808801611dd660e08a0160c08b016154db565b604051611de5939291906154f6565b60405180910390a350506118ea565b604080518082019091526000815260606020820152600080611e2985634dcc0aa660e01b8960405160240161080a9190615610565b915091508115611e4e5780806020019051810190611e479190615623565b9250611e66565b60408051808201909152600081526020810182905292505b6001600160a01b0385166000908152609e602090815260408220908290611e8f908b018b61537e565b6020013581526020019081526020016000206000896040016020810190611eb691906154db565b6001600160401b0316815260208101919091526040016000205460ff1690508015611ef457604051637aa549d360e01b815260040160405180910390fd5b6001600160a01b0386166000908152609e6020908152604082206001929091611f1f908c018c61537e565b60200135815260200190815260200160002060008a6040016020810190611f4691906154db565b6001600160401b03168152602080820192909252604001600020805460ff191692151592909217909155611f7c9089018961537e565b602001356001600160a01b0387167fa32e6f42b1d63fb83ad73b009a6dbb9413d1da02e95b1bb08f081815eea8db20611fbb60608c0160408d016154db565b87604051611fca9291906156d9565b60405180910390a35050505050506115046001606555565b611fea613c5f565b611ff46000613e6b565b565b609680546120039061534a565b80601f016020809104026020016040519081016040528092919081815260200182805461202f9061534a565b801561207c5780601f106120515761010080835404028352916020019161207c565b820191906000526020600020905b81548152906001019060200180831161205f57829003601f168201915b505050505081565b600054600290610100900460ff161580156120a6575060005460ff8083169116105b6121095760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610c36565b6000805461ffff191660ff8316176101001790556121256135b4565b82516000036121475760405163e8cf362360e01b815260040160405180910390fd5b6001600160a01b03821661216e5760405163cbdd34cf60e01b815260040160405180910390fd5b612176613ebd565b60966121828482615741565b5082516097805463ffffffff191663ffffffff90921691909117905560a280546001600160a01b0319166001600160a01b03841617905560016065556000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b61220c6135b4565b336000908152609860209081526040808320848452909152808220815160e0810190925280548290829061223f9061534a565b80601f016020809104026020016040519081016040528092919081815260200182805461226b9061534a565b80156122b85780601f1061228d576101008083540402835291602001916122b8565b820191906000526020600020905b81548152906001019060200180831161229b57829003601f168201915b5050509183525050600182015460209091019060ff1660028111156122df576122df6145ec565b60028111156122f0576122f06145ec565b81526001820154610100900460ff161515602080830191909152600283018054604080518285028101850182528281529401939260009084015b828210156123d65783829060005260206000200180546123499061534a565b80601f01602080910402602001604051908101604052809291908181526020018280546123759061534a565b80156123c25780601f10612397576101008083540402835291602001916123c2565b820191906000526020600020905b8154815290600101906020018083116123a557829003601f168201915b50505050508152602001906001019061232a565b5050505081526020016003820180546123ee9061534a565b80601f016020809104026020016040519081016040528092919081815260200182805461241a9061534a565b80156124675780601f1061243c57610100808354040283529160200191612467565b820191906000526020600020905b81548152906001019060200180831161244a57829003601f168201915b505050505081526020016004820154815260200160058201805461248a9061534a565b80601f01602080910402602001604051908101604052809291908181526020018280546124b69061534a565b80156125035780601f106124d857610100808354040283529160200191612503565b820191906000526020600020905b8154815290600101906020018083116124e657829003601f168201915b5050509190925250505060a081015190915061253257604051631109bfb360e31b815260040160405180910390fd5b60008061255e33631eb7dd5e60e01b8686608001518760a0015160405160240161080a93929190615800565b33600090815260986020908152604080832089845290915281209294509092506125888282614153565b60018201805461ffff191690556125a360028301600061418d565b6125b1600383016000614153565b60048201600090556005820160006125c99190614153565b5050811561260357604051849033907f21372e37743553ba8e5f61239803174a827c7732d53ec8adcb76c6b3bb2c13f190600090a3612645565b336001600160a01b03167fb1be59c1bcd39c54c7132a8e0d321af5db427575ddb3265560d8862804f4381b8260405161263c91906148e2565b60405180910390a25b505050610cd36001606555565b600080600061269685858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061365092505050565b6001600160a01b03166344c9af28876040518263ffffffff1660e01b81526004016126c391815260200190565b606060405180830381865afa1580156126e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127049190615829565b92509250925093509350939050565b60008061275584848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061365092505050565b6001600160a01b0316635922f420898989896040518563ffffffff1660e01b815260040161278694939291906158b7565b60408051808303816000875af11580156127a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127c8919061597c565b91509150965096945050505050565b6127df613c5f565b60008190036128015760405163e8cf362360e01b815260040160405180910390fd5b609661280e8284836159a1565b506097805463ffffffff191663ffffffff9290921691909117905550565b6128346135b4565b600061284361177d868061537e565b90506128526115eb868061537e565b6001600160a01b031663cb535ab58373__$d825222459c46c14afb2efe0967c30e98d$__6311a7a373896040518263ffffffff1660e01b81526004016128989190615400565b600060405180830381865af41580156128b5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128dd9190810190614d06565b6040516374e9704560e01b815273__$d825222459c46c14afb2efe0967c30e98d$__906374e9704590612916908b908b90600401615a61565b602060405180830381865af4158015612933573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061295791906154c2565b60405160200161296991815260200190565b6040516020818303038152906040526040518463ffffffff1660e01b815260040161299693929190614ea9565b600060405180830381600087803b1580156129b057600080fd5b505af11580156129c4573d6000803e3d6000fd5b505050506001600160a01b0381166000908152609c60205260408120816129eb888061537e565b6020013581526020019081526020016000206000876040016020810190612a1291906154db565b6001600160401b0316815260208101919091526040016000205460ff16905080612a4f5760405163ca89746b60e01b815260040160405180910390fd5b600080612aee84637e1d42b560e01b8a73__$d825222459c46c14afb2efe0967c30e98d$__63360b8cd78c8c6040518363ffffffff1660e01b8152600401612a98929190615a61565b600060405180830381865af4158015612ab5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612add9190810190615623565b60405160240161080a929190615a75565b915091508115612d125760026001600160a01b038516600090815260986020526040812090612b1d8b8061537e565b60209081013582528101919091526040016000206001015460ff166002811115612b4957612b496145ec565b03612c3e576001600160a01b0384166000908152609b6020526040812090612b718a8061537e565b60209081013582528101919091526040908101600020546001600160401b031690612ba29060608b01908b016154db565b6001600160401b031614612bc95760405163362a414d60e01b815260040160405180910390fd5b612bd96060890160408a016154db565b612be4906001615526565b6001600160a01b0385166000908152609b6020526040812090612c078b8061537e565b60200135815260200190815260200160002060006101000a8154816001600160401b0302191690836001600160401b031602179055505b6001600160a01b0384166000908152609c6020526040812090612c618a8061537e565b6020013581526020019081526020016000206000896040016020810190612c8891906154db565b6001600160401b031681526020810191909152604001600020805460ff19169055612cb3888061537e565b602001356001600160a01b0385167fe46f6591236abe528fe47a3b281fb002524dadd3e62b1f317ed285d07273c3b1612cf260608c0160408d016154db565b6040516001600160401b03909116815260200160405180910390a3612d54565b836001600160a01b03167f625eea143c9dae6915c809da47016c22d9cd006c3ace7c345c5cbcf57d3aefbc82604051612d4b91906148e2565b60405180910390a25b50505050612d626001606555565b50505050565b612d70613c5f565b60a18282604051612d82929190615a9a565b90815260405190819003602001902080546001600160a01b03191690555050565b6000612dad6135b4565b336000908152609860209081526040808320888452909152902060040154612de857604051631109bfb360e31b815260040160405180910390fd5b42826001600160401b031611612e115760405163551ea0fb60e11b815260040160405180910390fd5b503360009081526099602090815260408083208784529091528120546001600160401b031690819003612e5757604051631e510bfb60e21b815260040160405180910390fd5b336000908152609c6020908152604080832088845282528083206001600160401b03851684529091529020805460ff19166001908117909155612e9b908290615526565b3360008181526099602090815260408083208a845290915290819020805467ffffffffffffffff19166001600160401b03949094169390931790925590518691907fb5bff96e18da044e4e34510d16df9053b9f1920f6a960732e5aaf22fe9b8013690612f0f908890889087908990615aaa565b60405180910390a3612f216001606555565b949350505050565b612f31613c5f565b6001600160a01b038116612f965760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c36565b610cd381613e6b565b612fa76135b4565b6001600160a01b038316612fce5760405163cbdd34cf60e01b815260040160405180910390fd5b6001600160a01b0383166000908152609860209081526040808320858452909152808220815160e0810190925280548290829061300a9061534a565b80601f01602080910402602001604051908101604052809291908181526020018280546130369061534a565b80156130835780601f1061305857610100808354040283529160200191613083565b820191906000526020600020905b81548152906001019060200180831161306657829003601f168201915b5050509183525050600182015460209091019060ff1660028111156130aa576130aa6145ec565b60028111156130bb576130bb6145ec565b81526001820154610100900460ff161515602080830191909152600283018054604080518285028101850182528281529401939260009084015b828210156131a15783829060005260206000200180546131149061534a565b80601f01602080910402602001604051908101604052809291908181526020018280546131409061534a565b801561318d5780601f106131625761010080835404028352916020019161318d565b820191906000526020600020905b81548152906001019060200180831161317057829003601f168201915b5050505050815260200190600101906130f5565b5050505081526020016003820180546131b99061534a565b80601f01602080910402602001604051908101604052809291908181526020018280546131e59061534a565b80156132325780601f1061320757610100808354040283529160200191613232565b820191906000526020600020905b81548152906001019060200180831161321557829003601f168201915b50505050508152602001600482015481526020016005820180546132559061534a565b80601f01602080910402602001604051908101604052809291908181526020018280546132819061534a565b80156132ce5780601f106132a3576101008083540402835291602001916132ce565b820191906000526020600020905b8154815290600101906020018083116132b157829003601f168201915b5050509190925250505060a08101519091506132fd57604051634d93b09d60e11b815260040160405180910390fd5b61330683613d53565b6001600160a01b031663cb535ab58373__$d825222459c46c14afb2efe0967c30e98d$__636f6547268560c00151886040518363ffffffff1660e01b8152600401613352929190615adf565b600060405180830381865af415801561336f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526133979190810190614d06565b602085015185516060870151608088015160a0890151604051631f621e1560e31b815273__$d825222459c46c14afb2efe0967c30e98d$__9563fb10f0a8956133ed956009959294919390929190600401615b01565b600060405180830381865af415801561340a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526134329190810190614d06565b6040518463ffffffff1660e01b815260040161345093929190614ea9565b600060405180830381600087803b15801561346a57600080fd5b505af115801561347e573d6000803e3d6000fd5b505050506000806134ae86633f9fdbe460e01b8786608001518760a0015160405160240161080a93929190615800565b6001600160a01b03881660009081526098602090815260408083208a845290915281209294509092506134e18282614153565b60018201805461ffff191690556134fc60028301600061418d565b61350a600383016000614153565b60048201600090556005820160006135229190614153565b505081156135655760405185906001600160a01b038816907f5f010dbbd6bf46aec8131c5456301a75cd688d3cca9bc8380c9e26301be2072990600090a36135a7565b856001600160a01b03167fc9d36d7a317cb116925d5cb66f0069fe825822fe23e9cf3f421c38cf444caa308260405161359e91906148e2565b60405180910390a25b5050506115ce6001606555565b6002606554036136065760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610c36565b6002606555565b841580613618575081155b80613621575083155b8061362a575080155b1561364857604051637d6ba8a560e01b815260040160405180910390fd5b505050505050565b6000815160000361367e5760405163524e171160e01b81526020600482015260006024820152604401610c36565b60a18260405161368e9190615ba9565b908152604051908190036020019020546001600160a01b03169050806136c9578160405163036c4d8760e11b8152600401610c3691906148e2565b919050565b60975460009073__$f61eb90c6f674e787d51c07f105fa231e2$__9063a1ef9a989061370390859063ffffffff168188615bbb565b6040518363ffffffff1660e01b8152600401613720929190615a61565b602060405180830381865af415801561373d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137619190615be5565b9392505050565b600060606001600160a01b0384163b6137b057505060408051808201909152601481527318d85b1b081d1bc81b9bdb8b58dbdb9d1c9858dd60621b602082015260009061384d565b60005a9050846001600160a01b0316846040516137cd9190615ba9565b6000604051808303816000865af19150503d806000811461380a576040519150601f19603f3d011682016040523d82523d6000602084013e61380f565b606091505b5090935091508215801561382d5750613829604082615c02565b5a11155b1561384b5760405163b08ede0960e01b815260040160405180910390fd5b505b9250929050565b6040518060e0016040528087806040019061386f9190614c0d565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050908252506020018460028111156138bb576138bb6145ec565b815283151560208201526040016138d28688615c24565b81526020016138e18380614c0d565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050908252506020838101359082015260400161392f8880614c0d565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509390945250506001600160a01b038a1681526098602090815260408083208b83013584529091529020825190915081906139999082615741565b50602082015160018083018054909160ff19909116908360028111156139c1576139c16145ec565b021790555060408201516001820180549115156101000261ff001990921691909117905560608201518051613a009160028401916020909101906141ab565b5060808201516003820190613a159082615741565b5060a0820151600482015560c08201516005820190613a349082615741565b5050506001600160a01b03871660008181526099602090815260408083208a8301358085529083528184208054600167ffffffffffffffff199182168117909255868652609a855283862083875285528386208054821683179055958552609b8452828520918552925282208054909316179091558590859081613aba57613aba614c53565b9050602002810190613acc9190614c0d565b602080890135600090815260a09091526040902091610e2c9190836159a1565b610cd3613c5f565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615613b27576115ce83613eec565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015613b81575060408051601f3d908101601f19168201909252613b7e918101906154c2565b60015b613be45760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610c36565b600080516020615cf38339815191528114613c535760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610c36565b506115ce838383613f88565b6033546001600160a01b03163314611ff45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c36565b6000829003613ce55760405163524e171160e01b81526020600482015260006024820152604401610c36565b6001600160a01b038116613d0c5760405163cbdd34cf60e01b815260040160405180910390fd5b8060a18484604051613d1f929190615a9a565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b0319909216919091179055505050565b600081815260a0602052604081208054829190613d6f9061534a565b80601f0160208091040260200160405190810160405280929190818152602001828054613d9b9061534a565b8015613de85780601f10613dbd57610100808354040283529160200191613de8565b820191906000526020600020905b815481529060010190602001808311613dcb57829003601f168201915b505050505090508051600003613e14576040516363b99a9d60e11b815260048101849052602401610c36565b61376181613650565b60006001600160401b03831615801590613e405750826001600160401b03164210155b8061376157506001600160401b038216158015906137615750506001600160401b0316431015919050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16613ee45760405162461bcd60e51b8152600401610c3690615ca7565b611ff4613fad565b6001600160a01b0381163b613f595760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610c36565b600080516020615cf383398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b613f9183613fdd565b600082511180613f9e5750805b156115ce57612d62838361401d565b600054610100900460ff16613fd45760405162461bcd60e51b8152600401610c3690615ca7565b611ff433613e6b565b613fe681613eec565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606137618383604051806060016040528060278152602001615d13602791396060600080856001600160a01b03168560405161405a9190615ba9565b600060405180830381855af49150503d8060008114614095576040519150601f19603f3d011682016040523d82523d6000602084013e61409a565b606091505b50915091506140ab868383876140b5565b9695505050505050565b6060831561412457825160000361411d576001600160a01b0385163b61411d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610c36565b5081612f21565b612f2183838151156141395781518083602001fd5b8060405162461bcd60e51b8152600401610c3691906148e2565b50805461415f9061534a565b6000825580601f1061416f575050565b601f016020900490600052602060002090810190610cd39190614201565b5080546000825590600052602060002090810190610cd39190614216565b8280548282559060005260206000209081019282156141f1579160200282015b828111156141f157825182906141e19082615741565b50916020019190600101906141cb565b506141fd929150614216565b5090565b5b808211156141fd5760008155600101614202565b808211156141fd57600061422a8282614153565b50600101614216565b60006060828403121561424557600080fd5b50919050565b60008083601f84011261425d57600080fd5b5081356001600160401b0381111561427457600080fd5b6020830191508360208260051b850101111561384d57600080fd5b8035600381106136c957600080fd5b8015158114610cd357600080fd5b80356136c98161429e565b60006040828403121561424557600080fd5b600080600080600080600060c0888a0312156142e457600080fd5b87356001600160401b03808211156142fb57600080fd5b6143078b838c01614233565b985060208a013591508082111561431d57600080fd5b6143298b838c0161424b565b909850965086915061433d60408b0161428f565b955061434b60608b016142ac565b945060808a013591508082111561436157600080fd5b61436d8b838c01614233565b935060a08a013591508082111561438357600080fd5b506143908a828b016142b7565b91505092959891949750929550565b600080600080600080600060c0888a0312156143ba57600080fd5b87356001600160401b03808211156143d157600080fd5b6143dd8b838c01614233565b98506143eb60208b0161428f565b97506143f960408b016142ac565b965060608a013591508082111561440f57600080fd5b61441b8b838c0161424b565b909650945060808a013591508082111561436157600080fd5b6001600160a01b0381168114610cd357600080fd5b60006020828403121561445b57600080fd5b813561376181614434565b60008083601f84011261447857600080fd5b5081356001600160401b0381111561448f57600080fd5b60208301915083602082850101111561384d57600080fd5b60008060008060008060008060a0898b0312156144c357600080fd5b88356001600160401b03808211156144da57600080fd5b6144e68c838d01614466565b909a5098508891506144fa60208c0161428f565b975060408b0135915061450c8261429e565b90955060608a0135908082111561452257600080fd5b61452e8c838d0161424b565b909650945060808b013591508082111561454757600080fd5b506145548b828c01614466565b999c989b5096995094979396929594505050565b6000806040838503121561457b57600080fd5b823561458681614434565b946020939093013593505050565b60005b838110156145af578181015183820152602001614597565b83811115612d625750506000910152565b600081518084526145d8816020860160208601614594565b601f01601f19169290920160200192915050565b634e487b7160e01b600052602160045260246000fd5b60038110614612576146126145ec565b9052565b600081518084526020808501808196508360051b8101915082860160005b8581101561465e57828403895261464c8483516145c0565b98850198935090840190600101614634565b5091979650505050505050565b602081526000825160e060208401526146886101008401826145c0565b9050602084015161469c6040850182614602565b506040840151151560608401526060840151601f19808584030160808601526146c58383614616565b925060808601519150808584030160a08601526146e283836145c0565b925060a086015160c086015260c08601519150808584030160e08601525061470a82826145c0565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561475157614751614713565b604052919050565b60006001600160401b0382111561477257614772614713565b50601f01601f191660200190565b600061479361478e84614759565b614729565b90508281528383830111156147a757600080fd5b828260208301376000602084830101529392505050565b600080604083850312156147d157600080fd5b82356147dc81614434565b915060208301356001600160401b038111156147f757600080fd5b8301601f8101851361480857600080fd5b61481785823560208401614780565b9150509250929050565b60008060006040848603121561483657600080fd5b83356001600160401b0381111561484c57600080fd5b61485886828701614466565b909450925050602084013561486c81614434565b809150509250925092565b600060e0828403121561424557600080fd5b6000806040838503121561489c57600080fd5b82356001600160401b03808211156148b357600080fd5b6148bf86838701614877565b935060208501359150808211156148d557600080fd5b50614817858286016142b7565b60208152600061376160208301846145c0565b600082601f83011261490657600080fd5b61376183833560208501614780565b6000806040838503121561492857600080fd5b82356001600160401b0381111561493e57600080fd5b61494a858286016148f5565b925050602083013561495b81614434565b809150509250929050565b60006020828403121561497857600080fd5b5035919050565b60008060006040848603121561499457600080fd5b8335925060208401356001600160401b038111156149b157600080fd5b6149bd86828701614466565b9497909650939450505050565b60008060008060008060a087890312156149e357600080fd5b86356001600160401b03808211156149fa57600080fd5b614a068a838b01614233565b97506020890135915080821115614a1c57600080fd5b908801906080828b031215614a3057600080fd5b909550604088013594506060880135935060808801359080821115614a5457600080fd5b50614a6189828a01614466565b979a9699509497509295939492505050565b60008060208385031215614a8657600080fd5b82356001600160401b03811115614a9c57600080fd5b614aa885828601614466565b90969095509350505050565b60008060008060608587031215614aca57600080fd5b84356001600160401b0380821115614ae157600080fd5b614aed88838901614877565b95506020870135915080821115614b0357600080fd5b614b0f88838901614466565b90955093506040870135915080821115614b2857600080fd5b50614b35878288016142b7565b91505092959194509250565b80356001600160401b03811681146136c957600080fd5b60008060008060608587031215614b6e57600080fd5b8435935060208501356001600160401b03811115614b8b57600080fd5b614b9787828801614466565b9094509250614baa905060408601614b41565b905092959194509250565b600080600060608486031215614bca57600080fd5b8335614bd581614434565b92506020840135915060408401356001600160401b03811115614bf757600080fd5b614c03868287016142b7565b9150509250925092565b6000808335601e19843603018112614c2457600080fd5b8301803591506001600160401b03821115614c3e57600080fd5b60200191503681900382131561384d57600080fd5b634e487b7160e01b600052603260045260246000fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b604081526000614ca6604083018587614c69565b9050826020830152949350505050565b6000614cc461478e84614759565b9050828152838383011115614cd857600080fd5b613761836020830184614594565b600082601f830112614cf757600080fd5b61376183835160208501614cb6565b600060208284031215614d1857600080fd5b81516001600160401b03811115614d2e57600080fd5b612f2184828501614ce6565b600a8110614612576146126145ec565b6000808335601e19843603018112614d6157600080fd5b83016020810192503590506001600160401b03811115614d8057600080fd5b80360382131561384d57600080fd5b614d99818b614d3a565b60006020614da98184018c614602565b60c06040840152614dbe60c084018a8c614c69565b8381036060850152878152818101600589901b820183018a60005b8b811015614e1357848303601f19018452614df4828e614d4a565b614dff858284614c69565b958801959450505090850190600101614dd9565b50508581036080870152614e2881898b614c69565b9450505050508260a08301529a9950505050505050505050565b6000808335601e19843603018112614e5957600080fd5b83016020810192503590506001600160401b03811115614e7857600080fd5b8060051b360382131561384d57600080fd5b60008235603e19833603018112614ea057600080fd5b90910192915050565b6000606080835260a0808401614ebf8889614e42565b60408786018190529281905260059260c08089019083861b8a01018460005b8581101561501f578b830360bf19018452813536889003607e19018112614f0457600080fd5b87016080848101614f158380614e42565b928752908290528b860191808c1b87018d0191908160005b82811015614f9d57898503609f19018652614f488285614e8a565b614f528182614d4a565b8e8852614f628f89018284614c69565b9150506020614f7381840184614d4a565b9350888303828a0152614f87838583614c69565b9982019998505093909301925050600101614f2d565b5050505060209150614fb182840184614d4a565b87830384890152614fc3838284614c69565b92505050614fd388840184614d4a565b8783038a890152614fe5838284614c69565b92505050614ff58d840184614d4a565b93508682038e880152615009828583614c69565b9783019796505050929092019150600101614ede565b505060208d013560808b015289810360208b015261503d818d6145c0565b975050508786038189015250505050506140ab81856145c0565b8481528360208201526060604082015260006140ab606083018486614c69565b81835260006020808501808196508560051b810191508460005b8781101561465e5782840389526150a88288614d4a565b6150b3868284614c69565b9a87019a9550505090840190600101615091565b6150d1818b614602565b60c0602082015260006150e860c083018a8c615077565b886040840152828103606084015261510181888a614c69565b905085608084015282810360a084015261511c818587614c69565b9c9b505050505050505050505050565b60006020828403121561513e57600080fd5b81516001600160401b0381111561515457600080fd5b8201601f8101841361516557600080fd5b612f2184825160208401614cb6565b60c08152600061518760c083018b6145c0565b615194602084018b614602565b881515604084015282810360608401526151af81888a615077565b905082810360808401526151c4818688614c69565b9150508260a08301529998505050505050505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b61527c8189614602565b60806020820152600061529360808301888a615077565b82810360408401526152a6818789614c69565b905082810360608401526152bb818587614c69565b9a9950505050505050505050565b6001600160e01b03198316815281516000906152ec816004850160208701614594565b919091016004019392505050565b60a08152600061530d60a083018a6145c0565b61531a602084018a614602565b87151560408401528281036060840152615335818789615077565b905082810360808401526152bb818587614c69565b600181811c9082168061535e57607f821691505b60208210810361424557634e487b7160e01b600052602260045260246000fd5b60008235603e1983360301811261539457600080fd5b9190910192915050565b60006153aa8283614d4a565b604085526153bc604086018284614c69565b915050602083013560208501528091505092915050565b6001600160401b03806153e583614b41565b168352806153f560208401614b41565b166020840152505050565b6020815260006154108384614e8a565b60e0602084015261542561010084018261539e565b90506154346020850185614e8a565b601f198085840301604086015261544b838361539e565b925061545960408701614b41565b91506001600160401b0380831660608701526154786060880188614d4a565b93508287860301608088015261548f858583614c69565b9450506154a260a08701608089016153d3565b806154af60c08901614b41565b1660e08701525050508091505092915050565b6000602082840312156154d457600080fd5b5051919050565b6000602082840312156154ed57600080fd5b61376182614b41565b6001600160401b038481168252608082019061551560208401866153d3565b808416606084015250949350505050565b60006001600160401b0380831681851680830382111561555657634e487b7160e01b600052601160045260246000fd5b01949350505050565b600061556b8283614e8a565b60e0845261557c60e085018261539e565b905061558b6020840184614e8a565b848203602086015261559d828261539e565b9150506155ac60408401614b41565b6001600160401b0380821660408701526155c96060860186614d4a565b925086840360608801526155de848483614c69565b9350506155f160808701608087016153d3565b806155fe60c08701614b41565b1660c087015250508091505092915050565b602081526000613761602083018461555f565b60006020828403121561563557600080fd5b81516001600160401b038082111561564c57600080fd5b908301906040828603121561566057600080fd5b60405160408101818110838211171561567b5761567b614713565b60405282516156898161429e565b815260208301518281111561569d57600080fd5b6156a987828601614ce6565b60208301525095945050505050565b8051151582526000602082015160406020850152612f2160408501826145c0565b6001600160401b0383168152604060208201526000612f2160408301846156b8565b601f8211156115ce57600081815260208120601f850160051c810160208610156157225750805b601f850160051c820191505b818110156136485782815560010161572e565b81516001600160401b0381111561575a5761575a614713565b61576e81615768845461534a565b846156fb565b602080601f8311600181146157a3576000841561578b5750858301515b600019600386901b1c1916600185901b178555613648565b600085815260208120601f198616915b828110156157d2578886015182559484019460019091019084016157b3565b50858210156157f05787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b83815260606020820152600061581960608301856145c0565b9050826040830152949350505050565b60008060006060848603121561583e57600080fd5b8351925060208401519150604084015161486c8161429e565b60008383855260208086019550808560051b8301018460005b878110156158aa57848303601f1901895261588b8288614d4a565b615896858284614c69565b9a86019a9450505090830190600101615870565b5090979650505050505050565b6080815260006158c78687614e42565b606060808501526158dc60e085018284615857565b915050602087013560a08401526001600160401b036158fd60408901614b41565b1660c084015282810360208401526159158687614e42565b60808352615927608084018284615857565b9150506159376020880188614e42565b838303602085015261594a838284615857565b925050506040870135604083015260608701356060830152809250505083604083015282606083015295945050505050565b6000806040838503121561598f57600080fd5b82519150602083015161495b8161429e565b6001600160401b038311156159b8576159b8614713565b6159cc836159c6835461534a565b836156fb565b6000601f841160018114615a0057600085156159e85750838201355b600019600387901b1c1916600186901b178355615a5a565b600083815260209020601f19861690835b82811015615a315786850135825560209485019460019092019101615a11565b5086821015615a4e5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b602081526000612f21602083018486614c69565b604081526000615a88604083018561555f565b828103602084015261470a81856156b8565b8183823760009101908152919050565b606081526000615abe606083018688614c69565b6001600160401b039485166020840152929093166040909101529392505050565b604081526000615af260408301856145c0565b90508260208301529392505050565b615b0b8188614d3a565b60006020615b1b81840189614602565b60c06040840152615b2f60c08401886145c0565b8381036060850152865180825282820190600581901b83018401848a0160005b83811015615b7d57601f19868403018552615b6b8383516145c0565b94870194925090860190600101615b4f565b50508681036080880152615b91818a6145c0565b955050505050508260a0830152979650505050505050565b60008251615394818460208701614594565b60008085851115615bcb57600080fd5b83861115615bd857600080fd5b5050820193919092039150565b600060208284031215615bf757600080fd5b815161376181614434565b600082615c1f57634e487b7160e01b600052601260045260246000fd5b500490565b60006001600160401b0380841115615c3e57615c3e614713565b8360051b6020615c4f818301614729565b868152918501918181019036841115615c6757600080fd5b865b84811015615c9b57803586811115615c815760008081fd5b615c8d36828b016148f5565b845250918301918301615c69565b50979650505050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122046a1de6eec515cb64065849fa7275b14dbe64e214f04b50b21f8374313466ab564736f6c634300080f0033"; type DispatcherConstructorParams = | [linkLibraryAddresses: DispatcherLibraryAddresses, signer?: Signer] diff --git a/src/evm/contracts/factories/Earth__factory.ts b/src/evm/contracts/factories/Earth__factory.ts index e3f20fd1..c8646a2b 100644 --- a/src/evm/contracts/factories/Earth__factory.ts +++ b/src/evm/contracts/factories/Earth__factory.ts @@ -108,19 +108,6 @@ const _abi = [ outputs: [], stateMutability: "nonpayable", }, - { - type: "function", - name: "authorizeMiddleware", - inputs: [ - { - name: "middleware", - type: "address", - internalType: "address", - }, - ], - outputs: [], - stateMutability: "nonpayable", - }, { type: "function", name: "authorizedChannelIds", @@ -140,25 +127,6 @@ const _abi = [ ], stateMutability: "view", }, - { - type: "function", - name: "authorizedMws", - inputs: [ - { - name: "", - type: "address", - internalType: "address", - }, - ], - outputs: [ - { - name: "", - type: "bool", - internalType: "bool", - }, - ], - stateMutability: "view", - }, { type: "function", name: "generateAckPacket", @@ -272,19 +240,6 @@ const _abi = [ ], stateMutability: "payable", }, - { - type: "function", - name: "mw", - inputs: [], - outputs: [ - { - name: "", - type: "address", - internalType: "address", - }, - ], - stateMutability: "view", - }, { type: "function", name: "onRecvUniversalPacket", @@ -506,19 +461,6 @@ const _abi = [ outputs: [], stateMutability: "nonpayable", }, - { - type: "function", - name: "setDefaultMw", - inputs: [ - { - name: "_middleware", - type: "address", - internalType: "address", - }, - ], - outputs: [], - stateMutability: "nonpayable", - }, { type: "function", name: "timeoutPackets", @@ -578,6 +520,32 @@ const _abi = [ outputs: [], stateMutability: "nonpayable", }, + { + type: "function", + name: "uch", + inputs: [], + outputs: [ + { + name: "", + type: "address", + internalType: "address", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "updateUch", + inputs: [ + { + name: "_newUch", + type: "address", + internalType: "address", + }, + ], + outputs: [], + stateMutability: "nonpayable", + }, { type: "event", name: "OwnershipTransferred", @@ -599,7 +567,12 @@ const _abi = [ }, { type: "error", - name: "UnauthorizedIbcMiddleware", + name: "CallerNotUCH", + inputs: [], + }, + { + type: "error", + name: "InvalidUCHAddress", inputs: [], }, { @@ -625,7 +598,7 @@ const _abi = [ ] as const; const _bytecode = - "0x608060405234801561001057600080fd5b5060405162001a0238038062001a02833981016040819052610031916100d7565b808061003c33610087565b600180546001600160a01b0319166001600160a01b03831617905561007f816001600160a01b03166000908152600260205260409020805460ff19166001179055565b505050610107565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100e957600080fd5b81516001600160a01b038116811461010057600080fd5b9392505050565b6118eb80620001176000396000f3fe60806040526004361061010c5760003560e01c80635b7615851161009557806392dfa3921161006457806392dfa3921461032b578063a742d78c1461034b578063d24ba0241461036b578063f12b758a1461038b578063f2fde38b146103ab57600080fd5b80635b76158514610297578063715018a6146102c4578063866f3f97146102d95780638da5cb5b146102f957600080fd5b80633b90b042116100dc5780633b90b042146101da578063400d9f5d146101fa5780634252ae9b1461021a5780634eeb739114610249578063588152ca1461027757600080fd5b8062e82cef146101185780632466911c1461013a5780632eed7c701461016a5780633a7fbcbd146101aa57600080fd5b3661011357005b600080fd5b34801561012457600080fd5b50610138610133366004610e95565b6103cb565b005b61014d610148366004610ff1565b6103fe565b6040516001600160401b0390911681526020015b60405180910390f35b34801561017657600080fd5b5061019a610185366004611084565b60036020526000908152604090205460ff1681565b6040519015158152602001610161565b3480156101b657600080fd5b5061019a6101c5366004610e95565b60026020526000908152604090205460ff1681565b3480156101e657600080fd5b506101386101f5366004610e95565b61049a565b34801561020657600080fd5b5061013861021536600461109d565b6104ae565b34801561022657600080fd5b5061023a610235366004611084565b61058e565b6040516101619392919061119a565b34801561025557600080fd5b50610269610264366004611084565b610732565b6040516101619291906111cf565b34801561028357600080fd5b506101386102923660046112e7565b610820565b3480156102a357600080fd5b506102b76102b236600461109d565b6109d3565b604051610161919061135a565b3480156102d057600080fd5b50610138610b59565b3480156102e557600080fd5b506102b76102f436600461136d565b610b6d565b34801561030557600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610161565b34801561033757600080fd5b50610138610346366004611084565b610bc8565b34801561035757600080fd5b50600154610313906001600160a01b031681565b34801561037757600080fd5b506101386103863660046113c6565b610bd9565b34801561039757600080fd5b506102696103a6366004611084565b610c69565b3480156103b757600080fd5b506101386103c6366004610e95565b610c79565b6103d3610cf4565b6103dc81610d4e565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001546000906001600160a01b031663462fdf8334896104248c6001600160a01b031690565b8a8a8a8a8a6040518963ffffffff1660e01b815260040161044b9796959493929190611483565b60206040518083038185885af1158015610469573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061048e91906114d0565b98975050505050505050565b6104a2610cf4565b6104ab81610d4e565b50565b3360009081526002602052604090205460ff166104de57604051630ddfd93d60e11b815260040160405180910390fd5b600082815260036020526040902054829060ff1661050f57604051630100e70560e51b815260040160405180910390fd5b600660405180604001604052808581526020018461052c906114ed565b905281546001818101845560009384526020938490208351600590930201918255838301518051918301918255938401516002830155604084015160038301556060840151929391926004840190610584908261157e565b5050505050505050565b6005818154811061059e57600080fd5b9060005260206000209060070201600091509050806000015490806001016040518060800160405290816000820154815260200160018201548152602001600282015481526020016003820180546105f5906114f9565b80601f0160208091040260200160405190810160405280929190818152602001828054610621906114f9565b801561066e5780601f106106435761010080835404028352916020019161066e565b820191906000526020600020905b81548152906001019060200180831161065157829003601f168201915b5050509190925250506040805180820190915260058401805460ff161515825260068501805494959492935090916020840191906106ab906114f9565b80601f01602080910402602001604051908101604052809291908181526020018280546106d7906114f9565b80156107245780601f106106f957610100808354040283529160200191610724565b820191906000526020600020905b81548152906001019060200180831161070757829003601f168201915b505050505081525050905083565b6006818154811061074257600080fd5b906000526020600020906005020160009150905080600001549080600101604051806080016040529081600082015481526020016001820154815260200160028201548152602001600382018054610799906114f9565b80601f01602080910402602001604051908101604052809291908181526020018280546107c5906114f9565b80156108125780601f106107e757610100808354040283529160200191610812565b820191906000526020600020905b8154815290600101906020018083116107f557829003601f168201915b505050505081525050905082565b3360009081526002602052604090205460ff1661085057604051630ddfd93d60e11b815260040160405180910390fd5b600083815260036020526040902054839060ff1661088157604051630100e70560e51b815260040160405180910390fd5b6014610890602084018461163d565b905010156108b15760405163503b43db60e01b815260040160405180910390fd5b60006108c0602084018461163d565b6108cf91601491600091611683565b6108d8916116ad565b60601c9050806001600160a01b03166108f48560400151610d72565b6001600160a01b03161461091b57604051631863a42d60e31b815260040160405180910390fd5b600560405180606001604052808781526020018681526020018561093e906116f0565b905281546001818101845560009384526020938490208351600790930201918255838301518051918301918255938401516002830155604084015160038301556060840151929391926004840190610996908261157e565b5050506040820151805160058301805460ff1916911515919091178155602082015160068401906109c7908261157e565b50505050505050505050565b6040805180820190915260008152606060208201523360009081526002602052604090205460ff16610a1857604051630ddfd93d60e11b815260040160405180910390fd5b600083815260036020526040902054839060ff16610a4957604051630100e70560e51b815260040160405180910390fd5b6004604051806040016040528086815260200185610a66906114ed565b905281546001818101845560009384526020938490208351600590930201918255838301518051918301918255938401516002830155604084015160038301556060840151929391926004840190610abe908261157e565b5050505050306001600160a01b031663866f3f9785610ae08660000135610d72565b610aed606088018861163d565b6040518563ffffffff1660e01b8152600401610b0c9493929190611748565b600060405180830381865afa158015610b29573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b519190810190611773565b949350505050565b610b61610cf4565b610b6b6000610d83565b565b604080518082019091526000815260606020820152604051806040016040528060011515815260200130868686604051602001610bad9493929190611830565b60408051601f19818403018152919052905295945050505050565b610bd0610cf4565b6104ab81610dd3565b6001546001600160a01b0316631f3a583085610bfb886001600160a01b031690565b8686866040518663ffffffff1660e01b8152600401610c1e95949392919061187a565b6020604051808303816000875af1158015610c3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6191906114d0565b505050505050565b6004818154811061074257600080fd5b610c81610cf4565b6001600160a01b038116610ceb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6104ab81610d83565b6000546001600160a01b03163314610b6b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ce2565b6001600160a01b03166000908152600260205260409020805460ff19166001179055565b6000610d7d82610e0c565b92915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80610df157604051631d6f5e8b60e01b815260040160405180910390fd5b6000908152600360205260409020805460ff19166001179055565b60006001600160a01b03821115610e755760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663630206269747360c81b6064820152608401610ce2565b5090565b80356001600160a01b0381168114610e9057600080fd5b919050565b600060208284031215610ea757600080fd5b610eb082610e79565b9392505050565b60008083601f840112610ec957600080fd5b5081356001600160401b03811115610ee057600080fd5b602083019150836020828501011115610ef857600080fd5b9250929050565b6001600160401b03811681146104ab57600080fd5b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715610f4c57610f4c610f14565b60405290565b604051601f8201601f191681016001600160401b0381118282101715610f7a57610f7a610f14565b604052919050565b600082601f830112610f9357600080fd5b604051604081018181106001600160401b0382111715610fb557610fb5610f14565b8060405250806040840185811115610fcc57600080fd5b845b81811015610fe6578035835260209283019201610fce565b509195945050505050565b6000806000806000806000610100888a03121561100d57600080fd5b61101688610e79565b96506020880135955060408801356001600160401b0381111561103857600080fd5b6110448a828b01610eb7565b909650945050606088013561105881610eff565b92506110678960808a01610f82565b91506110768960c08a01610f82565b905092959891949750929550565b60006020828403121561109657600080fd5b5035919050565b600080604083850312156110b057600080fd5b8235915060208301356001600160401b038111156110cd57600080fd5b8301608081860312156110df57600080fd5b809150509250929050565b60005b838110156111055781810151838201526020016110ed565b83811115611114576000848401525b50505050565b600081518084526111328160208601602086016110ea565b601f01601f19169290920160200192915050565b8051825260208101516020830152604081015160408301526000606082015160806060850152610b51608085018261111a565b8051151582526000602082015160406020850152610b51604085018261111a565b8381526060602082015260006111b36060830185611146565b82810360408401526111c58185611179565b9695505050505050565b828152604060208201526000610b516040830184611146565b60006001600160401b0382111561120157611201610f14565b50601f01601f191660200190565b600082601f83011261122057600080fd5b813561123361122e826111e8565b610f52565b81815284602083860101111561124857600080fd5b816020850160208301376000918101602001919091529392505050565b60006080828403121561127757600080fd5b604051608081016001600160401b03828210818311171561129a5761129a610f14565b8160405282935084358352602085013560208401526040850135604084015260608501359150808211156112cd57600080fd5b506112da8582860161120f565b6060830152505092915050565b6000806000606084860312156112fc57600080fd5b8335925060208401356001600160401b038082111561131a57600080fd5b61132687838801611265565b9350604086013591508082111561133c57600080fd5b5084016040818703121561134f57600080fd5b809150509250925092565b602081526000610eb06020830184611179565b6000806000806060858703121561138357600080fd5b8435935061139360208601610e79565b925060408501356001600160401b038111156113ae57600080fd5b6113ba87828801610eb7565b95989497509550505050565b6000806000806000608086880312156113de57600080fd5b6113e786610e79565b94506020860135935060408601356001600160401b0381111561140957600080fd5b61141588828901610eb7565b909450925050606086013561142981610eff565b809150509295509295909350565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b8060005b6002811015611114578151845260209384019390910190600101611464565b60006101008983528860208401528060408401526114a4818401888a611437565b9150506001600160401b03851660608301526114c36080830185611460565b61048e60c0830184611460565b6000602082840312156114e257600080fd5b8151610eb081610eff565b6000610d7d3683611265565b600181811c9082168061150d57607f821691505b60208210810361152d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561157957600081815260208120601f850160051c8101602086101561155a5750805b601f850160051c820191505b81811015610c6157828155600101611566565b505050565b81516001600160401b0381111561159757611597610f14565b6115ab816115a584546114f9565b84611533565b602080601f8311600181146115e057600084156115c85750858301515b600019600386901b1c1916600185901b178555610c61565b600085815260208120601f198616915b8281101561160f578886015182559484019460019091019084016115f0565b508582101561162d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000808335601e1984360301811261165457600080fd5b8301803591506001600160401b0382111561166e57600080fd5b602001915036819003821315610ef857600080fd5b6000808585111561169357600080fd5b838611156116a057600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff1981358181169160148510156116da5780818660140360031b1b83161692505b505092915050565b80151581146104ab57600080fd5b60006040823603121561170257600080fd5b61170a610f2a565b8235611715816116e2565b815260208301356001600160401b0381111561173057600080fd5b61173c3682860161120f565b60208301525092915050565b8481526001600160a01b03841660208201526060604082018190526000906111c59083018486611437565b6000602080838503121561178657600080fd5b82516001600160401b038082111561179d57600080fd5b90840190604082870312156117b157600080fd5b6117b9610f2a565b82516117c4816116e2565b815282840151828111156117d757600080fd5b80840193505086601f8401126117ec57600080fd5b825191506117fc61122e836111e8565b828152878584860101111561181057600080fd5b61181f838683018787016110ea565b938101939093525090949350505050565b60006bffffffffffffffffffffffff19808760601b168352808660601b166014840152506361636b2d60e01b60288301528284602c8401375060009101602c019081529392505050565b85815284602082015260806040820152600061189a608083018587611437565b90506001600160401b0383166060830152969550505050505056fea26469706673582212200a7e66388e0e1341dba2b816efe089ee0c6c1ce8c4a98b8e4b8a70d9bc8bce9a64736f6c634300080f0033"; + "0x608060405234801561001057600080fd5b5060405161195538038061195583398101604081905261002f916100b2565b808061003a33610062565b600180546001600160a01b0319166001600160a01b0392909216919091179055506100e29050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100c457600080fd5b81516001600160a01b03811681146100db57600080fd5b9392505050565b611864806100f16000396000f3fe6080604052600436106100f75760003560e01c80635b7615851161008a57806392dfa3921161005957806392dfa392146102ea578063d24ba0241461030a578063f12b758a1461032a578063f2fde38b1461034a57600080fd5b80635b7615851461026a578063715018a614610297578063866f3f97146102ac5780638da5cb5b146102cc57600080fd5b8063400d9f5d116100c6578063400d9f5d146101cd5780634252ae9b146101ed5780634eeb73911461021c578063588152ca1461024a57600080fd5b80631b2f37d0146101035780632466911c146101255780632cc422d9146101555780632eed7c701461018d57600080fd5b366100fe57005b600080fd5b34801561010f57600080fd5b5061012361011e366004610e0e565b61036a565b005b610138610133366004610f6a565b6103bb565b6040516001600160401b0390911681526020015b60405180910390f35b34801561016157600080fd5b50600154610175906001600160a01b031681565b6040516001600160a01b03909116815260200161014c565b34801561019957600080fd5b506101bd6101a8366004610ffd565b60026020526000908152604090205460ff1681565b604051901515815260200161014c565b3480156101d957600080fd5b506101236101e8366004611016565b610457565b3480156101f957600080fd5b5061020d610208366004610ffd565b610532565b60405161014c93929190611113565b34801561022857600080fd5b5061023c610237366004610ffd565b6106d6565b60405161014c929190611148565b34801561025657600080fd5b50610123610265366004611260565b6107c4565b34801561027657600080fd5b5061028a610285366004611016565b610972565b60405161014c91906112d3565b3480156102a357600080fd5b50610123610af3565b3480156102b857600080fd5b5061028a6102c73660046112e6565b610b07565b3480156102d857600080fd5b506000546001600160a01b0316610175565b3480156102f657600080fd5b50610123610305366004610ffd565b610b62565b34801561031657600080fd5b5061012361032536600461133f565b610b76565b34801561033657600080fd5b5061023c610345366004610ffd565b610c06565b34801561035657600080fd5b50610123610365366004610e0e565b610c16565b610372610c91565b6001600160a01b0381166103995760405163a944796960e01b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001546000906001600160a01b031663462fdf8334896103e18c6001600160a01b031690565b8a8a8a8a8a6040518963ffffffff1660e01b815260040161040897969594939291906113fc565b60206040518083038185885af1158015610426573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061044b9190611449565b98975050505050505050565b6001546001600160a01b0316331461048257604051631323efc560e01b815260040160405180910390fd5b600082815260026020526040902054829060ff166104b357604051630100e70560e51b815260040160405180910390fd5b60056040518060400160405280858152602001846104d090611466565b90528154600181810184556000938452602093849020835160059093020191825583830151805191830191825593840151600283015560408401516003830155606084015192939192600484019061052890826114f7565b5050505050505050565b6004818154811061054257600080fd5b90600052602060002090600702016000915090508060000154908060010160405180608001604052908160008201548152602001600182015481526020016002820154815260200160038201805461059990611472565b80601f01602080910402602001604051908101604052809291908181526020018280546105c590611472565b80156106125780601f106105e757610100808354040283529160200191610612565b820191906000526020600020905b8154815290600101906020018083116105f557829003601f168201915b5050509190925250506040805180820190915260058401805460ff1615158252600685018054949594929350909160208401919061064f90611472565b80601f016020809104026020016040519081016040528092919081815260200182805461067b90611472565b80156106c85780601f1061069d576101008083540402835291602001916106c8565b820191906000526020600020905b8154815290600101906020018083116106ab57829003601f168201915b505050505081525050905083565b600581815481106106e657600080fd5b90600052602060002090600502016000915090508060000154908060010160405180608001604052908160008201548152602001600182015481526020016002820154815260200160038201805461073d90611472565b80601f016020809104026020016040519081016040528092919081815260200182805461076990611472565b80156107b65780601f1061078b576101008083540402835291602001916107b6565b820191906000526020600020905b81548152906001019060200180831161079957829003601f168201915b505050505081525050905082565b6001546001600160a01b031633146107ef57604051631323efc560e01b815260040160405180910390fd5b600083815260026020526040902054839060ff1661082057604051630100e70560e51b815260040160405180910390fd5b601461082f60208401846115b6565b905010156108505760405163503b43db60e01b815260040160405180910390fd5b600061085f60208401846115b6565b61086e916014916000916115fc565b61087791611626565b60601c9050806001600160a01b03166108938560400151610ceb565b6001600160a01b0316146108ba57604051631863a42d60e31b815260040160405180910390fd5b60046040518060600160405280878152602001868152602001856108dd90611669565b90528154600181810184556000938452602093849020835160079093020191825583830151805191830191825593840151600283015560408401516003830155606084015192939192600484019061093590826114f7565b5050506040820151805160058301805460ff19169115159190911781556020820151600684019061096690826114f7565b50505050505050505050565b6040805180820190915260008152606060208201526001546001600160a01b031633146109b257604051631323efc560e01b815260040160405180910390fd5b600083815260026020526040902054839060ff166109e357604051630100e70560e51b815260040160405180910390fd5b6003604051806040016040528086815260200185610a0090611466565b905281546001818101845560009384526020938490208351600590930201918255838301518051918301918255938401516002830155604084015160038301556060840151929391926004840190610a5890826114f7565b5050505050306001600160a01b031663866f3f9785610a7a8660000135610ceb565b610a8760608801886115b6565b6040518563ffffffff1660e01b8152600401610aa694939291906116c1565b600060405180830381865afa158015610ac3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610aeb91908101906116ec565b949350505050565b610afb610c91565b610b056000610cfc565b565b604080518082019091526000815260606020820152604051806040016040528060011515815260200130868686604051602001610b4794939291906117a9565b60408051601f19818403018152919052905295945050505050565b610b6a610c91565b610b7381610d4c565b50565b6001546001600160a01b0316631f3a583085610b98886001600160a01b031690565b8686866040518663ffffffff1660e01b8152600401610bbb9594939291906117f3565b6020604051808303816000875af1158015610bda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfe9190611449565b505050505050565b600381815481106106e657600080fd5b610c1e610c91565b6001600160a01b038116610c885760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b610b7381610cfc565b6000546001600160a01b03163314610b055760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c7f565b6000610cf682610d85565b92915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80610d6a57604051631d6f5e8b60e01b815260040160405180910390fd5b6000908152600260205260409020805460ff19166001179055565b60006001600160a01b03821115610dee5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663630206269747360c81b6064820152608401610c7f565b5090565b80356001600160a01b0381168114610e0957600080fd5b919050565b600060208284031215610e2057600080fd5b610e2982610df2565b9392505050565b60008083601f840112610e4257600080fd5b5081356001600160401b03811115610e5957600080fd5b602083019150836020828501011115610e7157600080fd5b9250929050565b6001600160401b0381168114610b7357600080fd5b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715610ec557610ec5610e8d565b60405290565b604051601f8201601f191681016001600160401b0381118282101715610ef357610ef3610e8d565b604052919050565b600082601f830112610f0c57600080fd5b604051604081018181106001600160401b0382111715610f2e57610f2e610e8d565b8060405250806040840185811115610f4557600080fd5b845b81811015610f5f578035835260209283019201610f47565b509195945050505050565b6000806000806000806000610100888a031215610f8657600080fd5b610f8f88610df2565b96506020880135955060408801356001600160401b03811115610fb157600080fd5b610fbd8a828b01610e30565b9096509450506060880135610fd181610e78565b9250610fe08960808a01610efb565b9150610fef8960c08a01610efb565b905092959891949750929550565b60006020828403121561100f57600080fd5b5035919050565b6000806040838503121561102957600080fd5b8235915060208301356001600160401b0381111561104657600080fd5b83016080818603121561105857600080fd5b809150509250929050565b60005b8381101561107e578181015183820152602001611066565b8381111561108d576000848401525b50505050565b600081518084526110ab816020860160208601611063565b601f01601f19169290920160200192915050565b8051825260208101516020830152604081015160408301526000606082015160806060850152610aeb6080850182611093565b8051151582526000602082015160406020850152610aeb6040850182611093565b83815260606020820152600061112c60608301856110bf565b828103604084015261113e81856110f2565b9695505050505050565b828152604060208201526000610aeb60408301846110bf565b60006001600160401b0382111561117a5761117a610e8d565b50601f01601f191660200190565b600082601f83011261119957600080fd5b81356111ac6111a782611161565b610ecb565b8181528460208386010111156111c157600080fd5b816020850160208301376000918101602001919091529392505050565b6000608082840312156111f057600080fd5b604051608081016001600160401b03828210818311171561121357611213610e8d565b81604052829350843583526020850135602084015260408501356040840152606085013591508082111561124657600080fd5b5061125385828601611188565b6060830152505092915050565b60008060006060848603121561127557600080fd5b8335925060208401356001600160401b038082111561129357600080fd5b61129f878388016111de565b935060408601359150808211156112b557600080fd5b508401604081870312156112c857600080fd5b809150509250925092565b602081526000610e2960208301846110f2565b600080600080606085870312156112fc57600080fd5b8435935061130c60208601610df2565b925060408501356001600160401b0381111561132757600080fd5b61133387828801610e30565b95989497509550505050565b60008060008060006080868803121561135757600080fd5b61136086610df2565b94506020860135935060408601356001600160401b0381111561138257600080fd5b61138e88828901610e30565b90945092505060608601356113a281610e78565b809150509295509295909350565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b8060005b600281101561108d5781518452602093840193909101906001016113dd565b600061010089835288602084015280604084015261141d818401888a6113b0565b9150506001600160401b038516606083015261143c60808301856113d9565b61044b60c08301846113d9565b60006020828403121561145b57600080fd5b8151610e2981610e78565b6000610cf636836111de565b600181811c9082168061148657607f821691505b6020821081036114a657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156114f257600081815260208120601f850160051c810160208610156114d35750805b601f850160051c820191505b81811015610bfe578281556001016114df565b505050565b81516001600160401b0381111561151057611510610e8d565b6115248161151e8454611472565b846114ac565b602080601f83116001811461155957600084156115415750858301515b600019600386901b1c1916600185901b178555610bfe565b600085815260208120601f198616915b8281101561158857888601518255948401946001909101908401611569565b50858210156115a65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000808335601e198436030181126115cd57600080fd5b8301803591506001600160401b038211156115e757600080fd5b602001915036819003821315610e7157600080fd5b6000808585111561160c57600080fd5b8386111561161957600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff1981358181169160148510156116535780818660140360031b1b83161692505b505092915050565b8015158114610b7357600080fd5b60006040823603121561167b57600080fd5b611683610ea3565b823561168e8161165b565b815260208301356001600160401b038111156116a957600080fd5b6116b536828601611188565b60208301525092915050565b8481526001600160a01b038416602082015260606040820181905260009061113e90830184866113b0565b600060208083850312156116ff57600080fd5b82516001600160401b038082111561171657600080fd5b908401906040828703121561172a57600080fd5b611732610ea3565b825161173d8161165b565b8152828401518281111561175057600080fd5b80840193505086601f84011261176557600080fd5b825191506117756111a783611161565b828152878584860101111561178957600080fd5b61179883868301878701611063565b938101939093525090949350505050565b60006bffffffffffffffffffffffff19808760601b168352808660601b166014840152506361636b2d60e01b60288301528284602c8401375060009101602c019081529392505050565b8581528460208201526080604082015260006118136080830185876113b0565b90506001600160401b0383166060830152969550505050505056fea264697066735822122087b087eb6388235ba433bd29aa1e260a25ca785124a467a1431fa47d234d7ccb64736f6c634300080f0033"; type EarthConstructorParams = | [signer?: Signer] diff --git a/src/evm/contracts/factories/FeeVault__factory.ts b/src/evm/contracts/factories/FeeVault__factory.ts index 0de75138..cf972123 100644 --- a/src/evm/contracts/factories/FeeVault__factory.ts +++ b/src/evm/contracts/factories/FeeVault__factory.ts @@ -235,7 +235,7 @@ const _abi = [ ] as const; const _bytecode = - "0x608060405234801561001057600080fd5b5061001a33610023565b60018055610073565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6108ae806100826000396000f3fe6080604052600436106100555760003560e01c80630be6a22d1461005a57806318e3404b14610071578063715018a6146100845780638da5cb5b14610099578063f2fde38b146100c5578063fce34e40146100e5575b600080fd5b34801561006657600080fd5b5061006f6100f8565b005b61006f61007f366004610410565b610135565b34801561009057600080fd5b5061006f6101ec565b3480156100a557600080fd5b50600054604080516001600160a01b039092168252519081900360200190f35b3480156100d157600080fd5b5061006f6100e036600461048a565b610200565b61006f6100f336600461055f565b610276565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015610132573d6000803e3d6000fd5b50565b61013d6102f6565b60006101516020808401359085013561069d565b61015d8335853561069d565b61016791906106bc565b905034811461019757604051635c6dd11360e11b8152600481018290523460248201526044015b60405180910390fd5b8367ffffffffffffffff16857f0733dc80f277e205edf5d913fa5d91fa0c4cc2635db600b365471c688356c03485856040516101d49291906106d4565b60405180910390a3506101e660018055565b50505050565b6101f461034f565b6101fe60006103a9565b565b61020861034f565b6001600160a01b03811661026d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161018e565b610132816103a9565b61027e6102f6565b3460000361029f57604051633d28b18360e11b815260040160405180910390fd5b7f8ab5595b5ac9231b64513ba86f6bd9fb73c51cae40c36083f7dfc2298e4429e687878787878787346040516102dc9897969594939291906107cd565b60405180910390a16102ed60018055565b50505050505050565b6002600154036103485760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161018e565b6002600155565b6000546001600160a01b031633146101fe5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b806040810183101561040a57600080fd5b92915050565b60008060008060c0858703121561042657600080fd5b84359350602085013567ffffffffffffffff8116811461044557600080fd5b925061045486604087016103f9565b915061046386608087016103f9565b905092959194509250565b80356001600160a01b038116811461048557600080fd5b919050565b60006020828403121561049c57600080fd5b6104a58261046e565b9392505050565b634e487b7160e01b600052604160045260246000fd5b80356003811061048557600080fd5b60008083601f8401126104e357600080fd5b50813567ffffffffffffffff8111156104fb57600080fd5b6020830191508360208260051b850101111561051657600080fd5b9250929050565b60008083601f84011261052f57600080fd5b50813567ffffffffffffffff81111561054757600080fd5b60208301915083602082850101111561051657600080fd5b600080600080600080600060a0888a03121561057a57600080fd5b6105838861046e565b9650602088013567ffffffffffffffff808211156105a057600080fd5b818a0191508a601f8301126105b457600080fd5b8135818111156105c6576105c66104ac565b604051601f8201601f19908116603f011681019083821181831017156105ee576105ee6104ac565b816040528281528d602084870101111561060757600080fd5b82602086016020830137600060208483010152809a5050505061062c60408b016104c2565b965060608a013591508082111561064257600080fd5b61064e8b838c016104d1565b909650945060808a013591508082111561066757600080fd5b506106748a828b0161051d565b989b979a50959850939692959293505050565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156106b7576106b7610687565b500290565b600082198211156106cf576106cf610687565b500190565b6080810160408483376040836040840137600081529392505050565b6003811061070e57634e487b7160e01b600052602160045260246000fd5b9052565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b81835260006020808501808196508560051b810191508460005b878110156107c05782840389528135601e1988360301811261077657600080fd5b8701858101903567ffffffffffffffff81111561079257600080fd5b8036038213156107a157600080fd5b6107ac868284610712565b9a87019a9550505090840190600101610755565b5091979650505050505050565b60018060a01b03891681526000602060c08184015289518060c085015260005b81811015610809578b810183015185820160e0015282016107ed565b8181111561081b57600060e083870101525b50601f01601f191683019050610834604084018a6106f0565b60e083820301606084015261084d60e08201888a61073b565b90508281036080840152610862818688610712565b9150508260a0830152999850505050505050505056fea264697066735822122070169f5e288331314b64b1fed3c2391ed6eb75f1ca8392fa9fea17924fdb3fa264736f6c634300080f0033"; + "0x608060405234801561001057600080fd5b5061001a33610023565b60018055610073565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6108ae806100826000396000f3fe6080604052600436106100555760003560e01c80630be6a22d1461005a57806318e3404b14610071578063715018a6146100845780638da5cb5b14610099578063f2fde38b146100c5578063fce34e40146100e5575b600080fd5b34801561006657600080fd5b5061006f6100f8565b005b61006f61007f366004610410565b610135565b34801561009057600080fd5b5061006f6101ec565b3480156100a557600080fd5b50600054604080516001600160a01b039092168252519081900360200190f35b3480156100d157600080fd5b5061006f6100e036600461048a565b610200565b61006f6100f336600461055f565b610276565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015610132573d6000803e3d6000fd5b50565b61013d6102f6565b60006101516020808401359085013561069d565b61015d8335853561069d565b61016791906106bc565b905034811461019757604051635c6dd11360e11b8152600481018290523460248201526044015b60405180910390fd5b8367ffffffffffffffff16857f0733dc80f277e205edf5d913fa5d91fa0c4cc2635db600b365471c688356c03485856040516101d49291906106d4565b60405180910390a3506101e660018055565b50505050565b6101f461034f565b6101fe60006103a9565b565b61020861034f565b6001600160a01b03811661026d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161018e565b610132816103a9565b61027e6102f6565b3460000361029f57604051633d28b18360e11b815260040160405180910390fd5b7f8ab5595b5ac9231b64513ba86f6bd9fb73c51cae40c36083f7dfc2298e4429e687878787878787346040516102dc9897969594939291906107cd565b60405180910390a16102ed60018055565b50505050505050565b6002600154036103485760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161018e565b6002600155565b6000546001600160a01b031633146101fe5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b806040810183101561040a57600080fd5b92915050565b60008060008060c0858703121561042657600080fd5b84359350602085013567ffffffffffffffff8116811461044557600080fd5b925061045486604087016103f9565b915061046386608087016103f9565b905092959194509250565b80356001600160a01b038116811461048557600080fd5b919050565b60006020828403121561049c57600080fd5b6104a58261046e565b9392505050565b634e487b7160e01b600052604160045260246000fd5b80356003811061048557600080fd5b60008083601f8401126104e357600080fd5b50813567ffffffffffffffff8111156104fb57600080fd5b6020830191508360208260051b850101111561051657600080fd5b9250929050565b60008083601f84011261052f57600080fd5b50813567ffffffffffffffff81111561054757600080fd5b60208301915083602082850101111561051657600080fd5b600080600080600080600060a0888a03121561057a57600080fd5b6105838861046e565b9650602088013567ffffffffffffffff808211156105a057600080fd5b818a0191508a601f8301126105b457600080fd5b8135818111156105c6576105c66104ac565b604051601f8201601f19908116603f011681019083821181831017156105ee576105ee6104ac565b816040528281528d602084870101111561060757600080fd5b82602086016020830137600060208483010152809a5050505061062c60408b016104c2565b965060608a013591508082111561064257600080fd5b61064e8b838c016104d1565b909650945060808a013591508082111561066757600080fd5b506106748a828b0161051d565b989b979a50959850939692959293505050565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156106b7576106b7610687565b500290565b600082198211156106cf576106cf610687565b500190565b6080810160408483376040836040840137600081529392505050565b6003811061070e57634e487b7160e01b600052602160045260246000fd5b9052565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b81835260006020808501808196508560051b810191508460005b878110156107c05782840389528135601e1988360301811261077657600080fd5b8701858101903567ffffffffffffffff81111561079257600080fd5b8036038213156107a157600080fd5b6107ac868284610712565b9a87019a9550505090840190600101610755565b5091979650505050505050565b60018060a01b03891681526000602060c08184015289518060c085015260005b81811015610809578b810183015185820160e0015282016107ed565b8181111561081b57600060e083870101525b50601f01601f191683019050610834604084018a6106f0565b60e083820301606084015261084d60e08201888a61073b565b90508281036080840152610862818688610712565b9150508260a0830152999850505050505050505056fea2646970667358221220c3a6428237aa2faefb9a05225f24a396394c904a57d44c76245dc487bc5e631a64736f6c634300080f0033"; type FeeVaultConstructorParams = | [signer?: Signer] diff --git a/src/evm/contracts/factories/Mars.sol/Mars__factory.ts b/src/evm/contracts/factories/Mars.sol/Mars__factory.ts index 91f4eb20..e0633690 100644 --- a/src/evm/contracts/factories/Mars.sol/Mars__factory.ts +++ b/src/evm/contracts/factories/Mars.sol/Mars__factory.ts @@ -922,7 +922,7 @@ const _abi = [ ] as const; const _bytecode = - "0x600360c0818152620312e360ec1b60e0526080908152610140604052610100918252620322e360ec1b6101205260a09190915262000042906006906002620000f6565b503480156200005057600080fd5b5060405162002af738038062002af78339810160408190526200007391620001cd565b806200007f33620000a6565b600180546001600160a01b0319166001600160a01b03929092169190911790555062000370565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b82805482825590600052602060002090810192821562000141579160200282015b82811115620001415782518290620001309082620002a4565b509160200191906001019062000117565b506200014f92915062000153565b5090565b808211156200014f5760006200016a828262000174565b5060010162000153565b508054620001829062000215565b6000825580601f1062000193575050565b601f016020900490600052602060002090810190620001b39190620001b6565b50565b5b808211156200014f5760008155600101620001b7565b600060208284031215620001e057600080fd5b81516001600160a01b0381168114620001f857600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200022a57607f821691505b6020821081036200024b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200029f57600081815260208120601f850160051c810160208610156200027a5750805b601f850160051c820191505b818110156200029b5782815560010162000286565b5050505b505050565b81516001600160401b03811115620002c057620002c0620001ff565b620002d881620002d1845462000215565b8462000251565b602080601f831160018114620003105760008415620002f75750858301515b600019600386901b1c1916600185901b1785556200029b565b600085815260208120601f198616915b82811015620003415788860151825594840194600190910190840162000320565b5085821015620003605787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61277780620003806000396000f3fe6080604052600436106101445760003560e01c8063715018a6116100b6578063bb3f9f8d1161006f578063bb3f9f8d146103b6578063cb7e9057146103e4578063e847e28014610404578063f12b758a14610424578063f2fde38b14610444578063fad28a241461046457600080fd5b8063715018a6146102ef5780637a805598146103045780637a9ccc4b146103245780637d622184146103445780637e1d42b5146103645780638da5cb5b1461038457600080fd5b80634dcc0aa6116101085780634dcc0aa61461021d5780634eeb73911461024a578063558850ac1461027c5780635bfd12b81461029c578063602f9834146102bc57806361995001146102dc57600080fd5b80631eb7dd5e146101505780633513a995146101725780633f9fdbe4146101a25780634252ae9b146101c25780634bdb5597146101f057600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b5061017061016b3660046114d1565b610484565b005b610185610180366004611554565b6104b5565b6040516001600160401b0390911681526020015b60405180910390f35b3480156101ae57600080fd5b506101706101bd3660046114d1565b610555565b3480156101ce57600080fd5b506101e26101dd3660046115d4565b610611565b60405161019992919061163a565b3480156101fc57600080fd5b5061021061020b36600461176b565b6106cd565b60405161019991906118a4565b34801561022957600080fd5b5061023d61023836600461194a565b610712565b6040516101999190611a32565b34801561025657600080fd5b5061026a6102653660046115d4565b6108ed565b60405161019996959493929190611a82565b34801561028857600080fd5b506101706102973660046115d4565b610b45565b3480156102a857600080fd5b506101856102b7366004611af7565b610ba7565b3480156102c857600080fd5b506101706102d7366004611b6d565b610c2a565b6101706102ea366004611bf3565b610c9b565b3480156102fb57600080fd5b50610170610d67565b34801561031057600080fd5b5061017061031f366004611bf3565b610d7b565b34801561033057600080fd5b5061021061033f366004611cb4565b610dfd565b34801561035057600080fd5b5061021061035f3660046115d4565b610e35565b34801561037057600080fd5b5061017061037f366004611d3e565b610ee1565b34801561039057600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610199565b3480156103c257600080fd5b506103d66103d13660046115d4565b610f4d565b604051908152602001610199565b3480156103f057600080fd5b5060015461039e906001600160a01b031681565b34801561041057600080fd5b5061017061041f366004611da8565b610f6e565b34801561043057600080fd5b5061026a61043f3660046115d4565b610fa4565b34801561045057600080fd5b5061017061045f366004611e0f565b610fb4565b34801561047057600080fd5b5061017061047f3660046115d4565b611032565b6001546001600160a01b031633146104af576040516321bf7f4960e01b815260040160405180910390fd5b50505050565b6001546040516330f8455760e21b81526000916001600160a01b03169063c3e1155c906104ec9088908b908b908a90600401611e55565b6020604051808303816000875af115801561050b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052f9190611e89565b60015490915061054b906001600160a01b03168683868661105d565b9695505050505050565b6001546001600160a01b03163314610580576040516321bf7f4960e01b815260040160405180910390fd5b6000805b6005548110156105eb5785600582815481106105a2576105a2611ea6565b9060005260206000200154036105d957600581815481106105c5576105c5611ea6565b6000918252602082200155600191506105eb565b806105e381611ebc565b915050610584565b508061060a57604051630781f76560e21b815260040160405180910390fd5b5050505050565b6003818154811061062157600080fd5b60009182526020909120600290910201805460018201805460ff90921693509061064a90611ee3565b80601f016020809104026020016040519081016040528092919081815260200182805461067690611ee3565b80156106c35780601f10610698576101008083540402835291602001916106c3565b820191906000526020600020905b8154815290600101906020018083116106a657829003601f168201915b5050505050905082565b6001546060906001600160a01b031633146106fb576040516321bf7f4960e01b815260040160405180910390fd5b61070686848461112c565b98975050505050505050565b6040805180820190915260008152606060208201526001546001600160a01b03163314610752576040516321bf7f4960e01b815260040160405180910390fd5b600280546001810182556000919091528251805184926008027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0191908290819061079d9082611f7a565b506020918201516001909101558201518051600283019081906107c09082611f7a565b5060209190910151600190910155604082015160048201805467ffffffffffffffff19166001600160401b03909216919091179055606082015160058201906108099082611f7a565b50608082015180516006830180546020938401516001600160401b03908116600160401b026fffffffffffffffffffffffffffffffff199092169381169390931717905560a090930151600790920180549290931667ffffffffffffffff1992909216919091179091556040805180820182526001815290519091828101916108d391017f7b20226163636f756e74223a20226163636f756e74222c20227265706c79223a8152732022676f7420746865206d65737361676522207d60601b602082015260340190565b60405160208183030381529060405281525090505b919050565b600481815481106108fd57600080fd5b90600052602060002090600802016000915090508060000160405180604001604052908160008201805461093090611ee3565b80601f016020809104026020016040519081016040528092919081815260200182805461095c90611ee3565b80156109a95780601f1061097e576101008083540402835291602001916109a9565b820191906000526020600020905b81548152906001019060200180831161098c57829003601f168201915b5050505050815260200160018201548152505090806002016040518060400160405290816000820180546109dc90611ee3565b80601f0160208091040260200160405190810160405280929190818152602001828054610a0890611ee3565b8015610a555780601f10610a2a57610100808354040283529160200191610a55565b820191906000526020600020905b815481529060010190602001808311610a3857829003601f168201915b505050918352505060019190910154602090910152600482015460058301805492936001600160401b0390921692610a8c90611ee3565b80601f0160208091040260200160405190810160405280929190818152602001828054610ab890611ee3565b8015610b055780601f10610ada57610100808354040283529160200191610b05565b820191906000526020600020905b815481529060010190602001808311610ae857829003601f168201915b50506040805180820190915260068601546001600160401b038082168352600160401b909104811660208301526007909601549495909416925088915050565b610b4d611252565b6001546040516381bc079b60e01b8152600481018390526001600160a01b03909116906381bc079b90602401600060405180830381600087803b158015610b9357600080fd5b505af115801561060a573d6000803e3d6000fd5b6001546040516330f8455760e21b81526000916001600160a01b03169063c3e1155c90610bde908690899089908890600401611e55565b6020604051808303816000875af1158015610bfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c219190611e89565b95945050505050565b6001546001600160a01b03163314610c55576040516321bf7f4960e01b815260040160405180910390fd5b6004805460018101825560009190915281906008027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01610c968282612295565b505050565b610ca3611252565b60015460405163418925b760e01b81526001600160a01b0390911690819063418925b790610ce3908c908c908c908c908c908c908c908c906004016124c5565b600060405180830381600087803b158015610cfd57600080fd5b505af1158015610d11573d6000803e3d6000fd5b50505050610d5c818a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92508a915089905088886112ac565b505050505050505050565b610d6f611252565b610d796000611361565b565b610d83611252565b60015460405163418925b760e01b81526001600160a01b039091169063418925b790610dc1908b908b908b908b908b908b908b908b906004016124c5565b600060405180830381600087803b158015610ddb57600080fd5b505af1158015610def573d6000803e3d6000fd5b505050505050505050505050565b6001546060906001600160a01b03163314610e2b576040516321bf7f4960e01b815260040160405180910390fd5b61070683836113b1565b60068181548110610e4557600080fd5b906000526020600020016000915090508054610e6090611ee3565b80601f0160208091040260200160405190810160405280929190818152602001828054610e8c90611ee3565b8015610ed95780601f10610eae57610100808354040283529160200191610ed9565b820191906000526020600020905b815481529060010190602001808311610ebc57829003601f168201915b505050505081565b6001546001600160a01b03163314610f0c576040516321bf7f4960e01b815260040160405180910390fd5b6003805460018101825560009190915281906002027fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b016104af8282612525565b60058181548110610f5d57600080fd5b600091825260209091200154905081565b6001546001600160a01b03163314610f99576040516321bf7f4960e01b815260040160405180910390fd5b61060a84838361112c565b600281815481106108fd57600080fd5b610fbc611252565b6001600160a01b0381166110265760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61102f81611361565b50565b6001546001600160a01b0316331461102f576040516321bf7f4960e01b815260040160405180910390fd5b846001600160a01b031663478222c26040518163ffffffff1660e01b81526004016020604051808303816000875af115801561109d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c19190612605565b6001600160a01b03166318e3404b34868686866040518663ffffffff1660e01b81526004016110f39493929190612622565b6000604051808303818588803b15801561110c57600080fd5b505af1158015611120573d6000803e3d6000fd5b50505050505050505050565b606060005b600654811015611231576006818154811061114e5761114e611ea6565b906000526020600020016040516020016111689190612654565b6040516020818303038152906040528051906020012084846040516020016111919291906126ca565b604051602081830303815290604052805190602001200361121f57600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db001859055604080516020601f860181900481028201810190925284815290859085908190840183828082843760009201919091525092945061124b9350505050565b8061122981611ebc565b915050611131565b5060405163b01318a560e01b815260040160405180910390fd5b9392505050565b6000546001600160a01b03163314610d795760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161101d565b866001600160a01b031663478222c26040518163ffffffff1660e01b81526004016020604051808303816000875af11580156112ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113109190612605565b6001600160a01b031663fce34e4034308989898989896040518963ffffffff1660e01b815260040161134897969594939291906126da565b6000604051808303818588803b158015610ddb57600080fd5b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b606060005b60065481101561123157600681815481106113d3576113d3611ea6565b906000526020600020016040516020016113ed9190612654565b6040516020818303038152906040528051906020012084846040516020016114169291906126ca565b60405160208183030381529060405280519060200120036114715783838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509294506114839350505050565b8061147b81611ebc565b9150506113b6565b92915050565b60008083601f84011261149b57600080fd5b5081356001600160401b038111156114b257600080fd5b6020830191508360208285010111156114ca57600080fd5b9250929050565b600080600080606085870312156114e757600080fd5b8435935060208501356001600160401b0381111561150457600080fd5b61151087828801611489565b9598909750949560400135949350505050565b6001600160401b038116811461102f57600080fd5b80356108e881611523565b806040810183101561148357600080fd5b60008060008060008060e0878903121561156d57600080fd5b86356001600160401b0381111561158357600080fd5b61158f89828a01611489565b9097509550506020870135935060408701356115aa81611523565b92506115b98860608901611543565b91506115c88860a08901611543565b90509295509295509295565b6000602082840312156115e657600080fd5b5035919050565b6000815180845260005b81811015611613576020818501810151868301820152016115f7565b81811115611625576000602083870101525b50601f01601f19169290920160200192915050565b821515815260406020820152600061165560408301846115ed565b949350505050565b8035600381106108e857600080fd5b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156116a4576116a461166c565b60405290565b60405160c081016001600160401b03811182821017156116a4576116a461166c565b604051601f8201601f191681016001600160401b03811182821017156116f4576116f461166c565b604052919050565b600082601f83011261170d57600080fd5b81356001600160401b038111156117265761172661166c565b611739601f8201601f19166020016116cc565b81815284602083860101111561174e57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600060c0888a03121561178657600080fd5b61178f8861165d565b965060208801356001600160401b03808211156117ab57600080fd5b818a0191508a601f8301126117bf57600080fd5b8135818111156117d1576117d161166c565b8060051b6117e1602082016116cc565b9182526020818501810192908101908e8411156117fd57600080fd5b6020860192505b8383101561183b57848335111561181a57600080fd5b61182a8f602085358901016116fc565b825260209283019290910190611804565b9a5050505060408a0135965060608a013591508082111561185b57600080fd5b6118678b838c016116fc565b955060808a0135945060a08a013591508082111561188457600080fd5b506118918a828b01611489565b989b979a50959850939692959293505050565b60208152600061124b60208301846115ed565b6000604082840312156118c957600080fd5b6118d1611682565b905081356001600160401b038111156118e957600080fd5b6118f5848285016116fc565b8252506020820135602082015292915050565b60006040828403121561191a57600080fd5b611922611682565b9050813561192f81611523565b8152602082013561193f81611523565b602082015292915050565b60006020828403121561195c57600080fd5b81356001600160401b038082111561197357600080fd5b9083019060e0828603121561198757600080fd5b61198f6116aa565b82358281111561199e57600080fd5b6119aa878286016118b7565b8252506020830135828111156119bf57600080fd5b6119cb878286016118b7565b6020830152506119dd60408401611538565b60408201526060830135828111156119f457600080fd5b611a00878286016116fc565b606083015250611a138660808501611908565b6080820152611a2460c08401611538565b60a082015295945050505050565b602081528151151560208201526000602083015160408084015261165560608401826115ed565b6000815160408452611a6e60408501826115ed565b602093840151949093019390935250919050565b60e081526000611a9560e0830189611a59565b8281036020840152611aa78189611a59565b90506001600160401b0380881660408501528382036060850152611acb82886115ed565b92508086511660808501528060208701511660a085015280851660c08501525050979650505050505050565b60008060008060608587031215611b0d57600080fd5b84356001600160401b03811115611b2357600080fd5b611b2f87828801611489565b909550935050602085013591506040850135611b4a81611523565b939692955090935050565b600060e08284031215611b6757600080fd5b50919050565b600060208284031215611b7f57600080fd5b81356001600160401b03811115611b9557600080fd5b61165584828501611b55565b801515811461102f57600080fd5b60008083601f840112611bc157600080fd5b5081356001600160401b03811115611bd857600080fd5b6020830191508360208260051b85010111156114ca57600080fd5b60008060008060008060008060a0898b031215611c0f57600080fd5b88356001600160401b0380821115611c2657600080fd5b611c328c838d01611489565b909a509850889150611c4660208c0161165d565b975060408b01359150611c5882611ba1565b90955060608a01359080821115611c6e57600080fd5b611c7a8c838d01611baf565b909650945060808b0135915080821115611c9357600080fd5b50611ca08b828c01611489565b999c989b5096995094979396929594505050565b60008060008060008060006080888a031215611ccf57600080fd5b611cd88861165d565b965060208801356001600160401b0380821115611cf457600080fd5b611d008b838c01611baf565b909850965060408a0135915080821115611d1957600080fd5b611d258b838c01611489565b909650945060608a013591508082111561188457600080fd5b60008060408385031215611d5157600080fd5b82356001600160401b0380821115611d6857600080fd5b611d7486838701611b55565b93506020850135915080821115611d8a57600080fd5b50830160408186031215611d9d57600080fd5b809150509250929050565b60008060008060608587031215611dbe57600080fd5b843593506020850135925060408501356001600160401b03811115611de257600080fd5b611dee87828801611489565b95989497509550505050565b6001600160a01b038116811461102f57600080fd5b600060208284031215611e2157600080fd5b813561124b81611dfa565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b848152606060208201526000611e6f606083018587611e2c565b90506001600160401b038316604083015295945050505050565b600060208284031215611e9b57600080fd5b815161124b81611523565b634e487b7160e01b600052603260045260246000fd5b600060018201611edc57634e487b7160e01b600052601160045260246000fd5b5060010190565b600181811c90821680611ef757607f821691505b602082108103611b6757634e487b7160e01b600052602260045260246000fd5b601f821115610c9657600081815260208120601f850160051c81016020861015611f3e5750805b601f850160051c820191505b81811015611f5d57828155600101611f4a565b505050505050565b600019600383901b1c191660019190911b1790565b81516001600160401b03811115611f9357611f9361166c565b611fa781611fa18454611ee3565b84611f17565b602080601f831160018114611fd65760008415611fc45750858301515b611fce8582611f65565b865550611f5d565b600085815260208120601f198616915b8281101561200557888601518255948401946001909101908401611fe6565b50858210156120235787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008235603e1983360301811261204957600080fd5b9190910192915050565b6000808335601e1984360301811261206a57600080fd5b8301803591506001600160401b0382111561208457600080fd5b6020019150368190038213156114ca57600080fd5b6120a38283612053565b6001600160401b038111156120ba576120ba61166c565b6120ce816120c88554611ee3565b85611f17565b6000601f8211600181146120fc57600083156120ea5750838201355b6120f48482611f65565b865550612156565b600085815260209020601f19841690835b8281101561212d578685013582556020948501946001909201910161210d565b508482101561214a5760001960f88660031b161c19848701351681555b505060018360011b0185555b50505050602082013560018201555050565b6000813561148381611523565b6001600160401b0383111561218c5761218c61166c565b6121a08361219a8354611ee3565b83611f17565b6000601f8411600181146121ce57600085156121bc5750838201355b6121c68682611f65565b84555061060a565b600083815260209020601f19861690835b828110156121ff57868501358255602094850194600190920191016121df565b508682101561221c5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b813561223981611523565b815467ffffffffffffffff19166001600160401b03821617825550602082013561226281611523565b81546fffffffffffffffff0000000000000000191660409190911b6fffffffffffffffff00000000000000001617905550565b61229f8283612033565b6122a98182612053565b6001600160401b038111156122c0576122c061166c565b6122d4816122ce8654611ee3565b86611f17565b6000601f82116001811461230257600083156122f05750838201355b6122fa8482611f65565b87555061235c565b600086815260209020601f19841690835b828110156123335786850135825560209485019460019092019101612313565b50848210156123505760001960f88660031b161c19848701351681555b505060018360011b0186555b50505050602081013560018301555061238461237b6020840184612033565b60028301612099565b6123b461239360408401612168565b600483016001600160401b0382166001600160401b03198254161781555050565b6123c16060830183612053565b6123cf818360058601612175565b50506123e1608083016006830161222e565b6124116123f060c08401612168565b600783016001600160401b0382166001600160401b03198254161781555050565b5050565b6003811061243357634e487b7160e01b600052602160045260246000fd5b9052565b818352600060208085019450848460051b86018460005b878110156124b85783830389528135601e1988360301811261246f57600080fd5b870185810190356001600160401b0381111561248a57600080fd5b80360382131561249957600080fd5b6124a4858284611e2c565b9a87019a945050509084019060010161244e565b5090979650505050505050565b60a0815260006124d960a083018a8c611e2c565b6124e6602084018a612415565b87151560408401528281036060840152612501818789612437565b90508281036080840152612516818587611e2c565b9b9a5050505050505050505050565b813561253081611ba1565b815490151560ff1660ff19919091161781556001808201602061255585820186612053565b6001600160401b0381111561256c5761256c61166c565b61257a816122ce8654611ee3565b6000601f8211600181146125a857600083156125965750838201355b6125a08482611f65565b875550610d5c565b600086815260209020601f19841690835b828110156125d657868501358255938701939089019087016125b9565b50848210156125f35760001960f88660031b161c19848701351681555b50505050841b90930190915550505050565b60006020828403121561261757600080fd5b815161124b81611dfa565b8481526001600160401b038416602082015260c081016040848184013760408360808401376000815295945050505050565b600080835461266281611ee3565b6001828116801561267a576001811461268f576126be565b60ff19841687528215158302870194506126be565b8760005260208060002060005b858110156126b55781548a82015290840190820161269c565b50505082870194505b50929695505050505050565b8183823760009101908152919050565b6001600160a01b038816815260a0602082018190526000906126fe908301896115ed565b61270b6040840189612415565b828103606084015261271e818789612437565b90508281036080840152612733818587611e2c565b9a995050505050505050505056fea26469706673582212200ef9d5280f0e01381476a4f708e0a0ab536a0ddba3f9f6a105557db4b7ed6e3764736f6c634300080f0033"; + "0x600360c0818152620312e360ec1b60e0526080908152610140604052610100918252620322e360ec1b6101205260a09190915262000042906006906002620000f6565b503480156200005057600080fd5b5060405162002b7938038062002b798339810160408190526200007391620001cd565b806200007f33620000a6565b600180546001600160a01b0319166001600160a01b03929092169190911790555062000370565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b82805482825590600052602060002090810192821562000141579160200282015b82811115620001415782518290620001309082620002a4565b509160200191906001019062000117565b506200014f92915062000153565b5090565b808211156200014f5760006200016a828262000174565b5060010162000153565b508054620001829062000215565b6000825580601f1062000193575050565b601f016020900490600052602060002090810190620001b39190620001b6565b50565b5b808211156200014f5760008155600101620001b7565b600060208284031215620001e057600080fd5b81516001600160a01b0381168114620001f857600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200022a57607f821691505b6020821081036200024b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200029f57600081815260208120601f850160051c810160208610156200027a5750805b601f850160051c820191505b818110156200029b5782815560010162000286565b5050505b505050565b81516001600160401b03811115620002c057620002c0620001ff565b620002d881620002d1845462000215565b8462000251565b602080601f831160018114620003105760008415620002f75750858301515b600019600386901b1c1916600185901b1785556200029b565b600085815260208120601f198616915b82811015620003415788860151825594840194600190910190840162000320565b5085821015620003605787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6127f980620003806000396000f3fe6080604052600436106101445760003560e01c8063715018a6116100b6578063bb3f9f8d1161006f578063bb3f9f8d146103b6578063cb7e9057146103e4578063e847e28014610404578063f12b758a14610424578063f2fde38b14610444578063fad28a241461046457600080fd5b8063715018a6146102ef5780637a805598146103045780637a9ccc4b146103245780637d622184146103445780637e1d42b5146103645780638da5cb5b1461038457600080fd5b80634dcc0aa6116101085780634dcc0aa61461021d5780634eeb73911461024a578063558850ac1461027c5780635bfd12b81461029c578063602f9834146102bc57806361995001146102dc57600080fd5b80631eb7dd5e146101505780633513a995146101725780633f9fdbe4146101a25780634252ae9b146101c25780634bdb5597146101f057600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b5061017061016b3660046114d1565b610484565b005b610185610180366004611642565b6104b5565b6040516001600160401b0390911681526020015b60405180910390f35b3480156101ae57600080fd5b506101706101bd3660046114d1565b610555565b3480156101ce57600080fd5b506101e26101dd3660046116c2565b610611565b604051610199929190611728565b3480156101fc57600080fd5b5061021061020b3660046117c9565b6106cd565b6040516101999190611902565b34801561022957600080fd5b5061023d6102383660046119a8565b610712565b6040516101999190611a90565b34801561025657600080fd5b5061026a6102653660046116c2565b6108ed565b60405161019996959493929190611ae0565b34801561028857600080fd5b506101706102973660046116c2565b610b45565b3480156102a857600080fd5b506101856102b7366004611b55565b610ba7565b3480156102c857600080fd5b506101706102d7366004611bcb565b610c2a565b6101706102ea366004611c51565b610c9b565b3480156102fb57600080fd5b50610170610d67565b34801561031057600080fd5b5061017061031f366004611c51565b610d7b565b34801561033057600080fd5b5061021061033f366004611d12565b610dfd565b34801561035057600080fd5b5061021061035f3660046116c2565b610e35565b34801561037057600080fd5b5061017061037f366004611d9c565b610ee1565b34801561039057600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610199565b3480156103c257600080fd5b506103d66103d13660046116c2565b610f4d565b604051908152602001610199565b3480156103f057600080fd5b5060015461039e906001600160a01b031681565b34801561041057600080fd5b5061017061041f366004611e06565b610f6e565b34801561043057600080fd5b5061026a61043f3660046116c2565b610fa4565b34801561045057600080fd5b5061017061045f366004611e6d565b610fb4565b34801561047057600080fd5b5061017061047f3660046116c2565b611032565b6001546001600160a01b031633146104af576040516321bf7f4960e01b815260040160405180910390fd5b50505050565b6001546040516330f8455760e21b81526000916001600160a01b03169063c3e1155c906104ec9088908b908b908a90600401611eb3565b6020604051808303816000875af115801561050b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052f9190611ee7565b60015490915061054b906001600160a01b03168683868661105d565b9695505050505050565b6001546001600160a01b03163314610580576040516321bf7f4960e01b815260040160405180910390fd5b6000805b6005548110156105eb5785600582815481106105a2576105a2611f04565b9060005260206000200154036105d957600581815481106105c5576105c5611f04565b6000918252602082200155600191506105eb565b806105e381611f1a565b915050610584565b508061060a57604051630781f76560e21b815260040160405180910390fd5b5050505050565b6003818154811061062157600080fd5b60009182526020909120600290910201805460018201805460ff90921693509061064a90611f41565b80601f016020809104026020016040519081016040528092919081815260200182805461067690611f41565b80156106c35780601f10610698576101008083540402835291602001916106c3565b820191906000526020600020905b8154815290600101906020018083116106a657829003601f168201915b5050505050905082565b6001546060906001600160a01b031633146106fb576040516321bf7f4960e01b815260040160405180910390fd5b61070686848461112c565b98975050505050505050565b6040805180820190915260008152606060208201526001546001600160a01b03163314610752576040516321bf7f4960e01b815260040160405180910390fd5b600280546001810182556000919091528251805184926008027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0191908290819061079d9082611fd8565b506020918201516001909101558201518051600283019081906107c09082611fd8565b5060209190910151600190910155604082015160048201805467ffffffffffffffff19166001600160401b03909216919091179055606082015160058201906108099082611fd8565b50608082015180516006830180546020938401516001600160401b03908116600160401b026fffffffffffffffffffffffffffffffff199092169381169390931717905560a090930151600790920180549290931667ffffffffffffffff1992909216919091179091556040805180820182526001815290519091828101916108d391017f7b20226163636f756e74223a20226163636f756e74222c20227265706c79223a8152732022676f7420746865206d65737361676522207d60601b602082015260340190565b60405160208183030381529060405281525090505b919050565b600481815481106108fd57600080fd5b90600052602060002090600802016000915090508060000160405180604001604052908160008201805461093090611f41565b80601f016020809104026020016040519081016040528092919081815260200182805461095c90611f41565b80156109a95780601f1061097e576101008083540402835291602001916109a9565b820191906000526020600020905b81548152906001019060200180831161098c57829003601f168201915b5050505050815260200160018201548152505090806002016040518060400160405290816000820180546109dc90611f41565b80601f0160208091040260200160405190810160405280929190818152602001828054610a0890611f41565b8015610a555780601f10610a2a57610100808354040283529160200191610a55565b820191906000526020600020905b815481529060010190602001808311610a3857829003601f168201915b505050918352505060019190910154602090910152600482015460058301805492936001600160401b0390921692610a8c90611f41565b80601f0160208091040260200160405190810160405280929190818152602001828054610ab890611f41565b8015610b055780601f10610ada57610100808354040283529160200191610b05565b820191906000526020600020905b815481529060010190602001808311610ae857829003601f168201915b50506040805180820190915260068601546001600160401b038082168352600160401b909104811660208301526007909601549495909416925088915050565b610b4d611252565b6001546040516381bc079b60e01b8152600481018390526001600160a01b03909116906381bc079b90602401600060405180830381600087803b158015610b9357600080fd5b505af115801561060a573d6000803e3d6000fd5b6001546040516330f8455760e21b81526000916001600160a01b03169063c3e1155c90610bde908690899089908890600401611eb3565b6020604051808303816000875af1158015610bfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c219190611ee7565b95945050505050565b6001546001600160a01b03163314610c55576040516321bf7f4960e01b815260040160405180910390fd5b6004805460018101825560009190915281906008027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01610c9682826122f3565b505050565b610ca3611252565b60015460405163418925b760e01b81526001600160a01b0390911690819063418925b790610ce3908c908c908c908c908c908c908c908c90600401612526565b600060405180830381600087803b158015610cfd57600080fd5b505af1158015610d11573d6000803e3d6000fd5b50505050610d5c818a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92508a915089905088886112ac565b505050505050505050565b610d6f611252565b610d796000611361565b565b610d83611252565b60015460405163418925b760e01b81526001600160a01b039091169063418925b790610dc1908b908b908b908b908b908b908b908b90600401612526565b600060405180830381600087803b158015610ddb57600080fd5b505af1158015610def573d6000803e3d6000fd5b505050505050505050505050565b6001546060906001600160a01b03163314610e2b576040516321bf7f4960e01b815260040160405180910390fd5b61070683836113b1565b60068181548110610e4557600080fd5b906000526020600020016000915090508054610e6090611f41565b80601f0160208091040260200160405190810160405280929190818152602001828054610e8c90611f41565b8015610ed95780601f10610eae57610100808354040283529160200191610ed9565b820191906000526020600020905b815481529060010190602001808311610ebc57829003601f168201915b505050505081565b6001546001600160a01b03163314610f0c576040516321bf7f4960e01b815260040160405180910390fd5b6003805460018101825560009190915281906002027fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b016104af8282612586565b60058181548110610f5d57600080fd5b600091825260209091200154905081565b6001546001600160a01b03163314610f99576040516321bf7f4960e01b815260040160405180910390fd5b61060a84838361112c565b600281815481106108fd57600080fd5b610fbc611252565b6001600160a01b0381166110265760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61102f81611361565b50565b6001546001600160a01b0316331461102f576040516321bf7f4960e01b815260040160405180910390fd5b846001600160a01b031663478222c26040518163ffffffff1660e01b81526004016020604051808303816000875af115801561109d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c19190612666565b6001600160a01b03166318e3404b34868686866040518663ffffffff1660e01b81526004016110f394939291906126a6565b6000604051808303818588803b15801561110c57600080fd5b505af1158015611120573d6000803e3d6000fd5b50505050505050505050565b606060005b600654811015611231576006818154811061114e5761114e611f04565b9060005260206000200160405160200161116891906126d6565b60405160208183030381529060405280519060200120848460405160200161119192919061274c565b604051602081830303815290604052805190602001200361121f57600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db001859055604080516020601f860181900481028201810190925284815290859085908190840183828082843760009201919091525092945061124b9350505050565b8061122981611f1a565b915050611131565b5060405163b01318a560e01b815260040160405180910390fd5b9392505050565b6000546001600160a01b03163314610d795760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161101d565b866001600160a01b031663478222c26040518163ffffffff1660e01b81526004016020604051808303816000875af11580156112ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113109190612666565b6001600160a01b031663fce34e4034308989898989896040518963ffffffff1660e01b8152600401611348979695949392919061275c565b6000604051808303818588803b158015610ddb57600080fd5b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b606060005b60065481101561123157600681815481106113d3576113d3611f04565b906000526020600020016040516020016113ed91906126d6565b60405160208183030381529060405280519060200120848460405160200161141692919061274c565b60405160208183030381529060405280519060200120036114715783838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509294506114839350505050565b8061147b81611f1a565b9150506113b6565b92915050565b60008083601f84011261149b57600080fd5b5081356001600160401b038111156114b257600080fd5b6020830191508360208285010111156114ca57600080fd5b9250929050565b600080600080606085870312156114e757600080fd5b8435935060208501356001600160401b0381111561150457600080fd5b61151087828801611489565b9598909750949560400135949350505050565b6001600160401b038116811461102f57600080fd5b80356108e881611523565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171561157b5761157b611543565b60405290565b60405160c081016001600160401b038111828210171561157b5761157b611543565b604051601f8201601f191681016001600160401b03811182821017156115cb576115cb611543565b604052919050565b600082601f8301126115e457600080fd5b604051604081018181106001600160401b038211171561160657611606611543565b806040525080604084018581111561161d57600080fd5b845b8181101561163757803583526020928301920161161f565b509195945050505050565b60008060008060008060e0878903121561165b57600080fd5b86356001600160401b0381111561167157600080fd5b61167d89828a01611489565b90975095505060208701359350604087013561169881611523565b92506116a788606089016115d3565b91506116b68860a089016115d3565b90509295509295509295565b6000602082840312156116d457600080fd5b5035919050565b6000815180845260005b81811015611701576020818501810151868301820152016116e5565b81811115611713576000602083870101525b50601f01601f19169290920160200192915050565b821515815260406020820152600061174360408301846116db565b949350505050565b8035600381106108e857600080fd5b600082601f83011261176b57600080fd5b81356001600160401b0381111561178457611784611543565b611797601f8201601f19166020016115a3565b8181528460208386010111156117ac57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600060c0888a0312156117e457600080fd5b6117ed8861174b565b965060208801356001600160401b038082111561180957600080fd5b818a0191508a601f83011261181d57600080fd5b81358181111561182f5761182f611543565b8060051b61183f602082016115a3565b9182526020818501810192908101908e84111561185b57600080fd5b6020860192505b8383101561189957848335111561187857600080fd5b6118888f6020853589010161175a565b825260209283019290910190611862565b9a5050505060408a0135965060608a01359150808211156118b957600080fd5b6118c58b838c0161175a565b955060808a0135945060a08a01359150808211156118e257600080fd5b506118ef8a828b01611489565b989b979a50959850939692959293505050565b60208152600061124b60208301846116db565b60006040828403121561192757600080fd5b61192f611559565b905081356001600160401b0381111561194757600080fd5b6119538482850161175a565b8252506020820135602082015292915050565b60006040828403121561197857600080fd5b611980611559565b9050813561198d81611523565b8152602082013561199d81611523565b602082015292915050565b6000602082840312156119ba57600080fd5b81356001600160401b03808211156119d157600080fd5b9083019060e082860312156119e557600080fd5b6119ed611581565b8235828111156119fc57600080fd5b611a0887828601611915565b825250602083013582811115611a1d57600080fd5b611a2987828601611915565b602083015250611a3b60408401611538565b6040820152606083013582811115611a5257600080fd5b611a5e8782860161175a565b606083015250611a718660808501611966565b6080820152611a8260c08401611538565b60a082015295945050505050565b602081528151151560208201526000602083015160408084015261174360608401826116db565b6000815160408452611acc60408501826116db565b602093840151949093019390935250919050565b60e081526000611af360e0830189611ab7565b8281036020840152611b058189611ab7565b90506001600160401b0380881660408501528382036060850152611b2982886116db565b92508086511660808501528060208701511660a085015280851660c08501525050979650505050505050565b60008060008060608587031215611b6b57600080fd5b84356001600160401b03811115611b8157600080fd5b611b8d87828801611489565b909550935050602085013591506040850135611ba881611523565b939692955090935050565b600060e08284031215611bc557600080fd5b50919050565b600060208284031215611bdd57600080fd5b81356001600160401b03811115611bf357600080fd5b61174384828501611bb3565b801515811461102f57600080fd5b60008083601f840112611c1f57600080fd5b5081356001600160401b03811115611c3657600080fd5b6020830191508360208260051b85010111156114ca57600080fd5b60008060008060008060008060a0898b031215611c6d57600080fd5b88356001600160401b0380821115611c8457600080fd5b611c908c838d01611489565b909a509850889150611ca460208c0161174b565b975060408b01359150611cb682611bff565b90955060608a01359080821115611ccc57600080fd5b611cd88c838d01611c0d565b909650945060808b0135915080821115611cf157600080fd5b50611cfe8b828c01611489565b999c989b5096995094979396929594505050565b60008060008060008060006080888a031215611d2d57600080fd5b611d368861174b565b965060208801356001600160401b0380821115611d5257600080fd5b611d5e8b838c01611c0d565b909850965060408a0135915080821115611d7757600080fd5b611d838b838c01611489565b909650945060608a01359150808211156118e257600080fd5b60008060408385031215611daf57600080fd5b82356001600160401b0380821115611dc657600080fd5b611dd286838701611bb3565b93506020850135915080821115611de857600080fd5b50830160408186031215611dfb57600080fd5b809150509250929050565b60008060008060608587031215611e1c57600080fd5b843593506020850135925060408501356001600160401b03811115611e4057600080fd5b611e4c87828801611489565b95989497509550505050565b6001600160a01b038116811461102f57600080fd5b600060208284031215611e7f57600080fd5b813561124b81611e58565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b848152606060208201526000611ecd606083018587611e8a565b90506001600160401b038316604083015295945050505050565b600060208284031215611ef957600080fd5b815161124b81611523565b634e487b7160e01b600052603260045260246000fd5b600060018201611f3a57634e487b7160e01b600052601160045260246000fd5b5060010190565b600181811c90821680611f5557607f821691505b602082108103611bc557634e487b7160e01b600052602260045260246000fd5b601f821115610c9657600081815260208120601f850160051c81016020861015611f9c5750805b601f850160051c820191505b81811015611fbb57828155600101611fa8565b505050505050565b600019600383901b1c191660019190911b1790565b81516001600160401b03811115611ff157611ff1611543565b61200581611fff8454611f41565b84611f75565b602080601f83116001811461203457600084156120225750858301515b61202c8582611fc3565b865550611fbb565b600085815260208120601f198616915b8281101561206357888601518255948401946001909101908401612044565b50858210156120815787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008235603e198336030181126120a757600080fd5b9190910192915050565b6000808335601e198436030181126120c857600080fd5b8301803591506001600160401b038211156120e257600080fd5b6020019150368190038213156114ca57600080fd5b61210182836120b1565b6001600160401b0381111561211857612118611543565b61212c816121268554611f41565b85611f75565b6000601f82116001811461215a57600083156121485750838201355b6121528482611fc3565b8655506121b4565b600085815260209020601f19841690835b8281101561218b578685013582556020948501946001909201910161216b565b50848210156121a85760001960f88660031b161c19848701351681555b505060018360011b0185555b50505050602082013560018201555050565b6000813561148381611523565b6001600160401b038311156121ea576121ea611543565b6121fe836121f88354611f41565b83611f75565b6000601f84116001811461222c576000851561221a5750838201355b6122248682611fc3565b84555061060a565b600083815260209020601f19861690835b8281101561225d578685013582556020948501946001909201910161223d565b508682101561227a5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b813561229781611523565b815467ffffffffffffffff19166001600160401b0382161782555060208201356122c081611523565b81546fffffffffffffffff0000000000000000191660409190911b6fffffffffffffffff00000000000000001617905550565b6122fd8283612091565b61230781826120b1565b6001600160401b0381111561231e5761231e611543565b6123328161232c8654611f41565b86611f75565b6000601f821160018114612360576000831561234e5750838201355b6123588482611fc3565b8755506123ba565b600086815260209020601f19841690835b828110156123915786850135825560209485019460019092019101612371565b50848210156123ae5760001960f88660031b161c19848701351681555b505060018360011b0186555b5050505060208101356001830155506123e26123d96020840184612091565b600283016120f7565b6124126123f1604084016121c6565b600483016001600160401b0382166001600160401b03198254161781555050565b61241f60608301836120b1565b61242d8183600586016121d3565b505061243f608083016006830161228c565b61246f61244e60c084016121c6565b600783016001600160401b0382166001600160401b03198254161781555050565b5050565b6003811061249157634e487b7160e01b600052602160045260246000fd5b9052565b81835260006020808501808196508560051b810191508460005b878110156125195782840389528135601e198836030181126124d057600080fd5b870185810190356001600160401b038111156124eb57600080fd5b8036038213156124fa57600080fd5b612505868284611e8a565b9a87019a95505050908401906001016124af565b5091979650505050505050565b60a08152600061253a60a083018a8c611e8a565b612547602084018a612473565b87151560408401528281036060840152612562818789612495565b90508281036080840152612577818587611e8a565b9b9a5050505050505050505050565b813561259181611bff565b815490151560ff1660ff1991909116178155600180820160206125b6858201866120b1565b6001600160401b038111156125cd576125cd611543565b6125db8161232c8654611f41565b6000601f82116001811461260957600083156125f75750838201355b6126018482611fc3565b875550610d5c565b600086815260209020601f19841690835b82811015612637578685013582559387019390890190870161261a565b50848210156126545760001960f88660031b161c19848701351681555b50505050841b90930190915550505050565b60006020828403121561267857600080fd5b815161124b81611e58565b8060005b60028110156104af578151845260209384019390910190600101612687565b8481526001600160401b038416602082015260c081016126c96040830185612683565b610c216080830184612683565b60008083546126e481611f41565b600182811680156126fc576001811461271157612740565b60ff1984168752821515830287019450612740565b8760005260208060002060005b858110156127375781548a82015290840190820161271e565b50505082870194505b50929695505050505050565b8183823760009101908152919050565b6001600160a01b038816815260a060208201819052600090612780908301896116db565b61278d6040840189612473565b82810360608401526127a0818789612495565b905082810360808401526127b5818587611e8a565b9a995050505050505050505056fea2646970667358221220a83027bc52e51dd4f118219f4e532b535c229a0def9e977f95653c84ccf7415364736f6c634300080f0033"; type MarsConstructorParams = | [signer?: Signer] diff --git a/src/evm/contracts/factories/Mars.sol/PanickingMars__factory.ts b/src/evm/contracts/factories/Mars.sol/PanickingMars__factory.ts index a8a1b1a4..195ed0ef 100644 --- a/src/evm/contracts/factories/Mars.sol/PanickingMars__factory.ts +++ b/src/evm/contracts/factories/Mars.sol/PanickingMars__factory.ts @@ -925,7 +925,7 @@ const _abi = [ ] as const; const _bytecode = - "0x600360c0818152620312e360ec1b60e0526080908152610140604052610100918252620322e360ec1b6101205260a09190915262000042906006906002620000f9565b503480156200005057600080fd5b50604051620028f8380380620028f88339810160408190526200007391620001d0565b80806200008033620000a9565b600180546001600160a01b0319166001600160a01b039290921691909117905550620003739050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b82805482825590600052602060002090810192821562000144579160200282015b82811115620001445782518290620001339082620002a7565b50916020019190600101906200011a565b506200015292915062000156565b5090565b80821115620001525760006200016d828262000177565b5060010162000156565b508054620001859062000218565b6000825580601f1062000196575050565b601f016020900490600052602060002090810190620001b69190620001b9565b50565b5b80821115620001525760008155600101620001ba565b600060208284031215620001e357600080fd5b81516001600160a01b0381168114620001fb57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200022d57607f821691505b6020821081036200024e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002a257600081815260208120601f850160051c810160208610156200027d5750805b601f850160051c820191505b818110156200029e5782815560010162000289565b5050505b505050565b81516001600160401b03811115620002c357620002c362000202565b620002db81620002d4845462000218565b8462000254565b602080601f831160018114620003135760008415620002fa5750858301515b600019600386901b1c1916600185901b1785556200029e565b600085815260208120601f198616915b82811015620003445788860151825594840194600190910190840162000323565b5085821015620003635787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61257580620003836000396000f3fe6080604052600436106101445760003560e01c8063715018a6116100b6578063bb3f9f8d1161006f578063bb3f9f8d146103b6578063cb7e9057146103e4578063e847e28014610404578063f12b758a14610424578063f2fde38b14610444578063fad28a241461046457600080fd5b8063715018a6146102ef5780637a805598146103045780637a9ccc4b146103245780637d622184146103445780637e1d42b5146103645780638da5cb5b1461038457600080fd5b80634dcc0aa6116101085780634dcc0aa61461021d5780634eeb73911461024a578063558850ac1461027c5780635bfd12b81461029c578063602f9834146102bc57806361995001146102dc57600080fd5b80631eb7dd5e146101505780633513a995146101725780633f9fdbe4146101a25780634252ae9b146101c25780634bdb5597146101f057600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b5061017061016b36600461136a565b610484565b005b6101856101803660046113f2565b6104b5565b6040516001600160401b0390911681526020015b60405180910390f35b3480156101ae57600080fd5b506101706101bd36600461136a565b610555565b3480156101ce57600080fd5b506101e26101dd366004611472565b610611565b6040516101999291906114d8565b3480156101fc57600080fd5b5061021061020b366004611609565b6106cd565b6040516101999190611742565b34801561022957600080fd5b5061023d6102383660046117e8565b610712565b60405161019991906118d0565b34801561025657600080fd5b5061026a610265366004611472565b610781565b60405161019996959493929190611920565b34801561028857600080fd5b50610170610297366004611472565b6109de565b3480156102a857600080fd5b506101856102b7366004611995565b610a40565b3480156102c857600080fd5b506101706102d7366004611a0b565b610ac3565b6101706102ea366004611a91565b610b34565b3480156102fb57600080fd5b50610170610c00565b34801561031057600080fd5b5061017061031f366004611a91565b610c14565b34801561033057600080fd5b5061021061033f366004611b52565b610c96565b34801561035057600080fd5b5061021061035f366004611472565b610cce565b34801561037057600080fd5b5061017061037f366004611bdc565b610d7a565b34801561039057600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610199565b3480156103c257600080fd5b506103d66103d1366004611472565b610de6565b604051908152602001610199565b3480156103f057600080fd5b5060015461039e906001600160a01b031681565b34801561041057600080fd5b5061017061041f366004611c46565b610e07565b34801561043057600080fd5b5061026a61043f366004611472565b610e3d565b34801561045057600080fd5b5061017061045f366004611cad565b610e4d565b34801561047057600080fd5b5061017061047f366004611472565b610ecb565b6001546001600160a01b031633146104af576040516321bf7f4960e01b815260040160405180910390fd5b50505050565b6001546040516330f8455760e21b81526000916001600160a01b03169063c3e1155c906104ec9088908b908b908a90600401611cf3565b6020604051808303816000875af115801561050b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052f9190611d27565b60015490915061054b906001600160a01b031686838686610ef6565b9695505050505050565b6001546001600160a01b03163314610580576040516321bf7f4960e01b815260040160405180910390fd5b6000805b6005548110156105eb5785600582815481106105a2576105a2611d44565b9060005260206000200154036105d957600581815481106105c5576105c5611d44565b6000918252602082200155600191506105eb565b806105e381611d5a565b915050610584565b508061060a57604051630781f76560e21b815260040160405180910390fd5b5050505050565b6003818154811061062157600080fd5b60009182526020909120600290910201805460018201805460ff90921693509061064a90611d81565b80601f016020809104026020016040519081016040528092919081815260200182805461067690611d81565b80156106c35780601f10610698576101008083540402835291602001916106c3565b820191906000526020600020905b8154815290600101906020018083116106a657829003601f168201915b5050505050905082565b6001546060906001600160a01b031633146106fb576040516321bf7f4960e01b815260040160405180910390fd5b610706868484610fc5565b98975050505050505050565b6040805180820190915260008152606060208201526001546001600160a01b03163314610752576040516321bf7f4960e01b815260040160405180910390fd5b61075a611db5565b50506040805180820182526000808252825160208181019094529081529181019190915290565b6004818154811061079157600080fd5b9060005260206000209060080201600091509050806000016040518060400160405290816000820180546107c490611d81565b80601f01602080910402602001604051908101604052809291908181526020018280546107f090611d81565b801561083d5780601f106108125761010080835404028352916020019161083d565b820191906000526020600020905b81548152906001019060200180831161082057829003601f168201915b50505050508152602001600182015481525050908060020160405180604001604052908160008201805461087090611d81565b80601f016020809104026020016040519081016040528092919081815260200182805461089c90611d81565b80156108e95780601f106108be576101008083540402835291602001916108e9565b820191906000526020600020905b8154815290600101906020018083116108cc57829003601f168201915b505050918352505060019190910154602090910152600482015460058301805492936001600160401b039092169261092090611d81565b80601f016020809104026020016040519081016040528092919081815260200182805461094c90611d81565b80156109995780601f1061096e57610100808354040283529160200191610999565b820191906000526020600020905b81548152906001019060200180831161097c57829003601f168201915b50506040805180820190915260068601546001600160401b03808216835268010000000000000000909104811660208301526007909601549495909416925088915050565b6109e66110eb565b6001546040516381bc079b60e01b8152600481018390526001600160a01b03909116906381bc079b90602401600060405180830381600087803b158015610a2c57600080fd5b505af115801561060a573d6000803e3d6000fd5b6001546040516330f8455760e21b81526000916001600160a01b03169063c3e1155c90610a77908690899089908890600401611cf3565b6020604051808303816000875af1158015610a96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aba9190611d27565b95945050505050565b6001546001600160a01b03163314610aee576040516321bf7f4960e01b815260040160405180910390fd5b6004805460018101825560009190915281906008027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01610b2f8282612090565b505050565b610b3c6110eb565b60015460405163418925b760e01b81526001600160a01b0390911690819063418925b790610b7c908c908c908c908c908c908c908c908c906004016122c3565b600060405180830381600087803b158015610b9657600080fd5b505af1158015610baa573d6000803e3d6000fd5b50505050610bf5818a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92508a91508990508888611145565b505050505050505050565b610c086110eb565b610c1260006111fa565b565b610c1c6110eb565b60015460405163418925b760e01b81526001600160a01b039091169063418925b790610c5a908b908b908b908b908b908b908b908b906004016122c3565b600060405180830381600087803b158015610c7457600080fd5b505af1158015610c88573d6000803e3d6000fd5b505050505050505050505050565b6001546060906001600160a01b03163314610cc4576040516321bf7f4960e01b815260040160405180910390fd5b610706838361124a565b60068181548110610cde57600080fd5b906000526020600020016000915090508054610cf990611d81565b80601f0160208091040260200160405190810160405280929190818152602001828054610d2590611d81565b8015610d725780601f10610d4757610100808354040283529160200191610d72565b820191906000526020600020905b815481529060010190602001808311610d5557829003601f168201915b505050505081565b6001546001600160a01b03163314610da5576040516321bf7f4960e01b815260040160405180910390fd5b6003805460018101825560009190915281906002027fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b016104af8282612323565b60058181548110610df657600080fd5b600091825260209091200154905081565b6001546001600160a01b03163314610e32576040516321bf7f4960e01b815260040160405180910390fd5b61060a848383610fc5565b6002818154811061079157600080fd5b610e556110eb565b6001600160a01b038116610ebf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b610ec8816111fa565b50565b6001546001600160a01b03163314610ec8576040516321bf7f4960e01b815260040160405180910390fd5b846001600160a01b031663478222c26040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610f36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5a9190612403565b6001600160a01b03166318e3404b34868686866040518663ffffffff1660e01b8152600401610f8c9493929190612420565b6000604051808303818588803b158015610fa557600080fd5b505af1158015610fb9573d6000803e3d6000fd5b50505050505050505050565b606060005b6006548110156110ca5760068181548110610fe757610fe7611d44565b906000526020600020016040516020016110019190612452565b60405160208183030381529060405280519060200120848460405160200161102a9291906124c8565b60405160208183030381529060405280519060200120036110b857600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db001859055604080516020601f86018190048102820181019092528481529085908590819084018382808284376000920191909152509294506110e49350505050565b806110c281611d5a565b915050610fca565b5060405163b01318a560e01b815260040160405180910390fd5b9392505050565b6000546001600160a01b03163314610c125760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610eb6565b866001600160a01b031663478222c26040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611185573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a99190612403565b6001600160a01b031663fce34e4034308989898989896040518963ffffffff1660e01b81526004016111e197969594939291906124d8565b6000604051808303818588803b158015610c7457600080fd5b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b606060005b6006548110156110ca576006818154811061126c5761126c611d44565b906000526020600020016040516020016112869190612452565b6040516020818303038152906040528051906020012084846040516020016112af9291906124c8565b604051602081830303815290604052805190602001200361130a5783838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092945061131c9350505050565b8061131481611d5a565b91505061124f565b92915050565b60008083601f84011261133457600080fd5b5081356001600160401b0381111561134b57600080fd5b60208301915083602082850101111561136357600080fd5b9250929050565b6000806000806060858703121561138057600080fd5b8435935060208501356001600160401b0381111561139d57600080fd5b6113a987828801611322565b9598909750949560400135949350505050565b6001600160401b0381168114610ec857600080fd5b80356113dc816113bc565b919050565b806040810183101561131c57600080fd5b60008060008060008060e0878903121561140b57600080fd5b86356001600160401b0381111561142157600080fd5b61142d89828a01611322565b909750955050602087013593506040870135611448816113bc565b925061145788606089016113e1565b91506114668860a089016113e1565b90509295509295509295565b60006020828403121561148457600080fd5b5035919050565b6000815180845260005b818110156114b157602081850181015186830182015201611495565b818111156114c3576000602083870101525b50601f01601f19169290920160200192915050565b82151581526040602082015260006114f3604083018461148b565b949350505050565b8035600381106113dc57600080fd5b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156115425761154261150a565b60405290565b60405160c081016001600160401b03811182821017156115425761154261150a565b604051601f8201601f191681016001600160401b03811182821017156115925761159261150a565b604052919050565b600082601f8301126115ab57600080fd5b81356001600160401b038111156115c4576115c461150a565b6115d7601f8201601f191660200161156a565b8181528460208386010111156115ec57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600060c0888a03121561162457600080fd5b61162d886114fb565b965060208801356001600160401b038082111561164957600080fd5b818a0191508a601f83011261165d57600080fd5b81358181111561166f5761166f61150a565b8060051b61167f6020820161156a565b9182526020818501810192908101908e84111561169b57600080fd5b6020860192505b838310156116d95784833511156116b857600080fd5b6116c88f6020853589010161159a565b8252602092830192909101906116a2565b9a5050505060408a0135965060608a01359150808211156116f957600080fd5b6117058b838c0161159a565b955060808a0135945060a08a013591508082111561172257600080fd5b5061172f8a828b01611322565b989b979a50959850939692959293505050565b6020815260006110e4602083018461148b565b60006040828403121561176757600080fd5b61176f611520565b905081356001600160401b0381111561178757600080fd5b6117938482850161159a565b8252506020820135602082015292915050565b6000604082840312156117b857600080fd5b6117c0611520565b905081356117cd816113bc565b815260208201356117dd816113bc565b602082015292915050565b6000602082840312156117fa57600080fd5b81356001600160401b038082111561181157600080fd5b9083019060e0828603121561182557600080fd5b61182d611548565b82358281111561183c57600080fd5b61184887828601611755565b82525060208301358281111561185d57600080fd5b61186987828601611755565b60208301525061187b604084016113d1565b604082015260608301358281111561189257600080fd5b61189e8782860161159a565b6060830152506118b186608085016117a6565b60808201526118c260c084016113d1565b60a082015295945050505050565b60208152815115156020820152600060208301516040808401526114f3606084018261148b565b600081516040845261190c604085018261148b565b602093840151949093019390935250919050565b60e08152600061193360e08301896118f7565b828103602084015261194581896118f7565b90506001600160401b0380881660408501528382036060850152611969828861148b565b92508086511660808501528060208701511660a085015280851660c08501525050979650505050505050565b600080600080606085870312156119ab57600080fd5b84356001600160401b038111156119c157600080fd5b6119cd87828801611322565b9095509350506020850135915060408501356119e8816113bc565b939692955090935050565b600060e08284031215611a0557600080fd5b50919050565b600060208284031215611a1d57600080fd5b81356001600160401b03811115611a3357600080fd5b6114f3848285016119f3565b8015158114610ec857600080fd5b60008083601f840112611a5f57600080fd5b5081356001600160401b03811115611a7657600080fd5b6020830191508360208260051b850101111561136357600080fd5b60008060008060008060008060a0898b031215611aad57600080fd5b88356001600160401b0380821115611ac457600080fd5b611ad08c838d01611322565b909a509850889150611ae460208c016114fb565b975060408b01359150611af682611a3f565b90955060608a01359080821115611b0c57600080fd5b611b188c838d01611a4d565b909650945060808b0135915080821115611b3157600080fd5b50611b3e8b828c01611322565b999c989b5096995094979396929594505050565b60008060008060008060006080888a031215611b6d57600080fd5b611b76886114fb565b965060208801356001600160401b0380821115611b9257600080fd5b611b9e8b838c01611a4d565b909850965060408a0135915080821115611bb757600080fd5b611bc38b838c01611322565b909650945060608a013591508082111561172257600080fd5b60008060408385031215611bef57600080fd5b82356001600160401b0380821115611c0657600080fd5b611c12868387016119f3565b93506020850135915080821115611c2857600080fd5b50830160408186031215611c3b57600080fd5b809150509250929050565b60008060008060608587031215611c5c57600080fd5b843593506020850135925060408501356001600160401b03811115611c8057600080fd5b611c8c87828801611322565b95989497509550505050565b6001600160a01b0381168114610ec857600080fd5b600060208284031215611cbf57600080fd5b81356110e481611c98565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b848152606060208201526000611d0d606083018587611cca565b90506001600160401b038316604083015295945050505050565b600060208284031215611d3957600080fd5b81516110e4816113bc565b634e487b7160e01b600052603260045260246000fd5b600060018201611d7a57634e487b7160e01b600052601160045260246000fd5b5060010190565b600181811c90821680611d9557607f821691505b602082108103611a0557634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052600160045260246000fd5b60008235603e19833603018112611de157600080fd5b9190910192915050565b6000808335601e19843603018112611e0257600080fd5b8301803591506001600160401b03821115611e1c57600080fd5b60200191503681900382131561136357600080fd5b601f821115610b2f57600081815260208120601f850160051c81016020861015611e585750805b601f850160051c820191505b81811015611e7757828155600101611e64565b505050505050565b600019600383901b1c191660019190911b1790565b611e9e8283611deb565b6001600160401b03811115611eb557611eb561150a565b611ec981611ec38554611d81565b85611e31565b6000601f821160018114611ef75760008315611ee55750838201355b611eef8482611e7f565b865550611f51565b600085815260209020601f19841690835b82811015611f285786850135825560209485019460019092019101611f08565b5084821015611f455760001960f88660031b161c19848701351681555b505060018360011b0185555b50505050602082013560018201555050565b6000813561131c816113bc565b6001600160401b03831115611f8757611f8761150a565b611f9b83611f958354611d81565b83611e31565b6000601f841160018114611fc95760008515611fb75750838201355b611fc18682611e7f565b84555061060a565b600083815260209020601f19861690835b82811015611ffa5786850135825560209485019460019092019101611fda565b50868210156120175760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b8135612034816113bc565b815467ffffffffffffffff19166001600160401b03821617825550602082013561205d816113bc565b81546fffffffffffffffff0000000000000000191660409190911b6fffffffffffffffff00000000000000001617905550565b61209a8283611dcb565b6120a48182611deb565b6001600160401b038111156120bb576120bb61150a565b6120cf816120c98654611d81565b86611e31565b6000601f8211600181146120fd57600083156120eb5750838201355b6120f58482611e7f565b875550612157565b600086815260209020601f19841690835b8281101561212e578685013582556020948501946001909201910161210e565b508482101561214b5760001960f88660031b161c19848701351681555b505060018360011b0186555b50505050602081013560018301555061217f6121766020840184611dcb565b60028301611e94565b6121af61218e60408401611f63565b600483016001600160401b0382166001600160401b03198254161781555050565b6121bc6060830183611deb565b6121ca818360058601611f70565b50506121dc6080830160068301612029565b61220c6121eb60c08401611f63565b600783016001600160401b0382166001600160401b03198254161781555050565b5050565b6003811061222e57634e487b7160e01b600052602160045260246000fd5b9052565b81835260006020808501808196508560051b810191508460005b878110156122b65782840389528135601e1988360301811261226d57600080fd5b870185810190356001600160401b0381111561228857600080fd5b80360382131561229757600080fd5b6122a2868284611cca565b9a87019a955050509084019060010161224c565b5091979650505050505050565b60a0815260006122d760a083018a8c611cca565b6122e4602084018a612210565b871515604084015282810360608401526122ff818789612232565b90508281036080840152612314818587611cca565b9b9a5050505050505050505050565b813561232e81611a3f565b815490151560ff1660ff19919091161781556001808201602061235385820186611deb565b6001600160401b0381111561236a5761236a61150a565b612378816120c98654611d81565b6000601f8211600181146123a657600083156123945750838201355b61239e8482611e7f565b875550610bf5565b600086815260209020601f19841690835b828110156123d457868501358255938701939089019087016123b7565b50848210156123f15760001960f88660031b161c19848701351681555b50505050841b90930190915550505050565b60006020828403121561241557600080fd5b81516110e481611c98565b8481526001600160401b038416602082015260c081016040848184013760408360808401376000815295945050505050565b600080835461246081611d81565b60018281168015612478576001811461248d576124bc565b60ff19841687528215158302870194506124bc565b8760005260208060002060005b858110156124b35781548a82015290840190820161249a565b50505082870194505b50929695505050505050565b8183823760009101908152919050565b6001600160a01b038816815260a0602082018190526000906124fc9083018961148b565b6125096040840189612210565b828103606084015261251c818789612232565b90508281036080840152612531818587611cca565b9a995050505050505050505056fea26469706673582212204999db0f285376658639c179c37ce8516894dc584908583647a594cc0f03066264736f6c634300080f0033"; + "0x600360c0818152620312e360ec1b60e0526080908152610140604052610100918252620322e360ec1b6101205260a09190915262000042906006906002620000f9565b503480156200005057600080fd5b5060405162002977380380620029778339810160408190526200007391620001d0565b80806200008033620000a9565b600180546001600160a01b0319166001600160a01b039290921691909117905550620003739050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b82805482825590600052602060002090810192821562000144579160200282015b82811115620001445782518290620001339082620002a7565b50916020019190600101906200011a565b506200015292915062000156565b5090565b80821115620001525760006200016d828262000177565b5060010162000156565b508054620001859062000218565b6000825580601f1062000196575050565b601f016020900490600052602060002090810190620001b69190620001b9565b50565b5b80821115620001525760008155600101620001ba565b600060208284031215620001e357600080fd5b81516001600160a01b0381168114620001fb57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200022d57607f821691505b6020821081036200024e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002a257600081815260208120601f850160051c810160208610156200027d5750805b601f850160051c820191505b818110156200029e5782815560010162000289565b5050505b505050565b81516001600160401b03811115620002c357620002c362000202565b620002db81620002d4845462000218565b8462000254565b602080601f831160018114620003135760008415620002fa5750858301515b600019600386901b1c1916600185901b1785556200029e565b600085815260208120601f198616915b82811015620003445788860151825594840194600190910190840162000323565b5085821015620003635787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6125f480620003836000396000f3fe6080604052600436106101445760003560e01c8063715018a6116100b6578063bb3f9f8d1161006f578063bb3f9f8d146103b6578063cb7e9057146103e4578063e847e28014610404578063f12b758a14610424578063f2fde38b14610444578063fad28a241461046457600080fd5b8063715018a6146102ef5780637a805598146103045780637a9ccc4b146103245780637d622184146103445780637e1d42b5146103645780638da5cb5b1461038457600080fd5b80634dcc0aa6116101085780634dcc0aa61461021d5780634eeb73911461024a578063558850ac1461027c5780635bfd12b81461029c578063602f9834146102bc57806361995001146102dc57600080fd5b80631eb7dd5e146101505780633513a995146101725780633f9fdbe4146101a25780634252ae9b146101c25780634bdb5597146101f057600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b5061017061016b36600461136a565b610484565b005b6101856101803660046114e0565b6104b5565b6040516001600160401b0390911681526020015b60405180910390f35b3480156101ae57600080fd5b506101706101bd36600461136a565b610555565b3480156101ce57600080fd5b506101e26101dd366004611560565b610611565b6040516101999291906115c6565b3480156101fc57600080fd5b5061021061020b366004611667565b6106cd565b60405161019991906117a0565b34801561022957600080fd5b5061023d610238366004611846565b610712565b604051610199919061192e565b34801561025657600080fd5b5061026a610265366004611560565b610781565b6040516101999695949392919061197e565b34801561028857600080fd5b50610170610297366004611560565b6109de565b3480156102a857600080fd5b506101856102b73660046119f3565b610a40565b3480156102c857600080fd5b506101706102d7366004611a69565b610ac3565b6101706102ea366004611aef565b610b34565b3480156102fb57600080fd5b50610170610c00565b34801561031057600080fd5b5061017061031f366004611aef565b610c14565b34801561033057600080fd5b5061021061033f366004611bb0565b610c96565b34801561035057600080fd5b5061021061035f366004611560565b610cce565b34801561037057600080fd5b5061017061037f366004611c3a565b610d7a565b34801561039057600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610199565b3480156103c257600080fd5b506103d66103d1366004611560565b610de6565b604051908152602001610199565b3480156103f057600080fd5b5060015461039e906001600160a01b031681565b34801561041057600080fd5b5061017061041f366004611ca4565b610e07565b34801561043057600080fd5b5061026a61043f366004611560565b610e3d565b34801561045057600080fd5b5061017061045f366004611d0b565b610e4d565b34801561047057600080fd5b5061017061047f366004611560565b610ecb565b6001546001600160a01b031633146104af576040516321bf7f4960e01b815260040160405180910390fd5b50505050565b6001546040516330f8455760e21b81526000916001600160a01b03169063c3e1155c906104ec9088908b908b908a90600401611d51565b6020604051808303816000875af115801561050b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052f9190611d85565b60015490915061054b906001600160a01b031686838686610ef6565b9695505050505050565b6001546001600160a01b03163314610580576040516321bf7f4960e01b815260040160405180910390fd5b6000805b6005548110156105eb5785600582815481106105a2576105a2611da2565b9060005260206000200154036105d957600581815481106105c5576105c5611da2565b6000918252602082200155600191506105eb565b806105e381611db8565b915050610584565b508061060a57604051630781f76560e21b815260040160405180910390fd5b5050505050565b6003818154811061062157600080fd5b60009182526020909120600290910201805460018201805460ff90921693509061064a90611ddf565b80601f016020809104026020016040519081016040528092919081815260200182805461067690611ddf565b80156106c35780601f10610698576101008083540402835291602001916106c3565b820191906000526020600020905b8154815290600101906020018083116106a657829003601f168201915b5050505050905082565b6001546060906001600160a01b031633146106fb576040516321bf7f4960e01b815260040160405180910390fd5b610706868484610fc5565b98975050505050505050565b6040805180820190915260008152606060208201526001546001600160a01b03163314610752576040516321bf7f4960e01b815260040160405180910390fd5b61075a611e13565b50506040805180820182526000808252825160208181019094529081529181019190915290565b6004818154811061079157600080fd5b9060005260206000209060080201600091509050806000016040518060400160405290816000820180546107c490611ddf565b80601f01602080910402602001604051908101604052809291908181526020018280546107f090611ddf565b801561083d5780601f106108125761010080835404028352916020019161083d565b820191906000526020600020905b81548152906001019060200180831161082057829003601f168201915b50505050508152602001600182015481525050908060020160405180604001604052908160008201805461087090611ddf565b80601f016020809104026020016040519081016040528092919081815260200182805461089c90611ddf565b80156108e95780601f106108be576101008083540402835291602001916108e9565b820191906000526020600020905b8154815290600101906020018083116108cc57829003601f168201915b505050918352505060019190910154602090910152600482015460058301805492936001600160401b039092169261092090611ddf565b80601f016020809104026020016040519081016040528092919081815260200182805461094c90611ddf565b80156109995780601f1061096e57610100808354040283529160200191610999565b820191906000526020600020905b81548152906001019060200180831161097c57829003601f168201915b50506040805180820190915260068601546001600160401b03808216835268010000000000000000909104811660208301526007909601549495909416925088915050565b6109e66110eb565b6001546040516381bc079b60e01b8152600481018390526001600160a01b03909116906381bc079b90602401600060405180830381600087803b158015610a2c57600080fd5b505af115801561060a573d6000803e3d6000fd5b6001546040516330f8455760e21b81526000916001600160a01b03169063c3e1155c90610a77908690899089908890600401611d51565b6020604051808303816000875af1158015610a96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aba9190611d85565b95945050505050565b6001546001600160a01b03163314610aee576040516321bf7f4960e01b815260040160405180910390fd5b6004805460018101825560009190915281906008027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01610b2f82826120ee565b505050565b610b3c6110eb565b60015460405163418925b760e01b81526001600160a01b0390911690819063418925b790610b7c908c908c908c908c908c908c908c908c90600401612321565b600060405180830381600087803b158015610b9657600080fd5b505af1158015610baa573d6000803e3d6000fd5b50505050610bf5818a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92508a91508990508888611145565b505050505050505050565b610c086110eb565b610c1260006111fa565b565b610c1c6110eb565b60015460405163418925b760e01b81526001600160a01b039091169063418925b790610c5a908b908b908b908b908b908b908b908b90600401612321565b600060405180830381600087803b158015610c7457600080fd5b505af1158015610c88573d6000803e3d6000fd5b505050505050505050505050565b6001546060906001600160a01b03163314610cc4576040516321bf7f4960e01b815260040160405180910390fd5b610706838361124a565b60068181548110610cde57600080fd5b906000526020600020016000915090508054610cf990611ddf565b80601f0160208091040260200160405190810160405280929190818152602001828054610d2590611ddf565b8015610d725780601f10610d4757610100808354040283529160200191610d72565b820191906000526020600020905b815481529060010190602001808311610d5557829003601f168201915b505050505081565b6001546001600160a01b03163314610da5576040516321bf7f4960e01b815260040160405180910390fd5b6003805460018101825560009190915281906002027fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b016104af8282612381565b60058181548110610df657600080fd5b600091825260209091200154905081565b6001546001600160a01b03163314610e32576040516321bf7f4960e01b815260040160405180910390fd5b61060a848383610fc5565b6002818154811061079157600080fd5b610e556110eb565b6001600160a01b038116610ebf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b610ec8816111fa565b50565b6001546001600160a01b03163314610ec8576040516321bf7f4960e01b815260040160405180910390fd5b846001600160a01b031663478222c26040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610f36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5a9190612461565b6001600160a01b03166318e3404b34868686866040518663ffffffff1660e01b8152600401610f8c94939291906124a1565b6000604051808303818588803b158015610fa557600080fd5b505af1158015610fb9573d6000803e3d6000fd5b50505050505050505050565b606060005b6006548110156110ca5760068181548110610fe757610fe7611da2565b9060005260206000200160405160200161100191906124d1565b60405160208183030381529060405280519060200120848460405160200161102a929190612547565b60405160208183030381529060405280519060200120036110b857600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db001859055604080516020601f86018190048102820181019092528481529085908590819084018382808284376000920191909152509294506110e49350505050565b806110c281611db8565b915050610fca565b5060405163b01318a560e01b815260040160405180910390fd5b9392505050565b6000546001600160a01b03163314610c125760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610eb6565b866001600160a01b031663478222c26040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611185573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a99190612461565b6001600160a01b031663fce34e4034308989898989896040518963ffffffff1660e01b81526004016111e19796959493929190612557565b6000604051808303818588803b158015610c7457600080fd5b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b606060005b6006548110156110ca576006818154811061126c5761126c611da2565b9060005260206000200160405160200161128691906124d1565b6040516020818303038152906040528051906020012084846040516020016112af929190612547565b604051602081830303815290604052805190602001200361130a5783838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092945061131c9350505050565b8061131481611db8565b91505061124f565b92915050565b60008083601f84011261133457600080fd5b5081356001600160401b0381111561134b57600080fd5b60208301915083602082850101111561136357600080fd5b9250929050565b6000806000806060858703121561138057600080fd5b8435935060208501356001600160401b0381111561139d57600080fd5b6113a987828801611322565b9598909750949560400135949350505050565b6001600160401b0381168114610ec857600080fd5b80356113dc816113bc565b919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715611419576114196113e1565b60405290565b60405160c081016001600160401b0381118282101715611419576114196113e1565b604051601f8201601f191681016001600160401b0381118282101715611469576114696113e1565b604052919050565b600082601f83011261148257600080fd5b604051604081018181106001600160401b03821117156114a4576114a46113e1565b80604052508060408401858111156114bb57600080fd5b845b818110156114d55780358352602092830192016114bd565b509195945050505050565b60008060008060008060e087890312156114f957600080fd5b86356001600160401b0381111561150f57600080fd5b61151b89828a01611322565b909750955050602087013593506040870135611536816113bc565b92506115458860608901611471565b91506115548860a08901611471565b90509295509295509295565b60006020828403121561157257600080fd5b5035919050565b6000815180845260005b8181101561159f57602081850181015186830182015201611583565b818111156115b1576000602083870101525b50601f01601f19169290920160200192915050565b82151581526040602082015260006115e16040830184611579565b949350505050565b8035600381106113dc57600080fd5b600082601f83011261160957600080fd5b81356001600160401b03811115611622576116226113e1565b611635601f8201601f1916602001611441565b81815284602083860101111561164a57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600060c0888a03121561168257600080fd5b61168b886115e9565b965060208801356001600160401b03808211156116a757600080fd5b818a0191508a601f8301126116bb57600080fd5b8135818111156116cd576116cd6113e1565b8060051b6116dd60208201611441565b9182526020818501810192908101908e8411156116f957600080fd5b6020860192505b8383101561173757848335111561171657600080fd5b6117268f602085358901016115f8565b825260209283019290910190611700565b9a5050505060408a0135965060608a013591508082111561175757600080fd5b6117638b838c016115f8565b955060808a0135945060a08a013591508082111561178057600080fd5b5061178d8a828b01611322565b989b979a50959850939692959293505050565b6020815260006110e46020830184611579565b6000604082840312156117c557600080fd5b6117cd6113f7565b905081356001600160401b038111156117e557600080fd5b6117f1848285016115f8565b8252506020820135602082015292915050565b60006040828403121561181657600080fd5b61181e6113f7565b9050813561182b816113bc565b8152602082013561183b816113bc565b602082015292915050565b60006020828403121561185857600080fd5b81356001600160401b038082111561186f57600080fd5b9083019060e0828603121561188357600080fd5b61188b61141f565b82358281111561189a57600080fd5b6118a6878286016117b3565b8252506020830135828111156118bb57600080fd5b6118c7878286016117b3565b6020830152506118d9604084016113d1565b60408201526060830135828111156118f057600080fd5b6118fc878286016115f8565b60608301525061190f8660808501611804565b608082015261192060c084016113d1565b60a082015295945050505050565b60208152815115156020820152600060208301516040808401526115e16060840182611579565b600081516040845261196a6040850182611579565b602093840151949093019390935250919050565b60e08152600061199160e0830189611955565b82810360208401526119a38189611955565b90506001600160401b03808816604085015283820360608501526119c78288611579565b92508086511660808501528060208701511660a085015280851660c08501525050979650505050505050565b60008060008060608587031215611a0957600080fd5b84356001600160401b03811115611a1f57600080fd5b611a2b87828801611322565b909550935050602085013591506040850135611a46816113bc565b939692955090935050565b600060e08284031215611a6357600080fd5b50919050565b600060208284031215611a7b57600080fd5b81356001600160401b03811115611a9157600080fd5b6115e184828501611a51565b8015158114610ec857600080fd5b60008083601f840112611abd57600080fd5b5081356001600160401b03811115611ad457600080fd5b6020830191508360208260051b850101111561136357600080fd5b60008060008060008060008060a0898b031215611b0b57600080fd5b88356001600160401b0380821115611b2257600080fd5b611b2e8c838d01611322565b909a509850889150611b4260208c016115e9565b975060408b01359150611b5482611a9d565b90955060608a01359080821115611b6a57600080fd5b611b768c838d01611aab565b909650945060808b0135915080821115611b8f57600080fd5b50611b9c8b828c01611322565b999c989b5096995094979396929594505050565b60008060008060008060006080888a031215611bcb57600080fd5b611bd4886115e9565b965060208801356001600160401b0380821115611bf057600080fd5b611bfc8b838c01611aab565b909850965060408a0135915080821115611c1557600080fd5b611c218b838c01611322565b909650945060608a013591508082111561178057600080fd5b60008060408385031215611c4d57600080fd5b82356001600160401b0380821115611c6457600080fd5b611c7086838701611a51565b93506020850135915080821115611c8657600080fd5b50830160408186031215611c9957600080fd5b809150509250929050565b60008060008060608587031215611cba57600080fd5b843593506020850135925060408501356001600160401b03811115611cde57600080fd5b611cea87828801611322565b95989497509550505050565b6001600160a01b0381168114610ec857600080fd5b600060208284031215611d1d57600080fd5b81356110e481611cf6565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b848152606060208201526000611d6b606083018587611d28565b90506001600160401b038316604083015295945050505050565b600060208284031215611d9757600080fd5b81516110e4816113bc565b634e487b7160e01b600052603260045260246000fd5b600060018201611dd857634e487b7160e01b600052601160045260246000fd5b5060010190565b600181811c90821680611df357607f821691505b602082108103611a6357634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052600160045260246000fd5b60008235603e19833603018112611e3f57600080fd5b9190910192915050565b6000808335601e19843603018112611e6057600080fd5b8301803591506001600160401b03821115611e7a57600080fd5b60200191503681900382131561136357600080fd5b601f821115610b2f57600081815260208120601f850160051c81016020861015611eb65750805b601f850160051c820191505b81811015611ed557828155600101611ec2565b505050505050565b600019600383901b1c191660019190911b1790565b611efc8283611e49565b6001600160401b03811115611f1357611f136113e1565b611f2781611f218554611ddf565b85611e8f565b6000601f821160018114611f555760008315611f435750838201355b611f4d8482611edd565b865550611faf565b600085815260209020601f19841690835b82811015611f865786850135825560209485019460019092019101611f66565b5084821015611fa35760001960f88660031b161c19848701351681555b505060018360011b0185555b50505050602082013560018201555050565b6000813561131c816113bc565b6001600160401b03831115611fe557611fe56113e1565b611ff983611ff38354611ddf565b83611e8f565b6000601f84116001811461202757600085156120155750838201355b61201f8682611edd565b84555061060a565b600083815260209020601f19861690835b828110156120585786850135825560209485019460019092019101612038565b50868210156120755760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b8135612092816113bc565b815467ffffffffffffffff19166001600160401b0382161782555060208201356120bb816113bc565b81546fffffffffffffffff0000000000000000191660409190911b6fffffffffffffffff00000000000000001617905550565b6120f88283611e29565b6121028182611e49565b6001600160401b03811115612119576121196113e1565b61212d816121278654611ddf565b86611e8f565b6000601f82116001811461215b57600083156121495750838201355b6121538482611edd565b8755506121b5565b600086815260209020601f19841690835b8281101561218c578685013582556020948501946001909201910161216c565b50848210156121a95760001960f88660031b161c19848701351681555b505060018360011b0186555b5050505060208101356001830155506121dd6121d46020840184611e29565b60028301611ef2565b61220d6121ec60408401611fc1565b600483016001600160401b0382166001600160401b03198254161781555050565b61221a6060830183611e49565b612228818360058601611fce565b505061223a6080830160068301612087565b61226a61224960c08401611fc1565b600783016001600160401b0382166001600160401b03198254161781555050565b5050565b6003811061228c57634e487b7160e01b600052602160045260246000fd5b9052565b81835260006020808501808196508560051b810191508460005b878110156123145782840389528135601e198836030181126122cb57600080fd5b870185810190356001600160401b038111156122e657600080fd5b8036038213156122f557600080fd5b612300868284611d28565b9a87019a95505050908401906001016122aa565b5091979650505050505050565b60a08152600061233560a083018a8c611d28565b612342602084018a61226e565b8715156040840152828103606084015261235d818789612290565b90508281036080840152612372818587611d28565b9b9a5050505050505050505050565b813561238c81611a9d565b815490151560ff1660ff1991909116178155600180820160206123b185820186611e49565b6001600160401b038111156123c8576123c86113e1565b6123d6816121278654611ddf565b6000601f82116001811461240457600083156123f25750838201355b6123fc8482611edd565b875550610bf5565b600086815260209020601f19841690835b828110156124325786850135825593870193908901908701612415565b508482101561244f5760001960f88660031b161c19848701351681555b50505050841b90930190915550505050565b60006020828403121561247357600080fd5b81516110e481611cf6565b8060005b60028110156104af578151845260209384019390910190600101612482565b8481526001600160401b038416602082015260c081016124c4604083018561247e565b610aba608083018461247e565b60008083546124df81611ddf565b600182811680156124f7576001811461250c5761253b565b60ff198416875282151583028701945061253b565b8760005260208060002060005b858110156125325781548a820152908401908201612519565b50505082870194505b50929695505050505050565b8183823760009101908152919050565b6001600160a01b038816815260a06020820181905260009061257b90830189611579565b612588604084018961226e565b828103606084015261259b818789612290565b905082810360808401526125b0818587611d28565b9a995050505050505050505056fea264697066735822122085531053468e9bb0b4326d9630968c963eaf2f7c872c86d17088db39b8ba5afb64736f6c634300080f0033"; type PanickingMarsConstructorParams = | [signer?: Signer] diff --git a/src/evm/contracts/factories/Mars.sol/RevertingBytesMars__factory.ts b/src/evm/contracts/factories/Mars.sol/RevertingBytesMars__factory.ts index 0d32d469..85d6894b 100644 --- a/src/evm/contracts/factories/Mars.sol/RevertingBytesMars__factory.ts +++ b/src/evm/contracts/factories/Mars.sol/RevertingBytesMars__factory.ts @@ -935,7 +935,7 @@ const _abi = [ ] as const; const _bytecode = - "0x600360c0818152620312e360ec1b60e0526080908152610140604052610100918252620322e360ec1b6101205260a09190915262000042906006906002620000f9565b503480156200005057600080fd5b50604051620024f7380380620024f78339810160408190526200007391620001d0565b80806200008033620000a9565b600180546001600160a01b0319166001600160a01b039290921691909117905550620003739050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b82805482825590600052602060002090810192821562000144579160200282015b82811115620001445782518290620001339082620002a7565b50916020019190600101906200011a565b506200015292915062000156565b5090565b80821115620001525760006200016d828262000177565b5060010162000156565b508054620001859062000218565b6000825580601f1062000196575050565b601f016020900490600052602060002090810190620001b69190620001b9565b50565b5b80821115620001525760008155600101620001ba565b600060208284031215620001e357600080fd5b81516001600160a01b0381168114620001fb57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200022d57607f821691505b6020821081036200024e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002a257600081815260208120601f850160051c810160208610156200027d5750805b601f850160051c820191505b818110156200029e5782815560010162000289565b5050505b505050565b81516001600160401b03811115620002c357620002c362000202565b620002db81620002d4845462000218565b8462000254565b602080601f831160018114620003135760008415620002fa5750858301515b600019600386901b1c1916600185901b1785556200029e565b600085815260208120601f198616915b82811015620003445788860151825594840194600190910190840162000323565b5085821015620003635787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61217480620003836000396000f3fe6080604052600436106101445760003560e01c8063715018a6116100b6578063bb3f9f8d1161006f578063bb3f9f8d146103b6578063cb7e9057146103e4578063e847e28014610404578063f12b758a14610424578063f2fde38b14610444578063fad28a241461046457600080fd5b8063715018a6146102ef5780637a805598146103045780637a9ccc4b146103245780637d622184146103445780637e1d42b5146103645780638da5cb5b1461038457600080fd5b80634dcc0aa6116101085780634dcc0aa61461021d5780634eeb73911461024a578063558850ac1461027c5780635bfd12b81461029c578063602f9834146102bc57806361995001146102dc57600080fd5b80631eb7dd5e146101505780633513a995146101725780633f9fdbe4146101a25780634252ae9b146101c25780634bdb5597146101f057600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b5061017061016b366004611346565b610484565b005b6101856101803660046113ce565b6104b5565b6040516001600160401b0390911681526020015b60405180910390f35b3480156101ae57600080fd5b506101706101bd366004611346565b610555565b3480156101ce57600080fd5b506101e26101dd36600461144e565b610611565b6040516101999291906114b4565b3480156101fc57600080fd5b5061021061020b3660046115e5565b6106cd565b604051610199919061171e565b34801561022957600080fd5b5061023d6102383660046117c4565b610712565b60405161019991906118ac565b34801561025657600080fd5b5061026a61026536600461144e565b61078a565b604051610199969594939291906118fc565b34801561028857600080fd5b5061017061029736600461144e565b6109e7565b3480156102a857600080fd5b506101856102b7366004611971565b610a49565b3480156102c857600080fd5b506101706102d73660046119e7565b610acc565b6101706102ea366004611a6d565b610b10565b3480156102fb57600080fd5b50610170610bdc565b34801561031057600080fd5b5061017061031f366004611a6d565b610bf0565b34801561033057600080fd5b5061021061033f366004611b2e565b610c72565b34801561035057600080fd5b5061021061035f36600461144e565b610caa565b34801561037057600080fd5b5061017061037f366004611bb8565b610d56565b34801561039057600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610199565b3480156103c257600080fd5b506103d66103d136600461144e565b610dc2565b604051908152602001610199565b3480156103f057600080fd5b5060015461039e906001600160a01b031681565b34801561041057600080fd5b5061017061041f366004611c22565b610de3565b34801561043057600080fd5b5061026a61043f36600461144e565b610e19565b34801561045057600080fd5b5061017061045f366004611c89565b610e29565b34801561047057600080fd5b5061017061047f36600461144e565b610ea7565b6001546001600160a01b031633146104af576040516321bf7f4960e01b815260040160405180910390fd5b50505050565b6001546040516330f8455760e21b81526000916001600160a01b03169063c3e1155c906104ec9088908b908b908a90600401611ccf565b6020604051808303816000875af115801561050b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052f9190611d03565b60015490915061054b906001600160a01b031686838686610ed2565b9695505050505050565b6001546001600160a01b03163314610580576040516321bf7f4960e01b815260040160405180910390fd5b6000805b6005548110156105eb5785600582815481106105a2576105a2611d20565b9060005260206000200154036105d957600581815481106105c5576105c5611d20565b6000918252602082200155600191506105eb565b806105e381611d36565b915050610584565b508061060a57604051630781f76560e21b815260040160405180910390fd5b5050505050565b6003818154811061062157600080fd5b60009182526020909120600290910201805460018201805460ff90921693509061064a90611d5d565b80601f016020809104026020016040519081016040528092919081815260200182805461067690611d5d565b80156106c35780601f10610698576101008083540402835291602001916106c3565b820191906000526020600020905b8154815290600101906020018083116106a657829003601f168201915b5050505050905082565b6001546060906001600160a01b031633146106fb576040516321bf7f4960e01b815260040160405180910390fd5b610706868484610fa1565b98975050505050505050565b6040805180820190915260008152606060208201526001546001600160a01b03163314610752576040516321bf7f4960e01b815260040160405180910390fd5b506040805180820182526000808252825160208181018552918152908201528151639889d82160e01b81529151909181900360040190fd5b6004818154811061079a57600080fd5b9060005260206000209060080201600091509050806000016040518060400160405290816000820180546107cd90611d5d565b80601f01602080910402602001604051908101604052809291908181526020018280546107f990611d5d565b80156108465780601f1061081b57610100808354040283529160200191610846565b820191906000526020600020905b81548152906001019060200180831161082957829003601f168201915b50505050508152602001600182015481525050908060020160405180604001604052908160008201805461087990611d5d565b80601f01602080910402602001604051908101604052809291908181526020018280546108a590611d5d565b80156108f25780601f106108c7576101008083540402835291602001916108f2565b820191906000526020600020905b8154815290600101906020018083116108d557829003601f168201915b505050918352505060019190910154602090910152600482015460058301805492936001600160401b039092169261092990611d5d565b80601f016020809104026020016040519081016040528092919081815260200182805461095590611d5d565b80156109a25780601f10610977576101008083540402835291602001916109a2565b820191906000526020600020905b81548152906001019060200180831161098557829003601f168201915b50506040805180820190915260068601546001600160401b03808216835268010000000000000000909104811660208301526007909601549495909416925088915050565b6109ef6110c7565b6001546040516381bc079b60e01b8152600481018390526001600160a01b03909116906381bc079b90602401600060405180830381600087803b158015610a3557600080fd5b505af115801561060a573d6000803e3d6000fd5b6001546040516330f8455760e21b81526000916001600160a01b03169063c3e1155c90610a80908690899089908890600401611ccf565b6020604051808303816000875af1158015610a9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac39190611d03565b95945050505050565b6001546001600160a01b03163314610af7576040516321bf7f4960e01b815260040160405180910390fd5b604051631021bb3b60e31b815260040160405180910390fd5b610b186110c7565b60015460405163418925b760e01b81526001600160a01b0390911690819063418925b790610b58908c908c908c908c908c908c908c908c90600401611e44565b600060405180830381600087803b158015610b7257600080fd5b505af1158015610b86573d6000803e3d6000fd5b50505050610bd1818a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92508a91508990508888611121565b505050505050505050565b610be46110c7565b610bee60006111d6565b565b610bf86110c7565b60015460405163418925b760e01b81526001600160a01b039091169063418925b790610c36908b908b908b908b908b908b908b908b90600401611e44565b600060405180830381600087803b158015610c5057600080fd5b505af1158015610c64573d6000803e3d6000fd5b505050505050505050505050565b6001546060906001600160a01b03163314610ca0576040516321bf7f4960e01b815260040160405180910390fd5b6107068383611226565b60068181548110610cba57600080fd5b906000526020600020016000915090508054610cd590611d5d565b80601f0160208091040260200160405190810160405280929190818152602001828054610d0190611d5d565b8015610d4e5780601f10610d2357610100808354040283529160200191610d4e565b820191906000526020600020905b815481529060010190602001808311610d3157829003601f168201915b505050505081565b6001546001600160a01b03163314610d81576040516321bf7f4960e01b815260040160405180910390fd5b6003805460018101825560009190915281906002027fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b016104af8282611ef3565b60058181548110610dd257600080fd5b600091825260209091200154905081565b6001546001600160a01b03163314610e0e576040516321bf7f4960e01b815260040160405180910390fd5b61060a848383610fa1565b6002818154811061079a57600080fd5b610e316110c7565b6001600160a01b038116610e9b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b610ea4816111d6565b50565b6001546001600160a01b03163314610ea4576040516321bf7f4960e01b815260040160405180910390fd5b846001600160a01b031663478222c26040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610f12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f369190612002565b6001600160a01b03166318e3404b34868686866040518663ffffffff1660e01b8152600401610f68949392919061201f565b6000604051808303818588803b158015610f8157600080fd5b505af1158015610f95573d6000803e3d6000fd5b50505050505050505050565b606060005b6006548110156110a65760068181548110610fc357610fc3611d20565b90600052602060002001604051602001610fdd9190612051565b6040516020818303038152906040528051906020012084846040516020016110069291906120c7565b604051602081830303815290604052805190602001200361109457600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db001859055604080516020601f86018190048102820181019092528481529085908590819084018382808284376000920191909152509294506110c09350505050565b8061109e81611d36565b915050610fa6565b5060405163b01318a560e01b815260040160405180910390fd5b9392505050565b6000546001600160a01b03163314610bee5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e92565b866001600160a01b031663478222c26040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611161573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111859190612002565b6001600160a01b031663fce34e4034308989898989896040518963ffffffff1660e01b81526004016111bd97969594939291906120d7565b6000604051808303818588803b158015610c5057600080fd5b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b606060005b6006548110156110a6576006818154811061124857611248611d20565b906000526020600020016040516020016112629190612051565b60405160208183030381529060405280519060200120848460405160200161128b9291906120c7565b60405160208183030381529060405280519060200120036112e65783838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509294506112f89350505050565b806112f081611d36565b91505061122b565b92915050565b60008083601f84011261131057600080fd5b5081356001600160401b0381111561132757600080fd5b60208301915083602082850101111561133f57600080fd5b9250929050565b6000806000806060858703121561135c57600080fd5b8435935060208501356001600160401b0381111561137957600080fd5b611385878288016112fe565b9598909750949560400135949350505050565b6001600160401b0381168114610ea457600080fd5b80356113b881611398565b919050565b80604081018310156112f857600080fd5b60008060008060008060e087890312156113e757600080fd5b86356001600160401b038111156113fd57600080fd5b61140989828a016112fe565b90975095505060208701359350604087013561142481611398565b925061143388606089016113bd565b91506114428860a089016113bd565b90509295509295509295565b60006020828403121561146057600080fd5b5035919050565b6000815180845260005b8181101561148d57602081850181015186830182015201611471565b8181111561149f576000602083870101525b50601f01601f19169290920160200192915050565b82151581526040602082015260006114cf6040830184611467565b949350505050565b8035600381106113b857600080fd5b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171561151e5761151e6114e6565b60405290565b60405160c081016001600160401b038111828210171561151e5761151e6114e6565b604051601f8201601f191681016001600160401b038111828210171561156e5761156e6114e6565b604052919050565b600082601f83011261158757600080fd5b81356001600160401b038111156115a0576115a06114e6565b6115b3601f8201601f1916602001611546565b8181528460208386010111156115c857600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600060c0888a03121561160057600080fd5b611609886114d7565b965060208801356001600160401b038082111561162557600080fd5b818a0191508a601f83011261163957600080fd5b81358181111561164b5761164b6114e6565b8060051b61165b60208201611546565b9182526020818501810192908101908e84111561167757600080fd5b6020860192505b838310156116b557848335111561169457600080fd5b6116a48f60208535890101611576565b82526020928301929091019061167e565b9a5050505060408a0135965060608a01359150808211156116d557600080fd5b6116e18b838c01611576565b955060808a0135945060a08a01359150808211156116fe57600080fd5b5061170b8a828b016112fe565b989b979a50959850939692959293505050565b6020815260006110c06020830184611467565b60006040828403121561174357600080fd5b61174b6114fc565b905081356001600160401b0381111561176357600080fd5b61176f84828501611576565b8252506020820135602082015292915050565b60006040828403121561179457600080fd5b61179c6114fc565b905081356117a981611398565b815260208201356117b981611398565b602082015292915050565b6000602082840312156117d657600080fd5b81356001600160401b03808211156117ed57600080fd5b9083019060e0828603121561180157600080fd5b611809611524565b82358281111561181857600080fd5b61182487828601611731565b82525060208301358281111561183957600080fd5b61184587828601611731565b602083015250611857604084016113ad565b604082015260608301358281111561186e57600080fd5b61187a87828601611576565b60608301525061188d8660808501611782565b608082015261189e60c084016113ad565b60a082015295945050505050565b60208152815115156020820152600060208301516040808401526114cf6060840182611467565b60008151604084526118e86040850182611467565b602093840151949093019390935250919050565b60e08152600061190f60e08301896118d3565b828103602084015261192181896118d3565b90506001600160401b03808816604085015283820360608501526119458288611467565b92508086511660808501528060208701511660a085015280851660c08501525050979650505050505050565b6000806000806060858703121561198757600080fd5b84356001600160401b0381111561199d57600080fd5b6119a9878288016112fe565b9095509350506020850135915060408501356119c481611398565b939692955090935050565b600060e082840312156119e157600080fd5b50919050565b6000602082840312156119f957600080fd5b81356001600160401b03811115611a0f57600080fd5b6114cf848285016119cf565b8015158114610ea457600080fd5b60008083601f840112611a3b57600080fd5b5081356001600160401b03811115611a5257600080fd5b6020830191508360208260051b850101111561133f57600080fd5b60008060008060008060008060a0898b031215611a8957600080fd5b88356001600160401b0380821115611aa057600080fd5b611aac8c838d016112fe565b909a509850889150611ac060208c016114d7565b975060408b01359150611ad282611a1b565b90955060608a01359080821115611ae857600080fd5b611af48c838d01611a29565b909650945060808b0135915080821115611b0d57600080fd5b50611b1a8b828c016112fe565b999c989b5096995094979396929594505050565b60008060008060008060006080888a031215611b4957600080fd5b611b52886114d7565b965060208801356001600160401b0380821115611b6e57600080fd5b611b7a8b838c01611a29565b909850965060408a0135915080821115611b9357600080fd5b611b9f8b838c016112fe565b909650945060608a01359150808211156116fe57600080fd5b60008060408385031215611bcb57600080fd5b82356001600160401b0380821115611be257600080fd5b611bee868387016119cf565b93506020850135915080821115611c0457600080fd5b50830160408186031215611c1757600080fd5b809150509250929050565b60008060008060608587031215611c3857600080fd5b843593506020850135925060408501356001600160401b03811115611c5c57600080fd5b611c68878288016112fe565b95989497509550505050565b6001600160a01b0381168114610ea457600080fd5b600060208284031215611c9b57600080fd5b81356110c081611c74565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b848152606060208201526000611ce9606083018587611ca6565b90506001600160401b038316604083015295945050505050565b600060208284031215611d1557600080fd5b81516110c081611398565b634e487b7160e01b600052603260045260246000fd5b600060018201611d5657634e487b7160e01b600052601160045260246000fd5b5060010190565b600181811c90821680611d7157607f821691505b6020821081036119e157634e487b7160e01b600052602260045260246000fd5b60038110611daf57634e487b7160e01b600052602160045260246000fd5b9052565b81835260006020808501808196508560051b810191508460005b87811015611e375782840389528135601e19883603018112611dee57600080fd5b870185810190356001600160401b03811115611e0957600080fd5b803603821315611e1857600080fd5b611e23868284611ca6565b9a87019a9550505090840190600101611dcd565b5091979650505050505050565b60a081526000611e5860a083018a8c611ca6565b611e65602084018a611d91565b87151560408401528281036060840152611e80818789611db3565b90508281036080840152611e95818587611ca6565b9b9a5050505050505050505050565b601f821115611eee57600081815260208120601f850160051c81016020861015611ecb5750805b601f850160051c820191505b81811015611eea57828155600101611ed7565b5050505b505050565b8135611efe81611a1b565b815490151560ff1660ff1991909116178155600180820160208481013536869003601e19018112611f2e57600080fd5b850180356001600160401b03811115611f4657600080fd5b8036038383011315611f5757600080fd5b611f6b81611f658654611d5d565b86611ea4565b6000601f821160018114611fa15760008315611f8957508382018501355b600019600385901b1c1916600184901b178655610bd1565b600086815260209020601f19841690835b82811015611fd157868501880135825593870193908901908701611fb2565b5084821015611ff05760001960f88660031b161c198785880101351681555b50505050841b90930190915550505050565b60006020828403121561201457600080fd5b81516110c081611c74565b8481526001600160401b038416602082015260c081016040848184013760408360808401376000815295945050505050565b600080835461205f81611d5d565b60018281168015612077576001811461208c576120bb565b60ff19841687528215158302870194506120bb565b8760005260208060002060005b858110156120b25781548a820152908401908201612099565b50505082870194505b50929695505050505050565b8183823760009101908152919050565b6001600160a01b038816815260a0602082018190526000906120fb90830189611467565b6121086040840189611d91565b828103606084015261211b818789611db3565b90508281036080840152612130818587611ca6565b9a995050505050505050505056fea2646970667358221220a1105588291b51f31614e414dba34d8f8402eec18e32984d043b3aa52bce787564736f6c634300080f0033"; + "0x600360c0818152620312e360ec1b60e0526080908152610140604052610100918252620322e360ec1b6101205260a09190915262000042906006906002620000f9565b503480156200005057600080fd5b5060405162002576380380620025768339810160408190526200007391620001d0565b80806200008033620000a9565b600180546001600160a01b0319166001600160a01b039290921691909117905550620003739050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b82805482825590600052602060002090810192821562000144579160200282015b82811115620001445782518290620001339082620002a7565b50916020019190600101906200011a565b506200015292915062000156565b5090565b80821115620001525760006200016d828262000177565b5060010162000156565b508054620001859062000218565b6000825580601f1062000196575050565b601f016020900490600052602060002090810190620001b69190620001b9565b50565b5b80821115620001525760008155600101620001ba565b600060208284031215620001e357600080fd5b81516001600160a01b0381168114620001fb57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200022d57607f821691505b6020821081036200024e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002a257600081815260208120601f850160051c810160208610156200027d5750805b601f850160051c820191505b818110156200029e5782815560010162000289565b5050505b505050565b81516001600160401b03811115620002c357620002c362000202565b620002db81620002d4845462000218565b8462000254565b602080601f831160018114620003135760008415620002fa5750858301515b600019600386901b1c1916600185901b1785556200029e565b600085815260208120601f198616915b82811015620003445788860151825594840194600190910190840162000323565b5085821015620003635787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6121f380620003836000396000f3fe6080604052600436106101445760003560e01c8063715018a6116100b6578063bb3f9f8d1161006f578063bb3f9f8d146103b6578063cb7e9057146103e4578063e847e28014610404578063f12b758a14610424578063f2fde38b14610444578063fad28a241461046457600080fd5b8063715018a6146102ef5780637a805598146103045780637a9ccc4b146103245780637d622184146103445780637e1d42b5146103645780638da5cb5b1461038457600080fd5b80634dcc0aa6116101085780634dcc0aa61461021d5780634eeb73911461024a578063558850ac1461027c5780635bfd12b81461029c578063602f9834146102bc57806361995001146102dc57600080fd5b80631eb7dd5e146101505780633513a995146101725780633f9fdbe4146101a25780634252ae9b146101c25780634bdb5597146101f057600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b5061017061016b366004611346565b610484565b005b6101856101803660046114bc565b6104b5565b6040516001600160401b0390911681526020015b60405180910390f35b3480156101ae57600080fd5b506101706101bd366004611346565b610555565b3480156101ce57600080fd5b506101e26101dd36600461153c565b610611565b6040516101999291906115a2565b3480156101fc57600080fd5b5061021061020b366004611643565b6106cd565b604051610199919061177c565b34801561022957600080fd5b5061023d610238366004611822565b610712565b604051610199919061190a565b34801561025657600080fd5b5061026a61026536600461153c565b61078a565b6040516101999695949392919061195a565b34801561028857600080fd5b5061017061029736600461153c565b6109e7565b3480156102a857600080fd5b506101856102b73660046119cf565b610a49565b3480156102c857600080fd5b506101706102d7366004611a45565b610acc565b6101706102ea366004611acb565b610b10565b3480156102fb57600080fd5b50610170610bdc565b34801561031057600080fd5b5061017061031f366004611acb565b610bf0565b34801561033057600080fd5b5061021061033f366004611b8c565b610c72565b34801561035057600080fd5b5061021061035f36600461153c565b610caa565b34801561037057600080fd5b5061017061037f366004611c16565b610d56565b34801561039057600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610199565b3480156103c257600080fd5b506103d66103d136600461153c565b610dc2565b604051908152602001610199565b3480156103f057600080fd5b5060015461039e906001600160a01b031681565b34801561041057600080fd5b5061017061041f366004611c80565b610de3565b34801561043057600080fd5b5061026a61043f36600461153c565b610e19565b34801561045057600080fd5b5061017061045f366004611ce7565b610e29565b34801561047057600080fd5b5061017061047f36600461153c565b610ea7565b6001546001600160a01b031633146104af576040516321bf7f4960e01b815260040160405180910390fd5b50505050565b6001546040516330f8455760e21b81526000916001600160a01b03169063c3e1155c906104ec9088908b908b908a90600401611d2d565b6020604051808303816000875af115801561050b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052f9190611d61565b60015490915061054b906001600160a01b031686838686610ed2565b9695505050505050565b6001546001600160a01b03163314610580576040516321bf7f4960e01b815260040160405180910390fd5b6000805b6005548110156105eb5785600582815481106105a2576105a2611d7e565b9060005260206000200154036105d957600581815481106105c5576105c5611d7e565b6000918252602082200155600191506105eb565b806105e381611d94565b915050610584565b508061060a57604051630781f76560e21b815260040160405180910390fd5b5050505050565b6003818154811061062157600080fd5b60009182526020909120600290910201805460018201805460ff90921693509061064a90611dbb565b80601f016020809104026020016040519081016040528092919081815260200182805461067690611dbb565b80156106c35780601f10610698576101008083540402835291602001916106c3565b820191906000526020600020905b8154815290600101906020018083116106a657829003601f168201915b5050505050905082565b6001546060906001600160a01b031633146106fb576040516321bf7f4960e01b815260040160405180910390fd5b610706868484610fa1565b98975050505050505050565b6040805180820190915260008152606060208201526001546001600160a01b03163314610752576040516321bf7f4960e01b815260040160405180910390fd5b506040805180820182526000808252825160208181018552918152908201528151639889d82160e01b81529151909181900360040190fd5b6004818154811061079a57600080fd5b9060005260206000209060080201600091509050806000016040518060400160405290816000820180546107cd90611dbb565b80601f01602080910402602001604051908101604052809291908181526020018280546107f990611dbb565b80156108465780601f1061081b57610100808354040283529160200191610846565b820191906000526020600020905b81548152906001019060200180831161082957829003601f168201915b50505050508152602001600182015481525050908060020160405180604001604052908160008201805461087990611dbb565b80601f01602080910402602001604051908101604052809291908181526020018280546108a590611dbb565b80156108f25780601f106108c7576101008083540402835291602001916108f2565b820191906000526020600020905b8154815290600101906020018083116108d557829003601f168201915b505050918352505060019190910154602090910152600482015460058301805492936001600160401b039092169261092990611dbb565b80601f016020809104026020016040519081016040528092919081815260200182805461095590611dbb565b80156109a25780601f10610977576101008083540402835291602001916109a2565b820191906000526020600020905b81548152906001019060200180831161098557829003601f168201915b50506040805180820190915260068601546001600160401b03808216835268010000000000000000909104811660208301526007909601549495909416925088915050565b6109ef6110c7565b6001546040516381bc079b60e01b8152600481018390526001600160a01b03909116906381bc079b90602401600060405180830381600087803b158015610a3557600080fd5b505af115801561060a573d6000803e3d6000fd5b6001546040516330f8455760e21b81526000916001600160a01b03169063c3e1155c90610a80908690899089908890600401611d2d565b6020604051808303816000875af1158015610a9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac39190611d61565b95945050505050565b6001546001600160a01b03163314610af7576040516321bf7f4960e01b815260040160405180910390fd5b604051631021bb3b60e31b815260040160405180910390fd5b610b186110c7565b60015460405163418925b760e01b81526001600160a01b0390911690819063418925b790610b58908c908c908c908c908c908c908c908c90600401611ea2565b600060405180830381600087803b158015610b7257600080fd5b505af1158015610b86573d6000803e3d6000fd5b50505050610bd1818a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92508a91508990508888611121565b505050505050505050565b610be46110c7565b610bee60006111d6565b565b610bf86110c7565b60015460405163418925b760e01b81526001600160a01b039091169063418925b790610c36908b908b908b908b908b908b908b908b90600401611ea2565b600060405180830381600087803b158015610c5057600080fd5b505af1158015610c64573d6000803e3d6000fd5b505050505050505050505050565b6001546060906001600160a01b03163314610ca0576040516321bf7f4960e01b815260040160405180910390fd5b6107068383611226565b60068181548110610cba57600080fd5b906000526020600020016000915090508054610cd590611dbb565b80601f0160208091040260200160405190810160405280929190818152602001828054610d0190611dbb565b8015610d4e5780601f10610d2357610100808354040283529160200191610d4e565b820191906000526020600020905b815481529060010190602001808311610d3157829003601f168201915b505050505081565b6001546001600160a01b03163314610d81576040516321bf7f4960e01b815260040160405180910390fd5b6003805460018101825560009190915281906002027fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b016104af8282611f51565b60058181548110610dd257600080fd5b600091825260209091200154905081565b6001546001600160a01b03163314610e0e576040516321bf7f4960e01b815260040160405180910390fd5b61060a848383610fa1565b6002818154811061079a57600080fd5b610e316110c7565b6001600160a01b038116610e9b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b610ea4816111d6565b50565b6001546001600160a01b03163314610ea4576040516321bf7f4960e01b815260040160405180910390fd5b846001600160a01b031663478222c26040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610f12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f369190612060565b6001600160a01b03166318e3404b34868686866040518663ffffffff1660e01b8152600401610f6894939291906120a0565b6000604051808303818588803b158015610f8157600080fd5b505af1158015610f95573d6000803e3d6000fd5b50505050505050505050565b606060005b6006548110156110a65760068181548110610fc357610fc3611d7e565b90600052602060002001604051602001610fdd91906120d0565b604051602081830303815290604052805190602001208484604051602001611006929190612146565b604051602081830303815290604052805190602001200361109457600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db001859055604080516020601f86018190048102820181019092528481529085908590819084018382808284376000920191909152509294506110c09350505050565b8061109e81611d94565b915050610fa6565b5060405163b01318a560e01b815260040160405180910390fd5b9392505050565b6000546001600160a01b03163314610bee5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e92565b866001600160a01b031663478222c26040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611161573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111859190612060565b6001600160a01b031663fce34e4034308989898989896040518963ffffffff1660e01b81526004016111bd9796959493929190612156565b6000604051808303818588803b158015610c5057600080fd5b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b606060005b6006548110156110a6576006818154811061124857611248611d7e565b9060005260206000200160405160200161126291906120d0565b60405160208183030381529060405280519060200120848460405160200161128b929190612146565b60405160208183030381529060405280519060200120036112e65783838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509294506112f89350505050565b806112f081611d94565b91505061122b565b92915050565b60008083601f84011261131057600080fd5b5081356001600160401b0381111561132757600080fd5b60208301915083602082850101111561133f57600080fd5b9250929050565b6000806000806060858703121561135c57600080fd5b8435935060208501356001600160401b0381111561137957600080fd5b611385878288016112fe565b9598909750949560400135949350505050565b6001600160401b0381168114610ea457600080fd5b80356113b881611398565b919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156113f5576113f56113bd565b60405290565b60405160c081016001600160401b03811182821017156113f5576113f56113bd565b604051601f8201601f191681016001600160401b0381118282101715611445576114456113bd565b604052919050565b600082601f83011261145e57600080fd5b604051604081018181106001600160401b0382111715611480576114806113bd565b806040525080604084018581111561149757600080fd5b845b818110156114b1578035835260209283019201611499565b509195945050505050565b60008060008060008060e087890312156114d557600080fd5b86356001600160401b038111156114eb57600080fd5b6114f789828a016112fe565b90975095505060208701359350604087013561151281611398565b9250611521886060890161144d565b91506115308860a0890161144d565b90509295509295509295565b60006020828403121561154e57600080fd5b5035919050565b6000815180845260005b8181101561157b5760208185018101518683018201520161155f565b8181111561158d576000602083870101525b50601f01601f19169290920160200192915050565b82151581526040602082015260006115bd6040830184611555565b949350505050565b8035600381106113b857600080fd5b600082601f8301126115e557600080fd5b81356001600160401b038111156115fe576115fe6113bd565b611611601f8201601f191660200161141d565b81815284602083860101111561162657600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600060c0888a03121561165e57600080fd5b611667886115c5565b965060208801356001600160401b038082111561168357600080fd5b818a0191508a601f83011261169757600080fd5b8135818111156116a9576116a96113bd565b8060051b6116b96020820161141d565b9182526020818501810192908101908e8411156116d557600080fd5b6020860192505b838310156117135784833511156116f257600080fd5b6117028f602085358901016115d4565b8252602092830192909101906116dc565b9a5050505060408a0135965060608a013591508082111561173357600080fd5b61173f8b838c016115d4565b955060808a0135945060a08a013591508082111561175c57600080fd5b506117698a828b016112fe565b989b979a50959850939692959293505050565b6020815260006110c06020830184611555565b6000604082840312156117a157600080fd5b6117a96113d3565b905081356001600160401b038111156117c157600080fd5b6117cd848285016115d4565b8252506020820135602082015292915050565b6000604082840312156117f257600080fd5b6117fa6113d3565b9050813561180781611398565b8152602082013561181781611398565b602082015292915050565b60006020828403121561183457600080fd5b81356001600160401b038082111561184b57600080fd5b9083019060e0828603121561185f57600080fd5b6118676113fb565b82358281111561187657600080fd5b6118828782860161178f565b82525060208301358281111561189757600080fd5b6118a38782860161178f565b6020830152506118b5604084016113ad565b60408201526060830135828111156118cc57600080fd5b6118d8878286016115d4565b6060830152506118eb86608085016117e0565b60808201526118fc60c084016113ad565b60a082015295945050505050565b60208152815115156020820152600060208301516040808401526115bd6060840182611555565b60008151604084526119466040850182611555565b602093840151949093019390935250919050565b60e08152600061196d60e0830189611931565b828103602084015261197f8189611931565b90506001600160401b03808816604085015283820360608501526119a38288611555565b92508086511660808501528060208701511660a085015280851660c08501525050979650505050505050565b600080600080606085870312156119e557600080fd5b84356001600160401b038111156119fb57600080fd5b611a07878288016112fe565b909550935050602085013591506040850135611a2281611398565b939692955090935050565b600060e08284031215611a3f57600080fd5b50919050565b600060208284031215611a5757600080fd5b81356001600160401b03811115611a6d57600080fd5b6115bd84828501611a2d565b8015158114610ea457600080fd5b60008083601f840112611a9957600080fd5b5081356001600160401b03811115611ab057600080fd5b6020830191508360208260051b850101111561133f57600080fd5b60008060008060008060008060a0898b031215611ae757600080fd5b88356001600160401b0380821115611afe57600080fd5b611b0a8c838d016112fe565b909a509850889150611b1e60208c016115c5565b975060408b01359150611b3082611a79565b90955060608a01359080821115611b4657600080fd5b611b528c838d01611a87565b909650945060808b0135915080821115611b6b57600080fd5b50611b788b828c016112fe565b999c989b5096995094979396929594505050565b60008060008060008060006080888a031215611ba757600080fd5b611bb0886115c5565b965060208801356001600160401b0380821115611bcc57600080fd5b611bd88b838c01611a87565b909850965060408a0135915080821115611bf157600080fd5b611bfd8b838c016112fe565b909650945060608a013591508082111561175c57600080fd5b60008060408385031215611c2957600080fd5b82356001600160401b0380821115611c4057600080fd5b611c4c86838701611a2d565b93506020850135915080821115611c6257600080fd5b50830160408186031215611c7557600080fd5b809150509250929050565b60008060008060608587031215611c9657600080fd5b843593506020850135925060408501356001600160401b03811115611cba57600080fd5b611cc6878288016112fe565b95989497509550505050565b6001600160a01b0381168114610ea457600080fd5b600060208284031215611cf957600080fd5b81356110c081611cd2565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b848152606060208201526000611d47606083018587611d04565b90506001600160401b038316604083015295945050505050565b600060208284031215611d7357600080fd5b81516110c081611398565b634e487b7160e01b600052603260045260246000fd5b600060018201611db457634e487b7160e01b600052601160045260246000fd5b5060010190565b600181811c90821680611dcf57607f821691505b602082108103611a3f57634e487b7160e01b600052602260045260246000fd5b60038110611e0d57634e487b7160e01b600052602160045260246000fd5b9052565b81835260006020808501808196508560051b810191508460005b87811015611e955782840389528135601e19883603018112611e4c57600080fd5b870185810190356001600160401b03811115611e6757600080fd5b803603821315611e7657600080fd5b611e81868284611d04565b9a87019a9550505090840190600101611e2b565b5091979650505050505050565b60a081526000611eb660a083018a8c611d04565b611ec3602084018a611def565b87151560408401528281036060840152611ede818789611e11565b90508281036080840152611ef3818587611d04565b9b9a5050505050505050505050565b601f821115611f4c57600081815260208120601f850160051c81016020861015611f295750805b601f850160051c820191505b81811015611f4857828155600101611f35565b5050505b505050565b8135611f5c81611a79565b815490151560ff1660ff1991909116178155600180820160208481013536869003601e19018112611f8c57600080fd5b850180356001600160401b03811115611fa457600080fd5b8036038383011315611fb557600080fd5b611fc981611fc38654611dbb565b86611f02565b6000601f821160018114611fff5760008315611fe757508382018501355b600019600385901b1c1916600184901b178655610bd1565b600086815260209020601f19841690835b8281101561202f57868501880135825593870193908901908701612010565b508482101561204e5760001960f88660031b161c198785880101351681555b50505050841b90930190915550505050565b60006020828403121561207257600080fd5b81516110c081611cd2565b8060005b60028110156104af578151845260209384019390910190600101612081565b8481526001600160401b038416602082015260c081016120c3604083018561207d565b610ac3608083018461207d565b60008083546120de81611dbb565b600182811680156120f6576001811461210b5761213a565b60ff198416875282151583028701945061213a565b8760005260208060002060005b858110156121315781548a820152908401908201612118565b50505082870194505b50929695505050505050565b8183823760009101908152919050565b6001600160a01b038816815260a06020820181905260009061217a90830189611555565b6121876040840189611def565b828103606084015261219a818789611e11565b905082810360808401526121af818587611d04565b9a995050505050505050505056fea2646970667358221220c85fd11d2fec27397b3b4f80247b9e30f573baad59b208a468c9854edfd014a764736f6c634300080f0033"; type RevertingBytesMarsConstructorParams = | [signer?: Signer] diff --git a/src/evm/contracts/factories/Mars.sol/RevertingEmptyMars__factory.ts b/src/evm/contracts/factories/Mars.sol/RevertingEmptyMars__factory.ts index b1de9246..2e10e116 100644 --- a/src/evm/contracts/factories/Mars.sol/RevertingEmptyMars__factory.ts +++ b/src/evm/contracts/factories/Mars.sol/RevertingEmptyMars__factory.ts @@ -925,7 +925,7 @@ const _abi = [ ] as const; const _bytecode = - "0x600360c0818152620312e360ec1b60e0526080908152610140604052610100918252620322e360ec1b6101205260a09190915262000042906006906002620000f9565b503480156200005057600080fd5b50604051620028b3380380620028b38339810160408190526200007391620001d0565b80806200008033620000a9565b600180546001600160a01b0319166001600160a01b039290921691909117905550620003739050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b82805482825590600052602060002090810192821562000144579160200282015b82811115620001445782518290620001339082620002a7565b50916020019190600101906200011a565b506200015292915062000156565b5090565b80821115620001525760006200016d828262000177565b5060010162000156565b508054620001859062000218565b6000825580601f1062000196575050565b601f016020900490600052602060002090810190620001b69190620001b9565b50565b5b80821115620001525760008155600101620001ba565b600060208284031215620001e357600080fd5b81516001600160a01b0381168114620001fb57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200022d57607f821691505b6020821081036200024e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002a257600081815260208120601f850160051c810160208610156200027d5750805b601f850160051c820191505b818110156200029e5782815560010162000289565b5050505b505050565b81516001600160401b03811115620002c357620002c362000202565b620002db81620002d4845462000218565b8462000254565b602080601f831160018114620003135760008415620002fa5750858301515b600019600386901b1c1916600185901b1785556200029e565b600085815260208120601f198616915b82811015620003445788860151825594840194600190910190840162000323565b5085821015620003635787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61253080620003836000396000f3fe6080604052600436106101445760003560e01c8063715018a6116100b6578063bb3f9f8d1161006f578063bb3f9f8d146103b6578063cb7e9057146103e4578063e847e28014610404578063f12b758a14610424578063f2fde38b14610444578063fad28a241461046457600080fd5b8063715018a6146102ef5780637a805598146103045780637a9ccc4b146103245780637d622184146103445780637e1d42b5146103645780638da5cb5b1461038457600080fd5b80634dcc0aa6116101085780634dcc0aa61461021d5780634eeb73911461024a578063558850ac1461027c5780635bfd12b81461029c578063602f9834146102bc57806361995001146102dc57600080fd5b80631eb7dd5e146101505780633513a995146101725780633f9fdbe4146101a25780634252ae9b146101c25780634bdb5597146101f057600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b5061017061016b36600461133b565b610484565b005b6101856101803660046113c3565b6104b5565b6040516001600160401b0390911681526020015b60405180910390f35b3480156101ae57600080fd5b506101706101bd36600461133b565b610555565b3480156101ce57600080fd5b506101e26101dd366004611443565b610611565b6040516101999291906114a9565b3480156101fc57600080fd5b5061021061020b3660046115da565b6106cd565b6040516101999190611713565b34801561022957600080fd5b5061023d6102383660046117b9565b610712565b60405161019991906118a1565b34801561025657600080fd5b5061026a610265366004611443565b610752565b604051610199969594939291906118f1565b34801561028857600080fd5b50610170610297366004611443565b6109af565b3480156102a857600080fd5b506101856102b7366004611966565b610a11565b3480156102c857600080fd5b506101706102d73660046119dc565b610a94565b6101706102ea366004611a62565b610b05565b3480156102fb57600080fd5b50610170610bd1565b34801561031057600080fd5b5061017061031f366004611a62565b610be5565b34801561033057600080fd5b5061021061033f366004611b23565b610c67565b34801561035057600080fd5b5061021061035f366004611443565b610c9f565b34801561037057600080fd5b5061017061037f366004611bad565b610d4b565b34801561039057600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610199565b3480156103c257600080fd5b506103d66103d1366004611443565b610db7565b604051908152602001610199565b3480156103f057600080fd5b5060015461039e906001600160a01b031681565b34801561041057600080fd5b5061017061041f366004611c17565b610dd8565b34801561043057600080fd5b5061026a61043f366004611443565b610e0e565b34801561045057600080fd5b5061017061045f366004611c7e565b610e1e565b34801561047057600080fd5b5061017061047f366004611443565b610e9c565b6001546001600160a01b031633146104af576040516321bf7f4960e01b815260040160405180910390fd5b50505050565b6001546040516330f8455760e21b81526000916001600160a01b03169063c3e1155c906104ec9088908b908b908a90600401611cc4565b6020604051808303816000875af115801561050b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052f9190611cf8565b60015490915061054b906001600160a01b031686838686610ec7565b9695505050505050565b6001546001600160a01b03163314610580576040516321bf7f4960e01b815260040160405180910390fd5b6000805b6005548110156105eb5785600582815481106105a2576105a2611d15565b9060005260206000200154036105d957600581815481106105c5576105c5611d15565b6000918252602082200155600191506105eb565b806105e381611d2b565b915050610584565b508061060a57604051630781f76560e21b815260040160405180910390fd5b5050505050565b6003818154811061062157600080fd5b60009182526020909120600290910201805460018201805460ff90921693509061064a90611d52565b80601f016020809104026020016040519081016040528092919081815260200182805461067690611d52565b80156106c35780601f10610698576101008083540402835291602001916106c3565b820191906000526020600020905b8154815290600101906020018083116106a657829003601f168201915b5050505050905082565b6001546060906001600160a01b031633146106fb576040516321bf7f4960e01b815260040160405180910390fd5b610706868484610f96565b98975050505050505050565b6040805180820190915260008152606060208201526001546001600160a01b0316331461014b576040516321bf7f4960e01b815260040160405180910390fd5b6004818154811061076257600080fd5b90600052602060002090600802016000915090508060000160405180604001604052908160008201805461079590611d52565b80601f01602080910402602001604051908101604052809291908181526020018280546107c190611d52565b801561080e5780601f106107e35761010080835404028352916020019161080e565b820191906000526020600020905b8154815290600101906020018083116107f157829003601f168201915b50505050508152602001600182015481525050908060020160405180604001604052908160008201805461084190611d52565b80601f016020809104026020016040519081016040528092919081815260200182805461086d90611d52565b80156108ba5780601f1061088f576101008083540402835291602001916108ba565b820191906000526020600020905b81548152906001019060200180831161089d57829003601f168201915b505050918352505060019190910154602090910152600482015460058301805492936001600160401b03909216926108f190611d52565b80601f016020809104026020016040519081016040528092919081815260200182805461091d90611d52565b801561096a5780601f1061093f5761010080835404028352916020019161096a565b820191906000526020600020905b81548152906001019060200180831161094d57829003601f168201915b50506040805180820190915260068601546001600160401b03808216835268010000000000000000909104811660208301526007909601549495909416925088915050565b6109b76110bc565b6001546040516381bc079b60e01b8152600481018390526001600160a01b03909116906381bc079b90602401600060405180830381600087803b1580156109fd57600080fd5b505af115801561060a573d6000803e3d6000fd5b6001546040516330f8455760e21b81526000916001600160a01b03169063c3e1155c90610a48908690899089908890600401611cc4565b6020604051808303816000875af1158015610a67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8b9190611cf8565b95945050505050565b6001546001600160a01b03163314610abf576040516321bf7f4960e01b815260040160405180910390fd5b6004805460018101825560009190915281906008027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01610b00828261204b565b505050565b610b0d6110bc565b60015460405163418925b760e01b81526001600160a01b0390911690819063418925b790610b4d908c908c908c908c908c908c908c908c9060040161227e565b600060405180830381600087803b158015610b6757600080fd5b505af1158015610b7b573d6000803e3d6000fd5b50505050610bc6818a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92508a91508990508888611116565b505050505050505050565b610bd96110bc565b610be360006111cb565b565b610bed6110bc565b60015460405163418925b760e01b81526001600160a01b039091169063418925b790610c2b908b908b908b908b908b908b908b908b9060040161227e565b600060405180830381600087803b158015610c4557600080fd5b505af1158015610c59573d6000803e3d6000fd5b505050505050505050505050565b6001546060906001600160a01b03163314610c95576040516321bf7f4960e01b815260040160405180910390fd5b610706838361121b565b60068181548110610caf57600080fd5b906000526020600020016000915090508054610cca90611d52565b80601f0160208091040260200160405190810160405280929190818152602001828054610cf690611d52565b8015610d435780601f10610d1857610100808354040283529160200191610d43565b820191906000526020600020905b815481529060010190602001808311610d2657829003601f168201915b505050505081565b6001546001600160a01b03163314610d76576040516321bf7f4960e01b815260040160405180910390fd5b6003805460018101825560009190915281906002027fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b016104af82826122de565b60058181548110610dc757600080fd5b600091825260209091200154905081565b6001546001600160a01b03163314610e03576040516321bf7f4960e01b815260040160405180910390fd5b61060a848383610f96565b6002818154811061076257600080fd5b610e266110bc565b6001600160a01b038116610e905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b610e99816111cb565b50565b6001546001600160a01b03163314610e99576040516321bf7f4960e01b815260040160405180910390fd5b846001600160a01b031663478222c26040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610f07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2b91906123be565b6001600160a01b03166318e3404b34868686866040518663ffffffff1660e01b8152600401610f5d94939291906123db565b6000604051808303818588803b158015610f7657600080fd5b505af1158015610f8a573d6000803e3d6000fd5b50505050505050505050565b606060005b60065481101561109b5760068181548110610fb857610fb8611d15565b90600052602060002001604051602001610fd2919061240d565b604051602081830303815290604052805190602001208484604051602001610ffb929190612483565b604051602081830303815290604052805190602001200361108957600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db001859055604080516020601f86018190048102820181019092528481529085908590819084018382808284376000920191909152509294506110b59350505050565b8061109381611d2b565b915050610f9b565b5060405163b01318a560e01b815260040160405180910390fd5b9392505050565b6000546001600160a01b03163314610be35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e87565b866001600160a01b031663478222c26040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611156573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061117a91906123be565b6001600160a01b031663fce34e4034308989898989896040518963ffffffff1660e01b81526004016111b29796959493929190612493565b6000604051808303818588803b158015610c4557600080fd5b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b606060005b60065481101561109b576006818154811061123d5761123d611d15565b90600052602060002001604051602001611257919061240d565b604051602081830303815290604052805190602001208484604051602001611280929190612483565b60405160208183030381529060405280519060200120036112db5783838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509294506112ed9350505050565b806112e581611d2b565b915050611220565b92915050565b60008083601f84011261130557600080fd5b5081356001600160401b0381111561131c57600080fd5b60208301915083602082850101111561133457600080fd5b9250929050565b6000806000806060858703121561135157600080fd5b8435935060208501356001600160401b0381111561136e57600080fd5b61137a878288016112f3565b9598909750949560400135949350505050565b6001600160401b0381168114610e9957600080fd5b80356113ad8161138d565b919050565b80604081018310156112ed57600080fd5b60008060008060008060e087890312156113dc57600080fd5b86356001600160401b038111156113f257600080fd5b6113fe89828a016112f3565b9097509550506020870135935060408701356114198161138d565b925061142888606089016113b2565b91506114378860a089016113b2565b90509295509295509295565b60006020828403121561145557600080fd5b5035919050565b6000815180845260005b8181101561148257602081850181015186830182015201611466565b81811115611494576000602083870101525b50601f01601f19169290920160200192915050565b82151581526040602082015260006114c4604083018461145c565b949350505050565b8035600381106113ad57600080fd5b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715611513576115136114db565b60405290565b60405160c081016001600160401b0381118282101715611513576115136114db565b604051601f8201601f191681016001600160401b0381118282101715611563576115636114db565b604052919050565b600082601f83011261157c57600080fd5b81356001600160401b03811115611595576115956114db565b6115a8601f8201601f191660200161153b565b8181528460208386010111156115bd57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600060c0888a0312156115f557600080fd5b6115fe886114cc565b965060208801356001600160401b038082111561161a57600080fd5b818a0191508a601f83011261162e57600080fd5b813581811115611640576116406114db565b8060051b6116506020820161153b565b9182526020818501810192908101908e84111561166c57600080fd5b6020860192505b838310156116aa57848335111561168957600080fd5b6116998f6020853589010161156b565b825260209283019290910190611673565b9a5050505060408a0135965060608a01359150808211156116ca57600080fd5b6116d68b838c0161156b565b955060808a0135945060a08a01359150808211156116f357600080fd5b506117008a828b016112f3565b989b979a50959850939692959293505050565b6020815260006110b5602083018461145c565b60006040828403121561173857600080fd5b6117406114f1565b905081356001600160401b0381111561175857600080fd5b6117648482850161156b565b8252506020820135602082015292915050565b60006040828403121561178957600080fd5b6117916114f1565b9050813561179e8161138d565b815260208201356117ae8161138d565b602082015292915050565b6000602082840312156117cb57600080fd5b81356001600160401b03808211156117e257600080fd5b9083019060e082860312156117f657600080fd5b6117fe611519565b82358281111561180d57600080fd5b61181987828601611726565b82525060208301358281111561182e57600080fd5b61183a87828601611726565b60208301525061184c604084016113a2565b604082015260608301358281111561186357600080fd5b61186f8782860161156b565b6060830152506118828660808501611777565b608082015261189360c084016113a2565b60a082015295945050505050565b60208152815115156020820152600060208301516040808401526114c4606084018261145c565b60008151604084526118dd604085018261145c565b602093840151949093019390935250919050565b60e08152600061190460e08301896118c8565b828103602084015261191681896118c8565b90506001600160401b038088166040850152838203606085015261193a828861145c565b92508086511660808501528060208701511660a085015280851660c08501525050979650505050505050565b6000806000806060858703121561197c57600080fd5b84356001600160401b0381111561199257600080fd5b61199e878288016112f3565b9095509350506020850135915060408501356119b98161138d565b939692955090935050565b600060e082840312156119d657600080fd5b50919050565b6000602082840312156119ee57600080fd5b81356001600160401b03811115611a0457600080fd5b6114c4848285016119c4565b8015158114610e9957600080fd5b60008083601f840112611a3057600080fd5b5081356001600160401b03811115611a4757600080fd5b6020830191508360208260051b850101111561133457600080fd5b60008060008060008060008060a0898b031215611a7e57600080fd5b88356001600160401b0380821115611a9557600080fd5b611aa18c838d016112f3565b909a509850889150611ab560208c016114cc565b975060408b01359150611ac782611a10565b90955060608a01359080821115611add57600080fd5b611ae98c838d01611a1e565b909650945060808b0135915080821115611b0257600080fd5b50611b0f8b828c016112f3565b999c989b5096995094979396929594505050565b60008060008060008060006080888a031215611b3e57600080fd5b611b47886114cc565b965060208801356001600160401b0380821115611b6357600080fd5b611b6f8b838c01611a1e565b909850965060408a0135915080821115611b8857600080fd5b611b948b838c016112f3565b909650945060608a01359150808211156116f357600080fd5b60008060408385031215611bc057600080fd5b82356001600160401b0380821115611bd757600080fd5b611be3868387016119c4565b93506020850135915080821115611bf957600080fd5b50830160408186031215611c0c57600080fd5b809150509250929050565b60008060008060608587031215611c2d57600080fd5b843593506020850135925060408501356001600160401b03811115611c5157600080fd5b611c5d878288016112f3565b95989497509550505050565b6001600160a01b0381168114610e9957600080fd5b600060208284031215611c9057600080fd5b81356110b581611c69565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b848152606060208201526000611cde606083018587611c9b565b90506001600160401b038316604083015295945050505050565b600060208284031215611d0a57600080fd5b81516110b58161138d565b634e487b7160e01b600052603260045260246000fd5b600060018201611d4b57634e487b7160e01b600052601160045260246000fd5b5060010190565b600181811c90821680611d6657607f821691505b6020821081036119d657634e487b7160e01b600052602260045260246000fd5b60008235603e19833603018112611d9c57600080fd5b9190910192915050565b6000808335601e19843603018112611dbd57600080fd5b8301803591506001600160401b03821115611dd757600080fd5b60200191503681900382131561133457600080fd5b601f821115610b0057600081815260208120601f850160051c81016020861015611e135750805b601f850160051c820191505b81811015611e3257828155600101611e1f565b505050505050565b600019600383901b1c191660019190911b1790565b611e598283611da6565b6001600160401b03811115611e7057611e706114db565b611e8481611e7e8554611d52565b85611dec565b6000601f821160018114611eb25760008315611ea05750838201355b611eaa8482611e3a565b865550611f0c565b600085815260209020601f19841690835b82811015611ee35786850135825560209485019460019092019101611ec3565b5084821015611f005760001960f88660031b161c19848701351681555b505060018360011b0185555b50505050602082013560018201555050565b600081356112ed8161138d565b6001600160401b03831115611f4257611f426114db565b611f5683611f508354611d52565b83611dec565b6000601f841160018114611f845760008515611f725750838201355b611f7c8682611e3a565b84555061060a565b600083815260209020601f19861690835b82811015611fb55786850135825560209485019460019092019101611f95565b5086821015611fd25760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b8135611fef8161138d565b815467ffffffffffffffff19166001600160401b0382161782555060208201356120188161138d565b81546fffffffffffffffff0000000000000000191660409190911b6fffffffffffffffff00000000000000001617905550565b6120558283611d86565b61205f8182611da6565b6001600160401b03811115612076576120766114db565b61208a816120848654611d52565b86611dec565b6000601f8211600181146120b857600083156120a65750838201355b6120b08482611e3a565b875550612112565b600086815260209020601f19841690835b828110156120e957868501358255602094850194600190920191016120c9565b50848210156121065760001960f88660031b161c19848701351681555b505060018360011b0186555b50505050602081013560018301555061213a6121316020840184611d86565b60028301611e4f565b61216a61214960408401611f1e565b600483016001600160401b0382166001600160401b03198254161781555050565b6121776060830183611da6565b612185818360058601611f2b565b50506121976080830160068301611fe4565b6121c76121a660c08401611f1e565b600783016001600160401b0382166001600160401b03198254161781555050565b5050565b600381106121e957634e487b7160e01b600052602160045260246000fd5b9052565b81835260006020808501808196508560051b810191508460005b878110156122715782840389528135601e1988360301811261222857600080fd5b870185810190356001600160401b0381111561224357600080fd5b80360382131561225257600080fd5b61225d868284611c9b565b9a87019a9550505090840190600101612207565b5091979650505050505050565b60a08152600061229260a083018a8c611c9b565b61229f602084018a6121cb565b871515604084015282810360608401526122ba8187896121ed565b905082810360808401526122cf818587611c9b565b9b9a5050505050505050505050565b81356122e981611a10565b815490151560ff1660ff19919091161781556001808201602061230e85820186611da6565b6001600160401b03811115612325576123256114db565b612333816120848654611d52565b6000601f821160018114612361576000831561234f5750838201355b6123598482611e3a565b875550610bc6565b600086815260209020601f19841690835b8281101561238f5786850135825593870193908901908701612372565b50848210156123ac5760001960f88660031b161c19848701351681555b50505050841b90930190915550505050565b6000602082840312156123d057600080fd5b81516110b581611c69565b8481526001600160401b038416602082015260c081016040848184013760408360808401376000815295945050505050565b600080835461241b81611d52565b60018281168015612433576001811461244857612477565b60ff1984168752821515830287019450612477565b8760005260208060002060005b8581101561246e5781548a820152908401908201612455565b50505082870194505b50929695505050505050565b8183823760009101908152919050565b6001600160a01b038816815260a0602082018190526000906124b79083018961145c565b6124c460408401896121cb565b82810360608401526124d78187896121ed565b905082810360808401526124ec818587611c9b565b9a995050505050505050505056fea26469706673582212203019bb5709e203b079f2da3f9537ab77b070a2e1a9d906ed29a364124095d97f64736f6c634300080f0033"; + "0x600360c0818152620312e360ec1b60e0526080908152610140604052610100918252620322e360ec1b6101205260a09190915262000042906006906002620000f9565b503480156200005057600080fd5b5060405162002932380380620029328339810160408190526200007391620001d0565b80806200008033620000a9565b600180546001600160a01b0319166001600160a01b039290921691909117905550620003739050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b82805482825590600052602060002090810192821562000144579160200282015b82811115620001445782518290620001339082620002a7565b50916020019190600101906200011a565b506200015292915062000156565b5090565b80821115620001525760006200016d828262000177565b5060010162000156565b508054620001859062000218565b6000825580601f1062000196575050565b601f016020900490600052602060002090810190620001b69190620001b9565b50565b5b80821115620001525760008155600101620001ba565b600060208284031215620001e357600080fd5b81516001600160a01b0381168114620001fb57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200022d57607f821691505b6020821081036200024e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002a257600081815260208120601f850160051c810160208610156200027d5750805b601f850160051c820191505b818110156200029e5782815560010162000289565b5050505b505050565b81516001600160401b03811115620002c357620002c362000202565b620002db81620002d4845462000218565b8462000254565b602080601f831160018114620003135760008415620002fa5750858301515b600019600386901b1c1916600185901b1785556200029e565b600085815260208120601f198616915b82811015620003445788860151825594840194600190910190840162000323565b5085821015620003635787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6125af80620003836000396000f3fe6080604052600436106101445760003560e01c8063715018a6116100b6578063bb3f9f8d1161006f578063bb3f9f8d146103b6578063cb7e9057146103e4578063e847e28014610404578063f12b758a14610424578063f2fde38b14610444578063fad28a241461046457600080fd5b8063715018a6146102ef5780637a805598146103045780637a9ccc4b146103245780637d622184146103445780637e1d42b5146103645780638da5cb5b1461038457600080fd5b80634dcc0aa6116101085780634dcc0aa61461021d5780634eeb73911461024a578063558850ac1461027c5780635bfd12b81461029c578063602f9834146102bc57806361995001146102dc57600080fd5b80631eb7dd5e146101505780633513a995146101725780633f9fdbe4146101a25780634252ae9b146101c25780634bdb5597146101f057600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b5061017061016b36600461133b565b610484565b005b6101856101803660046114b1565b6104b5565b6040516001600160401b0390911681526020015b60405180910390f35b3480156101ae57600080fd5b506101706101bd36600461133b565b610555565b3480156101ce57600080fd5b506101e26101dd366004611531565b610611565b604051610199929190611597565b3480156101fc57600080fd5b5061021061020b366004611638565b6106cd565b6040516101999190611771565b34801561022957600080fd5b5061023d610238366004611817565b610712565b60405161019991906118ff565b34801561025657600080fd5b5061026a610265366004611531565b610752565b6040516101999695949392919061194f565b34801561028857600080fd5b50610170610297366004611531565b6109af565b3480156102a857600080fd5b506101856102b73660046119c4565b610a11565b3480156102c857600080fd5b506101706102d7366004611a3a565b610a94565b6101706102ea366004611ac0565b610b05565b3480156102fb57600080fd5b50610170610bd1565b34801561031057600080fd5b5061017061031f366004611ac0565b610be5565b34801561033057600080fd5b5061021061033f366004611b81565b610c67565b34801561035057600080fd5b5061021061035f366004611531565b610c9f565b34801561037057600080fd5b5061017061037f366004611c0b565b610d4b565b34801561039057600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610199565b3480156103c257600080fd5b506103d66103d1366004611531565b610db7565b604051908152602001610199565b3480156103f057600080fd5b5060015461039e906001600160a01b031681565b34801561041057600080fd5b5061017061041f366004611c75565b610dd8565b34801561043057600080fd5b5061026a61043f366004611531565b610e0e565b34801561045057600080fd5b5061017061045f366004611cdc565b610e1e565b34801561047057600080fd5b5061017061047f366004611531565b610e9c565b6001546001600160a01b031633146104af576040516321bf7f4960e01b815260040160405180910390fd5b50505050565b6001546040516330f8455760e21b81526000916001600160a01b03169063c3e1155c906104ec9088908b908b908a90600401611d22565b6020604051808303816000875af115801561050b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052f9190611d56565b60015490915061054b906001600160a01b031686838686610ec7565b9695505050505050565b6001546001600160a01b03163314610580576040516321bf7f4960e01b815260040160405180910390fd5b6000805b6005548110156105eb5785600582815481106105a2576105a2611d73565b9060005260206000200154036105d957600581815481106105c5576105c5611d73565b6000918252602082200155600191506105eb565b806105e381611d89565b915050610584565b508061060a57604051630781f76560e21b815260040160405180910390fd5b5050505050565b6003818154811061062157600080fd5b60009182526020909120600290910201805460018201805460ff90921693509061064a90611db0565b80601f016020809104026020016040519081016040528092919081815260200182805461067690611db0565b80156106c35780601f10610698576101008083540402835291602001916106c3565b820191906000526020600020905b8154815290600101906020018083116106a657829003601f168201915b5050505050905082565b6001546060906001600160a01b031633146106fb576040516321bf7f4960e01b815260040160405180910390fd5b610706868484610f96565b98975050505050505050565b6040805180820190915260008152606060208201526001546001600160a01b0316331461014b576040516321bf7f4960e01b815260040160405180910390fd5b6004818154811061076257600080fd5b90600052602060002090600802016000915090508060000160405180604001604052908160008201805461079590611db0565b80601f01602080910402602001604051908101604052809291908181526020018280546107c190611db0565b801561080e5780601f106107e35761010080835404028352916020019161080e565b820191906000526020600020905b8154815290600101906020018083116107f157829003601f168201915b50505050508152602001600182015481525050908060020160405180604001604052908160008201805461084190611db0565b80601f016020809104026020016040519081016040528092919081815260200182805461086d90611db0565b80156108ba5780601f1061088f576101008083540402835291602001916108ba565b820191906000526020600020905b81548152906001019060200180831161089d57829003601f168201915b505050918352505060019190910154602090910152600482015460058301805492936001600160401b03909216926108f190611db0565b80601f016020809104026020016040519081016040528092919081815260200182805461091d90611db0565b801561096a5780601f1061093f5761010080835404028352916020019161096a565b820191906000526020600020905b81548152906001019060200180831161094d57829003601f168201915b50506040805180820190915260068601546001600160401b03808216835268010000000000000000909104811660208301526007909601549495909416925088915050565b6109b76110bc565b6001546040516381bc079b60e01b8152600481018390526001600160a01b03909116906381bc079b90602401600060405180830381600087803b1580156109fd57600080fd5b505af115801561060a573d6000803e3d6000fd5b6001546040516330f8455760e21b81526000916001600160a01b03169063c3e1155c90610a48908690899089908890600401611d22565b6020604051808303816000875af1158015610a67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8b9190611d56565b95945050505050565b6001546001600160a01b03163314610abf576040516321bf7f4960e01b815260040160405180910390fd5b6004805460018101825560009190915281906008027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01610b0082826120a9565b505050565b610b0d6110bc565b60015460405163418925b760e01b81526001600160a01b0390911690819063418925b790610b4d908c908c908c908c908c908c908c908c906004016122dc565b600060405180830381600087803b158015610b6757600080fd5b505af1158015610b7b573d6000803e3d6000fd5b50505050610bc6818a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92508a91508990508888611116565b505050505050505050565b610bd96110bc565b610be360006111cb565b565b610bed6110bc565b60015460405163418925b760e01b81526001600160a01b039091169063418925b790610c2b908b908b908b908b908b908b908b908b906004016122dc565b600060405180830381600087803b158015610c4557600080fd5b505af1158015610c59573d6000803e3d6000fd5b505050505050505050505050565b6001546060906001600160a01b03163314610c95576040516321bf7f4960e01b815260040160405180910390fd5b610706838361121b565b60068181548110610caf57600080fd5b906000526020600020016000915090508054610cca90611db0565b80601f0160208091040260200160405190810160405280929190818152602001828054610cf690611db0565b8015610d435780601f10610d1857610100808354040283529160200191610d43565b820191906000526020600020905b815481529060010190602001808311610d2657829003601f168201915b505050505081565b6001546001600160a01b03163314610d76576040516321bf7f4960e01b815260040160405180910390fd5b6003805460018101825560009190915281906002027fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b016104af828261233c565b60058181548110610dc757600080fd5b600091825260209091200154905081565b6001546001600160a01b03163314610e03576040516321bf7f4960e01b815260040160405180910390fd5b61060a848383610f96565b6002818154811061076257600080fd5b610e266110bc565b6001600160a01b038116610e905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b610e99816111cb565b50565b6001546001600160a01b03163314610e99576040516321bf7f4960e01b815260040160405180910390fd5b846001600160a01b031663478222c26040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610f07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2b919061241c565b6001600160a01b03166318e3404b34868686866040518663ffffffff1660e01b8152600401610f5d949392919061245c565b6000604051808303818588803b158015610f7657600080fd5b505af1158015610f8a573d6000803e3d6000fd5b50505050505050505050565b606060005b60065481101561109b5760068181548110610fb857610fb8611d73565b90600052602060002001604051602001610fd2919061248c565b604051602081830303815290604052805190602001208484604051602001610ffb929190612502565b604051602081830303815290604052805190602001200361108957600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db001859055604080516020601f86018190048102820181019092528481529085908590819084018382808284376000920191909152509294506110b59350505050565b8061109381611d89565b915050610f9b565b5060405163b01318a560e01b815260040160405180910390fd5b9392505050565b6000546001600160a01b03163314610be35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e87565b866001600160a01b031663478222c26040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611156573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061117a919061241c565b6001600160a01b031663fce34e4034308989898989896040518963ffffffff1660e01b81526004016111b29796959493929190612512565b6000604051808303818588803b158015610c4557600080fd5b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b606060005b60065481101561109b576006818154811061123d5761123d611d73565b90600052602060002001604051602001611257919061248c565b604051602081830303815290604052805190602001208484604051602001611280929190612502565b60405160208183030381529060405280519060200120036112db5783838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509294506112ed9350505050565b806112e581611d89565b915050611220565b92915050565b60008083601f84011261130557600080fd5b5081356001600160401b0381111561131c57600080fd5b60208301915083602082850101111561133457600080fd5b9250929050565b6000806000806060858703121561135157600080fd5b8435935060208501356001600160401b0381111561136e57600080fd5b61137a878288016112f3565b9598909750949560400135949350505050565b6001600160401b0381168114610e9957600080fd5b80356113ad8161138d565b919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156113ea576113ea6113b2565b60405290565b60405160c081016001600160401b03811182821017156113ea576113ea6113b2565b604051601f8201601f191681016001600160401b038111828210171561143a5761143a6113b2565b604052919050565b600082601f83011261145357600080fd5b604051604081018181106001600160401b0382111715611475576114756113b2565b806040525080604084018581111561148c57600080fd5b845b818110156114a657803583526020928301920161148e565b509195945050505050565b60008060008060008060e087890312156114ca57600080fd5b86356001600160401b038111156114e057600080fd5b6114ec89828a016112f3565b9097509550506020870135935060408701356115078161138d565b92506115168860608901611442565b91506115258860a08901611442565b90509295509295509295565b60006020828403121561154357600080fd5b5035919050565b6000815180845260005b8181101561157057602081850181015186830182015201611554565b81811115611582576000602083870101525b50601f01601f19169290920160200192915050565b82151581526040602082015260006115b2604083018461154a565b949350505050565b8035600381106113ad57600080fd5b600082601f8301126115da57600080fd5b81356001600160401b038111156115f3576115f36113b2565b611606601f8201601f1916602001611412565b81815284602083860101111561161b57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600060c0888a03121561165357600080fd5b61165c886115ba565b965060208801356001600160401b038082111561167857600080fd5b818a0191508a601f83011261168c57600080fd5b81358181111561169e5761169e6113b2565b8060051b6116ae60208201611412565b9182526020818501810192908101908e8411156116ca57600080fd5b6020860192505b838310156117085784833511156116e757600080fd5b6116f78f602085358901016115c9565b8252602092830192909101906116d1565b9a5050505060408a0135965060608a013591508082111561172857600080fd5b6117348b838c016115c9565b955060808a0135945060a08a013591508082111561175157600080fd5b5061175e8a828b016112f3565b989b979a50959850939692959293505050565b6020815260006110b5602083018461154a565b60006040828403121561179657600080fd5b61179e6113c8565b905081356001600160401b038111156117b657600080fd5b6117c2848285016115c9565b8252506020820135602082015292915050565b6000604082840312156117e757600080fd5b6117ef6113c8565b905081356117fc8161138d565b8152602082013561180c8161138d565b602082015292915050565b60006020828403121561182957600080fd5b81356001600160401b038082111561184057600080fd5b9083019060e0828603121561185457600080fd5b61185c6113f0565b82358281111561186b57600080fd5b61187787828601611784565b82525060208301358281111561188c57600080fd5b61189887828601611784565b6020830152506118aa604084016113a2565b60408201526060830135828111156118c157600080fd5b6118cd878286016115c9565b6060830152506118e086608085016117d5565b60808201526118f160c084016113a2565b60a082015295945050505050565b60208152815115156020820152600060208301516040808401526115b2606084018261154a565b600081516040845261193b604085018261154a565b602093840151949093019390935250919050565b60e08152600061196260e0830189611926565b82810360208401526119748189611926565b90506001600160401b0380881660408501528382036060850152611998828861154a565b92508086511660808501528060208701511660a085015280851660c08501525050979650505050505050565b600080600080606085870312156119da57600080fd5b84356001600160401b038111156119f057600080fd5b6119fc878288016112f3565b909550935050602085013591506040850135611a178161138d565b939692955090935050565b600060e08284031215611a3457600080fd5b50919050565b600060208284031215611a4c57600080fd5b81356001600160401b03811115611a6257600080fd5b6115b284828501611a22565b8015158114610e9957600080fd5b60008083601f840112611a8e57600080fd5b5081356001600160401b03811115611aa557600080fd5b6020830191508360208260051b850101111561133457600080fd5b60008060008060008060008060a0898b031215611adc57600080fd5b88356001600160401b0380821115611af357600080fd5b611aff8c838d016112f3565b909a509850889150611b1360208c016115ba565b975060408b01359150611b2582611a6e565b90955060608a01359080821115611b3b57600080fd5b611b478c838d01611a7c565b909650945060808b0135915080821115611b6057600080fd5b50611b6d8b828c016112f3565b999c989b5096995094979396929594505050565b60008060008060008060006080888a031215611b9c57600080fd5b611ba5886115ba565b965060208801356001600160401b0380821115611bc157600080fd5b611bcd8b838c01611a7c565b909850965060408a0135915080821115611be657600080fd5b611bf28b838c016112f3565b909650945060608a013591508082111561175157600080fd5b60008060408385031215611c1e57600080fd5b82356001600160401b0380821115611c3557600080fd5b611c4186838701611a22565b93506020850135915080821115611c5757600080fd5b50830160408186031215611c6a57600080fd5b809150509250929050565b60008060008060608587031215611c8b57600080fd5b843593506020850135925060408501356001600160401b03811115611caf57600080fd5b611cbb878288016112f3565b95989497509550505050565b6001600160a01b0381168114610e9957600080fd5b600060208284031215611cee57600080fd5b81356110b581611cc7565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b848152606060208201526000611d3c606083018587611cf9565b90506001600160401b038316604083015295945050505050565b600060208284031215611d6857600080fd5b81516110b58161138d565b634e487b7160e01b600052603260045260246000fd5b600060018201611da957634e487b7160e01b600052601160045260246000fd5b5060010190565b600181811c90821680611dc457607f821691505b602082108103611a3457634e487b7160e01b600052602260045260246000fd5b60008235603e19833603018112611dfa57600080fd5b9190910192915050565b6000808335601e19843603018112611e1b57600080fd5b8301803591506001600160401b03821115611e3557600080fd5b60200191503681900382131561133457600080fd5b601f821115610b0057600081815260208120601f850160051c81016020861015611e715750805b601f850160051c820191505b81811015611e9057828155600101611e7d565b505050505050565b600019600383901b1c191660019190911b1790565b611eb78283611e04565b6001600160401b03811115611ece57611ece6113b2565b611ee281611edc8554611db0565b85611e4a565b6000601f821160018114611f105760008315611efe5750838201355b611f088482611e98565b865550611f6a565b600085815260209020601f19841690835b82811015611f415786850135825560209485019460019092019101611f21565b5084821015611f5e5760001960f88660031b161c19848701351681555b505060018360011b0185555b50505050602082013560018201555050565b600081356112ed8161138d565b6001600160401b03831115611fa057611fa06113b2565b611fb483611fae8354611db0565b83611e4a565b6000601f841160018114611fe25760008515611fd05750838201355b611fda8682611e98565b84555061060a565b600083815260209020601f19861690835b828110156120135786850135825560209485019460019092019101611ff3565b50868210156120305760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b813561204d8161138d565b815467ffffffffffffffff19166001600160401b0382161782555060208201356120768161138d565b81546fffffffffffffffff0000000000000000191660409190911b6fffffffffffffffff00000000000000001617905550565b6120b38283611de4565b6120bd8182611e04565b6001600160401b038111156120d4576120d46113b2565b6120e8816120e28654611db0565b86611e4a565b6000601f82116001811461211657600083156121045750838201355b61210e8482611e98565b875550612170565b600086815260209020601f19841690835b828110156121475786850135825560209485019460019092019101612127565b50848210156121645760001960f88660031b161c19848701351681555b505060018360011b0186555b50505050602081013560018301555061219861218f6020840184611de4565b60028301611ead565b6121c86121a760408401611f7c565b600483016001600160401b0382166001600160401b03198254161781555050565b6121d56060830183611e04565b6121e3818360058601611f89565b50506121f56080830160068301612042565b61222561220460c08401611f7c565b600783016001600160401b0382166001600160401b03198254161781555050565b5050565b6003811061224757634e487b7160e01b600052602160045260246000fd5b9052565b81835260006020808501808196508560051b810191508460005b878110156122cf5782840389528135601e1988360301811261228657600080fd5b870185810190356001600160401b038111156122a157600080fd5b8036038213156122b057600080fd5b6122bb868284611cf9565b9a87019a9550505090840190600101612265565b5091979650505050505050565b60a0815260006122f060a083018a8c611cf9565b6122fd602084018a612229565b8715156040840152828103606084015261231881878961224b565b9050828103608084015261232d818587611cf9565b9b9a5050505050505050505050565b813561234781611a6e565b815490151560ff1660ff19919091161781556001808201602061236c85820186611e04565b6001600160401b03811115612383576123836113b2565b612391816120e28654611db0565b6000601f8211600181146123bf57600083156123ad5750838201355b6123b78482611e98565b875550610bc6565b600086815260209020601f19841690835b828110156123ed57868501358255938701939089019087016123d0565b508482101561240a5760001960f88660031b161c19848701351681555b50505050841b90930190915550505050565b60006020828403121561242e57600080fd5b81516110b581611cc7565b8060005b60028110156104af57815184526020938401939091019060010161243d565b8481526001600160401b038416602082015260c0810161247f6040830185612439565b610a8b6080830184612439565b600080835461249a81611db0565b600182811680156124b257600181146124c7576124f6565b60ff19841687528215158302870194506124f6565b8760005260208060002060005b858110156124ed5781548a8201529084019082016124d4565b50505082870194505b50929695505050505050565b8183823760009101908152919050565b6001600160a01b038816815260a0602082018190526000906125369083018961154a565b6125436040840189612229565b828103606084015261255681878961224b565b9050828103608084015261256b818587611cf9565b9a995050505050505050505056fea264697066735822122054b9153e65a0ad25c4451e4619158933198be529d67829f27e9a2b1a68470ad464736f6c634300080f0033"; type RevertingEmptyMarsConstructorParams = | [signer?: Signer] diff --git a/src/evm/contracts/factories/Mars.sol/RevertingStringCloseChannelMars__factory.ts b/src/evm/contracts/factories/Mars.sol/RevertingStringCloseChannelMars__factory.ts index 235a7329..9f9e80da 100644 --- a/src/evm/contracts/factories/Mars.sol/RevertingStringCloseChannelMars__factory.ts +++ b/src/evm/contracts/factories/Mars.sol/RevertingStringCloseChannelMars__factory.ts @@ -925,7 +925,7 @@ const _abi = [ ] as const; const _bytecode = - "0x600360c0818152620312e360ec1b60e0526080908152610140604052610100918252620322e360ec1b6101205260a09190915262000042906006906002620000f9565b503480156200005057600080fd5b5060405162002a7038038062002a708339810160408190526200007391620001d0565b80806200008033620000a9565b600180546001600160a01b0319166001600160a01b039290921691909117905550620003739050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b82805482825590600052602060002090810192821562000144579160200282015b82811115620001445782518290620001339082620002a7565b50916020019190600101906200011a565b506200015292915062000156565b5090565b80821115620001525760006200016d828262000177565b5060010162000156565b508054620001859062000218565b6000825580601f1062000196575050565b601f016020900490600052602060002090810190620001b69190620001b9565b50565b5b80821115620001525760008155600101620001ba565b600060208284031215620001e357600080fd5b81516001600160a01b0381168114620001fb57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200022d57607f821691505b6020821081036200024e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002a257600081815260208120601f850160051c810160208610156200027d5750805b601f850160051c820191505b818110156200029e5782815560010162000289565b5050505b505050565b81516001600160401b03811115620002c357620002c362000202565b620002db81620002d4845462000218565b8462000254565b602080601f831160018114620003135760008415620002fa5750858301515b600019600386901b1c1916600185901b1785556200029e565b600085815260208120601f198616915b82811015620003445788860151825594840194600190910190840162000323565b5085821015620003635787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6126ed80620003836000396000f3fe6080604052600436106101445760003560e01c8063715018a6116100b6578063bb3f9f8d1161006f578063bb3f9f8d14610396578063cb7e9057146103c4578063e847e280146103e4578063f12b758a14610404578063f2fde38b14610424578063fad28a241461044457600080fd5b8063715018a6146102cf5780637a805598146102e45780637a9ccc4b146103045780637d622184146103245780637e1d42b5146103445780638da5cb5b1461036457600080fd5b80634dcc0aa6116101085780634dcc0aa6146101fd5780634eeb73911461022a578063558850ac1461025c5780635bfd12b81461027c578063602f98341461029c57806361995001146102bc57600080fd5b80631eb7dd5e146101505780633513a995146101725780633f9fdbe4146101505780634252ae9b146101a25780634bdb5597146101d057600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b5061017061016b366004611444565b610464565b005b6101856101803660046114c7565b6104e2565b6040516001600160401b0390911681526020015b60405180910390f35b3480156101ae57600080fd5b506101c26101bd366004611547565b610582565b6040516101999291906115ad565b3480156101dc57600080fd5b506101f06101eb3660046116de565b61063e565b6040516101999190611817565b34801561020957600080fd5b5061021d6102183660046118bd565b610683565b60405161019991906119a5565b34801561023657600080fd5b5061024a610245366004611547565b61085e565b604051610199969594939291906119f5565b34801561026857600080fd5b50610170610277366004611547565b610ab6565b34801561028857600080fd5b50610185610297366004611a6a565b610b1f565b3480156102a857600080fd5b506101706102b7366004611ae0565b610ba2565b6101706102ca366004611b66565b610c13565b3480156102db57600080fd5b50610170610cdf565b3480156102f057600080fd5b506101706102ff366004611b66565b610cf3565b34801561031057600080fd5b506101f061031f366004611c27565b610d75565b34801561033057600080fd5b506101f061033f366004611547565b610dad565b34801561035057600080fd5b5061017061035f366004611cb1565b610e59565b34801561037057600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610199565b3480156103a257600080fd5b506103b66103b1366004611547565b610ec5565b604051908152602001610199565b3480156103d057600080fd5b5060015461037e906001600160a01b031681565b3480156103f057600080fd5b506101706103ff366004611d1b565b610ee6565b34801561041057600080fd5b5061024a61041f366004611547565b610f1c565b34801561043057600080fd5b5061017061043f366004611d82565b610f2c565b34801561045057600080fd5b5061017061045f366004611547565b610fa5565b6001546001600160a01b0316331461048f576040516321bf7f4960e01b815260040160405180910390fd5b60405162461bcd60e51b815260206004820152601e60248201527f636c6f736520696263206368616e6e656c20697320726576657274696e67000060448201526064015b60405180910390fd5b50505050565b6001546040516330f8455760e21b81526000916001600160a01b03169063c3e1155c906105199088908b908b908a90600401611dc8565b6020604051808303816000875af1158015610538573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055c9190611dfc565b600154909150610578906001600160a01b031686838686610fd0565b9695505050505050565b6003818154811061059257600080fd5b60009182526020909120600290910201805460018201805460ff9092169350906105bb90611e19565b80601f01602080910402602001604051908101604052809291908181526020018280546105e790611e19565b80156106345780601f1061060957610100808354040283529160200191610634565b820191906000526020600020905b81548152906001019060200180831161061757829003601f168201915b5050505050905082565b6001546060906001600160a01b0316331461066c576040516321bf7f4960e01b815260040160405180910390fd5b61067786848461109f565b98975050505050505050565b6040805180820190915260008152606060208201526001546001600160a01b031633146106c3576040516321bf7f4960e01b815260040160405180910390fd5b600280546001810182556000919091528251805184926008027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0191908290819061070e9082611eb0565b506020918201516001909101558201518051600283019081906107319082611eb0565b5060209190910151600190910155604082015160048201805467ffffffffffffffff19166001600160401b039092169190911790556060820151600582019061077a9082611eb0565b50608082015180516006830180546020938401516001600160401b03908116600160401b026fffffffffffffffffffffffffffffffff199092169381169390931717905560a090930151600790920180549290931667ffffffffffffffff19929092169190911790915560408051808201825260018152905190918281019161084491017f7b20226163636f756e74223a20226163636f756e74222c20227265706c79223a8152732022676f7420746865206d65737361676522207d60601b602082015260340190565b60405160208183030381529060405281525090505b919050565b6004818154811061086e57600080fd5b9060005260206000209060080201600091509050806000016040518060400160405290816000820180546108a190611e19565b80601f01602080910402602001604051908101604052809291908181526020018280546108cd90611e19565b801561091a5780601f106108ef5761010080835404028352916020019161091a565b820191906000526020600020905b8154815290600101906020018083116108fd57829003601f168201915b50505050508152602001600182015481525050908060020160405180604001604052908160008201805461094d90611e19565b80601f016020809104026020016040519081016040528092919081815260200182805461097990611e19565b80156109c65780601f1061099b576101008083540402835291602001916109c6565b820191906000526020600020905b8154815290600101906020018083116109a957829003601f168201915b505050918352505060019190910154602090910152600482015460058301805492936001600160401b03909216926109fd90611e19565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2990611e19565b8015610a765780601f10610a4b57610100808354040283529160200191610a76565b820191906000526020600020905b815481529060010190602001808311610a5957829003601f168201915b50506040805180820190915260068601546001600160401b038082168352600160401b909104811660208301526007909601549495909416925088915050565b610abe6111c5565b6001546040516381bc079b60e01b8152600481018390526001600160a01b03909116906381bc079b90602401600060405180830381600087803b158015610b0457600080fd5b505af1158015610b18573d6000803e3d6000fd5b5050505050565b6001546040516330f8455760e21b81526000916001600160a01b03169063c3e1155c90610b56908690899089908890600401611dc8565b6020604051808303816000875af1158015610b75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b999190611dfc565b95945050505050565b6001546001600160a01b03163314610bcd576040516321bf7f4960e01b815260040160405180910390fd5b6004805460018101825560009190915281906008027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01610c0e82826121cb565b505050565b610c1b6111c5565b60015460405163418925b760e01b81526001600160a01b0390911690819063418925b790610c5b908c908c908c908c908c908c908c908c906004016123fe565b600060405180830381600087803b158015610c7557600080fd5b505af1158015610c89573d6000803e3d6000fd5b50505050610cd4818a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92508a9150899050888861121f565b505050505050505050565b610ce76111c5565b610cf160006112d4565b565b610cfb6111c5565b60015460405163418925b760e01b81526001600160a01b039091169063418925b790610d39908b908b908b908b908b908b908b908b906004016123fe565b600060405180830381600087803b158015610d5357600080fd5b505af1158015610d67573d6000803e3d6000fd5b505050505050505050505050565b6001546060906001600160a01b03163314610da3576040516321bf7f4960e01b815260040160405180910390fd5b6106778383611324565b60068181548110610dbd57600080fd5b906000526020600020016000915090508054610dd890611e19565b80601f0160208091040260200160405190810160405280929190818152602001828054610e0490611e19565b8015610e515780601f10610e2657610100808354040283529160200191610e51565b820191906000526020600020905b815481529060010190602001808311610e3457829003601f168201915b505050505081565b6001546001600160a01b03163314610e84576040516321bf7f4960e01b815260040160405180910390fd5b6003805460018101825560009190915281906002027fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b016104dc828261245e565b60058181548110610ed557600080fd5b600091825260209091200154905081565b6001546001600160a01b03163314610f11576040516321bf7f4960e01b815260040160405180910390fd5b610b1884838361109f565b6002818154811061086e57600080fd5b610f346111c5565b6001600160a01b038116610f995760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104d3565b610fa2816112d4565b50565b6001546001600160a01b03163314610fa2576040516321bf7f4960e01b815260040160405180910390fd5b846001600160a01b031663478222c26040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611010573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611034919061253e565b6001600160a01b03166318e3404b34868686866040518663ffffffff1660e01b8152600401611066949392919061255b565b6000604051808303818588803b15801561107f57600080fd5b505af1158015611093573d6000803e3d6000fd5b50505050505050505050565b606060005b6006548110156111a457600681815481106110c1576110c161258d565b906000526020600020016040516020016110db91906125a3565b604051602081830303815290604052805190602001208484604051602001611104929190612619565b604051602081830303815290604052805190602001200361119257600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db001859055604080516020601f86018190048102820181019092528481529085908590819084018382808284376000920191909152509294506111be9350505050565b8061119c81612629565b9150506110a4565b5060405163b01318a560e01b815260040160405180910390fd5b9392505050565b6000546001600160a01b03163314610cf15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104d3565b866001600160a01b031663478222c26040518163ffffffff1660e01b81526004016020604051808303816000875af115801561125f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611283919061253e565b6001600160a01b031663fce34e4034308989898989896040518963ffffffff1660e01b81526004016112bb9796959493929190612650565b6000604051808303818588803b158015610d5357600080fd5b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b606060005b6006548110156111a457600681815481106113465761134661258d565b9060005260206000200160405160200161136091906125a3565b604051602081830303815290604052805190602001208484604051602001611389929190612619565b60405160208183030381529060405280519060200120036113e45783838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509294506113f69350505050565b806113ee81612629565b915050611329565b92915050565b60008083601f84011261140e57600080fd5b5081356001600160401b0381111561142557600080fd5b60208301915083602082850101111561143d57600080fd5b9250929050565b6000806000806060858703121561145a57600080fd5b8435935060208501356001600160401b0381111561147757600080fd5b611483878288016113fc565b9598909750949560400135949350505050565b6001600160401b0381168114610fa257600080fd5b803561085981611496565b80604081018310156113f657600080fd5b60008060008060008060e087890312156114e057600080fd5b86356001600160401b038111156114f657600080fd5b61150289828a016113fc565b90975095505060208701359350604087013561151d81611496565b925061152c88606089016114b6565b915061153b8860a089016114b6565b90509295509295509295565b60006020828403121561155957600080fd5b5035919050565b6000815180845260005b818110156115865760208185018101518683018201520161156a565b81811115611598576000602083870101525b50601f01601f19169290920160200192915050565b82151581526040602082015260006115c86040830184611560565b949350505050565b80356003811061085957600080fd5b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715611617576116176115df565b60405290565b60405160c081016001600160401b0381118282101715611617576116176115df565b604051601f8201601f191681016001600160401b0381118282101715611667576116676115df565b604052919050565b600082601f83011261168057600080fd5b81356001600160401b03811115611699576116996115df565b6116ac601f8201601f191660200161163f565b8181528460208386010111156116c157600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600060c0888a0312156116f957600080fd5b611702886115d0565b965060208801356001600160401b038082111561171e57600080fd5b818a0191508a601f83011261173257600080fd5b813581811115611744576117446115df565b8060051b6117546020820161163f565b9182526020818501810192908101908e84111561177057600080fd5b6020860192505b838310156117ae57848335111561178d57600080fd5b61179d8f6020853589010161166f565b825260209283019290910190611777565b9a5050505060408a0135965060608a01359150808211156117ce57600080fd5b6117da8b838c0161166f565b955060808a0135945060a08a01359150808211156117f757600080fd5b506118048a828b016113fc565b989b979a50959850939692959293505050565b6020815260006111be6020830184611560565b60006040828403121561183c57600080fd5b6118446115f5565b905081356001600160401b0381111561185c57600080fd5b6118688482850161166f565b8252506020820135602082015292915050565b60006040828403121561188d57600080fd5b6118956115f5565b905081356118a281611496565b815260208201356118b281611496565b602082015292915050565b6000602082840312156118cf57600080fd5b81356001600160401b03808211156118e657600080fd5b9083019060e082860312156118fa57600080fd5b61190261161d565b82358281111561191157600080fd5b61191d8782860161182a565b82525060208301358281111561193257600080fd5b61193e8782860161182a565b602083015250611950604084016114ab565b604082015260608301358281111561196757600080fd5b6119738782860161166f565b606083015250611986866080850161187b565b608082015261199760c084016114ab565b60a082015295945050505050565b60208152815115156020820152600060208301516040808401526115c86060840182611560565b60008151604084526119e16040850182611560565b602093840151949093019390935250919050565b60e081526000611a0860e08301896119cc565b8281036020840152611a1a81896119cc565b90506001600160401b0380881660408501528382036060850152611a3e8288611560565b92508086511660808501528060208701511660a085015280851660c08501525050979650505050505050565b60008060008060608587031215611a8057600080fd5b84356001600160401b03811115611a9657600080fd5b611aa2878288016113fc565b909550935050602085013591506040850135611abd81611496565b939692955090935050565b600060e08284031215611ada57600080fd5b50919050565b600060208284031215611af257600080fd5b81356001600160401b03811115611b0857600080fd5b6115c884828501611ac8565b8015158114610fa257600080fd5b60008083601f840112611b3457600080fd5b5081356001600160401b03811115611b4b57600080fd5b6020830191508360208260051b850101111561143d57600080fd5b60008060008060008060008060a0898b031215611b8257600080fd5b88356001600160401b0380821115611b9957600080fd5b611ba58c838d016113fc565b909a509850889150611bb960208c016115d0565b975060408b01359150611bcb82611b14565b90955060608a01359080821115611be157600080fd5b611bed8c838d01611b22565b909650945060808b0135915080821115611c0657600080fd5b50611c138b828c016113fc565b999c989b5096995094979396929594505050565b60008060008060008060006080888a031215611c4257600080fd5b611c4b886115d0565b965060208801356001600160401b0380821115611c6757600080fd5b611c738b838c01611b22565b909850965060408a0135915080821115611c8c57600080fd5b611c988b838c016113fc565b909650945060608a01359150808211156117f757600080fd5b60008060408385031215611cc457600080fd5b82356001600160401b0380821115611cdb57600080fd5b611ce786838701611ac8565b93506020850135915080821115611cfd57600080fd5b50830160408186031215611d1057600080fd5b809150509250929050565b60008060008060608587031215611d3157600080fd5b843593506020850135925060408501356001600160401b03811115611d5557600080fd5b611d61878288016113fc565b95989497509550505050565b6001600160a01b0381168114610fa257600080fd5b600060208284031215611d9457600080fd5b81356111be81611d6d565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b848152606060208201526000611de2606083018587611d9f565b90506001600160401b038316604083015295945050505050565b600060208284031215611e0e57600080fd5b81516111be81611496565b600181811c90821680611e2d57607f821691505b602082108103611ada57634e487b7160e01b600052602260045260246000fd5b601f821115610c0e57600081815260208120601f850160051c81016020861015611e745750805b601f850160051c820191505b81811015611e9357828155600101611e80565b505050505050565b600019600383901b1c191660019190911b1790565b81516001600160401b03811115611ec957611ec96115df565b611edd81611ed78454611e19565b84611e4d565b602080601f831160018114611f0c5760008415611efa5750858301515b611f048582611e9b565b865550611e93565b600085815260208120601f198616915b82811015611f3b57888601518255948401946001909101908401611f1c565b5085821015611f595787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008235603e19833603018112611f7f57600080fd5b9190910192915050565b6000808335601e19843603018112611fa057600080fd5b8301803591506001600160401b03821115611fba57600080fd5b60200191503681900382131561143d57600080fd5b611fd98283611f89565b6001600160401b03811115611ff057611ff06115df565b61200481611ffe8554611e19565b85611e4d565b6000601f82116001811461203257600083156120205750838201355b61202a8482611e9b565b86555061208c565b600085815260209020601f19841690835b828110156120635786850135825560209485019460019092019101612043565b50848210156120805760001960f88660031b161c19848701351681555b505060018360011b0185555b50505050602082013560018201555050565b600081356113f681611496565b6001600160401b038311156120c2576120c26115df565b6120d6836120d08354611e19565b83611e4d565b6000601f84116001811461210457600085156120f25750838201355b6120fc8682611e9b565b845550610b18565b600083815260209020601f19861690835b828110156121355786850135825560209485019460019092019101612115565b50868210156121525760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b813561216f81611496565b815467ffffffffffffffff19166001600160401b03821617825550602082013561219881611496565b81546fffffffffffffffff0000000000000000191660409190911b6fffffffffffffffff00000000000000001617905550565b6121d58283611f69565b6121df8182611f89565b6001600160401b038111156121f6576121f66115df565b61220a816122048654611e19565b86611e4d565b6000601f82116001811461223857600083156122265750838201355b6122308482611e9b565b875550612292565b600086815260209020601f19841690835b828110156122695786850135825560209485019460019092019101612249565b50848210156122865760001960f88660031b161c19848701351681555b505060018360011b0186555b5050505060208101356001830155506122ba6122b16020840184611f69565b60028301611fcf565b6122ea6122c96040840161209e565b600483016001600160401b0382166001600160401b03198254161781555050565b6122f76060830183611f89565b6123058183600586016120ab565b50506123176080830160068301612164565b61234761232660c0840161209e565b600783016001600160401b0382166001600160401b03198254161781555050565b5050565b6003811061236957634e487b7160e01b600052602160045260246000fd5b9052565b81835260006020808501808196508560051b810191508460005b878110156123f15782840389528135601e198836030181126123a857600080fd5b870185810190356001600160401b038111156123c357600080fd5b8036038213156123d257600080fd5b6123dd868284611d9f565b9a87019a9550505090840190600101612387565b5091979650505050505050565b60a08152600061241260a083018a8c611d9f565b61241f602084018a61234b565b8715156040840152828103606084015261243a81878961236d565b9050828103608084015261244f818587611d9f565b9b9a5050505050505050505050565b813561246981611b14565b815490151560ff1660ff19919091161781556001808201602061248e85820186611f89565b6001600160401b038111156124a5576124a56115df565b6124b3816122048654611e19565b6000601f8211600181146124e157600083156124cf5750838201355b6124d98482611e9b565b875550610cd4565b600086815260209020601f19841690835b8281101561250f57868501358255938701939089019087016124f2565b508482101561252c5760001960f88660031b161c19848701351681555b50505050841b90930190915550505050565b60006020828403121561255057600080fd5b81516111be81611d6d565b8481526001600160401b038416602082015260c081016040848184013760408360808401376000815295945050505050565b634e487b7160e01b600052603260045260246000fd5b60008083546125b181611e19565b600182811680156125c957600181146125de5761260d565b60ff198416875282151583028701945061260d565b8760005260208060002060005b858110156126045781548a8201529084019082016125eb565b50505082870194505b50929695505050505050565b8183823760009101908152919050565b60006001820161264957634e487b7160e01b600052601160045260246000fd5b5060010190565b6001600160a01b038816815260a06020820181905260009061267490830189611560565b612681604084018961234b565b828103606084015261269481878961236d565b905082810360808401526126a9818587611d9f565b9a995050505050505050505056fea26469706673582212204fd0b814b9f5a9c09fff992094292c107f63f5afe66d0f0230b2a61382ad639b64736f6c634300080f0033"; + "0x600360c0818152620312e360ec1b60e0526080908152610140604052610100918252620322e360ec1b6101205260a09190915262000042906006906002620000f9565b503480156200005057600080fd5b5060405162002aef38038062002aef8339810160408190526200007391620001d0565b80806200008033620000a9565b600180546001600160a01b0319166001600160a01b039290921691909117905550620003739050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b82805482825590600052602060002090810192821562000144579160200282015b82811115620001445782518290620001339082620002a7565b50916020019190600101906200011a565b506200015292915062000156565b5090565b80821115620001525760006200016d828262000177565b5060010162000156565b508054620001859062000218565b6000825580601f1062000196575050565b601f016020900490600052602060002090810190620001b69190620001b9565b50565b5b80821115620001525760008155600101620001ba565b600060208284031215620001e357600080fd5b81516001600160a01b0381168114620001fb57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200022d57607f821691505b6020821081036200024e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002a257600081815260208120601f850160051c810160208610156200027d5750805b601f850160051c820191505b818110156200029e5782815560010162000289565b5050505b505050565b81516001600160401b03811115620002c357620002c362000202565b620002db81620002d4845462000218565b8462000254565b602080601f831160018114620003135760008415620002fa5750858301515b600019600386901b1c1916600185901b1785556200029e565b600085815260208120601f198616915b82811015620003445788860151825594840194600190910190840162000323565b5085821015620003635787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61276c80620003836000396000f3fe6080604052600436106101445760003560e01c8063715018a6116100b6578063bb3f9f8d1161006f578063bb3f9f8d14610396578063cb7e9057146103c4578063e847e280146103e4578063f12b758a14610404578063f2fde38b14610424578063fad28a241461044457600080fd5b8063715018a6146102cf5780637a805598146102e45780637a9ccc4b146103045780637d622184146103245780637e1d42b5146103445780638da5cb5b1461036457600080fd5b80634dcc0aa6116101085780634dcc0aa6146101fd5780634eeb73911461022a578063558850ac1461025c5780635bfd12b81461027c578063602f98341461029c57806361995001146102bc57600080fd5b80631eb7dd5e146101505780633513a995146101725780633f9fdbe4146101505780634252ae9b146101a25780634bdb5597146101d057600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b5061017061016b366004611444565b610464565b005b6101856101803660046115b5565b6104e2565b6040516001600160401b0390911681526020015b60405180910390f35b3480156101ae57600080fd5b506101c26101bd366004611635565b610582565b60405161019992919061169b565b3480156101dc57600080fd5b506101f06101eb36600461173c565b61063e565b6040516101999190611875565b34801561020957600080fd5b5061021d61021836600461191b565b610683565b6040516101999190611a03565b34801561023657600080fd5b5061024a610245366004611635565b61085e565b60405161019996959493929190611a53565b34801561026857600080fd5b50610170610277366004611635565b610ab6565b34801561028857600080fd5b50610185610297366004611ac8565b610b1f565b3480156102a857600080fd5b506101706102b7366004611b3e565b610ba2565b6101706102ca366004611bc4565b610c13565b3480156102db57600080fd5b50610170610cdf565b3480156102f057600080fd5b506101706102ff366004611bc4565b610cf3565b34801561031057600080fd5b506101f061031f366004611c85565b610d75565b34801561033057600080fd5b506101f061033f366004611635565b610dad565b34801561035057600080fd5b5061017061035f366004611d0f565b610e59565b34801561037057600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610199565b3480156103a257600080fd5b506103b66103b1366004611635565b610ec5565b604051908152602001610199565b3480156103d057600080fd5b5060015461037e906001600160a01b031681565b3480156103f057600080fd5b506101706103ff366004611d79565b610ee6565b34801561041057600080fd5b5061024a61041f366004611635565b610f1c565b34801561043057600080fd5b5061017061043f366004611de0565b610f2c565b34801561045057600080fd5b5061017061045f366004611635565b610fa5565b6001546001600160a01b0316331461048f576040516321bf7f4960e01b815260040160405180910390fd5b60405162461bcd60e51b815260206004820152601e60248201527f636c6f736520696263206368616e6e656c20697320726576657274696e67000060448201526064015b60405180910390fd5b50505050565b6001546040516330f8455760e21b81526000916001600160a01b03169063c3e1155c906105199088908b908b908a90600401611e26565b6020604051808303816000875af1158015610538573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055c9190611e5a565b600154909150610578906001600160a01b031686838686610fd0565b9695505050505050565b6003818154811061059257600080fd5b60009182526020909120600290910201805460018201805460ff9092169350906105bb90611e77565b80601f01602080910402602001604051908101604052809291908181526020018280546105e790611e77565b80156106345780601f1061060957610100808354040283529160200191610634565b820191906000526020600020905b81548152906001019060200180831161061757829003601f168201915b5050505050905082565b6001546060906001600160a01b0316331461066c576040516321bf7f4960e01b815260040160405180910390fd5b61067786848461109f565b98975050505050505050565b6040805180820190915260008152606060208201526001546001600160a01b031633146106c3576040516321bf7f4960e01b815260040160405180910390fd5b600280546001810182556000919091528251805184926008027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0191908290819061070e9082611f0e565b506020918201516001909101558201518051600283019081906107319082611f0e565b5060209190910151600190910155604082015160048201805467ffffffffffffffff19166001600160401b039092169190911790556060820151600582019061077a9082611f0e565b50608082015180516006830180546020938401516001600160401b03908116600160401b026fffffffffffffffffffffffffffffffff199092169381169390931717905560a090930151600790920180549290931667ffffffffffffffff19929092169190911790915560408051808201825260018152905190918281019161084491017f7b20226163636f756e74223a20226163636f756e74222c20227265706c79223a8152732022676f7420746865206d65737361676522207d60601b602082015260340190565b60405160208183030381529060405281525090505b919050565b6004818154811061086e57600080fd5b9060005260206000209060080201600091509050806000016040518060400160405290816000820180546108a190611e77565b80601f01602080910402602001604051908101604052809291908181526020018280546108cd90611e77565b801561091a5780601f106108ef5761010080835404028352916020019161091a565b820191906000526020600020905b8154815290600101906020018083116108fd57829003601f168201915b50505050508152602001600182015481525050908060020160405180604001604052908160008201805461094d90611e77565b80601f016020809104026020016040519081016040528092919081815260200182805461097990611e77565b80156109c65780601f1061099b576101008083540402835291602001916109c6565b820191906000526020600020905b8154815290600101906020018083116109a957829003601f168201915b505050918352505060019190910154602090910152600482015460058301805492936001600160401b03909216926109fd90611e77565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2990611e77565b8015610a765780601f10610a4b57610100808354040283529160200191610a76565b820191906000526020600020905b815481529060010190602001808311610a5957829003601f168201915b50506040805180820190915260068601546001600160401b038082168352600160401b909104811660208301526007909601549495909416925088915050565b610abe6111c5565b6001546040516381bc079b60e01b8152600481018390526001600160a01b03909116906381bc079b90602401600060405180830381600087803b158015610b0457600080fd5b505af1158015610b18573d6000803e3d6000fd5b5050505050565b6001546040516330f8455760e21b81526000916001600160a01b03169063c3e1155c90610b56908690899089908890600401611e26565b6020604051808303816000875af1158015610b75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b999190611e5a565b95945050505050565b6001546001600160a01b03163314610bcd576040516321bf7f4960e01b815260040160405180910390fd5b6004805460018101825560009190915281906008027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01610c0e8282612229565b505050565b610c1b6111c5565b60015460405163418925b760e01b81526001600160a01b0390911690819063418925b790610c5b908c908c908c908c908c908c908c908c9060040161245c565b600060405180830381600087803b158015610c7557600080fd5b505af1158015610c89573d6000803e3d6000fd5b50505050610cd4818a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92508a9150899050888861121f565b505050505050505050565b610ce76111c5565b610cf160006112d4565b565b610cfb6111c5565b60015460405163418925b760e01b81526001600160a01b039091169063418925b790610d39908b908b908b908b908b908b908b908b9060040161245c565b600060405180830381600087803b158015610d5357600080fd5b505af1158015610d67573d6000803e3d6000fd5b505050505050505050505050565b6001546060906001600160a01b03163314610da3576040516321bf7f4960e01b815260040160405180910390fd5b6106778383611324565b60068181548110610dbd57600080fd5b906000526020600020016000915090508054610dd890611e77565b80601f0160208091040260200160405190810160405280929190818152602001828054610e0490611e77565b8015610e515780601f10610e2657610100808354040283529160200191610e51565b820191906000526020600020905b815481529060010190602001808311610e3457829003601f168201915b505050505081565b6001546001600160a01b03163314610e84576040516321bf7f4960e01b815260040160405180910390fd5b6003805460018101825560009190915281906002027fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b016104dc82826124bc565b60058181548110610ed557600080fd5b600091825260209091200154905081565b6001546001600160a01b03163314610f11576040516321bf7f4960e01b815260040160405180910390fd5b610b1884838361109f565b6002818154811061086e57600080fd5b610f346111c5565b6001600160a01b038116610f995760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104d3565b610fa2816112d4565b50565b6001546001600160a01b03163314610fa2576040516321bf7f4960e01b815260040160405180910390fd5b846001600160a01b031663478222c26040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611010573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611034919061259c565b6001600160a01b03166318e3404b34868686866040518663ffffffff1660e01b815260040161106694939291906125dc565b6000604051808303818588803b15801561107f57600080fd5b505af1158015611093573d6000803e3d6000fd5b50505050505050505050565b606060005b6006548110156111a457600681815481106110c1576110c161260c565b906000526020600020016040516020016110db9190612622565b604051602081830303815290604052805190602001208484604051602001611104929190612698565b604051602081830303815290604052805190602001200361119257600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db001859055604080516020601f86018190048102820181019092528481529085908590819084018382808284376000920191909152509294506111be9350505050565b8061119c816126a8565b9150506110a4565b5060405163b01318a560e01b815260040160405180910390fd5b9392505050565b6000546001600160a01b03163314610cf15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104d3565b866001600160a01b031663478222c26040518163ffffffff1660e01b81526004016020604051808303816000875af115801561125f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611283919061259c565b6001600160a01b031663fce34e4034308989898989896040518963ffffffff1660e01b81526004016112bb97969594939291906126cf565b6000604051808303818588803b158015610d5357600080fd5b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b606060005b6006548110156111a457600681815481106113465761134661260c565b906000526020600020016040516020016113609190612622565b604051602081830303815290604052805190602001208484604051602001611389929190612698565b60405160208183030381529060405280519060200120036113e45783838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509294506113f69350505050565b806113ee816126a8565b915050611329565b92915050565b60008083601f84011261140e57600080fd5b5081356001600160401b0381111561142557600080fd5b60208301915083602082850101111561143d57600080fd5b9250929050565b6000806000806060858703121561145a57600080fd5b8435935060208501356001600160401b0381111561147757600080fd5b611483878288016113fc565b9598909750949560400135949350505050565b6001600160401b0381168114610fa257600080fd5b803561085981611496565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156114ee576114ee6114b6565b60405290565b60405160c081016001600160401b03811182821017156114ee576114ee6114b6565b604051601f8201601f191681016001600160401b038111828210171561153e5761153e6114b6565b604052919050565b600082601f83011261155757600080fd5b604051604081018181106001600160401b0382111715611579576115796114b6565b806040525080604084018581111561159057600080fd5b845b818110156115aa578035835260209283019201611592565b509195945050505050565b60008060008060008060e087890312156115ce57600080fd5b86356001600160401b038111156115e457600080fd5b6115f089828a016113fc565b90975095505060208701359350604087013561160b81611496565b925061161a8860608901611546565b91506116298860a08901611546565b90509295509295509295565b60006020828403121561164757600080fd5b5035919050565b6000815180845260005b8181101561167457602081850181015186830182015201611658565b81811115611686576000602083870101525b50601f01601f19169290920160200192915050565b82151581526040602082015260006116b6604083018461164e565b949350505050565b80356003811061085957600080fd5b600082601f8301126116de57600080fd5b81356001600160401b038111156116f7576116f76114b6565b61170a601f8201601f1916602001611516565b81815284602083860101111561171f57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600060c0888a03121561175757600080fd5b611760886116be565b965060208801356001600160401b038082111561177c57600080fd5b818a0191508a601f83011261179057600080fd5b8135818111156117a2576117a26114b6565b8060051b6117b260208201611516565b9182526020818501810192908101908e8411156117ce57600080fd5b6020860192505b8383101561180c5784833511156117eb57600080fd5b6117fb8f602085358901016116cd565b8252602092830192909101906117d5565b9a5050505060408a0135965060608a013591508082111561182c57600080fd5b6118388b838c016116cd565b955060808a0135945060a08a013591508082111561185557600080fd5b506118628a828b016113fc565b989b979a50959850939692959293505050565b6020815260006111be602083018461164e565b60006040828403121561189a57600080fd5b6118a26114cc565b905081356001600160401b038111156118ba57600080fd5b6118c6848285016116cd565b8252506020820135602082015292915050565b6000604082840312156118eb57600080fd5b6118f36114cc565b9050813561190081611496565b8152602082013561191081611496565b602082015292915050565b60006020828403121561192d57600080fd5b81356001600160401b038082111561194457600080fd5b9083019060e0828603121561195857600080fd5b6119606114f4565b82358281111561196f57600080fd5b61197b87828601611888565b82525060208301358281111561199057600080fd5b61199c87828601611888565b6020830152506119ae604084016114ab565b60408201526060830135828111156119c557600080fd5b6119d1878286016116cd565b6060830152506119e486608085016118d9565b60808201526119f560c084016114ab565b60a082015295945050505050565b60208152815115156020820152600060208301516040808401526116b6606084018261164e565b6000815160408452611a3f604085018261164e565b602093840151949093019390935250919050565b60e081526000611a6660e0830189611a2a565b8281036020840152611a788189611a2a565b90506001600160401b0380881660408501528382036060850152611a9c828861164e565b92508086511660808501528060208701511660a085015280851660c08501525050979650505050505050565b60008060008060608587031215611ade57600080fd5b84356001600160401b03811115611af457600080fd5b611b00878288016113fc565b909550935050602085013591506040850135611b1b81611496565b939692955090935050565b600060e08284031215611b3857600080fd5b50919050565b600060208284031215611b5057600080fd5b81356001600160401b03811115611b6657600080fd5b6116b684828501611b26565b8015158114610fa257600080fd5b60008083601f840112611b9257600080fd5b5081356001600160401b03811115611ba957600080fd5b6020830191508360208260051b850101111561143d57600080fd5b60008060008060008060008060a0898b031215611be057600080fd5b88356001600160401b0380821115611bf757600080fd5b611c038c838d016113fc565b909a509850889150611c1760208c016116be565b975060408b01359150611c2982611b72565b90955060608a01359080821115611c3f57600080fd5b611c4b8c838d01611b80565b909650945060808b0135915080821115611c6457600080fd5b50611c718b828c016113fc565b999c989b5096995094979396929594505050565b60008060008060008060006080888a031215611ca057600080fd5b611ca9886116be565b965060208801356001600160401b0380821115611cc557600080fd5b611cd18b838c01611b80565b909850965060408a0135915080821115611cea57600080fd5b611cf68b838c016113fc565b909650945060608a013591508082111561185557600080fd5b60008060408385031215611d2257600080fd5b82356001600160401b0380821115611d3957600080fd5b611d4586838701611b26565b93506020850135915080821115611d5b57600080fd5b50830160408186031215611d6e57600080fd5b809150509250929050565b60008060008060608587031215611d8f57600080fd5b843593506020850135925060408501356001600160401b03811115611db357600080fd5b611dbf878288016113fc565b95989497509550505050565b6001600160a01b0381168114610fa257600080fd5b600060208284031215611df257600080fd5b81356111be81611dcb565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b848152606060208201526000611e40606083018587611dfd565b90506001600160401b038316604083015295945050505050565b600060208284031215611e6c57600080fd5b81516111be81611496565b600181811c90821680611e8b57607f821691505b602082108103611b3857634e487b7160e01b600052602260045260246000fd5b601f821115610c0e57600081815260208120601f850160051c81016020861015611ed25750805b601f850160051c820191505b81811015611ef157828155600101611ede565b505050505050565b600019600383901b1c191660019190911b1790565b81516001600160401b03811115611f2757611f276114b6565b611f3b81611f358454611e77565b84611eab565b602080601f831160018114611f6a5760008415611f585750858301515b611f628582611ef9565b865550611ef1565b600085815260208120601f198616915b82811015611f9957888601518255948401946001909101908401611f7a565b5085821015611fb75787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008235603e19833603018112611fdd57600080fd5b9190910192915050565b6000808335601e19843603018112611ffe57600080fd5b8301803591506001600160401b0382111561201857600080fd5b60200191503681900382131561143d57600080fd5b6120378283611fe7565b6001600160401b0381111561204e5761204e6114b6565b6120628161205c8554611e77565b85611eab565b6000601f821160018114612090576000831561207e5750838201355b6120888482611ef9565b8655506120ea565b600085815260209020601f19841690835b828110156120c157868501358255602094850194600190920191016120a1565b50848210156120de5760001960f88660031b161c19848701351681555b505060018360011b0185555b50505050602082013560018201555050565b600081356113f681611496565b6001600160401b03831115612120576121206114b6565b6121348361212e8354611e77565b83611eab565b6000601f84116001811461216257600085156121505750838201355b61215a8682611ef9565b845550610b18565b600083815260209020601f19861690835b828110156121935786850135825560209485019460019092019101612173565b50868210156121b05760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81356121cd81611496565b815467ffffffffffffffff19166001600160401b0382161782555060208201356121f681611496565b81546fffffffffffffffff0000000000000000191660409190911b6fffffffffffffffff00000000000000001617905550565b6122338283611fc7565b61223d8182611fe7565b6001600160401b03811115612254576122546114b6565b612268816122628654611e77565b86611eab565b6000601f82116001811461229657600083156122845750838201355b61228e8482611ef9565b8755506122f0565b600086815260209020601f19841690835b828110156122c757868501358255602094850194600190920191016122a7565b50848210156122e45760001960f88660031b161c19848701351681555b505060018360011b0186555b50505050602081013560018301555061231861230f6020840184611fc7565b6002830161202d565b612348612327604084016120fc565b600483016001600160401b0382166001600160401b03198254161781555050565b6123556060830183611fe7565b612363818360058601612109565b505061237560808301600683016121c2565b6123a561238460c084016120fc565b600783016001600160401b0382166001600160401b03198254161781555050565b5050565b600381106123c757634e487b7160e01b600052602160045260246000fd5b9052565b81835260006020808501808196508560051b810191508460005b8781101561244f5782840389528135601e1988360301811261240657600080fd5b870185810190356001600160401b0381111561242157600080fd5b80360382131561243057600080fd5b61243b868284611dfd565b9a87019a95505050908401906001016123e5565b5091979650505050505050565b60a08152600061247060a083018a8c611dfd565b61247d602084018a6123a9565b871515604084015282810360608401526124988187896123cb565b905082810360808401526124ad818587611dfd565b9b9a5050505050505050505050565b81356124c781611b72565b815490151560ff1660ff1991909116178155600180820160206124ec85820186611fe7565b6001600160401b03811115612503576125036114b6565b612511816122628654611e77565b6000601f82116001811461253f576000831561252d5750838201355b6125378482611ef9565b875550610cd4565b600086815260209020601f19841690835b8281101561256d5786850135825593870193908901908701612550565b508482101561258a5760001960f88660031b161c19848701351681555b50505050841b90930190915550505050565b6000602082840312156125ae57600080fd5b81516111be81611dcb565b8060005b60028110156104dc5781518452602093840193909101906001016125bd565b8481526001600160401b038416602082015260c081016125ff60408301856125b9565b610b9960808301846125b9565b634e487b7160e01b600052603260045260246000fd5b600080835461263081611e77565b60018281168015612648576001811461265d5761268c565b60ff198416875282151583028701945061268c565b8760005260208060002060005b858110156126835781548a82015290840190820161266a565b50505082870194505b50929695505050505050565b8183823760009101908152919050565b6000600182016126c857634e487b7160e01b600052601160045260246000fd5b5060010190565b6001600160a01b038816815260a0602082018190526000906126f39083018961164e565b61270060408401896123a9565b82810360608401526127138187896123cb565b90508281036080840152612728818587611dfd565b9a995050505050505050505056fea264697066735822122077b202325252061aba560466b9813fa1168f0b552644c2f14b7fcc3fe05355d064736f6c634300080f0033"; type RevertingStringCloseChannelMarsConstructorParams = | [signer?: Signer] diff --git a/src/evm/contracts/factories/Mars.sol/RevertingStringMars__factory.ts b/src/evm/contracts/factories/Mars.sol/RevertingStringMars__factory.ts index 9ef0f55b..e000e0b1 100644 --- a/src/evm/contracts/factories/Mars.sol/RevertingStringMars__factory.ts +++ b/src/evm/contracts/factories/Mars.sol/RevertingStringMars__factory.ts @@ -925,7 +925,7 @@ const _abi = [ ] as const; const _bytecode = - "0x600360c0818152620312e360ec1b60e0526080908152610140604052610100918252620322e360ec1b6101205260a09190915262000042906006906002620000f9565b503480156200005057600080fd5b50604051620027ce380380620027ce8339810160408190526200007391620001d0565b80806200008033620000a9565b600180546001600160a01b0319166001600160a01b039290921691909117905550620003739050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b82805482825590600052602060002090810192821562000144579160200282015b82811115620001445782518290620001339082620002a7565b50916020019190600101906200011a565b506200015292915062000156565b5090565b80821115620001525760006200016d828262000177565b5060010162000156565b508054620001859062000218565b6000825580601f1062000196575050565b601f016020900490600052602060002090810190620001b69190620001b9565b50565b5b80821115620001525760008155600101620001ba565b600060208284031215620001e357600080fd5b81516001600160a01b0381168114620001fb57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200022d57607f821691505b6020821081036200024e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002a257600081815260208120601f850160051c810160208610156200027d5750805b601f850160051c820191505b818110156200029e5782815560010162000289565b5050505b505050565b81516001600160401b03811115620002c357620002c362000202565b620002db81620002d4845462000218565b8462000254565b602080601f831160018114620003135760008415620002fa5750858301515b600019600386901b1c1916600185901b1785556200029e565b600085815260208120601f198616915b82811015620003445788860151825594840194600190910190840162000323565b5085821015620003635787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61244b80620003836000396000f3fe6080604052600436106101445760003560e01c8063715018a6116100b6578063bb3f9f8d1161006f578063bb3f9f8d146103b6578063cb7e9057146103e4578063e847e28014610404578063f12b758a14610424578063f2fde38b14610444578063fad28a241461046457600080fd5b8063715018a6146102ef5780637a805598146103045780637a9ccc4b146103245780637d622184146103445780637e1d42b5146103645780638da5cb5b1461038457600080fd5b80634dcc0aa6116101085780634dcc0aa61461021d5780634eeb73911461024a578063558850ac1461027c5780635bfd12b81461029c578063602f9834146102bc57806361995001146102dc57600080fd5b80631eb7dd5e146101505780633513a995146101725780633f9fdbe4146101a25780634252ae9b146101c25780634bdb5597146101f057600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b5061017061016b36600461133d565b610484565b005b6101856101803660046113cb565b6104b5565b6040516001600160401b0390911681526020015b60405180910390f35b3480156101ae57600080fd5b506101706101bd36600461133d565b610555565b3480156101ce57600080fd5b506101e26101dd36600461144b565b610611565b6040516101999291906114b1565b3480156101fc57600080fd5b5061021061020b3660046115e2565b6106cd565b604051610199919061171b565b34801561022957600080fd5b5061023d6102383660046117c1565b610712565b60405161019991906118a9565b34801561025657600080fd5b5061026a61026536600461144b565b61079f565b604051610199969594939291906118f9565b34801561028857600080fd5b5061017061029736600461144b565b6109fc565b3480156102a857600080fd5b506101856102b736600461196e565b610a5e565b3480156102c857600080fd5b506101706102d73660046119e4565b610ae1565b6101706102ea366004611a5c565b610b52565b3480156102fb57600080fd5b50610170610c1e565b34801561031057600080fd5b5061017061031f366004611a5c565b610c32565b34801561033057600080fd5b5061021061033f366004611b22565b610cb4565b34801561035057600080fd5b5061021061035f36600461144b565b610d2a565b34801561037057600080fd5b5061017061037f366004611bac565b610dd6565b34801561039057600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610199565b3480156103c257600080fd5b506103d66103d136600461144b565b610e59565b604051908152602001610199565b3480156103f057600080fd5b5060015461039e906001600160a01b031681565b34801561041057600080fd5b5061017061041f366004611c16565b610e7a565b34801561043057600080fd5b5061026a61043f36600461144b565b610eed565b34801561045057600080fd5b5061017061045f366004611c7d565b610efd565b34801561047057600080fd5b5061017061047f36600461144b565b610f76565b6001546001600160a01b031633146104af576040516321bf7f4960e01b815260040160405180910390fd5b50505050565b6001546040516330f8455760e21b81526000916001600160a01b03169063c3e1155c906104ec9088908b908b908a90600401611cc3565b6020604051808303816000875af115801561050b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052f9190611cf7565b60015490915061054b906001600160a01b031686838686610fa1565b9695505050505050565b6001546001600160a01b03163314610580576040516321bf7f4960e01b815260040160405180910390fd5b6000805b6005548110156105eb5785600582815481106105a2576105a2611d14565b9060005260206000200154036105d957600581815481106105c5576105c5611d14565b6000918252602082200155600191506105eb565b806105e381611d2a565b915050610584565b508061060a57604051630781f76560e21b815260040160405180910390fd5b5050505050565b6003818154811061062157600080fd5b60009182526020909120600290910201805460018201805460ff90921693509061064a90611d51565b80601f016020809104026020016040519081016040528092919081815260200182805461067690611d51565b80156106c35780601f10610698576101008083540402835291602001916106c3565b820191906000526020600020905b8154815290600101906020018083116106a657829003601f168201915b5050505050905082565b6001546060906001600160a01b031633146106fb576040516321bf7f4960e01b815260040160405180910390fd5b610706868484611070565b98975050505050505050565b6040805180820190915260008152606060208201526001546001600160a01b03163314610752576040516321bf7f4960e01b815260040160405180910390fd5b60405162461bcd60e51b815260206004820152601b60248201527f6f6e2072656376207061636b657420697320726576657274696e67000000000060448201526064015b60405180910390fd5b600481815481106107af57600080fd5b9060005260206000209060080201600091509050806000016040518060400160405290816000820180546107e290611d51565b80601f016020809104026020016040519081016040528092919081815260200182805461080e90611d51565b801561085b5780601f106108305761010080835404028352916020019161085b565b820191906000526020600020905b81548152906001019060200180831161083e57829003601f168201915b50505050508152602001600182015481525050908060020160405180604001604052908160008201805461088e90611d51565b80601f01602080910402602001604051908101604052809291908181526020018280546108ba90611d51565b80156109075780601f106108dc57610100808354040283529160200191610907565b820191906000526020600020905b8154815290600101906020018083116108ea57829003601f168201915b505050918352505060019190910154602090910152600482015460058301805492936001600160401b039092169261093e90611d51565b80601f016020809104026020016040519081016040528092919081815260200182805461096a90611d51565b80156109b75780601f1061098c576101008083540402835291602001916109b7565b820191906000526020600020905b81548152906001019060200180831161099a57829003601f168201915b50506040805180820190915260068601546001600160401b03808216835268010000000000000000909104811660208301526007909601549495909416925088915050565b610a04611196565b6001546040516381bc079b60e01b8152600481018390526001600160a01b03909116906381bc079b90602401600060405180830381600087803b158015610a4a57600080fd5b505af115801561060a573d6000803e3d6000fd5b6001546040516330f8455760e21b81526000916001600160a01b03169063c3e1155c90610a95908690899089908890600401611cc3565b6020604051808303816000875af1158015610ab4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad89190611cf7565b95945050505050565b6001546001600160a01b03163314610b0c576040516321bf7f4960e01b815260040160405180910390fd5b6004805460018101825560009190915281906008027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01610b4d828261204a565b505050565b610b5a611196565b60015460405163418925b760e01b81526001600160a01b0390911690819063418925b790610b9a908c908c908c908c908c908c908c908c90600401612279565b600060405180830381600087803b158015610bb457600080fd5b505af1158015610bc8573d6000803e3d6000fd5b50505050610c13818a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92508a915089905088886111f0565b505050505050505050565b610c26611196565b610c3060006112a5565b565b610c3a611196565b60015460405163418925b760e01b81526001600160a01b039091169063418925b790610c78908b908b908b908b908b908b908b908b90600401612279565b600060405180830381600087803b158015610c9257600080fd5b505af1158015610ca6573d6000803e3d6000fd5b505050505050505050505050565b6001546060906001600160a01b03163314610ce2576040516321bf7f4960e01b815260040160405180910390fd5b60405162461bcd60e51b815260206004820152601d60248201527f6f70656e20696263206368616e6e656c20697320726576657274696e670000006044820152606401610796565b60068181548110610d3a57600080fd5b906000526020600020016000915090508054610d5590611d51565b80601f0160208091040260200160405190810160405280929190818152602001828054610d8190611d51565b8015610dce5780601f10610da357610100808354040283529160200191610dce565b820191906000526020600020905b815481529060010190602001808311610db157829003601f168201915b505050505081565b6001546001600160a01b03163314610e01576040516321bf7f4960e01b815260040160405180910390fd5b60405162461bcd60e51b815260206004820152602360248201527f61636b6e6f776c656467656d656e74207061636b657420697320726576657274604482015262696e6760e81b6064820152608401610796565b5050565b60058181548110610e6957600080fd5b600091825260209091200154905081565b6001546001600160a01b03163314610ea5576040516321bf7f4960e01b815260040160405180910390fd5b60405162461bcd60e51b815260206004820181905260248201527f636f6e6e65637420696263206368616e6e656c20697320726576657274696e676044820152606401610796565b600281815481106107af57600080fd5b610f05611196565b6001600160a01b038116610f6a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610796565b610f73816112a5565b50565b6001546001600160a01b03163314610f73576040516321bf7f4960e01b815260040160405180910390fd5b846001600160a01b031663478222c26040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610fe1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100591906122d9565b6001600160a01b03166318e3404b34868686866040518663ffffffff1660e01b815260040161103794939291906122f6565b6000604051808303818588803b15801561105057600080fd5b505af1158015611064573d6000803e3d6000fd5b50505050505050505050565b606060005b600654811015611175576006818154811061109257611092611d14565b906000526020600020016040516020016110ac9190612328565b6040516020818303038152906040528051906020012084846040516020016110d592919061239e565b604051602081830303815290604052805190602001200361116357600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db001859055604080516020601f860181900481028201810190925284815290859085908190840183828082843760009201919091525092945061118f9350505050565b8061116d81611d2a565b915050611075565b5060405163b01318a560e01b815260040160405180910390fd5b9392505050565b6000546001600160a01b03163314610c305760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610796565b866001600160a01b031663478222c26040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611230573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125491906122d9565b6001600160a01b031663fce34e4034308989898989896040518963ffffffff1660e01b815260040161128c97969594939291906123ae565b6000604051808303818588803b158015610c9257600080fd5b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261130757600080fd5b5081356001600160401b0381111561131e57600080fd5b60208301915083602082850101111561133657600080fd5b9250929050565b6000806000806060858703121561135357600080fd5b8435935060208501356001600160401b0381111561137057600080fd5b61137c878288016112f5565b9598909750949560400135949350505050565b6001600160401b0381168114610f7357600080fd5b80356113af8161138f565b919050565b80604081018310156113c557600080fd5b92915050565b60008060008060008060e087890312156113e457600080fd5b86356001600160401b038111156113fa57600080fd5b61140689828a016112f5565b9097509550506020870135935060408701356114218161138f565b925061143088606089016113b4565b915061143f8860a089016113b4565b90509295509295509295565b60006020828403121561145d57600080fd5b5035919050565b6000815180845260005b8181101561148a5760208185018101518683018201520161146e565b8181111561149c576000602083870101525b50601f01601f19169290920160200192915050565b82151581526040602082015260006114cc6040830184611464565b949350505050565b8035600381106113af57600080fd5b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171561151b5761151b6114e3565b60405290565b60405160c081016001600160401b038111828210171561151b5761151b6114e3565b604051601f8201601f191681016001600160401b038111828210171561156b5761156b6114e3565b604052919050565b600082601f83011261158457600080fd5b81356001600160401b0381111561159d5761159d6114e3565b6115b0601f8201601f1916602001611543565b8181528460208386010111156115c557600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600060c0888a0312156115fd57600080fd5b611606886114d4565b965060208801356001600160401b038082111561162257600080fd5b818a0191508a601f83011261163657600080fd5b813581811115611648576116486114e3565b8060051b61165860208201611543565b9182526020818501810192908101908e84111561167457600080fd5b6020860192505b838310156116b257848335111561169157600080fd5b6116a18f60208535890101611573565b82526020928301929091019061167b565b9a5050505060408a0135965060608a01359150808211156116d257600080fd5b6116de8b838c01611573565b955060808a0135945060a08a01359150808211156116fb57600080fd5b506117088a828b016112f5565b989b979a50959850939692959293505050565b60208152600061118f6020830184611464565b60006040828403121561174057600080fd5b6117486114f9565b905081356001600160401b0381111561176057600080fd5b61176c84828501611573565b8252506020820135602082015292915050565b60006040828403121561179157600080fd5b6117996114f9565b905081356117a68161138f565b815260208201356117b68161138f565b602082015292915050565b6000602082840312156117d357600080fd5b81356001600160401b03808211156117ea57600080fd5b9083019060e082860312156117fe57600080fd5b611806611521565b82358281111561181557600080fd5b6118218782860161172e565b82525060208301358281111561183657600080fd5b6118428782860161172e565b602083015250611854604084016113a4565b604082015260608301358281111561186b57600080fd5b61187787828601611573565b60608301525061188a866080850161177f565b608082015261189b60c084016113a4565b60a082015295945050505050565b60208152815115156020820152600060208301516040808401526114cc6060840182611464565b60008151604084526118e56040850182611464565b602093840151949093019390935250919050565b60e08152600061190c60e08301896118d0565b828103602084015261191e81896118d0565b90506001600160401b03808816604085015283820360608501526119428288611464565b92508086511660808501528060208701511660a085015280851660c08501525050979650505050505050565b6000806000806060858703121561198457600080fd5b84356001600160401b0381111561199a57600080fd5b6119a6878288016112f5565b9095509350506020850135915060408501356119c18161138f565b939692955090935050565b600060e082840312156119de57600080fd5b50919050565b6000602082840312156119f657600080fd5b81356001600160401b03811115611a0c57600080fd5b6114cc848285016119cc565b60008083601f840112611a2a57600080fd5b5081356001600160401b03811115611a4157600080fd5b6020830191508360208260051b850101111561133657600080fd5b60008060008060008060008060a0898b031215611a7857600080fd5b88356001600160401b0380821115611a8f57600080fd5b611a9b8c838d016112f5565b909a509850889150611aaf60208c016114d4565b975060408b013591508115158214611ac657600080fd5b90955060608a01359080821115611adc57600080fd5b611ae88c838d01611a18565b909650945060808b0135915080821115611b0157600080fd5b50611b0e8b828c016112f5565b999c989b5096995094979396929594505050565b60008060008060008060006080888a031215611b3d57600080fd5b611b46886114d4565b965060208801356001600160401b0380821115611b6257600080fd5b611b6e8b838c01611a18565b909850965060408a0135915080821115611b8757600080fd5b611b938b838c016112f5565b909650945060608a01359150808211156116fb57600080fd5b60008060408385031215611bbf57600080fd5b82356001600160401b0380821115611bd657600080fd5b611be2868387016119cc565b93506020850135915080821115611bf857600080fd5b50830160408186031215611c0b57600080fd5b809150509250929050565b60008060008060608587031215611c2c57600080fd5b843593506020850135925060408501356001600160401b03811115611c5057600080fd5b611c5c878288016112f5565b95989497509550505050565b6001600160a01b0381168114610f7357600080fd5b600060208284031215611c8f57600080fd5b813561118f81611c68565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b848152606060208201526000611cdd606083018587611c9a565b90506001600160401b038316604083015295945050505050565b600060208284031215611d0957600080fd5b815161118f8161138f565b634e487b7160e01b600052603260045260246000fd5b600060018201611d4a57634e487b7160e01b600052601160045260246000fd5b5060010190565b600181811c90821680611d6557607f821691505b6020821081036119de57634e487b7160e01b600052602260045260246000fd5b60008235603e19833603018112611d9b57600080fd5b9190910192915050565b6000808335601e19843603018112611dbc57600080fd5b8301803591506001600160401b03821115611dd657600080fd5b60200191503681900382131561133657600080fd5b601f821115610b4d57600081815260208120601f850160051c81016020861015611e125750805b601f850160051c820191505b81811015611e3157828155600101611e1e565b505050505050565b600019600383901b1c191660019190911b1790565b611e588283611da5565b6001600160401b03811115611e6f57611e6f6114e3565b611e8381611e7d8554611d51565b85611deb565b6000601f821160018114611eb15760008315611e9f5750838201355b611ea98482611e39565b865550611f0b565b600085815260209020601f19841690835b82811015611ee25786850135825560209485019460019092019101611ec2565b5084821015611eff5760001960f88660031b161c19848701351681555b505060018360011b0185555b50505050602082013560018201555050565b600081356113c58161138f565b6001600160401b03831115611f4157611f416114e3565b611f5583611f4f8354611d51565b83611deb565b6000601f841160018114611f835760008515611f715750838201355b611f7b8682611e39565b84555061060a565b600083815260209020601f19861690835b82811015611fb45786850135825560209485019460019092019101611f94565b5086821015611fd15760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b8135611fee8161138f565b815467ffffffffffffffff19166001600160401b0382161782555060208201356120178161138f565b81546fffffffffffffffff0000000000000000191660409190911b6fffffffffffffffff00000000000000001617905550565b6120548283611d85565b61205e8182611da5565b6001600160401b03811115612075576120756114e3565b612089816120838654611d51565b86611deb565b6000601f8211600181146120b757600083156120a55750838201355b6120af8482611e39565b875550612111565b600086815260209020601f19841690835b828110156120e857868501358255602094850194600190920191016120c8565b50848210156121055760001960f88660031b161c19848701351681555b505060018360011b0186555b5050505060208101356001830155506121396121306020840184611d85565b60028301611e4e565b61216961214860408401611f1d565b600483016001600160401b0382166001600160401b03198254161781555050565b6121766060830183611da5565b612184818360058601611f2a565b50506121966080830160068301611fe3565b610e556121a560c08401611f1d565b600783016001600160401b0382166001600160401b03198254161781555050565b600381106121e457634e487b7160e01b600052602160045260246000fd5b9052565b81835260006020808501808196508560051b810191508460005b8781101561226c5782840389528135601e1988360301811261222357600080fd5b870185810190356001600160401b0381111561223e57600080fd5b80360382131561224d57600080fd5b612258868284611c9a565b9a87019a9550505090840190600101612202565b5091979650505050505050565b60a08152600061228d60a083018a8c611c9a565b61229a602084018a6121c6565b871515604084015282810360608401526122b58187896121e8565b905082810360808401526122ca818587611c9a565b9b9a5050505050505050505050565b6000602082840312156122eb57600080fd5b815161118f81611c68565b8481526001600160401b038416602082015260c081016040848184013760408360808401376000815295945050505050565b600080835461233681611d51565b6001828116801561234e576001811461236357612392565b60ff1984168752821515830287019450612392565b8760005260208060002060005b858110156123895781548a820152908401908201612370565b50505082870194505b50929695505050505050565b8183823760009101908152919050565b6001600160a01b038816815260a0602082018190526000906123d290830189611464565b6123df60408401896121c6565b82810360608401526123f28187896121e8565b90508281036080840152612407818587611c9a565b9a995050505050505050505056fea2646970667358221220103490c1b5f24f4defbd63a52bbbe6cadb79676d4ef72023d7e89206fbe6b43964736f6c634300080f0033"; + "0x600360c0818152620312e360ec1b60e0526080908152610140604052610100918252620322e360ec1b6101205260a09190915262000042906006906002620000f9565b503480156200005057600080fd5b506040516200284d3803806200284d8339810160408190526200007391620001d0565b80806200008033620000a9565b600180546001600160a01b0319166001600160a01b039290921691909117905550620003739050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b82805482825590600052602060002090810192821562000144579160200282015b82811115620001445782518290620001339082620002a7565b50916020019190600101906200011a565b506200015292915062000156565b5090565b80821115620001525760006200016d828262000177565b5060010162000156565b508054620001859062000218565b6000825580601f1062000196575050565b601f016020900490600052602060002090810190620001b69190620001b9565b50565b5b80821115620001525760008155600101620001ba565b600060208284031215620001e357600080fd5b81516001600160a01b0381168114620001fb57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200022d57607f821691505b6020821081036200024e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002a257600081815260208120601f850160051c810160208610156200027d5750805b601f850160051c820191505b818110156200029e5782815560010162000289565b5050505b505050565b81516001600160401b03811115620002c357620002c362000202565b620002db81620002d4845462000218565b8462000254565b602080601f831160018114620003135760008415620002fa5750858301515b600019600386901b1c1916600185901b1785556200029e565b600085815260208120601f198616915b82811015620003445788860151825594840194600190910190840162000323565b5085821015620003635787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6124ca80620003836000396000f3fe6080604052600436106101445760003560e01c8063715018a6116100b6578063bb3f9f8d1161006f578063bb3f9f8d146103b6578063cb7e9057146103e4578063e847e28014610404578063f12b758a14610424578063f2fde38b14610444578063fad28a241461046457600080fd5b8063715018a6146102ef5780637a805598146103045780637a9ccc4b146103245780637d622184146103445780637e1d42b5146103645780638da5cb5b1461038457600080fd5b80634dcc0aa6116101085780634dcc0aa61461021d5780634eeb73911461024a578063558850ac1461027c5780635bfd12b81461029c578063602f9834146102bc57806361995001146102dc57600080fd5b80631eb7dd5e146101505780633513a995146101725780633f9fdbe4146101a25780634252ae9b146101c25780634bdb5597146101f057600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b5061017061016b36600461133d565b610484565b005b6101856101803660046114b3565b6104b5565b6040516001600160401b0390911681526020015b60405180910390f35b3480156101ae57600080fd5b506101706101bd36600461133d565b610555565b3480156101ce57600080fd5b506101e26101dd366004611533565b610611565b604051610199929190611599565b3480156101fc57600080fd5b5061021061020b36600461163a565b6106cd565b6040516101999190611773565b34801561022957600080fd5b5061023d610238366004611819565b610712565b6040516101999190611901565b34801561025657600080fd5b5061026a610265366004611533565b61079f565b60405161019996959493929190611951565b34801561028857600080fd5b50610170610297366004611533565b6109fc565b3480156102a857600080fd5b506101856102b73660046119c6565b610a5e565b3480156102c857600080fd5b506101706102d7366004611a3c565b610ae1565b6101706102ea366004611ab4565b610b52565b3480156102fb57600080fd5b50610170610c1e565b34801561031057600080fd5b5061017061031f366004611ab4565b610c32565b34801561033057600080fd5b5061021061033f366004611b7a565b610cb4565b34801561035057600080fd5b5061021061035f366004611533565b610d2a565b34801561037057600080fd5b5061017061037f366004611c04565b610dd6565b34801561039057600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610199565b3480156103c257600080fd5b506103d66103d1366004611533565b610e59565b604051908152602001610199565b3480156103f057600080fd5b5060015461039e906001600160a01b031681565b34801561041057600080fd5b5061017061041f366004611c6e565b610e7a565b34801561043057600080fd5b5061026a61043f366004611533565b610eed565b34801561045057600080fd5b5061017061045f366004611cd5565b610efd565b34801561047057600080fd5b5061017061047f366004611533565b610f76565b6001546001600160a01b031633146104af576040516321bf7f4960e01b815260040160405180910390fd5b50505050565b6001546040516330f8455760e21b81526000916001600160a01b03169063c3e1155c906104ec9088908b908b908a90600401611d1b565b6020604051808303816000875af115801561050b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052f9190611d4f565b60015490915061054b906001600160a01b031686838686610fa1565b9695505050505050565b6001546001600160a01b03163314610580576040516321bf7f4960e01b815260040160405180910390fd5b6000805b6005548110156105eb5785600582815481106105a2576105a2611d6c565b9060005260206000200154036105d957600581815481106105c5576105c5611d6c565b6000918252602082200155600191506105eb565b806105e381611d82565b915050610584565b508061060a57604051630781f76560e21b815260040160405180910390fd5b5050505050565b6003818154811061062157600080fd5b60009182526020909120600290910201805460018201805460ff90921693509061064a90611da9565b80601f016020809104026020016040519081016040528092919081815260200182805461067690611da9565b80156106c35780601f10610698576101008083540402835291602001916106c3565b820191906000526020600020905b8154815290600101906020018083116106a657829003601f168201915b5050505050905082565b6001546060906001600160a01b031633146106fb576040516321bf7f4960e01b815260040160405180910390fd5b610706868484611070565b98975050505050505050565b6040805180820190915260008152606060208201526001546001600160a01b03163314610752576040516321bf7f4960e01b815260040160405180910390fd5b60405162461bcd60e51b815260206004820152601b60248201527f6f6e2072656376207061636b657420697320726576657274696e67000000000060448201526064015b60405180910390fd5b600481815481106107af57600080fd5b9060005260206000209060080201600091509050806000016040518060400160405290816000820180546107e290611da9565b80601f016020809104026020016040519081016040528092919081815260200182805461080e90611da9565b801561085b5780601f106108305761010080835404028352916020019161085b565b820191906000526020600020905b81548152906001019060200180831161083e57829003601f168201915b50505050508152602001600182015481525050908060020160405180604001604052908160008201805461088e90611da9565b80601f01602080910402602001604051908101604052809291908181526020018280546108ba90611da9565b80156109075780601f106108dc57610100808354040283529160200191610907565b820191906000526020600020905b8154815290600101906020018083116108ea57829003601f168201915b505050918352505060019190910154602090910152600482015460058301805492936001600160401b039092169261093e90611da9565b80601f016020809104026020016040519081016040528092919081815260200182805461096a90611da9565b80156109b75780601f1061098c576101008083540402835291602001916109b7565b820191906000526020600020905b81548152906001019060200180831161099a57829003601f168201915b50506040805180820190915260068601546001600160401b03808216835268010000000000000000909104811660208301526007909601549495909416925088915050565b610a04611196565b6001546040516381bc079b60e01b8152600481018390526001600160a01b03909116906381bc079b90602401600060405180830381600087803b158015610a4a57600080fd5b505af115801561060a573d6000803e3d6000fd5b6001546040516330f8455760e21b81526000916001600160a01b03169063c3e1155c90610a95908690899089908890600401611d1b565b6020604051808303816000875af1158015610ab4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad89190611d4f565b95945050505050565b6001546001600160a01b03163314610b0c576040516321bf7f4960e01b815260040160405180910390fd5b6004805460018101825560009190915281906008027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01610b4d82826120a8565b505050565b610b5a611196565b60015460405163418925b760e01b81526001600160a01b0390911690819063418925b790610b9a908c908c908c908c908c908c908c908c906004016122d7565b600060405180830381600087803b158015610bb457600080fd5b505af1158015610bc8573d6000803e3d6000fd5b50505050610c13818a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92508a915089905088886111f0565b505050505050505050565b610c26611196565b610c3060006112a5565b565b610c3a611196565b60015460405163418925b760e01b81526001600160a01b039091169063418925b790610c78908b908b908b908b908b908b908b908b906004016122d7565b600060405180830381600087803b158015610c9257600080fd5b505af1158015610ca6573d6000803e3d6000fd5b505050505050505050505050565b6001546060906001600160a01b03163314610ce2576040516321bf7f4960e01b815260040160405180910390fd5b60405162461bcd60e51b815260206004820152601d60248201527f6f70656e20696263206368616e6e656c20697320726576657274696e670000006044820152606401610796565b60068181548110610d3a57600080fd5b906000526020600020016000915090508054610d5590611da9565b80601f0160208091040260200160405190810160405280929190818152602001828054610d8190611da9565b8015610dce5780601f10610da357610100808354040283529160200191610dce565b820191906000526020600020905b815481529060010190602001808311610db157829003601f168201915b505050505081565b6001546001600160a01b03163314610e01576040516321bf7f4960e01b815260040160405180910390fd5b60405162461bcd60e51b815260206004820152602360248201527f61636b6e6f776c656467656d656e74207061636b657420697320726576657274604482015262696e6760e81b6064820152608401610796565b5050565b60058181548110610e6957600080fd5b600091825260209091200154905081565b6001546001600160a01b03163314610ea5576040516321bf7f4960e01b815260040160405180910390fd5b60405162461bcd60e51b815260206004820181905260248201527f636f6e6e65637420696263206368616e6e656c20697320726576657274696e676044820152606401610796565b600281815481106107af57600080fd5b610f05611196565b6001600160a01b038116610f6a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610796565b610f73816112a5565b50565b6001546001600160a01b03163314610f73576040516321bf7f4960e01b815260040160405180910390fd5b846001600160a01b031663478222c26040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610fe1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110059190612337565b6001600160a01b03166318e3404b34868686866040518663ffffffff1660e01b81526004016110379493929190612377565b6000604051808303818588803b15801561105057600080fd5b505af1158015611064573d6000803e3d6000fd5b50505050505050505050565b606060005b600654811015611175576006818154811061109257611092611d6c565b906000526020600020016040516020016110ac91906123a7565b6040516020818303038152906040528051906020012084846040516020016110d592919061241d565b604051602081830303815290604052805190602001200361116357600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db001859055604080516020601f860181900481028201810190925284815290859085908190840183828082843760009201919091525092945061118f9350505050565b8061116d81611d82565b915050611075565b5060405163b01318a560e01b815260040160405180910390fd5b9392505050565b6000546001600160a01b03163314610c305760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610796565b866001600160a01b031663478222c26040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611230573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112549190612337565b6001600160a01b031663fce34e4034308989898989896040518963ffffffff1660e01b815260040161128c979695949392919061242d565b6000604051808303818588803b158015610c9257600080fd5b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261130757600080fd5b5081356001600160401b0381111561131e57600080fd5b60208301915083602082850101111561133657600080fd5b9250929050565b6000806000806060858703121561135357600080fd5b8435935060208501356001600160401b0381111561137057600080fd5b61137c878288016112f5565b9598909750949560400135949350505050565b6001600160401b0381168114610f7357600080fd5b80356113af8161138f565b919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156113ec576113ec6113b4565b60405290565b60405160c081016001600160401b03811182821017156113ec576113ec6113b4565b604051601f8201601f191681016001600160401b038111828210171561143c5761143c6113b4565b604052919050565b600082601f83011261145557600080fd5b604051604081018181106001600160401b0382111715611477576114776113b4565b806040525080604084018581111561148e57600080fd5b845b818110156114a8578035835260209283019201611490565b509195945050505050565b60008060008060008060e087890312156114cc57600080fd5b86356001600160401b038111156114e257600080fd5b6114ee89828a016112f5565b9097509550506020870135935060408701356115098161138f565b92506115188860608901611444565b91506115278860a08901611444565b90509295509295509295565b60006020828403121561154557600080fd5b5035919050565b6000815180845260005b8181101561157257602081850181015186830182015201611556565b81811115611584576000602083870101525b50601f01601f19169290920160200192915050565b82151581526040602082015260006115b4604083018461154c565b949350505050565b8035600381106113af57600080fd5b600082601f8301126115dc57600080fd5b81356001600160401b038111156115f5576115f56113b4565b611608601f8201601f1916602001611414565b81815284602083860101111561161d57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600060c0888a03121561165557600080fd5b61165e886115bc565b965060208801356001600160401b038082111561167a57600080fd5b818a0191508a601f83011261168e57600080fd5b8135818111156116a0576116a06113b4565b8060051b6116b060208201611414565b9182526020818501810192908101908e8411156116cc57600080fd5b6020860192505b8383101561170a5784833511156116e957600080fd5b6116f98f602085358901016115cb565b8252602092830192909101906116d3565b9a5050505060408a0135965060608a013591508082111561172a57600080fd5b6117368b838c016115cb565b955060808a0135945060a08a013591508082111561175357600080fd5b506117608a828b016112f5565b989b979a50959850939692959293505050565b60208152600061118f602083018461154c565b60006040828403121561179857600080fd5b6117a06113ca565b905081356001600160401b038111156117b857600080fd5b6117c4848285016115cb565b8252506020820135602082015292915050565b6000604082840312156117e957600080fd5b6117f16113ca565b905081356117fe8161138f565b8152602082013561180e8161138f565b602082015292915050565b60006020828403121561182b57600080fd5b81356001600160401b038082111561184257600080fd5b9083019060e0828603121561185657600080fd5b61185e6113f2565b82358281111561186d57600080fd5b61187987828601611786565b82525060208301358281111561188e57600080fd5b61189a87828601611786565b6020830152506118ac604084016113a4565b60408201526060830135828111156118c357600080fd5b6118cf878286016115cb565b6060830152506118e286608085016117d7565b60808201526118f360c084016113a4565b60a082015295945050505050565b60208152815115156020820152600060208301516040808401526115b4606084018261154c565b600081516040845261193d604085018261154c565b602093840151949093019390935250919050565b60e08152600061196460e0830189611928565b82810360208401526119768189611928565b90506001600160401b038088166040850152838203606085015261199a828861154c565b92508086511660808501528060208701511660a085015280851660c08501525050979650505050505050565b600080600080606085870312156119dc57600080fd5b84356001600160401b038111156119f257600080fd5b6119fe878288016112f5565b909550935050602085013591506040850135611a198161138f565b939692955090935050565b600060e08284031215611a3657600080fd5b50919050565b600060208284031215611a4e57600080fd5b81356001600160401b03811115611a6457600080fd5b6115b484828501611a24565b60008083601f840112611a8257600080fd5b5081356001600160401b03811115611a9957600080fd5b6020830191508360208260051b850101111561133657600080fd5b60008060008060008060008060a0898b031215611ad057600080fd5b88356001600160401b0380821115611ae757600080fd5b611af38c838d016112f5565b909a509850889150611b0760208c016115bc565b975060408b013591508115158214611b1e57600080fd5b90955060608a01359080821115611b3457600080fd5b611b408c838d01611a70565b909650945060808b0135915080821115611b5957600080fd5b50611b668b828c016112f5565b999c989b5096995094979396929594505050565b60008060008060008060006080888a031215611b9557600080fd5b611b9e886115bc565b965060208801356001600160401b0380821115611bba57600080fd5b611bc68b838c01611a70565b909850965060408a0135915080821115611bdf57600080fd5b611beb8b838c016112f5565b909650945060608a013591508082111561175357600080fd5b60008060408385031215611c1757600080fd5b82356001600160401b0380821115611c2e57600080fd5b611c3a86838701611a24565b93506020850135915080821115611c5057600080fd5b50830160408186031215611c6357600080fd5b809150509250929050565b60008060008060608587031215611c8457600080fd5b843593506020850135925060408501356001600160401b03811115611ca857600080fd5b611cb4878288016112f5565b95989497509550505050565b6001600160a01b0381168114610f7357600080fd5b600060208284031215611ce757600080fd5b813561118f81611cc0565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b848152606060208201526000611d35606083018587611cf2565b90506001600160401b038316604083015295945050505050565b600060208284031215611d6157600080fd5b815161118f8161138f565b634e487b7160e01b600052603260045260246000fd5b600060018201611da257634e487b7160e01b600052601160045260246000fd5b5060010190565b600181811c90821680611dbd57607f821691505b602082108103611a3657634e487b7160e01b600052602260045260246000fd5b60008235603e19833603018112611df357600080fd5b9190910192915050565b6000808335601e19843603018112611e1457600080fd5b8301803591506001600160401b03821115611e2e57600080fd5b60200191503681900382131561133657600080fd5b601f821115610b4d57600081815260208120601f850160051c81016020861015611e6a5750805b601f850160051c820191505b81811015611e8957828155600101611e76565b505050505050565b600019600383901b1c191660019190911b1790565b611eb08283611dfd565b6001600160401b03811115611ec757611ec76113b4565b611edb81611ed58554611da9565b85611e43565b6000601f821160018114611f095760008315611ef75750838201355b611f018482611e91565b865550611f63565b600085815260209020601f19841690835b82811015611f3a5786850135825560209485019460019092019101611f1a565b5084821015611f575760001960f88660031b161c19848701351681555b505060018360011b0185555b50505050602082013560018201555050565b60008135611f828161138f565b92915050565b6001600160401b03831115611f9f57611f9f6113b4565b611fb383611fad8354611da9565b83611e43565b6000601f841160018114611fe15760008515611fcf5750838201355b611fd98682611e91565b84555061060a565b600083815260209020601f19861690835b828110156120125786850135825560209485019460019092019101611ff2565b508682101561202f5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b813561204c8161138f565b815467ffffffffffffffff19166001600160401b0382161782555060208201356120758161138f565b81546fffffffffffffffff0000000000000000191660409190911b6fffffffffffffffff00000000000000001617905550565b6120b28283611ddd565b6120bc8182611dfd565b6001600160401b038111156120d3576120d36113b4565b6120e7816120e18654611da9565b86611e43565b6000601f82116001811461211557600083156121035750838201355b61210d8482611e91565b87555061216f565b600086815260209020601f19841690835b828110156121465786850135825560209485019460019092019101612126565b50848210156121635760001960f88660031b161c19848701351681555b505060018360011b0186555b50505050602081013560018301555061219761218e6020840184611ddd565b60028301611ea6565b6121c76121a660408401611f75565b600483016001600160401b0382166001600160401b03198254161781555050565b6121d46060830183611dfd565b6121e2818360058601611f88565b50506121f46080830160068301612041565b610e5561220360c08401611f75565b600783016001600160401b0382166001600160401b03198254161781555050565b6003811061224257634e487b7160e01b600052602160045260246000fd5b9052565b81835260006020808501808196508560051b810191508460005b878110156122ca5782840389528135601e1988360301811261228157600080fd5b870185810190356001600160401b0381111561229c57600080fd5b8036038213156122ab57600080fd5b6122b6868284611cf2565b9a87019a9550505090840190600101612260565b5091979650505050505050565b60a0815260006122eb60a083018a8c611cf2565b6122f8602084018a612224565b87151560408401528281036060840152612313818789612246565b90508281036080840152612328818587611cf2565b9b9a5050505050505050505050565b60006020828403121561234957600080fd5b815161118f81611cc0565b8060005b60028110156104af578151845260209384019390910190600101612358565b8481526001600160401b038416602082015260c0810161239a6040830185612354565b610ad86080830184612354565b60008083546123b581611da9565b600182811680156123cd57600181146123e257612411565b60ff1984168752821515830287019450612411565b8760005260208060002060005b858110156124085781548a8201529084019082016123ef565b50505082870194505b50929695505050505050565b8183823760009101908152919050565b6001600160a01b038816815260a0602082018190526000906124519083018961154c565b61245e6040840189612224565b8281036060840152612471818789612246565b90508281036080840152612486818587611cf2565b9a995050505050505050505056fea26469706673582212204e80b26e743850d891f87f15f06d9f0aa561953ef51ff1db71ff70bd6fb3114b64736f6c634300080f0033"; type RevertingStringMarsConstructorParams = | [signer?: Signer] diff --git a/src/evm/contracts/factories/Moon__factory.ts b/src/evm/contracts/factories/Moon__factory.ts index 1e48bbcb..cb9c45ce 100644 --- a/src/evm/contracts/factories/Moon__factory.ts +++ b/src/evm/contracts/factories/Moon__factory.ts @@ -922,7 +922,7 @@ const _abi = [ ] as const; const _bytecode = - "0x600360c0818152620312e360ec1b60e0526080908152610140604052610100918252620322e360ec1b6101205260a09190915262000042906006906002620000f9565b503480156200005057600080fd5b5060405162002afa38038062002afa8339810160408190526200007391620001d0565b80806200008033620000a9565b600180546001600160a01b0319166001600160a01b039290921691909117905550620003739050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b82805482825590600052602060002090810192821562000144579160200282015b82811115620001445782518290620001339082620002a7565b50916020019190600101906200011a565b506200015292915062000156565b5090565b80821115620001525760006200016d828262000177565b5060010162000156565b508054620001859062000218565b6000825580601f1062000196575050565b601f016020900490600052602060002090810190620001b69190620001b9565b50565b5b80821115620001525760008155600101620001ba565b600060208284031215620001e357600080fd5b81516001600160a01b0381168114620001fb57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200022d57607f821691505b6020821081036200024e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002a257600081815260208120601f850160051c810160208610156200027d5750805b601f850160051c820191505b818110156200029e5782815560010162000289565b5050505b505050565b81516001600160401b03811115620002c357620002c362000202565b620002db81620002d4845462000218565b8462000254565b602080601f831160018114620003135760008415620002fa5750858301515b600019600386901b1c1916600185901b1785556200029e565b600085815260208120601f198616915b82811015620003445788860151825594840194600190910190840162000323565b5085821015620003635787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61277780620003836000396000f3fe6080604052600436106101445760003560e01c8063715018a6116100b6578063bb3f9f8d1161006f578063bb3f9f8d146103b6578063cb7e9057146103e4578063e847e28014610404578063f12b758a14610424578063f2fde38b14610444578063fad28a241461046457600080fd5b8063715018a6146102ef5780637a805598146103045780637a9ccc4b146103245780637d622184146103445780637e1d42b5146103645780638da5cb5b1461038457600080fd5b80634dcc0aa6116101085780634dcc0aa61461021d5780634eeb73911461024a578063558850ac1461027c5780635bfd12b81461029c578063602f9834146102bc57806361995001146102dc57600080fd5b80631eb7dd5e146101505780633513a995146101725780633f9fdbe4146101a25780634252ae9b146101c25780634bdb5597146101f057600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b5061017061016b3660046114d1565b610484565b005b610185610180366004611554565b6104b5565b6040516001600160401b0390911681526020015b60405180910390f35b3480156101ae57600080fd5b506101706101bd3660046114d1565b610555565b3480156101ce57600080fd5b506101e26101dd3660046115d4565b610611565b60405161019992919061163a565b3480156101fc57600080fd5b5061021061020b36600461176b565b6106cd565b60405161019991906118a4565b34801561022957600080fd5b5061023d61023836600461194a565b610712565b6040516101999190611a32565b34801561025657600080fd5b5061026a6102653660046115d4565b6108ed565b60405161019996959493929190611a82565b34801561028857600080fd5b506101706102973660046115d4565b610b45565b3480156102a857600080fd5b506101856102b7366004611af7565b610ba7565b3480156102c857600080fd5b506101706102d7366004611b6d565b610c2a565b6101706102ea366004611bf3565b610c9b565b3480156102fb57600080fd5b50610170610d67565b34801561031057600080fd5b5061017061031f366004611bf3565b610d7b565b34801561033057600080fd5b5061021061033f366004611cb4565b610dfd565b34801561035057600080fd5b5061021061035f3660046115d4565b610e35565b34801561037057600080fd5b5061017061037f366004611d3e565b610ee1565b34801561039057600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610199565b3480156103c257600080fd5b506103d66103d13660046115d4565b610f4d565b604051908152602001610199565b3480156103f057600080fd5b5060015461039e906001600160a01b031681565b34801561041057600080fd5b5061017061041f366004611da8565b610f6e565b34801561043057600080fd5b5061026a61043f3660046115d4565b610fa4565b34801561045057600080fd5b5061017061045f366004611e0f565b610fb4565b34801561047057600080fd5b5061017061047f3660046115d4565b611032565b6001546001600160a01b031633146104af576040516321bf7f4960e01b815260040160405180910390fd5b50505050565b6001546040516330f8455760e21b81526000916001600160a01b03169063c3e1155c906104ec9088908b908b908a90600401611e55565b6020604051808303816000875af115801561050b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052f9190611e89565b60015490915061054b906001600160a01b03168683868661105d565b9695505050505050565b6001546001600160a01b03163314610580576040516321bf7f4960e01b815260040160405180910390fd5b6000805b6005548110156105eb5785600582815481106105a2576105a2611ea6565b9060005260206000200154036105d957600581815481106105c5576105c5611ea6565b6000918252602082200155600191506105eb565b806105e381611ebc565b915050610584565b508061060a57604051630781f76560e21b815260040160405180910390fd5b5050505050565b6003818154811061062157600080fd5b60009182526020909120600290910201805460018201805460ff90921693509061064a90611ee3565b80601f016020809104026020016040519081016040528092919081815260200182805461067690611ee3565b80156106c35780601f10610698576101008083540402835291602001916106c3565b820191906000526020600020905b8154815290600101906020018083116106a657829003601f168201915b5050505050905082565b6001546060906001600160a01b031633146106fb576040516321bf7f4960e01b815260040160405180910390fd5b61070686848461112c565b98975050505050505050565b6040805180820190915260008152606060208201526001546001600160a01b03163314610752576040516321bf7f4960e01b815260040160405180910390fd5b600280546001810182556000919091528251805184926008027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0191908290819061079d9082611f7a565b506020918201516001909101558201518051600283019081906107c09082611f7a565b5060209190910151600190910155604082015160048201805467ffffffffffffffff19166001600160401b03909216919091179055606082015160058201906108099082611f7a565b50608082015180516006830180546020938401516001600160401b03908116600160401b026fffffffffffffffffffffffffffffffff199092169381169390931717905560a090930151600790920180549290931667ffffffffffffffff1992909216919091179091556040805180820182526001815290519091828101916108d391017f7b20226163636f756e74223a20226163636f756e74222c20227265706c79223a8152732022676f7420746865206d65737361676522207d60601b602082015260340190565b60405160208183030381529060405281525090505b919050565b600481815481106108fd57600080fd5b90600052602060002090600802016000915090508060000160405180604001604052908160008201805461093090611ee3565b80601f016020809104026020016040519081016040528092919081815260200182805461095c90611ee3565b80156109a95780601f1061097e576101008083540402835291602001916109a9565b820191906000526020600020905b81548152906001019060200180831161098c57829003601f168201915b5050505050815260200160018201548152505090806002016040518060400160405290816000820180546109dc90611ee3565b80601f0160208091040260200160405190810160405280929190818152602001828054610a0890611ee3565b8015610a555780601f10610a2a57610100808354040283529160200191610a55565b820191906000526020600020905b815481529060010190602001808311610a3857829003601f168201915b505050918352505060019190910154602090910152600482015460058301805492936001600160401b0390921692610a8c90611ee3565b80601f0160208091040260200160405190810160405280929190818152602001828054610ab890611ee3565b8015610b055780601f10610ada57610100808354040283529160200191610b05565b820191906000526020600020905b815481529060010190602001808311610ae857829003601f168201915b50506040805180820190915260068601546001600160401b038082168352600160401b909104811660208301526007909601549495909416925088915050565b610b4d611252565b6001546040516381bc079b60e01b8152600481018390526001600160a01b03909116906381bc079b90602401600060405180830381600087803b158015610b9357600080fd5b505af115801561060a573d6000803e3d6000fd5b6001546040516330f8455760e21b81526000916001600160a01b03169063c3e1155c90610bde908690899089908890600401611e55565b6020604051808303816000875af1158015610bfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c219190611e89565b95945050505050565b6001546001600160a01b03163314610c55576040516321bf7f4960e01b815260040160405180910390fd5b6004805460018101825560009190915281906008027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01610c968282612295565b505050565b610ca3611252565b60015460405163418925b760e01b81526001600160a01b0390911690819063418925b790610ce3908c908c908c908c908c908c908c908c906004016124c5565b600060405180830381600087803b158015610cfd57600080fd5b505af1158015610d11573d6000803e3d6000fd5b50505050610d5c818a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92508a915089905088886112ac565b505050505050505050565b610d6f611252565b610d796000611361565b565b610d83611252565b60015460405163418925b760e01b81526001600160a01b039091169063418925b790610dc1908b908b908b908b908b908b908b908b906004016124c5565b600060405180830381600087803b158015610ddb57600080fd5b505af1158015610def573d6000803e3d6000fd5b505050505050505050505050565b6001546060906001600160a01b03163314610e2b576040516321bf7f4960e01b815260040160405180910390fd5b61070683836113b1565b60068181548110610e4557600080fd5b906000526020600020016000915090508054610e6090611ee3565b80601f0160208091040260200160405190810160405280929190818152602001828054610e8c90611ee3565b8015610ed95780601f10610eae57610100808354040283529160200191610ed9565b820191906000526020600020905b815481529060010190602001808311610ebc57829003601f168201915b505050505081565b6001546001600160a01b03163314610f0c576040516321bf7f4960e01b815260040160405180910390fd5b6003805460018101825560009190915281906002027fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b016104af8282612525565b60058181548110610f5d57600080fd5b600091825260209091200154905081565b6001546001600160a01b03163314610f99576040516321bf7f4960e01b815260040160405180910390fd5b61060a84838361112c565b600281815481106108fd57600080fd5b610fbc611252565b6001600160a01b0381166110265760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61102f81611361565b50565b6001546001600160a01b0316331461102f576040516321bf7f4960e01b815260040160405180910390fd5b846001600160a01b031663478222c26040518163ffffffff1660e01b81526004016020604051808303816000875af115801561109d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c19190612605565b6001600160a01b03166318e3404b34868686866040518663ffffffff1660e01b81526004016110f39493929190612622565b6000604051808303818588803b15801561110c57600080fd5b505af1158015611120573d6000803e3d6000fd5b50505050505050505050565b606060005b600654811015611231576006818154811061114e5761114e611ea6565b906000526020600020016040516020016111689190612654565b6040516020818303038152906040528051906020012084846040516020016111919291906126ca565b604051602081830303815290604052805190602001200361121f57600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db001859055604080516020601f860181900481028201810190925284815290859085908190840183828082843760009201919091525092945061124b9350505050565b8061122981611ebc565b915050611131565b5060405163b01318a560e01b815260040160405180910390fd5b9392505050565b6000546001600160a01b03163314610d795760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161101d565b866001600160a01b031663478222c26040518163ffffffff1660e01b81526004016020604051808303816000875af11580156112ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113109190612605565b6001600160a01b031663fce34e4034308989898989896040518963ffffffff1660e01b815260040161134897969594939291906126da565b6000604051808303818588803b158015610ddb57600080fd5b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b606060005b60065481101561123157600681815481106113d3576113d3611ea6565b906000526020600020016040516020016113ed9190612654565b6040516020818303038152906040528051906020012084846040516020016114169291906126ca565b60405160208183030381529060405280519060200120036114715783838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509294506114839350505050565b8061147b81611ebc565b9150506113b6565b92915050565b60008083601f84011261149b57600080fd5b5081356001600160401b038111156114b257600080fd5b6020830191508360208285010111156114ca57600080fd5b9250929050565b600080600080606085870312156114e757600080fd5b8435935060208501356001600160401b0381111561150457600080fd5b61151087828801611489565b9598909750949560400135949350505050565b6001600160401b038116811461102f57600080fd5b80356108e881611523565b806040810183101561148357600080fd5b60008060008060008060e0878903121561156d57600080fd5b86356001600160401b0381111561158357600080fd5b61158f89828a01611489565b9097509550506020870135935060408701356115aa81611523565b92506115b98860608901611543565b91506115c88860a08901611543565b90509295509295509295565b6000602082840312156115e657600080fd5b5035919050565b6000815180845260005b81811015611613576020818501810151868301820152016115f7565b81811115611625576000602083870101525b50601f01601f19169290920160200192915050565b821515815260406020820152600061165560408301846115ed565b949350505050565b8035600381106108e857600080fd5b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156116a4576116a461166c565b60405290565b60405160c081016001600160401b03811182821017156116a4576116a461166c565b604051601f8201601f191681016001600160401b03811182821017156116f4576116f461166c565b604052919050565b600082601f83011261170d57600080fd5b81356001600160401b038111156117265761172661166c565b611739601f8201601f19166020016116cc565b81815284602083860101111561174e57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600060c0888a03121561178657600080fd5b61178f8861165d565b965060208801356001600160401b03808211156117ab57600080fd5b818a0191508a601f8301126117bf57600080fd5b8135818111156117d1576117d161166c565b8060051b6117e1602082016116cc565b9182526020818501810192908101908e8411156117fd57600080fd5b6020860192505b8383101561183b57848335111561181a57600080fd5b61182a8f602085358901016116fc565b825260209283019290910190611804565b9a5050505060408a0135965060608a013591508082111561185b57600080fd5b6118678b838c016116fc565b955060808a0135945060a08a013591508082111561188457600080fd5b506118918a828b01611489565b989b979a50959850939692959293505050565b60208152600061124b60208301846115ed565b6000604082840312156118c957600080fd5b6118d1611682565b905081356001600160401b038111156118e957600080fd5b6118f5848285016116fc565b8252506020820135602082015292915050565b60006040828403121561191a57600080fd5b611922611682565b9050813561192f81611523565b8152602082013561193f81611523565b602082015292915050565b60006020828403121561195c57600080fd5b81356001600160401b038082111561197357600080fd5b9083019060e0828603121561198757600080fd5b61198f6116aa565b82358281111561199e57600080fd5b6119aa878286016118b7565b8252506020830135828111156119bf57600080fd5b6119cb878286016118b7565b6020830152506119dd60408401611538565b60408201526060830135828111156119f457600080fd5b611a00878286016116fc565b606083015250611a138660808501611908565b6080820152611a2460c08401611538565b60a082015295945050505050565b602081528151151560208201526000602083015160408084015261165560608401826115ed565b6000815160408452611a6e60408501826115ed565b602093840151949093019390935250919050565b60e081526000611a9560e0830189611a59565b8281036020840152611aa78189611a59565b90506001600160401b0380881660408501528382036060850152611acb82886115ed565b92508086511660808501528060208701511660a085015280851660c08501525050979650505050505050565b60008060008060608587031215611b0d57600080fd5b84356001600160401b03811115611b2357600080fd5b611b2f87828801611489565b909550935050602085013591506040850135611b4a81611523565b939692955090935050565b600060e08284031215611b6757600080fd5b50919050565b600060208284031215611b7f57600080fd5b81356001600160401b03811115611b9557600080fd5b61165584828501611b55565b801515811461102f57600080fd5b60008083601f840112611bc157600080fd5b5081356001600160401b03811115611bd857600080fd5b6020830191508360208260051b85010111156114ca57600080fd5b60008060008060008060008060a0898b031215611c0f57600080fd5b88356001600160401b0380821115611c2657600080fd5b611c328c838d01611489565b909a509850889150611c4660208c0161165d565b975060408b01359150611c5882611ba1565b90955060608a01359080821115611c6e57600080fd5b611c7a8c838d01611baf565b909650945060808b0135915080821115611c9357600080fd5b50611ca08b828c01611489565b999c989b5096995094979396929594505050565b60008060008060008060006080888a031215611ccf57600080fd5b611cd88861165d565b965060208801356001600160401b0380821115611cf457600080fd5b611d008b838c01611baf565b909850965060408a0135915080821115611d1957600080fd5b611d258b838c01611489565b909650945060608a013591508082111561188457600080fd5b60008060408385031215611d5157600080fd5b82356001600160401b0380821115611d6857600080fd5b611d7486838701611b55565b93506020850135915080821115611d8a57600080fd5b50830160408186031215611d9d57600080fd5b809150509250929050565b60008060008060608587031215611dbe57600080fd5b843593506020850135925060408501356001600160401b03811115611de257600080fd5b611dee87828801611489565b95989497509550505050565b6001600160a01b038116811461102f57600080fd5b600060208284031215611e2157600080fd5b813561124b81611dfa565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b848152606060208201526000611e6f606083018587611e2c565b90506001600160401b038316604083015295945050505050565b600060208284031215611e9b57600080fd5b815161124b81611523565b634e487b7160e01b600052603260045260246000fd5b600060018201611edc57634e487b7160e01b600052601160045260246000fd5b5060010190565b600181811c90821680611ef757607f821691505b602082108103611b6757634e487b7160e01b600052602260045260246000fd5b601f821115610c9657600081815260208120601f850160051c81016020861015611f3e5750805b601f850160051c820191505b81811015611f5d57828155600101611f4a565b505050505050565b600019600383901b1c191660019190911b1790565b81516001600160401b03811115611f9357611f9361166c565b611fa781611fa18454611ee3565b84611f17565b602080601f831160018114611fd65760008415611fc45750858301515b611fce8582611f65565b865550611f5d565b600085815260208120601f198616915b8281101561200557888601518255948401946001909101908401611fe6565b50858210156120235787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008235603e1983360301811261204957600080fd5b9190910192915050565b6000808335601e1984360301811261206a57600080fd5b8301803591506001600160401b0382111561208457600080fd5b6020019150368190038213156114ca57600080fd5b6120a38283612053565b6001600160401b038111156120ba576120ba61166c565b6120ce816120c88554611ee3565b85611f17565b6000601f8211600181146120fc57600083156120ea5750838201355b6120f48482611f65565b865550612156565b600085815260209020601f19841690835b8281101561212d578685013582556020948501946001909201910161210d565b508482101561214a5760001960f88660031b161c19848701351681555b505060018360011b0185555b50505050602082013560018201555050565b6000813561148381611523565b6001600160401b0383111561218c5761218c61166c565b6121a08361219a8354611ee3565b83611f17565b6000601f8411600181146121ce57600085156121bc5750838201355b6121c68682611f65565b84555061060a565b600083815260209020601f19861690835b828110156121ff57868501358255602094850194600190920191016121df565b508682101561221c5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b813561223981611523565b815467ffffffffffffffff19166001600160401b03821617825550602082013561226281611523565b81546fffffffffffffffff0000000000000000191660409190911b6fffffffffffffffff00000000000000001617905550565b61229f8283612033565b6122a98182612053565b6001600160401b038111156122c0576122c061166c565b6122d4816122ce8654611ee3565b86611f17565b6000601f82116001811461230257600083156122f05750838201355b6122fa8482611f65565b87555061235c565b600086815260209020601f19841690835b828110156123335786850135825560209485019460019092019101612313565b50848210156123505760001960f88660031b161c19848701351681555b505060018360011b0186555b50505050602081013560018301555061238461237b6020840184612033565b60028301612099565b6123b461239360408401612168565b600483016001600160401b0382166001600160401b03198254161781555050565b6123c16060830183612053565b6123cf818360058601612175565b50506123e1608083016006830161222e565b6124116123f060c08401612168565b600783016001600160401b0382166001600160401b03198254161781555050565b5050565b6003811061243357634e487b7160e01b600052602160045260246000fd5b9052565b818352600060208085019450848460051b86018460005b878110156124b85783830389528135601e1988360301811261246f57600080fd5b870185810190356001600160401b0381111561248a57600080fd5b80360382131561249957600080fd5b6124a4858284611e2c565b9a87019a945050509084019060010161244e565b5090979650505050505050565b60a0815260006124d960a083018a8c611e2c565b6124e6602084018a612415565b87151560408401528281036060840152612501818789612437565b90508281036080840152612516818587611e2c565b9b9a5050505050505050505050565b813561253081611ba1565b815490151560ff1660ff19919091161781556001808201602061255585820186612053565b6001600160401b0381111561256c5761256c61166c565b61257a816122ce8654611ee3565b6000601f8211600181146125a857600083156125965750838201355b6125a08482611f65565b875550610d5c565b600086815260209020601f19841690835b828110156125d657868501358255938701939089019087016125b9565b50848210156125f35760001960f88660031b161c19848701351681555b50505050841b90930190915550505050565b60006020828403121561261757600080fd5b815161124b81611dfa565b8481526001600160401b038416602082015260c081016040848184013760408360808401376000815295945050505050565b600080835461266281611ee3565b6001828116801561267a576001811461268f576126be565b60ff19841687528215158302870194506126be565b8760005260208060002060005b858110156126b55781548a82015290840190820161269c565b50505082870194505b50929695505050505050565b8183823760009101908152919050565b6001600160a01b038816815260a0602082018190526000906126fe908301896115ed565b61270b6040840189612415565b828103606084015261271e818789612437565b90508281036080840152612733818587611e2c565b9a995050505050505050505056fea264697066735822122004acd447ae83637fb9c00cb702c80343ff5548709d057d8ab749a783155e7b0664736f6c634300080f0033"; + "0x600360c0818152620312e360ec1b60e0526080908152610140604052610100918252620322e360ec1b6101205260a09190915262000042906006906002620000f9565b503480156200005057600080fd5b5060405162002b7c38038062002b7c8339810160408190526200007391620001d0565b80806200008033620000a9565b600180546001600160a01b0319166001600160a01b039290921691909117905550620003739050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b82805482825590600052602060002090810192821562000144579160200282015b82811115620001445782518290620001339082620002a7565b50916020019190600101906200011a565b506200015292915062000156565b5090565b80821115620001525760006200016d828262000177565b5060010162000156565b508054620001859062000218565b6000825580601f1062000196575050565b601f016020900490600052602060002090810190620001b69190620001b9565b50565b5b80821115620001525760008155600101620001ba565b600060208284031215620001e357600080fd5b81516001600160a01b0381168114620001fb57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200022d57607f821691505b6020821081036200024e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002a257600081815260208120601f850160051c810160208610156200027d5750805b601f850160051c820191505b818110156200029e5782815560010162000289565b5050505b505050565b81516001600160401b03811115620002c357620002c362000202565b620002db81620002d4845462000218565b8462000254565b602080601f831160018114620003135760008415620002fa5750858301515b600019600386901b1c1916600185901b1785556200029e565b600085815260208120601f198616915b82811015620003445788860151825594840194600190910190840162000323565b5085821015620003635787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6127f980620003836000396000f3fe6080604052600436106101445760003560e01c8063715018a6116100b6578063bb3f9f8d1161006f578063bb3f9f8d146103b6578063cb7e9057146103e4578063e847e28014610404578063f12b758a14610424578063f2fde38b14610444578063fad28a241461046457600080fd5b8063715018a6146102ef5780637a805598146103045780637a9ccc4b146103245780637d622184146103445780637e1d42b5146103645780638da5cb5b1461038457600080fd5b80634dcc0aa6116101085780634dcc0aa61461021d5780634eeb73911461024a578063558850ac1461027c5780635bfd12b81461029c578063602f9834146102bc57806361995001146102dc57600080fd5b80631eb7dd5e146101505780633513a995146101725780633f9fdbe4146101a25780634252ae9b146101c25780634bdb5597146101f057600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b5061017061016b3660046114d1565b610484565b005b610185610180366004611642565b6104b5565b6040516001600160401b0390911681526020015b60405180910390f35b3480156101ae57600080fd5b506101706101bd3660046114d1565b610555565b3480156101ce57600080fd5b506101e26101dd3660046116c2565b610611565b604051610199929190611728565b3480156101fc57600080fd5b5061021061020b3660046117c9565b6106cd565b6040516101999190611902565b34801561022957600080fd5b5061023d6102383660046119a8565b610712565b6040516101999190611a90565b34801561025657600080fd5b5061026a6102653660046116c2565b6108ed565b60405161019996959493929190611ae0565b34801561028857600080fd5b506101706102973660046116c2565b610b45565b3480156102a857600080fd5b506101856102b7366004611b55565b610ba7565b3480156102c857600080fd5b506101706102d7366004611bcb565b610c2a565b6101706102ea366004611c51565b610c9b565b3480156102fb57600080fd5b50610170610d67565b34801561031057600080fd5b5061017061031f366004611c51565b610d7b565b34801561033057600080fd5b5061021061033f366004611d12565b610dfd565b34801561035057600080fd5b5061021061035f3660046116c2565b610e35565b34801561037057600080fd5b5061017061037f366004611d9c565b610ee1565b34801561039057600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610199565b3480156103c257600080fd5b506103d66103d13660046116c2565b610f4d565b604051908152602001610199565b3480156103f057600080fd5b5060015461039e906001600160a01b031681565b34801561041057600080fd5b5061017061041f366004611e06565b610f6e565b34801561043057600080fd5b5061026a61043f3660046116c2565b610fa4565b34801561045057600080fd5b5061017061045f366004611e6d565b610fb4565b34801561047057600080fd5b5061017061047f3660046116c2565b611032565b6001546001600160a01b031633146104af576040516321bf7f4960e01b815260040160405180910390fd5b50505050565b6001546040516330f8455760e21b81526000916001600160a01b03169063c3e1155c906104ec9088908b908b908a90600401611eb3565b6020604051808303816000875af115801561050b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052f9190611ee7565b60015490915061054b906001600160a01b03168683868661105d565b9695505050505050565b6001546001600160a01b03163314610580576040516321bf7f4960e01b815260040160405180910390fd5b6000805b6005548110156105eb5785600582815481106105a2576105a2611f04565b9060005260206000200154036105d957600581815481106105c5576105c5611f04565b6000918252602082200155600191506105eb565b806105e381611f1a565b915050610584565b508061060a57604051630781f76560e21b815260040160405180910390fd5b5050505050565b6003818154811061062157600080fd5b60009182526020909120600290910201805460018201805460ff90921693509061064a90611f41565b80601f016020809104026020016040519081016040528092919081815260200182805461067690611f41565b80156106c35780601f10610698576101008083540402835291602001916106c3565b820191906000526020600020905b8154815290600101906020018083116106a657829003601f168201915b5050505050905082565b6001546060906001600160a01b031633146106fb576040516321bf7f4960e01b815260040160405180910390fd5b61070686848461112c565b98975050505050505050565b6040805180820190915260008152606060208201526001546001600160a01b03163314610752576040516321bf7f4960e01b815260040160405180910390fd5b600280546001810182556000919091528251805184926008027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0191908290819061079d9082611fd8565b506020918201516001909101558201518051600283019081906107c09082611fd8565b5060209190910151600190910155604082015160048201805467ffffffffffffffff19166001600160401b03909216919091179055606082015160058201906108099082611fd8565b50608082015180516006830180546020938401516001600160401b03908116600160401b026fffffffffffffffffffffffffffffffff199092169381169390931717905560a090930151600790920180549290931667ffffffffffffffff1992909216919091179091556040805180820182526001815290519091828101916108d391017f7b20226163636f756e74223a20226163636f756e74222c20227265706c79223a8152732022676f7420746865206d65737361676522207d60601b602082015260340190565b60405160208183030381529060405281525090505b919050565b600481815481106108fd57600080fd5b90600052602060002090600802016000915090508060000160405180604001604052908160008201805461093090611f41565b80601f016020809104026020016040519081016040528092919081815260200182805461095c90611f41565b80156109a95780601f1061097e576101008083540402835291602001916109a9565b820191906000526020600020905b81548152906001019060200180831161098c57829003601f168201915b5050505050815260200160018201548152505090806002016040518060400160405290816000820180546109dc90611f41565b80601f0160208091040260200160405190810160405280929190818152602001828054610a0890611f41565b8015610a555780601f10610a2a57610100808354040283529160200191610a55565b820191906000526020600020905b815481529060010190602001808311610a3857829003601f168201915b505050918352505060019190910154602090910152600482015460058301805492936001600160401b0390921692610a8c90611f41565b80601f0160208091040260200160405190810160405280929190818152602001828054610ab890611f41565b8015610b055780601f10610ada57610100808354040283529160200191610b05565b820191906000526020600020905b815481529060010190602001808311610ae857829003601f168201915b50506040805180820190915260068601546001600160401b038082168352600160401b909104811660208301526007909601549495909416925088915050565b610b4d611252565b6001546040516381bc079b60e01b8152600481018390526001600160a01b03909116906381bc079b90602401600060405180830381600087803b158015610b9357600080fd5b505af115801561060a573d6000803e3d6000fd5b6001546040516330f8455760e21b81526000916001600160a01b03169063c3e1155c90610bde908690899089908890600401611eb3565b6020604051808303816000875af1158015610bfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c219190611ee7565b95945050505050565b6001546001600160a01b03163314610c55576040516321bf7f4960e01b815260040160405180910390fd5b6004805460018101825560009190915281906008027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01610c9682826122f3565b505050565b610ca3611252565b60015460405163418925b760e01b81526001600160a01b0390911690819063418925b790610ce3908c908c908c908c908c908c908c908c90600401612526565b600060405180830381600087803b158015610cfd57600080fd5b505af1158015610d11573d6000803e3d6000fd5b50505050610d5c818a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92508a915089905088886112ac565b505050505050505050565b610d6f611252565b610d796000611361565b565b610d83611252565b60015460405163418925b760e01b81526001600160a01b039091169063418925b790610dc1908b908b908b908b908b908b908b908b90600401612526565b600060405180830381600087803b158015610ddb57600080fd5b505af1158015610def573d6000803e3d6000fd5b505050505050505050505050565b6001546060906001600160a01b03163314610e2b576040516321bf7f4960e01b815260040160405180910390fd5b61070683836113b1565b60068181548110610e4557600080fd5b906000526020600020016000915090508054610e6090611f41565b80601f0160208091040260200160405190810160405280929190818152602001828054610e8c90611f41565b8015610ed95780601f10610eae57610100808354040283529160200191610ed9565b820191906000526020600020905b815481529060010190602001808311610ebc57829003601f168201915b505050505081565b6001546001600160a01b03163314610f0c576040516321bf7f4960e01b815260040160405180910390fd5b6003805460018101825560009190915281906002027fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b016104af8282612586565b60058181548110610f5d57600080fd5b600091825260209091200154905081565b6001546001600160a01b03163314610f99576040516321bf7f4960e01b815260040160405180910390fd5b61060a84838361112c565b600281815481106108fd57600080fd5b610fbc611252565b6001600160a01b0381166110265760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61102f81611361565b50565b6001546001600160a01b0316331461102f576040516321bf7f4960e01b815260040160405180910390fd5b846001600160a01b031663478222c26040518163ffffffff1660e01b81526004016020604051808303816000875af115801561109d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c19190612666565b6001600160a01b03166318e3404b34868686866040518663ffffffff1660e01b81526004016110f394939291906126a6565b6000604051808303818588803b15801561110c57600080fd5b505af1158015611120573d6000803e3d6000fd5b50505050505050505050565b606060005b600654811015611231576006818154811061114e5761114e611f04565b9060005260206000200160405160200161116891906126d6565b60405160208183030381529060405280519060200120848460405160200161119192919061274c565b604051602081830303815290604052805190602001200361121f57600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db001859055604080516020601f860181900481028201810190925284815290859085908190840183828082843760009201919091525092945061124b9350505050565b8061122981611f1a565b915050611131565b5060405163b01318a560e01b815260040160405180910390fd5b9392505050565b6000546001600160a01b03163314610d795760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161101d565b866001600160a01b031663478222c26040518163ffffffff1660e01b81526004016020604051808303816000875af11580156112ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113109190612666565b6001600160a01b031663fce34e4034308989898989896040518963ffffffff1660e01b8152600401611348979695949392919061275c565b6000604051808303818588803b158015610ddb57600080fd5b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b606060005b60065481101561123157600681815481106113d3576113d3611f04565b906000526020600020016040516020016113ed91906126d6565b60405160208183030381529060405280519060200120848460405160200161141692919061274c565b60405160208183030381529060405280519060200120036114715783838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509294506114839350505050565b8061147b81611f1a565b9150506113b6565b92915050565b60008083601f84011261149b57600080fd5b5081356001600160401b038111156114b257600080fd5b6020830191508360208285010111156114ca57600080fd5b9250929050565b600080600080606085870312156114e757600080fd5b8435935060208501356001600160401b0381111561150457600080fd5b61151087828801611489565b9598909750949560400135949350505050565b6001600160401b038116811461102f57600080fd5b80356108e881611523565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171561157b5761157b611543565b60405290565b60405160c081016001600160401b038111828210171561157b5761157b611543565b604051601f8201601f191681016001600160401b03811182821017156115cb576115cb611543565b604052919050565b600082601f8301126115e457600080fd5b604051604081018181106001600160401b038211171561160657611606611543565b806040525080604084018581111561161d57600080fd5b845b8181101561163757803583526020928301920161161f565b509195945050505050565b60008060008060008060e0878903121561165b57600080fd5b86356001600160401b0381111561167157600080fd5b61167d89828a01611489565b90975095505060208701359350604087013561169881611523565b92506116a788606089016115d3565b91506116b68860a089016115d3565b90509295509295509295565b6000602082840312156116d457600080fd5b5035919050565b6000815180845260005b81811015611701576020818501810151868301820152016116e5565b81811115611713576000602083870101525b50601f01601f19169290920160200192915050565b821515815260406020820152600061174360408301846116db565b949350505050565b8035600381106108e857600080fd5b600082601f83011261176b57600080fd5b81356001600160401b0381111561178457611784611543565b611797601f8201601f19166020016115a3565b8181528460208386010111156117ac57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600060c0888a0312156117e457600080fd5b6117ed8861174b565b965060208801356001600160401b038082111561180957600080fd5b818a0191508a601f83011261181d57600080fd5b81358181111561182f5761182f611543565b8060051b61183f602082016115a3565b9182526020818501810192908101908e84111561185b57600080fd5b6020860192505b8383101561189957848335111561187857600080fd5b6118888f6020853589010161175a565b825260209283019290910190611862565b9a5050505060408a0135965060608a01359150808211156118b957600080fd5b6118c58b838c0161175a565b955060808a0135945060a08a01359150808211156118e257600080fd5b506118ef8a828b01611489565b989b979a50959850939692959293505050565b60208152600061124b60208301846116db565b60006040828403121561192757600080fd5b61192f611559565b905081356001600160401b0381111561194757600080fd5b6119538482850161175a565b8252506020820135602082015292915050565b60006040828403121561197857600080fd5b611980611559565b9050813561198d81611523565b8152602082013561199d81611523565b602082015292915050565b6000602082840312156119ba57600080fd5b81356001600160401b03808211156119d157600080fd5b9083019060e082860312156119e557600080fd5b6119ed611581565b8235828111156119fc57600080fd5b611a0887828601611915565b825250602083013582811115611a1d57600080fd5b611a2987828601611915565b602083015250611a3b60408401611538565b6040820152606083013582811115611a5257600080fd5b611a5e8782860161175a565b606083015250611a718660808501611966565b6080820152611a8260c08401611538565b60a082015295945050505050565b602081528151151560208201526000602083015160408084015261174360608401826116db565b6000815160408452611acc60408501826116db565b602093840151949093019390935250919050565b60e081526000611af360e0830189611ab7565b8281036020840152611b058189611ab7565b90506001600160401b0380881660408501528382036060850152611b2982886116db565b92508086511660808501528060208701511660a085015280851660c08501525050979650505050505050565b60008060008060608587031215611b6b57600080fd5b84356001600160401b03811115611b8157600080fd5b611b8d87828801611489565b909550935050602085013591506040850135611ba881611523565b939692955090935050565b600060e08284031215611bc557600080fd5b50919050565b600060208284031215611bdd57600080fd5b81356001600160401b03811115611bf357600080fd5b61174384828501611bb3565b801515811461102f57600080fd5b60008083601f840112611c1f57600080fd5b5081356001600160401b03811115611c3657600080fd5b6020830191508360208260051b85010111156114ca57600080fd5b60008060008060008060008060a0898b031215611c6d57600080fd5b88356001600160401b0380821115611c8457600080fd5b611c908c838d01611489565b909a509850889150611ca460208c0161174b565b975060408b01359150611cb682611bff565b90955060608a01359080821115611ccc57600080fd5b611cd88c838d01611c0d565b909650945060808b0135915080821115611cf157600080fd5b50611cfe8b828c01611489565b999c989b5096995094979396929594505050565b60008060008060008060006080888a031215611d2d57600080fd5b611d368861174b565b965060208801356001600160401b0380821115611d5257600080fd5b611d5e8b838c01611c0d565b909850965060408a0135915080821115611d7757600080fd5b611d838b838c01611489565b909650945060608a01359150808211156118e257600080fd5b60008060408385031215611daf57600080fd5b82356001600160401b0380821115611dc657600080fd5b611dd286838701611bb3565b93506020850135915080821115611de857600080fd5b50830160408186031215611dfb57600080fd5b809150509250929050565b60008060008060608587031215611e1c57600080fd5b843593506020850135925060408501356001600160401b03811115611e4057600080fd5b611e4c87828801611489565b95989497509550505050565b6001600160a01b038116811461102f57600080fd5b600060208284031215611e7f57600080fd5b813561124b81611e58565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b848152606060208201526000611ecd606083018587611e8a565b90506001600160401b038316604083015295945050505050565b600060208284031215611ef957600080fd5b815161124b81611523565b634e487b7160e01b600052603260045260246000fd5b600060018201611f3a57634e487b7160e01b600052601160045260246000fd5b5060010190565b600181811c90821680611f5557607f821691505b602082108103611bc557634e487b7160e01b600052602260045260246000fd5b601f821115610c9657600081815260208120601f850160051c81016020861015611f9c5750805b601f850160051c820191505b81811015611fbb57828155600101611fa8565b505050505050565b600019600383901b1c191660019190911b1790565b81516001600160401b03811115611ff157611ff1611543565b61200581611fff8454611f41565b84611f75565b602080601f83116001811461203457600084156120225750858301515b61202c8582611fc3565b865550611fbb565b600085815260208120601f198616915b8281101561206357888601518255948401946001909101908401612044565b50858210156120815787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008235603e198336030181126120a757600080fd5b9190910192915050565b6000808335601e198436030181126120c857600080fd5b8301803591506001600160401b038211156120e257600080fd5b6020019150368190038213156114ca57600080fd5b61210182836120b1565b6001600160401b0381111561211857612118611543565b61212c816121268554611f41565b85611f75565b6000601f82116001811461215a57600083156121485750838201355b6121528482611fc3565b8655506121b4565b600085815260209020601f19841690835b8281101561218b578685013582556020948501946001909201910161216b565b50848210156121a85760001960f88660031b161c19848701351681555b505060018360011b0185555b50505050602082013560018201555050565b6000813561148381611523565b6001600160401b038311156121ea576121ea611543565b6121fe836121f88354611f41565b83611f75565b6000601f84116001811461222c576000851561221a5750838201355b6122248682611fc3565b84555061060a565b600083815260209020601f19861690835b8281101561225d578685013582556020948501946001909201910161223d565b508682101561227a5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b813561229781611523565b815467ffffffffffffffff19166001600160401b0382161782555060208201356122c081611523565b81546fffffffffffffffff0000000000000000191660409190911b6fffffffffffffffff00000000000000001617905550565b6122fd8283612091565b61230781826120b1565b6001600160401b0381111561231e5761231e611543565b6123328161232c8654611f41565b86611f75565b6000601f821160018114612360576000831561234e5750838201355b6123588482611fc3565b8755506123ba565b600086815260209020601f19841690835b828110156123915786850135825560209485019460019092019101612371565b50848210156123ae5760001960f88660031b161c19848701351681555b505060018360011b0186555b5050505060208101356001830155506123e26123d96020840184612091565b600283016120f7565b6124126123f1604084016121c6565b600483016001600160401b0382166001600160401b03198254161781555050565b61241f60608301836120b1565b61242d8183600586016121d3565b505061243f608083016006830161228c565b61246f61244e60c084016121c6565b600783016001600160401b0382166001600160401b03198254161781555050565b5050565b6003811061249157634e487b7160e01b600052602160045260246000fd5b9052565b81835260006020808501808196508560051b810191508460005b878110156125195782840389528135601e198836030181126124d057600080fd5b870185810190356001600160401b038111156124eb57600080fd5b8036038213156124fa57600080fd5b612505868284611e8a565b9a87019a95505050908401906001016124af565b5091979650505050505050565b60a08152600061253a60a083018a8c611e8a565b612547602084018a612473565b87151560408401528281036060840152612562818789612495565b90508281036080840152612577818587611e8a565b9b9a5050505050505050505050565b813561259181611bff565b815490151560ff1660ff1991909116178155600180820160206125b6858201866120b1565b6001600160401b038111156125cd576125cd611543565b6125db8161232c8654611f41565b6000601f82116001811461260957600083156125f75750838201355b6126018482611fc3565b875550610d5c565b600086815260209020601f19841690835b82811015612637578685013582559387019390890190870161261a565b50848210156126545760001960f88660031b161c19848701351681555b50505050841b90930190915550505050565b60006020828403121561267857600080fd5b815161124b81611e58565b8060005b60028110156104af578151845260209384019390910190600101612687565b8481526001600160401b038416602082015260c081016126c96040830185612683565b610c216080830184612683565b60008083546126e481611f41565b600182811680156126fc576001811461271157612740565b60ff1984168752821515830287019450612740565b8760005260208060002060005b858110156127375781548a82015290840190820161271e565b50505082870194505b50929695505050505050565b8183823760009101908152919050565b6001600160a01b038816815260a060208201819052600090612780908301896116db565b61278d6040840189612473565b82810360608401526127a0818789612495565b905082810360808401526127b5818587611e8a565b9a995050505050505050505056fea2646970667358221220faf52d93f2a134b1a6722012747555c1431f173e0e208903e11cdc87b4d3293964736f6c634300080f0033"; type MoonConstructorParams = | [signer?: Signer] diff --git a/src/evm/contracts/factories/UniversalChannelHandler__factory.ts b/src/evm/contracts/factories/UniversalChannelHandler__factory.ts index 43344d79..3b25493e 100644 --- a/src/evm/contracts/factories/UniversalChannelHandler__factory.ts +++ b/src/evm/contracts/factories/UniversalChannelHandler__factory.ts @@ -852,7 +852,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a0604052306080523480156200001557600080fd5b506200002062000030565b6200002a62000030565b620000f1565b600054610100900460ff16156200009d5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000ef576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6080516126bb62000129600039600081816105d10152818161061a01528181610a1801528181610a580152610aeb01526126bb6000f3fe60806040526004361061014f5760003560e01c80637a9ccc4b116100b6578063c4d66de81161006f578063c4d66de814610399578063cb7e9057146103b9578063e847e280146103d9578063f2fde38b146103f9578063fad28a2414610419578063ffa1ad741461043957600080fd5b80637a9ccc4b146102d25780637e1d42b5146102f25780638da5cb5b14610312578063ace02de714610344578063ba22bd7614610364578063c1cb44e51461038457600080fd5b80634c2ee09d116101085780634c2ee09d1461021a5780634dcc0aa61461023a5780634f1ef2861461026757806352d1902d1461027a578063602f98341461029d578063715018a6146102bd57600080fd5b80631eb7dd5e1461015b5780631f3a58301461017d5780633659cfe6146101ba5780633f9fdbe41461015b578063462fdf83146101da5780634bdb5597146101ed57600080fd5b3661015657005b600080fd5b34801561016757600080fd5b5061017b610176366004611928565b610468565b005b34801561018957600080fd5b5061019d61019836600461198f565b610499565b6040516001600160401b0390911681526020015b60405180910390f35b3480156101c657600080fd5b5061017b6101d5366004611a0e565b6105c7565b61019d6101e8366004611a3c565b6106af565b3480156101f957600080fd5b5061020d610208366004611ba2565b6107f9565b6040516101b19190611d33565b34801561022657600080fd5b5061017b610235366004611d46565b61083e565b34801561024657600080fd5b5061025a610255366004611d77565b6108a7565b6040516101b19190611dab565b61017b610275366004611dd2565b610a0e565b34801561028657600080fd5b5061028f610ade565b6040519081526020016101b1565b3480156102a957600080fd5b5061017b6102b8366004611d77565b610b91565b3480156102c957600080fd5b5061017b610cc6565b3480156102de57600080fd5b5061020d6102ed366004611e79565b610cda565b3480156102fe57600080fd5b5061017b61030d366004611f03565b610d12565b34801561031e57600080fd5b506033546001600160a01b03165b6040516001600160a01b0390911681526020016101b1565b34801561035057600080fd5b5061017b61035f366004611f7b565b610e4a565b34801561037057600080fd5b5061017b61037f366004611a0e565b610ecc565b34801561039057600080fd5b5061028f600181565b3480156103a557600080fd5b5061017b6103b4366004611a0e565b610ef6565b3480156103c557600080fd5b5060655461032c906001600160a01b031681565b3480156103e557600080fd5b5061017b6103f436600461203c565b611008565b34801561040557600080fd5b5061017b610414366004611a0e565b61103e565b34801561042557600080fd5b5061017b610434366004611d46565b6110b4565b34801561044557600080fd5b5061020d604051806040016040528060038152602001620312e360ec1b81525081565b6065546001600160a01b03163314610493576040516321bf7f4960e01b815260040160405180910390fd5b50505050565b60008061050960405180608001604052806104ba336001600160a01b031690565b81526020016001815260200188815260200187878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152506110df565b60408051338152602081018990529192507f9831d8c66285bfd33de069ced58ad437d6bf08f63446bf06c3713e40b4b7e873910160405180910390a16065546040516330f8455760e21b81526001600160a01b039091169063c3e1155c90610579908a908590889060040161208e565b6020604051808303816000875af1158015610598573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105bc91906120c0565b979650505050505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106185760405162461bcd60e51b815260040161060f906120dd565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661066160008051602061263f833981519152546001600160a01b031690565b6001600160a01b0316146106875760405162461bcd60e51b815260040161060f90612129565b6106908161111b565b604080516000808252602082019092526106ac91839190611123565b50565b60655460408051608081019091526000916001600160a01b03169082906107219080338152602001600181526020018b81526020018a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152506110df565b60408051338152602081018c90529192507f9831d8c66285bfd33de069ced58ad437d6bf08f63446bf06c3713e40b4b7e873910160405180910390a16040516330f8455760e21b81526001600160a01b0383169063c3e1155c9061078d908d9085908b9060040161208e565b6020604051808303816000875af11580156107ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d091906120c0565b6065549093506107ec906001600160a01b03168b858888611293565b5050979650505050505050565b6065546060906001600160a01b03163314610827576040516321bf7f4960e01b815260040160405180910390fd5b610832868484611362565b98975050505050505050565b61084661142c565b6065546040516381bc079b60e01b8152600481018390526001600160a01b03909116906381bc079b90602401600060405180830381600087803b15801561088c57600080fd5b505af11580156108a0573d6000803e3d6000fd5b5050505050565b6040805180820190915260008152606060208201526065546001600160a01b031633146108e7576040516321bf7f4960e01b815260040160405180910390fd5b600073__$f61eb90c6f674e787d51c07f105fa231e2$__63d5c39a9d6109106060860186612175565b6040518363ffffffff1660e01b815260040161092d9291906121e4565b600060405180830381865af415801561094a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610972919081019061223d565b90506109818160400151611486565b6001600160a01b0316635b76158561099c60208601866122df565b60200135836040518363ffffffff1660e01b81526004016109be929190612332565b6000604051808303816000875af11580156109dd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a05919081019061234b565b9150505b919050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610a565760405162461bcd60e51b815260040161060f906120dd565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a9f60008051602061263f833981519152546001600160a01b031690565b6001600160a01b031614610ac55760405162461bcd60e51b815260040161060f90612129565b610ace8261111b565b610ada82826001611123565b5050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b7e5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161060f565b5060008051602061263f83398151915290565b6065546001600160a01b03163314610bbc576040516321bf7f4960e01b815260040160405180910390fd5b600073__$f61eb90c6f674e787d51c07f105fa231e2$__63d5c39a9d610be56060850185612175565b6040518363ffffffff1660e01b8152600401610c029291906121e4565b600060405180830381865af4158015610c1f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c47919081019061223d565b9050610c568160000151611486565b6001600160a01b031663400d9f5d610c6e84806122df565b60200135836040518363ffffffff1660e01b8152600401610c90929190612332565b600060405180830381600087803b158015610caa57600080fd5b505af1158015610cbe573d6000803e3d6000fd5b505050505050565b610cce61142c565b610cd86000611497565b565b6065546060906001600160a01b03163314610d08576040516321bf7f4960e01b815260040160405180910390fd5b61083283836114e9565b6065546001600160a01b03163314610d3d576040516321bf7f4960e01b815260040160405180910390fd5b600073__$f61eb90c6f674e787d51c07f105fa231e2$__63d5c39a9d610d666060860186612175565b6040518363ffffffff1660e01b8152600401610d839291906121e4565b600060405180830381865af4158015610da0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610dc8919081019061223d565b9050610dd78160000151611486565b6001600160a01b031663588152ca610def85806122df565b6020013583856040518463ffffffff1660e01b8152600401610e1393929190612425565b600060405180830381600087803b158015610e2d57600080fd5b505af1158015610e41573d6000803e3d6000fd5b50505050505050565b610e5261142c565b60655460405163418925b760e01b81526001600160a01b039091169063418925b790610e90908b908b908b908b908b908b908b908b90600401612477565b600060405180830381600087803b158015610eaa57600080fd5b505af1158015610ebe573d6000803e3d6000fd5b505050505050505050505050565b610ed461142c565b606580546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff1615808015610f165750600054600160ff909116105b80610f305750303b158015610f30575060005460ff166001145b610f935760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161060f565b6000805460ff191660011790558015610fb6576000805461ff0019166101001790555b610fbf82611595565b8015610ada576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6065546001600160a01b03163314611033576040516321bf7f4960e01b815260040160405180910390fd5b6108a0848383611362565b61104661142c565b6001600160a01b0381166110ab5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161060f565b6106ac81611497565b6065546001600160a01b031633146106ac576040516321bf7f4960e01b815260040160405180910390fd5b805160208083015160408085015160608681015192519095611105959094939101612535565b6040516020818303038152906040529050919050565b6106ac61142c565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561115b57611156836115c4565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156111b5575060408051601f3d908101601f191682019092526111b291810190612569565b60015b6112185760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161060f565b60008051602061263f83398151915281146112875760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161060f565b50611156838383611660565b846001600160a01b031663478222c26040518163ffffffff1660e01b81526004016020604051808303816000875af11580156112d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f79190612582565b6001600160a01b03166318e3404b34868686866040518663ffffffff1660e01b8152600401611329949392919061259f565b6000604051808303818588803b15801561134257600080fd5b505af1158015611356573d6000803e3d6000fd5b50505050505050505050565b6060604051806040016040528060038152602001620312e360ec1b81525060405160200161139091906125d1565b6040516020818303038152906040528051906020012083836040516020016113b99291906125e3565b60405160208183030381529060405280519060200120146113ed5760405163b01318a560e01b815260040160405180910390fd5b82828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092979650505050505050565b6033546001600160a01b03163314610cd85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161060f565b600061149182611685565b92915050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6060604051806040016040528060038152602001620312e360ec1b81525060405160200161151791906125d1565b6040516020818303038152906040528051906020012083836040516020016115409291906125e3565b60405160208183030381529060405280519060200120146115745760405163b01318a560e01b815260040160405180910390fd5b506040805180820190915260038152620312e360ec1b602082015292915050565b600054610100900460ff166115bc5760405162461bcd60e51b815260040161060f906125f3565b610ed46116f2565b6001600160a01b0381163b6116315760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161060f565b60008051602061263f83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61166983611721565b6000825111806116765750805b15611156576104938383611761565b60006001600160a01b038211156116ee5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663630206269747360c81b606482015260840161060f565b5090565b600054610100900460ff166117195760405162461bcd60e51b815260040161060f906125f3565b610cd861178d565b61172a816115c4565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060611786838360405180606001604052806027815260200161265f602791396117bd565b9392505050565b600054610100900460ff166117b45760405162461bcd60e51b815260040161060f906125f3565b610cd833611497565b6060600080856001600160a01b0316856040516117da91906125d1565b600060405180830381855af49150503d8060008114611815576040519150601f19603f3d011682016040523d82523d6000602084013e61181a565b606091505b509150915061182b86838387611835565b9695505050505050565b606083156118a457825160000361189d576001600160a01b0385163b61189d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161060f565b50816118ae565b6118ae83836118b6565b949350505050565b8151156118c65781518083602001fd5b8060405162461bcd60e51b815260040161060f9190611d33565b60008083601f8401126118f257600080fd5b5081356001600160401b0381111561190957600080fd5b60208301915083602082850101111561192157600080fd5b9250929050565b6000806000806060858703121561193e57600080fd5b8435935060208501356001600160401b0381111561195b57600080fd5b611967878288016118e0565b9598909750949560400135949350505050565b6001600160401b03811681146106ac57600080fd5b6000806000806000608086880312156119a757600080fd5b853594506020860135935060408601356001600160401b038111156119cb57600080fd5b6119d7888289016118e0565b90945092505060608601356119eb8161197a565b809150509295509295909350565b6001600160a01b03811681146106ac57600080fd5b600060208284031215611a2057600080fd5b8135611786816119f9565b806040810183101561149157600080fd5b6000806000806000806000610100888a031215611a5857600080fd5b873596506020880135955060408801356001600160401b03811115611a7c57600080fd5b611a888a828b016118e0565b9096509450506060880135611a9c8161197a565b9250611aab8960808a01611a2b565b9150611aba8960c08a01611a2b565b905092959891949750929550565b803560038110610a0957600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611b1557611b15611ad7565b604052919050565b60006001600160401b03821115611b3657611b36611ad7565b50601f01601f191660200190565b6000611b57611b5284611b1d565b611aed565b9050828152838383011115611b6b57600080fd5b828260208301376000602084830101529392505050565b600082601f830112611b9357600080fd5b61178683833560208501611b44565b600080600080600080600060c0888a031215611bbd57600080fd5b611bc688611ac8565b965060208801356001600160401b0380821115611be257600080fd5b818a0191508a601f830112611bf657600080fd5b813581811115611c0857611c08611ad7565b8060051b611c1860208201611aed565b9182526020818501810192908101908e841115611c3457600080fd5b6020860192505b83831015611c72578483351115611c5157600080fd5b611c618f60208535890101611b82565b825260209283019290910190611c3b565b9a5050505060408a0135965060608a0135915080821115611c9257600080fd5b611c9e8b838c01611b82565b955060808a0135945060a08a0135915080821115611cbb57600080fd5b50611cc88a828b016118e0565b989b979a50959850939692959293505050565b60005b83811015611cf6578181015183820152602001611cde565b838111156104935750506000910152565b60008151808452611d1f816020860160208601611cdb565b601f01601f19169290920160200192915050565b6020815260006117866020830184611d07565b600060208284031215611d5857600080fd5b5035919050565b600060e08284031215611d7157600080fd5b50919050565b600060208284031215611d8957600080fd5b81356001600160401b03811115611d9f57600080fd5b6118ae84828501611d5f565b60208152815115156020820152600060208301516040808401526118ae6060840182611d07565b60008060408385031215611de557600080fd5b8235611df0816119f9565b915060208301356001600160401b03811115611e0b57600080fd5b8301601f81018513611e1c57600080fd5b611e2b85823560208401611b44565b9150509250929050565b60008083601f840112611e4757600080fd5b5081356001600160401b03811115611e5e57600080fd5b6020830191508360208260051b850101111561192157600080fd5b60008060008060008060006080888a031215611e9457600080fd5b611e9d88611ac8565b965060208801356001600160401b0380821115611eb957600080fd5b611ec58b838c01611e35565b909850965060408a0135915080821115611ede57600080fd5b611eea8b838c016118e0565b909650945060608a0135915080821115611cbb57600080fd5b60008060408385031215611f1657600080fd5b82356001600160401b0380821115611f2d57600080fd5b611f3986838701611d5f565b93506020850135915080821115611f4f57600080fd5b50830160408186031215611f6257600080fd5b809150509250929050565b80151581146106ac57600080fd5b60008060008060008060008060a0898b031215611f9757600080fd5b88356001600160401b0380821115611fae57600080fd5b611fba8c838d016118e0565b909a509850889150611fce60208c01611ac8565b975060408b01359150611fe082611f6d565b90955060608a01359080821115611ff657600080fd5b6120028c838d01611e35565b909650945060808b013591508082111561201b57600080fd5b506120288b828c016118e0565b999c989b5096995094979396929594505050565b6000806000806060858703121561205257600080fd5b843593506020850135925060408501356001600160401b0381111561207657600080fd5b612082878288016118e0565b95989497509550505050565b8381526060602082015260006120a76060830185611d07565b90506001600160401b0383166040830152949350505050565b6000602082840312156120d257600080fd5b81516117868161197a565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6000808335601e1984360301811261218c57600080fd5b8301803591506001600160401b038211156121a657600080fd5b60200191503681900382131561192157600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6020815260006118ae6020830184866121bb565b600082601f83011261220957600080fd5b8151612217611b5282611b1d565b81815284602083860101111561222c57600080fd5b6118ae826020830160208701611cdb565b60006020828403121561224f57600080fd5b81516001600160401b038082111561226657600080fd5b908301906080828603121561227a57600080fd5b60405160808101818110838211171561229557612295611ad7565b80604052508251815260208301516020820152604083015160408201526060830151828111156122c457600080fd5b6122d0878286016121f8565b60608301525095945050505050565b60008235603e198336030181126122f557600080fd5b9190910192915050565b80518252602081015160208301526040810151604083015260006060820151608060608501526118ae6080850182611d07565b8281526040602082015260006118ae60408301846122ff565b60006020828403121561235d57600080fd5b81516001600160401b038082111561237457600080fd5b908301906040828603121561238857600080fd5b6040516040810181811083821117156123a3576123a3611ad7565b60405282516123b181611f6d565b81526020830151828111156123c557600080fd5b6123d1878286016121f8565b60208301525095945050505050565b6000808335601e198436030181126123f757600080fd5b83016020810192503590506001600160401b0381111561241657600080fd5b80360382131561192157600080fd5b83815260606020820152600061243e60608301856122ff565b8281036040840152833561245181611f6d565b1515815261246260208501856123e0565b604060208401526108326040840182846121bb565b60a08152600061248b60a083018a8c6121bb565b602060038a106124ab57634e487b7160e01b600052602160045260246000fd5b8381018a905288151560408501528382036060850152868252818101600588901b830182018960005b8a81101561250e57858303601f190184526124ef828d6123e0565b6124fa8582846121bb565b9587019594505050908401906001016124d4565b5050858103608087015261252381888a6121bb565b9e9d5050505050505050505050505050565b84815283602082015282604082015260008251612559816060850160208701611cdb565b9190910160600195945050505050565b60006020828403121561257b57600080fd5b5051919050565b60006020828403121561259457600080fd5b8151611786816119f9565b8481526001600160401b038416602082015260c081016040848184013760408360808401376000815295945050505050565b600082516122f5818460208701611cdb565b8183823760009101908152919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212209f9e5bfabfc1578891beca8faacb6c6a2df42c63b10f18ab4fa6a189f2ea5a3e64736f6c634300080f0033"; + "0x60a0604052306080523480156200001557600080fd5b506200002062000030565b6200002a62000030565b620000f1565b600054610100900460ff16156200009d5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000ef576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60805161272d62000129600039600081816105d10152818161061a01528181610a6001528181610aa00152610b33015261272d6000f3fe60806040526004361061014f5760003560e01c80637a9ccc4b116100b6578063c4d66de81161006f578063c4d66de814610399578063cb7e9057146103b9578063e847e280146103d9578063f2fde38b146103f9578063fad28a2414610419578063ffa1ad741461043957600080fd5b80637a9ccc4b146102d25780637e1d42b5146102f25780638da5cb5b14610312578063ace02de714610344578063ba22bd7614610364578063c1cb44e51461038457600080fd5b80634c2ee09d116101085780634c2ee09d1461021a5780634dcc0aa61461023a5780634f1ef2861461026757806352d1902d1461027a578063602f98341461029d578063715018a6146102bd57600080fd5b80631eb7dd5e1461015b5780631f3a58301461017d5780633659cfe6146101ba5780633f9fdbe41461015b578063462fdf83146101da5780634bdb5597146101ed57600080fd5b3661015657005b600080fd5b34801561016757600080fd5b5061017b610176366004611970565b610468565b005b34801561018957600080fd5b5061019d6101983660046119d7565b610499565b6040516001600160401b0390911681526020015b60405180910390f35b3480156101c657600080fd5b5061017b6101d5366004611a56565b6105c7565b61019d6101e8366004611a84565b6106af565b3480156101f957600080fd5b5061020d610208366004611bea565b610841565b6040516101b19190611d7b565b34801561022657600080fd5b5061017b610235366004611d8e565b610886565b34801561024657600080fd5b5061025a610255366004611dbf565b6108ef565b6040516101b19190611df3565b61017b610275366004611e1a565b610a56565b34801561028657600080fd5b5061028f610b26565b6040519081526020016101b1565b3480156102a957600080fd5b5061017b6102b8366004611dbf565b610bd9565b3480156102c957600080fd5b5061017b610d0e565b3480156102de57600080fd5b5061020d6102ed366004611ec1565b610d22565b3480156102fe57600080fd5b5061017b61030d366004611f4b565b610d5a565b34801561031e57600080fd5b506033546001600160a01b03165b6040516001600160a01b0390911681526020016101b1565b34801561035057600080fd5b5061017b61035f366004611fc3565b610e92565b34801561037057600080fd5b5061017b61037f366004611a56565b610f14565b34801561039057600080fd5b5061028f600181565b3480156103a557600080fd5b5061017b6103b4366004611a56565b610f3e565b3480156103c557600080fd5b5060655461032c906001600160a01b031681565b3480156103e557600080fd5b5061017b6103f4366004612084565b611050565b34801561040557600080fd5b5061017b610414366004611a56565b611086565b34801561042557600080fd5b5061017b610434366004611d8e565b6110fc565b34801561044557600080fd5b5061020d604051806040016040528060038152602001620312e360ec1b81525081565b6065546001600160a01b03163314610493576040516321bf7f4960e01b815260040160405180910390fd5b50505050565b60008061050960405180608001604052806104ba336001600160a01b031690565b81526020016001815260200188815260200187878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250611127565b60408051338152602081018990529192507f9831d8c66285bfd33de069ced58ad437d6bf08f63446bf06c3713e40b4b7e873910160405180910390a16065546040516330f8455760e21b81526001600160a01b039091169063c3e1155c90610579908a90859088906004016120d6565b6020604051808303816000875af1158015610598573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105bc9190612108565b979650505050505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106185760405162461bcd60e51b815260040161060f90612125565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166106616000805160206126b1833981519152546001600160a01b031690565b6001600160a01b0316146106875760405162461bcd60e51b815260040161060f90612171565b61069081611163565b604080516000808252602082019092526106ac9183919061116b565b50565b60655460408051608081019091526000916001600160a01b03169082906107219080338152602001600181526020018b81526020018a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250611127565b60408051338152602081018c90529192507f9831d8c66285bfd33de069ced58ad437d6bf08f63446bf06c3713e40b4b7e873910160405180910390a16040516330f8455760e21b81526001600160a01b0383169063c3e1155c9061078d908d9085908b906004016120d6565b6020604051808303816000875af11580156107ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d09190612108565b606554604080518082018252929550610834926001600160a01b03909216918d918791908a9060029083908390808284376000920191909152505060408051808201825291508a9060029083908390808284376000920191909152506112db915050565b5050979650505050505050565b6065546060906001600160a01b0316331461086f576040516321bf7f4960e01b815260040160405180910390fd5b61087a8684846113aa565b98975050505050505050565b61088e611474565b6065546040516381bc079b60e01b8152600481018390526001600160a01b03909116906381bc079b90602401600060405180830381600087803b1580156108d457600080fd5b505af11580156108e8573d6000803e3d6000fd5b5050505050565b6040805180820190915260008152606060208201526065546001600160a01b0316331461092f576040516321bf7f4960e01b815260040160405180910390fd5b600073__$f61eb90c6f674e787d51c07f105fa231e2$__63d5c39a9d61095860608601866121bd565b6040518363ffffffff1660e01b815260040161097592919061222c565b600060405180830381865af4158015610992573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109ba9190810190612285565b90506109c981604001516114ce565b6001600160a01b0316635b7615856109e46020860186612327565b60200135836040518363ffffffff1660e01b8152600401610a0692919061237a565b6000604051808303816000875af1158015610a25573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a4d9190810190612393565b9150505b919050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610a9e5760405162461bcd60e51b815260040161060f90612125565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610ae76000805160206126b1833981519152546001600160a01b031690565b6001600160a01b031614610b0d5760405162461bcd60e51b815260040161060f90612171565b610b1682611163565b610b228282600161116b565b5050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bc65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161060f565b506000805160206126b183398151915290565b6065546001600160a01b03163314610c04576040516321bf7f4960e01b815260040160405180910390fd5b600073__$f61eb90c6f674e787d51c07f105fa231e2$__63d5c39a9d610c2d60608501856121bd565b6040518363ffffffff1660e01b8152600401610c4a92919061222c565b600060405180830381865af4158015610c67573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c8f9190810190612285565b9050610c9e81600001516114ce565b6001600160a01b031663400d9f5d610cb68480612327565b60200135836040518363ffffffff1660e01b8152600401610cd892919061237a565b600060405180830381600087803b158015610cf257600080fd5b505af1158015610d06573d6000803e3d6000fd5b505050505050565b610d16611474565b610d2060006114df565b565b6065546060906001600160a01b03163314610d50576040516321bf7f4960e01b815260040160405180910390fd5b61087a8383611531565b6065546001600160a01b03163314610d85576040516321bf7f4960e01b815260040160405180910390fd5b600073__$f61eb90c6f674e787d51c07f105fa231e2$__63d5c39a9d610dae60608601866121bd565b6040518363ffffffff1660e01b8152600401610dcb92919061222c565b600060405180830381865af4158015610de8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e109190810190612285565b9050610e1f81600001516114ce565b6001600160a01b031663588152ca610e378580612327565b6020013583856040518463ffffffff1660e01b8152600401610e5b9392919061246d565b600060405180830381600087803b158015610e7557600080fd5b505af1158015610e89573d6000803e3d6000fd5b50505050505050565b610e9a611474565b60655460405163418925b760e01b81526001600160a01b039091169063418925b790610ed8908b908b908b908b908b908b908b908b906004016124bf565b600060405180830381600087803b158015610ef257600080fd5b505af1158015610f06573d6000803e3d6000fd5b505050505050505050505050565b610f1c611474565b606580546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff1615808015610f5e5750600054600160ff909116105b80610f785750303b158015610f78575060005460ff166001145b610fdb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161060f565b6000805460ff191660011790558015610ffe576000805461ff0019166101001790555b611007826115dd565b8015610b22576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6065546001600160a01b0316331461107b576040516321bf7f4960e01b815260040160405180910390fd5b6108e88483836113aa565b61108e611474565b6001600160a01b0381166110f35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161060f565b6106ac816114df565b6065546001600160a01b031633146106ac576040516321bf7f4960e01b815260040160405180910390fd5b80516020808301516040808501516060868101519251909561114d95909493910161257d565b6040516020818303038152906040529050919050565b6106ac611474565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156111a35761119e8361160c565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156111fd575060408051601f3d908101601f191682019092526111fa918101906125b1565b60015b6112605760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161060f565b6000805160206126b183398151915281146112cf5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161060f565b5061119e8383836116a8565b846001600160a01b031663478222c26040518163ffffffff1660e01b81526004016020604051808303816000875af115801561131b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133f91906125ca565b6001600160a01b03166318e3404b34868686866040518663ffffffff1660e01b8152600401611371949392919061260a565b6000604051808303818588803b15801561138a57600080fd5b505af115801561139e573d6000803e3d6000fd5b50505050505050505050565b6060604051806040016040528060038152602001620312e360ec1b8152506040516020016113d89190612643565b604051602081830303815290604052805190602001208383604051602001611401929190612655565b60405160208183030381529060405280519060200120146114355760405163b01318a560e01b815260040160405180910390fd5b82828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092979650505050505050565b6033546001600160a01b03163314610d205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161060f565b60006114d9826116cd565b92915050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6060604051806040016040528060038152602001620312e360ec1b81525060405160200161155f9190612643565b604051602081830303815290604052805190602001208383604051602001611588929190612655565b60405160208183030381529060405280519060200120146115bc5760405163b01318a560e01b815260040160405180910390fd5b506040805180820190915260038152620312e360ec1b602082015292915050565b600054610100900460ff166116045760405162461bcd60e51b815260040161060f90612665565b610f1c61173a565b6001600160a01b0381163b6116795760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161060f565b6000805160206126b183398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6116b183611769565b6000825111806116be5750805b1561119e5761049383836117a9565b60006001600160a01b038211156117365760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663630206269747360c81b606482015260840161060f565b5090565b600054610100900460ff166117615760405162461bcd60e51b815260040161060f90612665565b610d206117d5565b6117728161160c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606117ce83836040518060600160405280602781526020016126d160279139611805565b9392505050565b600054610100900460ff166117fc5760405162461bcd60e51b815260040161060f90612665565b610d20336114df565b6060600080856001600160a01b0316856040516118229190612643565b600060405180830381855af49150503d806000811461185d576040519150601f19603f3d011682016040523d82523d6000602084013e611862565b606091505b50915091506118738683838761187d565b9695505050505050565b606083156118ec5782516000036118e5576001600160a01b0385163b6118e55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161060f565b50816118f6565b6118f683836118fe565b949350505050565b81511561190e5781518083602001fd5b8060405162461bcd60e51b815260040161060f9190611d7b565b60008083601f84011261193a57600080fd5b5081356001600160401b0381111561195157600080fd5b60208301915083602082850101111561196957600080fd5b9250929050565b6000806000806060858703121561198657600080fd5b8435935060208501356001600160401b038111156119a357600080fd5b6119af87828801611928565b9598909750949560400135949350505050565b6001600160401b03811681146106ac57600080fd5b6000806000806000608086880312156119ef57600080fd5b853594506020860135935060408601356001600160401b03811115611a1357600080fd5b611a1f88828901611928565b9094509250506060860135611a33816119c2565b809150509295509295909350565b6001600160a01b03811681146106ac57600080fd5b600060208284031215611a6857600080fd5b81356117ce81611a41565b80604081018310156114d957600080fd5b6000806000806000806000610100888a031215611aa057600080fd5b873596506020880135955060408801356001600160401b03811115611ac457600080fd5b611ad08a828b01611928565b9096509450506060880135611ae4816119c2565b9250611af38960808a01611a73565b9150611b028960c08a01611a73565b905092959891949750929550565b803560038110610a5157600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611b5d57611b5d611b1f565b604052919050565b60006001600160401b03821115611b7e57611b7e611b1f565b50601f01601f191660200190565b6000611b9f611b9a84611b65565b611b35565b9050828152838383011115611bb357600080fd5b828260208301376000602084830101529392505050565b600082601f830112611bdb57600080fd5b6117ce83833560208501611b8c565b600080600080600080600060c0888a031215611c0557600080fd5b611c0e88611b10565b965060208801356001600160401b0380821115611c2a57600080fd5b818a0191508a601f830112611c3e57600080fd5b813581811115611c5057611c50611b1f565b8060051b611c6060208201611b35565b9182526020818501810192908101908e841115611c7c57600080fd5b6020860192505b83831015611cba578483351115611c9957600080fd5b611ca98f60208535890101611bca565b825260209283019290910190611c83565b9a5050505060408a0135965060608a0135915080821115611cda57600080fd5b611ce68b838c01611bca565b955060808a0135945060a08a0135915080821115611d0357600080fd5b50611d108a828b01611928565b989b979a50959850939692959293505050565b60005b83811015611d3e578181015183820152602001611d26565b838111156104935750506000910152565b60008151808452611d67816020860160208601611d23565b601f01601f19169290920160200192915050565b6020815260006117ce6020830184611d4f565b600060208284031215611da057600080fd5b5035919050565b600060e08284031215611db957600080fd5b50919050565b600060208284031215611dd157600080fd5b81356001600160401b03811115611de757600080fd5b6118f684828501611da7565b60208152815115156020820152600060208301516040808401526118f66060840182611d4f565b60008060408385031215611e2d57600080fd5b8235611e3881611a41565b915060208301356001600160401b03811115611e5357600080fd5b8301601f81018513611e6457600080fd5b611e7385823560208401611b8c565b9150509250929050565b60008083601f840112611e8f57600080fd5b5081356001600160401b03811115611ea657600080fd5b6020830191508360208260051b850101111561196957600080fd5b60008060008060008060006080888a031215611edc57600080fd5b611ee588611b10565b965060208801356001600160401b0380821115611f0157600080fd5b611f0d8b838c01611e7d565b909850965060408a0135915080821115611f2657600080fd5b611f328b838c01611928565b909650945060608a0135915080821115611d0357600080fd5b60008060408385031215611f5e57600080fd5b82356001600160401b0380821115611f7557600080fd5b611f8186838701611da7565b93506020850135915080821115611f9757600080fd5b50830160408186031215611faa57600080fd5b809150509250929050565b80151581146106ac57600080fd5b60008060008060008060008060a0898b031215611fdf57600080fd5b88356001600160401b0380821115611ff657600080fd5b6120028c838d01611928565b909a50985088915061201660208c01611b10565b975060408b0135915061202882611fb5565b90955060608a0135908082111561203e57600080fd5b61204a8c838d01611e7d565b909650945060808b013591508082111561206357600080fd5b506120708b828c01611928565b999c989b5096995094979396929594505050565b6000806000806060858703121561209a57600080fd5b843593506020850135925060408501356001600160401b038111156120be57600080fd5b6120ca87828801611928565b95989497509550505050565b8381526060602082015260006120ef6060830185611d4f565b90506001600160401b0383166040830152949350505050565b60006020828403121561211a57600080fd5b81516117ce816119c2565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6000808335601e198436030181126121d457600080fd5b8301803591506001600160401b038211156121ee57600080fd5b60200191503681900382131561196957600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6020815260006118f6602083018486612203565b600082601f83011261225157600080fd5b815161225f611b9a82611b65565b81815284602083860101111561227457600080fd5b6118f6826020830160208701611d23565b60006020828403121561229757600080fd5b81516001600160401b03808211156122ae57600080fd5b90830190608082860312156122c257600080fd5b6040516080810181811083821117156122dd576122dd611b1f565b806040525082518152602083015160208201526040830151604082015260608301518281111561230c57600080fd5b61231887828601612240565b60608301525095945050505050565b60008235603e1983360301811261233d57600080fd5b9190910192915050565b80518252602081015160208301526040810151604083015260006060820151608060608501526118f66080850182611d4f565b8281526040602082015260006118f66040830184612347565b6000602082840312156123a557600080fd5b81516001600160401b03808211156123bc57600080fd5b90830190604082860312156123d057600080fd5b6040516040810181811083821117156123eb576123eb611b1f565b60405282516123f981611fb5565b815260208301518281111561240d57600080fd5b61241987828601612240565b60208301525095945050505050565b6000808335601e1984360301811261243f57600080fd5b83016020810192503590506001600160401b0381111561245e57600080fd5b80360382131561196957600080fd5b8381526060602082015260006124866060830185612347565b8281036040840152833561249981611fb5565b151581526124aa6020850185612428565b6040602084015261087a604084018284612203565b60a0815260006124d360a083018a8c612203565b602060038a106124f357634e487b7160e01b600052602160045260246000fd5b8381018a905288151560408501528382036060850152868252818101600588901b830182018960005b8a81101561255657858303601f19018452612537828d612428565b612542858284612203565b95870195945050509084019060010161251c565b5050858103608087015261256b81888a612203565b9e9d5050505050505050505050505050565b848152836020820152826040820152600082516125a1816060850160208701611d23565b9190910160600195945050505050565b6000602082840312156125c357600080fd5b5051919050565b6000602082840312156125dc57600080fd5b81516117ce81611a41565b8060005b60028110156104935781518452602093840193909101906001016125eb565b8481526001600160401b038416602082015260c0810161262d60408301856125e7565b61263a60808301846125e7565b95945050505050565b6000825161233d818460208701611d23565b8183823760009101908152919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122087426dcc08a4b63307c57f9a0afd0f849c07bfbe79efdce7487a7885236ca01564736f6c634300080f0033"; type UniversalChannelHandlerConstructorParams = | [ diff --git a/test/universal.channel.t.sol b/test/universal.channel.t.sol index bd42ce0c..e999ed58 100644 --- a/test/universal.channel.t.sol +++ b/test/universal.channel.t.sol @@ -153,14 +153,12 @@ contract UniversalChannelPacketTest is Base, IbcMwEventsEmitter { // change Earth's default middleware to mw1, which sits on top of UniversalChannel MW vm.startPrank(address(eth1)); - v1.earth.setDefaultMw(address(v1.mw1)); // register mw1 as the only middleware in the stack mwAddrs[0] = address(v1.mw1); v1.ucHandlerProxy.registerMwStack(mwBitmap, mwAddrs); vm.stopPrank(); vm.startPrank(address(eth2)); - v2.earth.setDefaultMw(address(v2.mw1)); // register mw1 as the only middleware in the stack mwAddrs[0] = address(v2.mw1); v2.ucHandlerProxy.registerMwStack(mwBitmap, mwAddrs); @@ -176,7 +174,6 @@ contract UniversalChannelPacketTest is Base, IbcMwEventsEmitter { // change Earth's default middleware to mw1, which calls mw2, then UniversalChannel MW vm.startPrank(address(eth1)); - v1.earth.setDefaultMw(address(v1.mw1)); v1.mw1.setDefaultMw(address(v1.mw2)); // register middleware stack mwAddrs[0] = address(v1.mw2); @@ -186,7 +183,6 @@ contract UniversalChannelPacketTest is Base, IbcMwEventsEmitter { vm.stopPrank(); vm.startPrank(address(eth2)); - v2.earth.setDefaultMw(address(v2.mw1)); v2.mw1.setDefaultMw(address(v2.mw2)); // register middleware stack mwAddrs[0] = address(v2.mw2);