UNPKG

witnet-solidity-bridge

Version:

Witnet Solidity Bridge contracts for EVM-compatible chains

794 lines (793 loc) 299 kB
{ "contractName": "WitnetDeployerConfluxCore", "abi": [ { "inputs": [ { "internalType": "bytes", "name": "_initCode", "type": "bytes" }, { "internalType": "bytes32", "name": "_salt", "type": "bytes32" } ], "name": "deploy", "outputs": [ { "internalType": "address", "name": "_deployed", "type": "address" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes", "name": "_initCode", "type": "bytes" }, { "internalType": "bytes32", "name": "_salt", "type": "bytes32" } ], "name": "determineAddr", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_salt", "type": "bytes32" } ], "name": "determineProxyAddr", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_proxySalt", "type": "bytes32" }, { "internalType": "address", "name": "_firstImplementation", "type": "address" }, { "internalType": "bytes", "name": "_initData", "type": "bytes" } ], "name": "proxify", "outputs": [ { "internalType": "contract WitnetProxy", "name": "", "type": "address" } ], "stateMutability": "nonpayable", "type": "function" } ], "metadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"_salt\",\"type\":\"bytes32\"}],\"name\":\"deploy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"_deployed\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"_salt\",\"type\":\"bytes32\"}],\"name\":\"determineAddr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_salt\",\"type\":\"bytes32\"}],\"name\":\"determineProxyAddr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_proxySalt\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_firstImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_initData\",\"type\":\"bytes\"}],\"name\":\"proxify\",\"outputs\":[{\"internalType\":\"contract WitnetProxy\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Guillermo D\\u00edaz <guillermo@witnet.io>\",\"kind\":\"dev\",\"methods\":{\"deploy(bytes,bytes32)\":{\"details\":\"The address of deployed address will be determined by both the `_initCode` and the `_salt`, but not the addressnor the nonce of the caller (i.e. see EIP-1014). \",\"params\":{\"_initCode\":\"Creation code, including construction logic and input parameters.\",\"_salt\":\"Arbitrary value to modify resulting address.\"},\"returns\":{\"_deployed\":\"Just deployed contract address.\"}},\"determineAddr(bytes,bytes32)\":{\"params\":{\"_initCode\":\"Creation code, including construction logic and input parameters.\",\"_salt\":\"Arbitrary value to modify resulting address.\"},\"returns\":{\"_0\":\"Deterministic contract address.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"deploy(bytes,bytes32)\":{\"notice\":\"Use given `_initCode` and `_salt` to deploy a contract into a deterministic address. \"},\"determineAddr(bytes,bytes32)\":{\"notice\":\"Determine counter-factual address of the contract that would be deployed by the given `_initCode` and a `_salt`.\"}},\"notice\":\"WitnetDeployerConfluxCore contract used both as CREATE2 factory (EIP-1014) for Witnet artifacts, and CREATE3 factory (EIP-3171) for Witnet proxies, on the Conflux Core Ecosystem.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/core/WitnetDeployerConfluxCore.sol\":\"WitnetDeployerConfluxCore\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377\",\"dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"project:/contracts/core/WitnetDeployer.sol\":{\"keccak256\":\"0xa048c54e33bcd337112df5e3c8d3a528ad91179bda1963b3b08eb022d36cc038\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d37c3f74831d38abfdf76345f2c9190198643204f8ec2b4c515eb32d609b8f9\",\"dweb:/ipfs/QmcD6mDyAcs2nxnQjmU5Yu9dLuLuGuBkLj9LnFCbeu5gjV\"]},\"project:/contracts/core/WitnetDeployerConfluxCore.sol\":{\"keccak256\":\"0x979463e2b451de5ecdec0da1cc1809b228c46de6f2a7ecd142cb843916088a67\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a8a1302ae62e45b74aa6dd7aff3e7ac9088e6a1176a1433ad464cb5effff0392\",\"dweb:/ipfs/QmTdi4JEQ1raLYVeSub4NHiNQgK1jdtCfsheuETRg5T8Ka\"]},\"project:/contracts/core/WitnetProxy.sol\":{\"keccak256\":\"0x6f0ec2c544192c9439bde88f5ed4efec5bdef506cb0dcb739c29329a798033fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca05338334632aab3aef3c17a4b8686251ec488da49b9fcd3712642e57e0ce2a\",\"dweb:/ipfs/QmZk1uDdytKFii4TXUnJkFBBB3CZVSPKKR85ugFjWUTufS\"]},\"project:/contracts/libs/Create3.sol\":{\"keccak256\":\"0xfbda4c773f859bef9d7878ca9412f244da85f7bd49df07c49a17544f4708d718\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://0f83b72ad1c35c707cc6daa4e8266d9d711f561a188fbb0be1885d3f08146ca6\",\"dweb:/ipfs/QmPJwdieqkxoSvqmczAtRMfb5EN8uWiabqMKj4yVqsUncv\"]},\"project:/contracts/patterns/Initializable.sol\":{\"keccak256\":\"0xaac470e87f361cf15d68d1618d6eb7d4913885d33ccc39c797841a9591d44296\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef3760b2039feda8715d4bd9f8de8e3885f25573d12ba92f52d626ba880a08bf\",\"dweb:/ipfs/QmP2mfHPBKkjTAKft95sPDb4PBsjfmAwc47Kdcv3xYSf3g\"]},\"project:/contracts/patterns/Proxiable.sol\":{\"keccak256\":\"0x86032205378fed9ed2bf155eed8ce4bdbb13b7f5960850c6d50954a38b61a3d8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f89978eda4244a13f42a6092a94ac829bb3e38c92d77d4978b9f32894b187a63\",\"dweb:/ipfs/Qmbc1XaFCvLm3Sxvh7tP29Ug32jBGy3avsCqBGAptxs765\"]},\"project:/contracts/patterns/Upgradeable.sol\":{\"keccak256\":\"0x49d1a83abc7a9b39d224677dde65ead4b7f1104332a94c9e619854b2a6b3a89e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e6a798a953af921a5b4e24e3f78bebae97819a85c90deb12ec505952faa42814\",\"dweb:/ipfs/QmVJhv4x3MXf4aDbMC5Q259K8kZNvxSXzmy8anoow7nS7k\"]}},\"version\":1}", "bytecode": "0x6080604052348015600e575f5ffd5b50610ed78061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061004a575f3560e01c80634998f0381461004e5780634af63f021461007d5780635ba489e714610090578063d3933c29146100a3575b5f5ffd5b61006161005c366004610335565b6100b6565b6040516001600160a01b03909116815260200160405180910390f35b61006161008b3660046103eb565b6100e9565b61006161009e36600461042d565b610177565b6100616100b13660046103eb565b6102bd565b5f6100e3604051806020016100ca90610328565b601f1982820381018352601f90910116604052836102bd565b92915050565b5f6100f483836102bd565b9050806001600160a01b03163b5f036100e357818351602085015ff590506001600160a01b0381166100e35760405162461bcd60e51b815260206004820152602160248201527f5769746e65744465706c6f7965723a206465706c6f796d656e74206661696c656044820152601960fa1b60648201526084015b60405180910390fd5b5f5f610182856100b6565b9050806001600160a01b03163b5f03610259576101c1604051806020016101a890610328565b601f1982820381018352601f90910116604052866100e9565b50806001600160a01b0316636fbc15e98533866040516020016101e592919061048d565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161021192919061048d565b6020604051808303815f875af115801561022d573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061025191906104d1565b5090506102b6565b60405162461bcd60e51b815260206004820152602c60248201527f5769746e65744465706c6f796572436f6e666c7578436f72653a20616c72656160448201526b191e481c1c9bde1a599a595960a21b606482015260840161016e565b9392505050565b8151602092830120604080516001600160f81b0319818601523060601b6bffffffffffffffffffffffff191660218201526035810193909352605580840192909252805180840390920182526075909201909152805191012060016001609c1b03166001609f1b1790565b6109b1806104f183390190565b5f60208284031215610345575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261036f575f5ffd5b813567ffffffffffffffff8111156103895761038961034c565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156103b8576103b861034c565b6040528181528382016020018510156103cf575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f604083850312156103fc575f5ffd5b823567ffffffffffffffff811115610412575f5ffd5b61041e85828601610360565b95602094909401359450505050565b5f5f5f6060848603121561043f575f5ffd5b8335925060208401356001600160a01b038116811461045c575f5ffd5b9150604084013567ffffffffffffffff811115610477575f5ffd5b61048386828701610360565b9150509250925092565b60018060a01b0383168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f8301168401019150509392505050565b5f602082840312156104e1575f5ffd5b815180151581146102b6575f5ffdfe6080604052348015600e575f5ffd5b506109958061001c5f395ff3fe60806040526004361061002c575f3560e01c80635c60da1b146100605780636fbc15e91461009157610033565b3661003357005b5f61003c6100c0565b9050604051365f82375f5f3683855af43d805f843e81801561005c578184f35b8184fd5b34801561006b575f5ffd5b506100746100c0565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561009c575f5ffd5b506100b06100ab366004610778565b6100ee565b6040519015158152602001610088565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b5f6001600160a01b03831661014a5760405162461bcd60e51b815260206004820181905260248201527f5769746e657450726f78793a206e756c6c20696d706c656d656e746174696f6e60448201526064015b60405180910390fd5b5f6101536100c0565b90506001600160a01b038116156104f757806001600160a01b0316846001600160a01b0316036101c55760405162461bcd60e51b815260206004820152601f60248201527f5769746e657450726f78793a206e6f7468696e6720746f2075706772616465006044820152606401610141565b806001600160a01b0316635479d9406040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561021f575060408051601f3d908101601f1916820190925261021c91810190610810565b60015b61027e5760405162461bcd60e51b815260206004820152602a60248201527f5769746e657450726f78793a20756e61626c6520746f20636865636b207570676044820152697261646162696c69747960b01b6064820152608401610141565b806102cb5760405162461bcd60e51b815260206004820152601b60248201527f5769746e657450726f78793a206e6f742075706772616461626c6500000000006044820152606401610141565b506040513360248201525f9081906001600160a01b0384169060440160408051601f198184030181529181526020820180516001600160e01b03166335ac4b0560e11b1790525161031c9190610836565b5f60405180830381855af49150503d805f8114610354576040519150601f19603f3d011682016040523d82523d5f602084013e610359565b606091505b50915091508161037b5760405162461bcd60e51b81526004016101419061084c565b8080602001905181019061038f9190610810565b6103db5760405162461bcd60e51b815260206004820152601b60248201527f5769746e657450726f78793a206e6f7420617574686f72697a656400000000006044820152606401610141565b856001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610417573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061043b9190610893565b836001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610477573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061049b9190610893565b146104f45760405162461bcd60e51b8152602060048201526024808201527f5769746e657450726f78793a2070726f786961626c655555494473206d69736d6044820152630c2e8c6d60e31b6064820152608401610141565b50505b5f5f856001600160a01b03168560405160240161051491906108d8565b60408051601f198184030181529181526020820180516001600160e01b031663439fab9160e01b179052516105499190610836565b5f60405180830381855af49150503d805f8114610581576040519150601f19603f3d011682016040523d82523d5f602084013e610586565b606091505b509150915081610620576044815110156105ed5760405162461bcd60e51b815260206004820152602260248201527f5769746e657450726f78793a20696e697469616c697a6174696f6e206661696c604482015261195960f21b6064820152608401610141565b6004810190508080602001905181019061060791906108ea565b60405162461bcd60e51b815260040161014191906108d8565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0388169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2856001600160a01b0316635479d9406040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156106df575060408051601f3d908101601f191682019092526106dc91810190610810565b60015b6106fb5760405162461bcd60e51b81526004016101419061084c565b935061070692505050565b92915050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156107495761074961070c565b604052919050565b5f67ffffffffffffffff82111561076a5761076a61070c565b50601f01601f191660200190565b5f5f60408385031215610789575f5ffd5b82356001600160a01b038116811461079f575f5ffd5b9150602083013567ffffffffffffffff8111156107ba575f5ffd5b8301601f810185136107ca575f5ffd5b80356107dd6107d882610751565b610720565b8181528660208385010111156107f1575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60208284031215610820575f5ffd5b8151801515811461082f575f5ffd5b9392505050565b5f82518060208501845e5f920191825250919050565b60208082526027908201527f5769746e657450726f78793a20756e636f6d706c69616e7420696d706c656d65604082015266373a30ba34b7b760c91b606082015260800190565b5f602082840312156108a3575f5ffd5b5051919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61082f60208301846108aa565b5f602082840312156108fa575f5ffd5b815167ffffffffffffffff811115610910575f5ffd5b8201601f81018413610920575f5ffd5b805161092e6107d882610751565b818152856020838501011115610942575f5ffd5b8160208401602083015e5f9181016020019190915294935050505056fea2646970667358221220a8415d02311c8820d22429929d1fce9f26d5e64d00552717dedf051fcf03fde664736f6c634300081e0033a2646970667358221220abc27366a611719dd850a059fe933df5940208b5608695dddee764d89854d78464736f6c634300081e0033", "deployedBytecode": "0x608060405234801561000f575f5ffd5b506004361061004a575f3560e01c80634998f0381461004e5780634af63f021461007d5780635ba489e714610090578063d3933c29146100a3575b5f5ffd5b61006161005c366004610335565b6100b6565b6040516001600160a01b03909116815260200160405180910390f35b61006161008b3660046103eb565b6100e9565b61006161009e36600461042d565b610177565b6100616100b13660046103eb565b6102bd565b5f6100e3604051806020016100ca90610328565b601f1982820381018352601f90910116604052836102bd565b92915050565b5f6100f483836102bd565b9050806001600160a01b03163b5f036100e357818351602085015ff590506001600160a01b0381166100e35760405162461bcd60e51b815260206004820152602160248201527f5769746e65744465706c6f7965723a206465706c6f796d656e74206661696c656044820152601960fa1b60648201526084015b60405180910390fd5b5f5f610182856100b6565b9050806001600160a01b03163b5f03610259576101c1604051806020016101a890610328565b601f1982820381018352601f90910116604052866100e9565b50806001600160a01b0316636fbc15e98533866040516020016101e592919061048d565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161021192919061048d565b6020604051808303815f875af115801561022d573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061025191906104d1565b5090506102b6565b60405162461bcd60e51b815260206004820152602c60248201527f5769746e65744465706c6f796572436f6e666c7578436f72653a20616c72656160448201526b191e481c1c9bde1a599a595960a21b606482015260840161016e565b9392505050565b8151602092830120604080516001600160f81b0319818601523060601b6bffffffffffffffffffffffff191660218201526035810193909352605580840192909252805180840390920182526075909201909152805191012060016001609c1b03166001609f1b1790565b6109b1806104f183390190565b5f60208284031215610345575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261036f575f5ffd5b813567ffffffffffffffff8111156103895761038961034c565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156103b8576103b861034c565b6040528181528382016020018510156103cf575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f604083850312156103fc575f5ffd5b823567ffffffffffffffff811115610412575f5ffd5b61041e85828601610360565b95602094909401359450505050565b5f5f5f6060848603121561043f575f5ffd5b8335925060208401356001600160a01b038116811461045c575f5ffd5b9150604084013567ffffffffffffffff811115610477575f5ffd5b61048386828701610360565b9150509250925092565b60018060a01b0383168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f8301168401019150509392505050565b5f602082840312156104e1575f5ffd5b815180151581146102b6575f5ffdfe6080604052348015600e575f5ffd5b506109958061001c5f395ff3fe60806040526004361061002c575f3560e01c80635c60da1b146100605780636fbc15e91461009157610033565b3661003357005b5f61003c6100c0565b9050604051365f82375f5f3683855af43d805f843e81801561005c578184f35b8184fd5b34801561006b575f5ffd5b506100746100c0565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561009c575f5ffd5b506100b06100ab366004610778565b6100ee565b6040519015158152602001610088565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b5f6001600160a01b03831661014a5760405162461bcd60e51b815260206004820181905260248201527f5769746e657450726f78793a206e756c6c20696d706c656d656e746174696f6e60448201526064015b60405180910390fd5b5f6101536100c0565b90506001600160a01b038116156104f757806001600160a01b0316846001600160a01b0316036101c55760405162461bcd60e51b815260206004820152601f60248201527f5769746e657450726f78793a206e6f7468696e6720746f2075706772616465006044820152606401610141565b806001600160a01b0316635479d9406040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561021f575060408051601f3d908101601f1916820190925261021c91810190610810565b60015b61027e5760405162461bcd60e51b815260206004820152602a60248201527f5769746e657450726f78793a20756e61626c6520746f20636865636b207570676044820152697261646162696c69747960b01b6064820152608401610141565b806102cb5760405162461bcd60e51b815260206004820152601b60248201527f5769746e657450726f78793a206e6f742075706772616461626c6500000000006044820152606401610141565b506040513360248201525f9081906001600160a01b0384169060440160408051601f198184030181529181526020820180516001600160e01b03166335ac4b0560e11b1790525161031c9190610836565b5f60405180830381855af49150503d805f8114610354576040519150601f19603f3d011682016040523d82523d5f602084013e610359565b606091505b50915091508161037b5760405162461bcd60e51b81526004016101419061084c565b8080602001905181019061038f9190610810565b6103db5760405162461bcd60e51b815260206004820152601b60248201527f5769746e657450726f78793a206e6f7420617574686f72697a656400000000006044820152606401610141565b856001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610417573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061043b9190610893565b836001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610477573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061049b9190610893565b146104f45760405162461bcd60e51b8152602060048201526024808201527f5769746e657450726f78793a2070726f786961626c655555494473206d69736d6044820152630c2e8c6d60e31b6064820152608401610141565b50505b5f5f856001600160a01b03168560405160240161051491906108d8565b60408051601f198184030181529181526020820180516001600160e01b031663439fab9160e01b179052516105499190610836565b5f60405180830381855af49150503d805f8114610581576040519150601f19603f3d011682016040523d82523d5f602084013e610586565b606091505b509150915081610620576044815110156105ed5760405162461bcd60e51b815260206004820152602260248201527f5769746e657450726f78793a20696e697469616c697a6174696f6e206661696c604482015261195960f21b6064820152608401610141565b6004810190508080602001905181019061060791906108ea565b60405162461bcd60e51b815260040161014191906108d8565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0388169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2856001600160a01b0316635479d9406040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156106df575060408051601f3d908101601f191682019092526106dc91810190610810565b60015b6106fb5760405162461bcd60e51b81526004016101419061084c565b935061070692505050565b92915050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156107495761074961070c565b604052919050565b5f67ffffffffffffffff82111561076a5761076a61070c565b50601f01601f191660200190565b5f5f60408385031215610789575f5ffd5b82356001600160a01b038116811461079f575f5ffd5b9150602083013567ffffffffffffffff8111156107ba575f5ffd5b8301601f810185136107ca575f5ffd5b80356107dd6107d882610751565b610720565b8181528660208385010111156107f1575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60208284031215610820575f5ffd5b8151801515811461082f575f5ffd5b9392505050565b5f82518060208501845e5f920191825250919050565b60208082526027908201527f5769746e657450726f78793a20756e636f6d706c69616e7420696d706c656d65604082015266373a30ba34b7b760c91b606082015260800190565b5f602082840312156108a3575f5ffd5b5051919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61082f60208301846108aa565b5f602082840312156108fa575f5ffd5b815167ffffffffffffffff811115610910575f5ffd5b8201601f81018413610920575f5ffd5b805161092e6107d882610751565b818152856020838501011115610942575f5ffd5b8160208401602083015e5f9181016020019190915294935050505056fea2646970667358221220a8415d02311c8820d22429929d1fce9f26d5e64d00552717dedf051fcf03fde664736f6c634300081e0033a2646970667358221220abc27366a611719dd850a059fe933df5940208b5608695dddee764d89854d78464736f6c634300081e0033", "immutableReferences": {}, "generatedSources": [], "deployedGeneratedSources": [ { "ast": { "nativeSrc": "0:4669:136", "nodeType": "YulBlock", "src": "0:4669:136", "statements": [ { "nativeSrc": "6:3:136", "nodeType": "YulBlock", "src": "6:3:136", "statements": [] }, { "body": { "nativeSrc": "84:156:136", "nodeType": "YulBlock", "src": "84:156:136", "statements": [ { "body": { "nativeSrc": "130:16:136", "nodeType": "YulBlock", "src": "130:16:136", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nativeSrc": "139:1:136", "nodeType": "YulLiteral", "src": "139:1:136", "type": "", "value": "0" }, { "kind": "number", "nativeSrc": "142:1:136", "nodeType": "YulLiteral", "src": "142:1:136", "type": "", "value": "0" } ], "functionName": { "name": "revert", "nativeSrc": "132:6:136", "nodeType": "YulIdentifier", "src": "132:6:136" }, "nativeSrc": "132:12:136", "nodeType": "YulFunctionCall", "src": "132:12:136" }, "nativeSrc": "132:12:136", "nodeType": "YulExpressionStatement", "src": "132:12:136" } ] }, "condition": { "arguments": [ { "arguments": [ { "name": "dataEnd", "nativeSrc": "105:7:136", "nodeType": "YulIdentifier", "src": "105:7:136" }, { "name": "headStart", "nativeSrc": "114:9:136", "nodeType": "YulIdentifier", "src": "114:9:136" } ], "functionName": { "name": "sub", "nativeSrc": "101:3:136", "nodeType": "YulIdentifier", "src": "101:3:136" }, "nativeSrc": "101:23:136", "nodeType": "YulFunctionCall", "src": "101:23:136" }, { "kind": "number", "nativeSrc": "126:2:136", "nodeType": "YulLiteral", "src": "126:2:136", "type": "", "value": "32" } ], "functionName": { "name": "slt", "nativeSrc": "97:3:136", "nodeType": "YulIdentifier", "src": "97:3:136" }, "nativeSrc": "97:32:136", "nodeType": "YulFunctionCall", "src": "97:32:136" }, "nativeSrc": "94:52:136", "nodeType": "YulIf", "src": "94:52:136" }, { "nativeSrc": "155:14:136", "nodeType": "YulVariableDeclaration", "src": "155:14:136", "value": { "kind": "number", "nativeSrc": "168:1:136", "nodeType": "YulLiteral", "src": "168:1:136", "type": "", "value": "0" }, "variables": [ { "name": "value", "nativeSrc": "159:5:136", "nodeType": "YulTypedName", "src": "159:5:136", "type": "" } ] }, { "nativeSrc": "178:32:136", "nodeType": "YulAssignment", "src": "178:32:136", "value": { "arguments": [ { "name": "headStart", "nativeSrc": "200:9:136", "nodeType": "YulIdentifier", "src": "200:9:136" } ], "functionName": { "name": "calldataload", "nativeSrc": "187:12:136", "nodeType": "YulIdentifier", "src": "187:12:136" }, "nativeSrc": "187:23:136", "nodeType": "YulFunctionCall", "src": "187:23:136" }, "variableNames": [ { "name": "value", "nativeSrc": "178:5:136", "nodeType": "YulIdentifier", "src": "178:5:136" } ] }, { "nativeSrc": "219:15:136", "nodeType": "YulAssignment", "src": "219:15:136", "value": { "name": "value", "nativeSrc": "229:5:136", "nodeType": "YulIdentifier", "src": "229:5:136" }, "variableNames": [ { "name": "value0", "nativeSrc": "219:6:136", "nodeType": "YulIdentifier", "src": "219:6:136" } ] } ] }, "name": "abi_decode_tuple_t_bytes32", "nativeSrc": "14:226:136", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nativeSrc": "50:9:136", "nodeType": "YulTypedName", "src": "50:9:136", "type": "" }, { "name": "dataEnd", "nativeSrc": "61:7:136", "nodeType": "YulTypedName", "src": "61:7:136", "type": "" } ], "returnVariables": [ { "name": "value0", "nativeSrc": "73:6:136", "nodeType": "YulTypedName", "src": "73:6:136", "type": "" } ], "src": "14:226:136" }, { "body": { "nativeSrc": "346:102:136", "nodeType": "YulBlock", "src": "346:102:136", "statements": [ { "nativeSrc": "356:26:136", "nodeType": "YulAssignment", "src": "356:26:136", "value": { "arguments": [ { "name": "headStart", "nativeSrc": "368:9:136", "nodeType": "YulIdentifier", "src": "368:9:136" }, { "kind": "number", "nativeSrc": "379:2:136", "nodeType": "YulLiteral", "src": "379:2:136", "type": "", "value": "32" } ], "functionName": { "name": "add", "nativeSrc": "364:3:136", "nodeType": "YulIdentifier", "src": "364:3:136" }, "nativeSrc": "364:18:136", "nodeType": "YulFunctionCall", "src": "364:18:136" }, "variableNames": [ { "name": "tail", "nativeSrc": "356:4:136", "nodeType": "YulIdentifier", "src": "356:4:136" } ] }, { "expression": { "arguments": [ { "name": "headStart", "nativeSrc": "398:9:136", "nodeType": "YulIdentifier", "src": "398:9:136" }, { "arguments": [ { "name": "value0", "nativeSrc": "413:6:136", "nodeType": "YulIdentifier", "src": "413:6:136" }, { "arguments": [ { "arguments": [ { "kind": "number", "nativeSrc": "429:3:136", "nodeType": "YulLiteral", "src": "429:3:136", "type": "", "value": "160" }, { "kind": "number", "nativeSrc": "434:1:136", "nodeType": "YulLiteral", "src": "434:1:136", "type": "", "value": "1" } ], "functionName": { "name": "shl", "nativeSrc": "425:3:136", "nodeType": "YulIdentifier", "src": "425:3:136" }, "nativeSrc": "425:11:136", "nodeType": "YulFunctionCall", "src": "425:11:136" }, { "kind": "number", "nativeSrc": "438:1:136", "nodeType": "YulLiteral", "src": "438:1:136", "type": "", "value": "1" } ], "functionName": { "name": "sub", "nativeSrc": "421:3:136", "nodeType": "YulIdentifier", "src": "421:3:136" }, "nativeSrc": "421:19:136", "nodeType": "YulFunctionCall", "src": "421:19:136" } ], "functionName": { "name": "and", "nativeSrc": "409:3:136", "nodeType": "YulIdentifier", "src": "409:3:136" }, "nativeSrc": "409:32:136", "nodeType": "YulFunctionCall", "src": "409:32:136" } ], "functionName": { "name": "mstore", "nativeSrc": "391:6:136", "nodeType": "YulIdentifier", "src": "391:6:136" }, "nativeSrc": "391:51:136", "nodeType": "YulFunctionCall", "src": "391:51:136" }, "nativeSrc": "391:51:136", "nodeType": "YulExpressionStatement", "src": "391:51:136" } ] }, "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", "nativeSrc": "245:203:136", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nativeSrc": "315:9:136", "nodeType": "YulTypedName", "src": "315:9:136", "type": "" }, { "name": "value0", "nativeSrc": "326:6:136", "nodeType": "YulTypedName", "src": "326:6:136", "type": "" } ], "returnVariables": [ { "name": "tail", "nativeSrc": "337:4:136", "nodeType": "YulTypedName", "src": "337:4:136", "type": "" } ], "src": "245:203:136" }, { "body": { "nativeSrc": "485:95:136", "nodeType": "YulBlock", "src": "485:95:136", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nativeSrc": "502:1:136", "nodeType": "YulLiteral", "src": "502:1:136", "type": "", "value": "0" }, { "arguments": [ { "kind": "number", "nativeSrc": "509:3:136", "nodeType": "YulLiteral", "src": "509:3:136", "type": "", "value": "224" }, { "kind": "number", "nativeSrc": "514:10:136", "nodeType": "YulLiteral", "src": "514:10:136", "type": "", "value": "0x4e487b71" } ], "functionName": { "name": "shl", "nativeSrc": "505:3:136", "nodeType": "YulIdentifier", "src": "505:3:136" }, "nativeSrc": "505:20:136", "nodeType": "YulFunctionCall", "src": "505:20:136" } ], "functionName": { "name": "mstore", "nativeSrc": "495:6:136", "nodeType": "YulIdentifier", "src": "495:6:136" }, "nativeSrc": "495:31:136", "nodeType": "YulFunctionCall", "src": "495:31:136" }, "nativeSrc": "495:31:136", "nodeType": "YulExpressionStatement", "src": "495:31:136" }, { "expression": { "arguments": [ { "kind": "number", "nativeSrc": "542:1:136", "nodeType": "YulLiteral", "src": "542:1:136", "type": "", "value": "4" }, { "kind": "number", "nativeSrc": "545:4:136", "nodeType": "YulLiteral", "src": "545:4:136", "type": "", "value": "0x41" } ], "functionName": { "name": "mstore", "nativeSrc": "535:6:136", "nodeType": "YulIdentifier", "src": "535:6:136" }, "nativeSrc": "535:15:136", "nodeType": "YulFunctionCall", "src": "535:15:136" }, "nativeSrc": "535:15:136", "nodeType": "YulExpressionStatement", "src": "535:15:136" }, { "expression": { "arguments": [ { "kind": "number", "nativeSrc": "566:1:136", "nodeType": "YulLiteral", "src": "566:1:136", "type": "", "value": "0" }, { "kind": "number", "nativeSrc": "569:4:136", "nodeType": "YulLiteral", "src": "569:4:136", "type": "", "value": "0x24" } ], "functionName": { "name": "revert", "nativeSrc": "559:6:136", "nodeType": "YulIdentifier", "src": "559:6:136" }, "nativeSrc": "559:15:136", "nodeType": "YulFunctionCall", "src": "559:15:136" }, "nativeSrc": "559:15:136", "nodeType": "YulExpressionStatement", "src": "559:15:136" } ] }, "name": "panic_error_0x41", "nativeSrc": "453:127:136", "nodeType": "YulFunctionDefinition", "src": "453:127:136" }, { "body": { "nativeSrc": "637:673:136", "nodeType": "YulBlock", "src": "637:673:136", "statements": [ { "body": { "nativeSrc": "686:16:136", "nodeType": "YulBlock", "src": "686:16:136", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nativeSrc": "695:1:136", "nodeType": "YulLiteral", "src": "695:1:136", "type": "", "value": "0" }, { "kind": "number", "nativeSrc": "698:1:136", "nodeType": "YulLiteral", "src": "698:1:136", "type": "", "value": "0" } ], "functionName": { "name": "revert", "nativeSrc": "688:6:136", "nodeType": "YulIdentifier", "src": "688:6:136" }, "nativeSrc": "688:12:136", "nodeType": "YulFunctionCall", "src": "688:12:136" }, "nativeSrc": "688:12:136", "nodeType": "YulExpressionStatement", "src": "688:12:136" } ] }, "condition": { "arguments": [ { "arguments": [ { "arguments": [ { "name": "offset", "nativeSrc": "665:6:136", "nodeType": "YulIdentifier", "src": "665:6:136" }, { "kind": "number", "nativeSrc": "673:4:136", "nodeType": "YulLiteral", "src": "673:4:136", "type": "", "value": "0x1f" } ], "functionName": { "name": "add", "nativeSrc": "661:3:136", "nodeType": "YulIdentifier", "src": "661:3:136" }, "nativeSrc": "661:17:136", "nodeType": "YulFunctionCall", "src": "661:17:136" }, { "name": "end", "nativeSrc": "680:3:136", "nodeType": "YulIdentifier", "src": "680:3:136" } ], "functionName": { "name": "slt", "nativeSrc": "657:3:136", "nodeType": "YulIdentifier", "src": "657:3:136" }, "nativeSrc": "657:27:136", "nodeType": "YulFunctionCall", "src": "657:27:136" } ], "functionName": { "name": "iszero", "nativeSrc": "650:6:136", "nodeType": "YulIdentifier", "src": "650:6:136" }, "nativeSrc": "650:35:136", "nodeType": "YulFunctionCall", "src": "650:35:136" }, "nativeSrc": "647:55:136", "nodeType": "YulIf", "src": "647:55:136" }, { "nativeSrc": "711:34:136", "nodeType": "YulVariableDeclaration", "src": "711:34:136", "value": { "arguments": [ { "name": "offset", "nativeSrc": "738:6:136", "nodeType": "YulIdentifier", "src": "738:6:136" } ], "functionName": { "name": "calldataload", "nativeSrc": "725:12:136", "nodeType": "YulIdentifier", "src": "725:12:136" }, "nativeSrc": "725:20:136", "nodeType": "YulFunctionCall", "src": "725:20:136" }, "variables": [ { "name": "length", "nativeSrc": "715:6:136", "nodeType": "YulTypedName", "src": "715:6:136", "type": "" } ] }, { "body": { "nativeSrc": "788:22:136", "nodeType": "YulBlock", "src": "788:22:136", "statements": [ { "expression": { "arguments": [], "functionName": { "name": "panic_error_0x41", "nativeSrc": "790:16:136", "nodeType": "YulIdentifier", "src": "790:16:136" }, "nativeSrc": "790:18:136", "nodeType": "YulFunctionCall", "src": "790:18:136" }, "nativeSrc": "790:18:136", "nodeType": "YulExpressionStatement",