{
  "contractName": "WitnetDeployerMeter",
  "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\":\"WitnetDeployerMeter contract used both as CREATE2 factory (EIP-1014) for Witnet artifacts, and CREATE3 factory (EIP-3171) for Witnet proxies, on the Meter Ecosystem.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/core/WitnetDeployerMeter.sol\":\"WitnetDeployerMeter\"},\"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/WitnetDeployerMeter.sol\":{\"keccak256\":\"0x0f4a4195326412577590e3afee7c621e10c2383137a4cad7020cb347e23af05c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0267dd2f17aa3fa389b8e376b04697402f3b4b8d3d57801027bb940e148c24dc\",\"dweb:/ipfs/QmdbUxhgPjb4NLg1T7U4qbFcyEkRb5uiBQDQGCJHiqrNQa\"]},\"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": "0x6080604052348015600e575f5ffd5b50610ec28061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061004a575f3560e01c80634998f0381461004e5780634af63f021461007d5780635ba489e714610090578063d3933c29146100a3575b5f5ffd5b61006161005c366004610320565b6100b6565b6040516001600160a01b03909116815260200160405180910390f35b61006161008b3660046103d6565b6100e9565b61006161009e366004610418565b610177565b6100616100b13660046103d6565b6102b7565b5f6100e3604051806020016100ca90610313565b601f1982820381018352601f90910116604052836102b7565b92915050565b5f6100f483836102b7565b9050806001600160a01b03163b5f036100e357818351602085015ff590506001600160a01b0381166100e35760405162461bcd60e51b815260206004820152602160248201527f5769746e65744465706c6f7965723a206465706c6f796d656e74206661696c656044820152601960fa1b60648201526084015b60405180910390fd5b5f5f610182856100b6565b9050806001600160a01b03163b5f03610259576101c1604051806020016101a890610313565b601f1982820381018352601f90910116604052866100e9565b50806001600160a01b0316636fbc15e98533866040516020016101e5929190610478565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401610211929190610478565b6020604051808303815f875af115801561022d573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061025191906104bc565b5090506102b0565b60405162461bcd60e51b815260206004820152602660248201527f5769746e65744465706c6f7965724d657465723a20616c72656164792070726f6044820152651e1a599a595960d21b606482015260840161016e565b9392505050565b8151602092830120604080516001600160f81b0319818601523060601b6bffffffffffffffffffffffff191660218201526035810193909352605580840192909252805180840390920182526075909201909152805191012090565b6109b1806104dc83390190565b5f60208284031215610330575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261035a575f5ffd5b813567ffffffffffffffff81111561037457610374610337565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156103a3576103a3610337565b6040528181528382016020018510156103ba575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f604083850312156103e7575f5ffd5b823567ffffffffffffffff8111156103fd575f5ffd5b6104098582860161034b565b95602094909401359450505050565b5f5f5f6060848603121561042a575f5ffd5b8335925060208401356001600160a01b0381168114610447575f5ffd5b9150604084013567ffffffffffffffff811115610462575f5ffd5b61046e8682870161034b565b9150509250925092565b60018060a01b0383168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f8301168401019150509392505050565b5f602082840312156104cc575f5ffd5b815180151581146102b0575f5ffdfe6080604052348015600e575f5ffd5b506109958061001c5f395ff3fe60806040526004361061002c575f3560e01c80635c60da1b146100605780636fbc15e91461009157610033565b3661003357005b5f61003c6100c0565b9050604051365f82375f5f3683855af43d805f843e81801561005c578184f35b8184fd5b34801561006b575f5ffd5b506100746100c0565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561009c575f5ffd5b506100b06100ab366004610778565b6100ee565b6040519015158152602001610088565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b5f6001600160a01b03831661014a5760405162461bcd60e51b815260206004820181905260248201527f5769746e657450726f78793a206e756c6c20696d706c656d656e746174696f6e60448201526064015b60405180910390fd5b5f6101536100c0565b90506001600160a01b038116156104f757806001600160a01b0316846001600160a01b0316036101c55760405162461bcd60e51b815260206004820152601f60248201527f5769746e657450726f78793a206e6f7468696e6720746f2075706772616465006044820152606401610141565b806001600160a01b0316635479d9406040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561021f575060408051601f3d908101601f1916820190925261021c91810190610810565b60015b61027e5760405162461bcd60e51b815260206004820152602a60248201527f5769746e657450726f78793a20756e61626c6520746f20636865636b207570676044820152697261646162696c69747960b01b6064820152608401610141565b806102cb5760405162461bcd60e51b815260206004820152601b60248201527f5769746e657450726f78793a206e6f742075706772616461626c6500000000006044820152606401610141565b506040513360248201525f9081906001600160a01b0384169060440160408051601f198184030181529181526020820180516001600160e01b03166335ac4b0560e11b1790525161031c9190610836565b5f60405180830381855af49150503d805f8114610354576040519150601f19603f3d011682016040523d82523d5f602084013e610359565b606091505b50915091508161037b5760405162461bcd60e51b81526004016101419061084c565b8080602001905181019061038f9190610810565b6103db5760405162461bcd60e51b815260206004820152601b60248201527f5769746e657450726f78793a206e6f7420617574686f72697a656400000000006044820152606401610141565b856001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610417573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061043b9190610893565b836001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610477573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061049b9190610893565b146104f45760405162461bcd60e51b8152602060048201526024808201527f5769746e657450726f78793a2070726f786961626c655555494473206d69736d6044820152630c2e8c6d60e31b6064820152608401610141565b50505b5f5f856001600160a01b03168560405160240161051491906108d8565b60408051601f198184030181529181526020820180516001600160e01b031663439fab9160e01b179052516105499190610836565b5f60405180830381855af49150503d805f8114610581576040519150601f19603f3d011682016040523d82523d5f602084013e610586565b606091505b509150915081610620576044815110156105ed5760405162461bcd60e51b815260206004820152602260248201527f5769746e657450726f78793a20696e697469616c697a6174696f6e206661696c604482015261195960f21b6064820152608401610141565b6004810190508080602001905181019061060791906108ea565b60405162461bcd60e51b815260040161014191906108d8565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0388169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2856001600160a01b0316635479d9406040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156106df575060408051601f3d908101601f191682019092526106dc91810190610810565b60015b6106fb5760405162461bcd60e51b81526004016101419061084c565b935061070692505050565b92915050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156107495761074961070c565b604052919050565b5f67ffffffffffffffff82111561076a5761076a61070c565b50601f01601f191660200190565b5f5f60408385031215610789575f5ffd5b82356001600160a01b038116811461079f575f5ffd5b9150602083013567ffffffffffffffff8111156107ba575f5ffd5b8301601f810185136107ca575f5ffd5b80356107dd6107d882610751565b610720565b8181528660208385010111156107f1575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60208284031215610820575f5ffd5b8151801515811461082f575f5ffd5b9392505050565b5f82518060208501845e5f920191825250919050565b60208082526027908201527f5769746e657450726f78793a20756e636f6d706c69616e7420696d706c656d65604082015266373a30ba34b7b760c91b606082015260800190565b5f602082840312156108a3575f5ffd5b5051919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61082f60208301846108aa565b5f602082840312156108fa575f5ffd5b815167ffffffffffffffff811115610910575f5ffd5b8201601f81018413610920575f5ffd5b805161092e6107d882610751565b818152856020838501011115610942575f5ffd5b8160208401602083015e5f9181016020019190915294935050505056fea2646970667358221220a8415d02311c8820d22429929d1fce9f26d5e64d00552717dedf051fcf03fde664736f6c634300081e0033a2646970667358221220faf969e3b1fc6c7e4492e366b9d55c1458f7d5288667ceb70fbc3dee88eb844d64736f6c634300081e0033",
  "deployedBytecode": "0x608060405234801561000f575f5ffd5b506004361061004a575f3560e01c80634998f0381461004e5780634af63f021461007d5780635ba489e714610090578063d3933c29146100a3575b5f5ffd5b61006161005c366004610320565b6100b6565b6040516001600160a01b03909116815260200160405180910390f35b61006161008b3660046103d6565b6100e9565b61006161009e366004610418565b610177565b6100616100b13660046103d6565b6102b7565b5f6100e3604051806020016100ca90610313565b601f1982820381018352601f90910116604052836102b7565b92915050565b5f6100f483836102b7565b9050806001600160a01b03163b5f036100e357818351602085015ff590506001600160a01b0381166100e35760405162461bcd60e51b815260206004820152602160248201527f5769746e65744465706c6f7965723a206465706c6f796d656e74206661696c656044820152601960fa1b60648201526084015b60405180910390fd5b5f5f610182856100b6565b9050806001600160a01b03163b5f03610259576101c1604051806020016101a890610313565b601f1982820381018352601f90910116604052866100e9565b50806001600160a01b0316636fbc15e98533866040516020016101e5929190610478565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401610211929190610478565b6020604051808303815f875af115801561022d573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061025191906104bc565b5090506102b0565b60405162461bcd60e51b815260206004820152602660248201527f5769746e65744465706c6f7965724d657465723a20616c72656164792070726f6044820152651e1a599a595960d21b606482015260840161016e565b9392505050565b8151602092830120604080516001600160f81b0319818601523060601b6bffffffffffffffffffffffff191660218201526035810193909352605580840192909252805180840390920182526075909201909152805191012090565b6109b1806104dc83390190565b5f60208284031215610330575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261035a575f5ffd5b813567ffffffffffffffff81111561037457610374610337565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156103a3576103a3610337565b6040528181528382016020018510156103ba575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f604083850312156103e7575f5ffd5b823567ffffffffffffffff8111156103fd575f5ffd5b6104098582860161034b565b95602094909401359450505050565b5f5f5f6060848603121561042a575f5ffd5b8335925060208401356001600160a01b0381168114610447575f5ffd5b9150604084013567ffffffffffffffff811115610462575f5ffd5b61046e8682870161034b565b9150509250925092565b60018060a01b0383168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f8301168401019150509392505050565b5f602082840312156104cc575f5ffd5b815180151581146102b0575f5ffdfe6080604052348015600e575f5ffd5b506109958061001c5f395ff3fe60806040526004361061002c575f3560e01c80635c60da1b146100605780636fbc15e91461009157610033565b3661003357005b5f61003c6100c0565b9050604051365f82375f5f3683855af43d805f843e81801561005c578184f35b8184fd5b34801561006b575f5ffd5b506100746100c0565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561009c575f5ffd5b506100b06100ab366004610778565b6100ee565b6040519015158152602001610088565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b5f6001600160a01b03831661014a5760405162461bcd60e51b815260206004820181905260248201527f5769746e657450726f78793a206e756c6c20696d706c656d656e746174696f6e60448201526064015b60405180910390fd5b5f6101536100c0565b90506001600160a01b038116156104f757806001600160a01b0316846001600160a01b0316036101c55760405162461bcd60e51b815260206004820152601f60248201527f5769746e657450726f78793a206e6f7468696e6720746f2075706772616465006044820152606401610141565b806001600160a01b0316635479d9406040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561021f575060408051601f3d908101601f1916820190925261021c91810190610810565b60015b61027e5760405162461bcd60e51b815260206004820152602a60248201527f5769746e657450726f78793a20756e61626c6520746f20636865636b207570676044820152697261646162696c69747960b01b6064820152608401610141565b806102cb5760405162461bcd60e51b815260206004820152601b60248201527f5769746e657450726f78793a206e6f742075706772616461626c6500000000006044820152606401610141565b506040513360248201525f9081906001600160a01b0384169060440160408051601f198184030181529181526020820180516001600160e01b03166335ac4b0560e11b1790525161031c9190610836565b5f60405180830381855af49150503d805f8114610354576040519150601f19603f3d011682016040523d82523d5f602084013e610359565b606091505b50915091508161037b5760405162461bcd60e51b81526004016101419061084c565b8080602001905181019061038f9190610810565b6103db5760405162461bcd60e51b815260206004820152601b60248201527f5769746e657450726f78793a206e6f7420617574686f72697a656400000000006044820152606401610141565b856001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610417573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061043b9190610893565b836001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610477573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061049b9190610893565b146104f45760405162461bcd60e51b8152602060048201526024808201527f5769746e657450726f78793a2070726f786961626c655555494473206d69736d6044820152630c2e8c6d60e31b6064820152608401610141565b50505b5f5f856001600160a01b03168560405160240161051491906108d8565b60408051601f198184030181529181526020820180516001600160e01b031663439fab9160e01b179052516105499190610836565b5f60405180830381855af49150503d805f8114610581576040519150601f19603f3d011682016040523d82523d5f602084013e610586565b606091505b509150915081610620576044815110156105ed5760405162461bcd60e51b815260206004820152602260248201527f5769746e657450726f78793a20696e697469616c697a6174696f6e206661696c604482015261195960f21b6064820152608401610141565b6004810190508080602001905181019061060791906108ea565b60405162461bcd60e51b815260040161014191906108d8565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0388169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2856001600160a01b0316635479d9406040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156106df575060408051601f3d908101601f191682019092526106dc91810190610810565b60015b6106fb5760405162461bcd60e51b81526004016101419061084c565b935061070692505050565b92915050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156107495761074961070c565b604052919050565b5f67ffffffffffffffff82111561076a5761076a61070c565b50601f01601f191660200190565b5f5f60408385031215610789575f5ffd5b82356001600160a01b038116811461079f575f5ffd5b9150602083013567ffffffffffffffff8111156107ba575f5ffd5b8301601f810185136107ca575f5ffd5b80356107dd6107d882610751565b610720565b8181528660208385010111156107f1575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60208284031215610820575f5ffd5b8151801515811461082f575f5ffd5b9392505050565b5f82518060208501845e5f920191825250919050565b60208082526027908201527f5769746e657450726f78793a20756e636f6d706c69616e7420696d706c656d65604082015266373a30ba34b7b760c91b606082015260800190565b5f602082840312156108a3575f5ffd5b5051919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61082f60208301846108aa565b5f602082840312156108fa575f5ffd5b815167ffffffffffffffff811115610910575f5ffd5b8201601f81018413610920575f5ffd5b805161092e6107d882610751565b818152856020838501011115610942575f5ffd5b8160208401602083015e5f9181016020019190915294935050505056fea2646970667358221220a8415d02311c8820d22429929d1fce9f26d5e64d00552717dedf051fcf03fde664736f6c634300081e0033a2646970667358221220faf969e3b1fc6c7e4492e366b9d55c1458f7d5288667ceb70fbc3dee88eb844d64736f6c634300081e0033",
  "immutableReferences": {},
  "generatedSources": [],
  "deployedGeneratedSources": [
    {
      "ast": {
        "nativeSrc": "0:4663:136",
        "nodeType": "YulBlock",
        "src": "0:4663: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",
                        "src": "790:18:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nativeSrc": "760:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "760:6:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "768:18:136",
                        "nodeType": "YulLiteral",
                        "src": "768:18:136",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "757:2:136",
                      "nodeType": "YulIdentifier",
                      "src": "757:2:136"
                    },
                    "nativeSrc": "757:30:136",
                    "nodeType": "YulFunctionCall",
                    "src": "757:30:136"
                  },
                  "nativeSrc": "754:56:136",
                  "nodeType": "YulIf",
                  "src": "754:56:136"
                },
                {
                  "nativeSrc": "819:23:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "819:23:136",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "839:2:136",
                        "nodeType": "YulLiteral",
                        "src": "839:2:136",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "833:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "833:5:136"
                    },
                    "nativeSrc": "833:9:136",
                    "nodeType": "YulFunctionCall",
                    "src": "833:9:136"
                  },
                  "variables": [
                    {
                      "name": "memPtr",
                      "nativeSrc": "823:6:136",
                      "nodeType": "YulTypedName",
                      "src": "823:6:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "851:85:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "851:85:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nativeSrc": "873:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "873:6:136"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nativeSrc": "897:6:136",
                                        "nodeType": "YulIdentifier",
                                        "src": "897:6:136"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "905:4:136",
                                        "nodeType": "YulLiteral",
                                        "src": "905:4:136",
                                        "type": "",
                                        "value": "0x1f"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "893:3:136",
                                      "nodeType": "YulIdentifier",
                                      "src": "893:3:136"
                                    },
                                    "nativeSrc": "893:17:136",
                                    "nodeType": "YulFunctionCall",
                                    "src": "893:17:136"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nativeSrc": "916:2:136",
                                        "nodeType": "YulLiteral",
                                        "src": "916:2:136",
                                        "type": "",
                                        "value": "31"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nativeSrc": "912:3:136",
                                      "nodeType": "YulIdentifier",
                                      "src": "912:3:136"
                                    },
                                    "nativeSrc": "912:7:136",
                                    "nodeType": "YulFunctionCall",
                                    "src": "912:7:136"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nativeSrc": "889:3:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "889:3:136"
                                },
                                "nativeSrc": "889:31:136",
                                "nodeType": "YulFunctionCall",
                                "src": "889:31:136"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "922:2:136",
                                "nodeType": "YulLiteral",
                                "src": "922:2:136",
                                "type": "",
                                "value": "63"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "885:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "885:3:136"
                            },
                            "nativeSrc": "885:40:136",
                            "nodeType": "YulFunctionCall",
                            "src": "885:40:136"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "931:2:136",
                                "nodeType": "YulLiteral",
                                "src": "931:2:136",
                                "type": "",
                                "value": "31"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nativeSrc": "927:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "927:3:136"
                            },
                            "nativeSrc": "927:7:136",
                            "nodeType": "YulFunctionCall",
                            "src": "927:7:136"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "881:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "881:3:136"
                        },
                        "nativeSrc": "881:54:136",
                        "nodeType": "YulFunctionCall",
                        "src": "881:54:136"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "869:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "869:3:136"
                    },
                    "nativeSrc": "869:67:136",
                    "nodeType": "YulFunctionCall",
                    "src": "869:67:136"
                  },
                  "variables": [
                    {
                      "name": "newFreePtr",
                      "nativeSrc": "855:10:136",
                      "nodeType": "YulTypedName",
                      "src": "855:10:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "1011:22:136",
                    "nodeType": "YulBlock",
                    "src": "1011:22:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nativeSrc": "1013:16:136",
                            "nodeType": "YulIdentifier",
                            "src": "1013:16:136"
                          },
                          "nativeSrc": "1013:18:136",
                          "nodeType": "YulFunctionCall",
                          "src": "1013:18:136"
                        },
                        "nativeSrc": "1013:18:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "1013:18:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nativeSrc": "954:10:136",
                            "nodeType": "YulIdentifier",
                            "src": "954:10:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "966:18:136",
                            "nodeType": "YulLiteral",
                            "src": "966:18:136",
                            "type": "",
                            "value": "0xffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nativeSrc": "951:2:136",
                          "nodeType": "YulIdentifier",
                          "src": "951:2:136"
                        },
                        "nativeSrc": "951:34:136",
                        "nodeType": "YulFunctionCall",
                        "src": "951:34:136"
                      },
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nativeSrc": "990:10:136",
                            "nodeType": "YulIdentifier",
                            "src": "990:10:136"
                          },
                          {
                            "name": "memPtr",
                            "nativeSrc": "1002:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "1002:6:136"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nativeSrc": "987:2:136",
                          "nodeType": "YulIdentifier",
                          "src": "987:2:136"
                        },
                        "nativeSrc": "987:22:136",
                        "nodeType": "YulFunctionCall",
                        "src": "987:22:136"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nativeSrc": "948:2:136",
                      "nodeType": "YulIdentifier",
                      "src": "948:2:136"
                    },
                    "nativeSrc": "948:62:136",
                    "nodeType": "YulFunctionCall",
                    "src": "948:62:136"
                  },
                  "nativeSrc": "945:88:136",
                  "nodeType": "YulIf",
                  "src": "945:88:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "1049:2:136",
                        "nodeType": "YulLiteral",
                        "src": "1049:2:136",
                        "type": "",
                        "value": "64"
                      },
                      {
                        "name": "newFreePtr",
                        "nativeSrc": "1053:10:136",
                        "nodeType": "YulIdentifier",
                        "src": "1053:10:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "1042:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "1042:6:136"
                    },
                    "nativeSrc": "1042:22:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1042:22:136"
                  },
                  "nativeSrc": "1042:22:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "1042:22:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nativeSrc": "1080:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "1080:6:136"
                      },
                      {
                        "name": "length",
                        "nativeSrc": "1088:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "1088:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "1073:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "1073:6:136"
                    },
                    "nativeSrc": "1073:22:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1073:22:136"
                  },
                  "nativeSrc": "1073:22:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "1073:22:136"
                },
                {
                  "body": {
                    "nativeSrc": "1147:16:136",
                    "nodeType": "YulBlock",
                    "src": "1147:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "1156:1:136",
                              "nodeType": "YulLiteral",
                              "src": "1156:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "1159:1:136",
                              "nodeType": "YulLiteral",
                              "src": "1159:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "1149:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "1149:6:136"
                          },
                          "nativeSrc": "1149:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "1149:12:136"
                        },
                        "nativeSrc": "1149:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "1149:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nativeSrc": "1118:6:136",
                                "nodeType": "YulIdentifier",
                                "src": "1118:6:136"
                              },
                              {
                                "name": "length",
                                "nativeSrc": "1126:6:136",
                                "nodeType": "YulIdentifier",
                                "src": "1126:6:136"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "1114:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "1114:3:136"
                            },
                            "nativeSrc": "1114:19:136",
                            "nodeType": "YulFunctionCall",
                            "src": "1114:19:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "1135:4:136",
                            "nodeType": "YulLiteral",
                            "src": "1135:4:136",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "1110:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "1110:3:136"
                        },
                        "nativeSrc": "1110:30:136",
                        "nodeType": "YulFunctionCall",
                        "src": "1110:30:136"
                      },
                      {
                        "name": "end",
                        "nativeSrc": "1142:3:136",
                        "nodeType": "YulIdentifier",
                        "src": "1142:3:136"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "1107:2:136",
                      "nodeType": "YulIdentifier",
                      "src": "1107:2:136"
                    },
                    "nativeSrc": "1107:39:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1107:39:136"
                  },
                  "nativeSrc": "1104:59:136",
                  "nodeType": "YulIf",
                  "src": "1104:59:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nativeSrc": "1189:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "1189:6:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "1197:4:136",
                            "nodeType": "YulLiteral",
                            "src": "1197:4:136",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "1185:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "1185:3:136"
                        },
                        "nativeSrc": "1185:17:136",
                        "nodeType": "YulFunctionCall",
                        "src": "1185:17:136"
                      },
                      {
                        "arguments": [
                          {
                            "name": "offset",
                            "nativeSrc": "1208:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "1208:6:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "1216:4:136",
                            "nodeType": "YulLiteral",
                            "src": "1216:4:136",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "1204:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "1204:3:136"
                        },
                        "nativeSrc": "1204:17:136",
                        "nodeType": "YulFunctionCall",
                        "src": "1204:17:136"
                      },
                      {
                        "name": "length",
                        "nativeSrc": "1223:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "1223:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldatacopy",
                      "nativeSrc": "1172:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "1172:12:136"
                    },
                    "nativeSrc": "1172:58:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1172:58:136"
                  },
                  "nativeSrc": "1172:58:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "1172:58:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "memPtr",
                                "nativeSrc": "1254:6:136",
                                "nodeType": "YulIdentifier",
                                "src": "1254:6:136"
                              },
                              {
                                "name": "length",
                                "nativeSrc": "1262:6:136",
                                "nodeType": "YulIdentifier",
                                "src": "1262:6:136"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "1250:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "1250:3:136"
                            },
                            "nativeSrc": "1250:19:136",
                            "nodeType": "YulFunctionCall",
                            "src": "1250:19:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "1271:4:136",
                            "nodeType": "YulLiteral",
                            "src": "1271:4:136",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "1246:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "1246:3:136"
                        },
                        "nativeSrc": "1246:30:136",
                        "nodeType": "YulFunctionCall",
                        "src": "1246:30:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "1278:1:136",
                        "nodeType": "YulLiteral",
                        "src": "1278:1:136",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "1239:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "1239:6:136"
                    },
                    "nativeSrc": "1239:41:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1239:41:136"
                  },
                  "nativeSrc": "1239:41:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "1239:41:136"
                },
                {
                  "nativeSrc": "1289:15:136",
                  "nodeType": "YulAssignment",
                  "src": "1289:15:136",
                  "value": {
                    "name": "memPtr",
                    "nativeSrc": "1298:6:136",
                    "nodeType": "YulIdentifier",
                    "src": "1298:6:136"
                  },
                  "variableNames": [
                    {
                      "name": "array",
                      "nativeSrc": "1289:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "1289:5:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_bytes",
            "nativeSrc": "585:725:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nativeSrc": "611:6:136",
                "nodeType": "YulTypedName",
                "src": "611:6:136",
                "type": ""
              },
              {
                "name": "end",
                "nativeSrc": "619:3:136",
                "nodeType": "YulTypedName",
                "src": "619:3:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "array",
                "nativeSrc": "627:5:136",
                "nodeType": "YulTypedName",
                "src": "627:5:136",
                "type": ""
              }
            ],
            "src": "585:725:136"
          },
          {
            "body": {
              "nativeSrc": "1411:338:136",
              "nodeType": "YulBlock",
              "src": "1411:338:136",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "1457:16:136",
                    "nodeType": "YulBlock",
                    "src": "1457:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "1466:1:136",
                              "nodeType": "YulLiteral",
                              "src": "1466:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "1469:1:136",
                              "nodeType": "YulLiteral",
                              "src": "1469:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "1459:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "1459:6:136"
                          },
                          "nativeSrc": "1459:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "1459:12:136"
                        },
                        "nativeSrc": "1459:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "1459:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "1432:7:136",
                            "nodeType": "YulIdentifier",
                            "src": "1432:7:136"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "1441:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "1441:9:136"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "1428:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "1428:3:136"
                        },
                        "nativeSrc": "1428:23:136",
                        "nodeType": "YulFunctionCall",
                        "src": "1428:23:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "1453:2:136",
                        "nodeType": "YulLiteral",
                        "src": "1453:2:136",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "1424:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "1424:3:136"
                    },
                    "nativeSrc": "1424:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1424:32:136"
                  },
                  "nativeSrc": "1421:52:136",
                  "nodeType": "YulIf",
                  "src": "1421:52:136"
                },
                {
                  "nativeSrc": "1482:37:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "1482:37:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "1509:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "1509:9:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "1496:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "1496:12:136"
                    },
                    "nativeSrc": "1496:23:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1496:23:136"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nativeSrc": "1486:6:136",
                      "nodeType": "YulTypedName",
                      "src": "1486:6:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "1562:16:136",
                    "nodeType": "YulBlock",
                    "src": "1562:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "1571:1:136",
                              "nodeType": "YulLiteral",
                              "src": "1571:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "1574:1:136",
                              "nodeType": "YulLiteral",
                              "src": "1574:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "1564:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "1564:6:136"
                          },
                          "nativeSrc": "1564:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "1564:12:136"
                        },
                        "nativeSrc": "1564:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "1564:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "1534:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "1534:6:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "1542:18:136",
                        "nodeType": "YulLiteral",
                        "src": "1542:18:136",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "1531:2:136",
                      "nodeType": "YulIdentifier",
                      "src": "1531:2:136"
                    },
                    "nativeSrc": "1531:30:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1531:30:136"
                  },
                  "nativeSrc": "1528:50:136",
                  "nodeType": "YulIf",
                  "src": "1528:50:136"
                },
                {
                  "nativeSrc": "1587:59:136",
                  "nodeType": "YulAssignment",
                  "src": "1587:59:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "1618:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "1618:9:136"
                          },
                          {
                            "name": "offset",
                            "nativeSrc": "1629:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "1629:6:136"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "1614:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "1614:3:136"
                        },
                        "nativeSrc": "1614:22:136",
                        "nodeType": "YulFunctionCall",
                        "src": "1614:22:136"
                      },
                      {
                        "name": "dataEnd",
                        "nativeSrc": "1638:7:136",
                        "nodeType": "YulIdentifier",
                        "src": "1638:7:136"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nativeSrc": "1597:16:136",
                      "nodeType": "YulIdentifier",
                      "src": "1597:16:136"
                    },
                    "nativeSrc": "1597:49:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1597:49:136"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "1587:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "1587:6:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "1655:14:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "1655:14:136",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "1668:1:136",
                    "nodeType": "YulLiteral",
                    "src": "1668:1:136",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "1659:5:136",
                      "nodeType": "YulTypedName",
                      "src": "1659:5:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "1678:41:136",
                  "nodeType": "YulAssignment",
                  "src": "1678:41:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "1704:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "1704:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "1715:2:136",
                            "nodeType": "YulLiteral",
                            "src": "1715:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "1700:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "1700:3:136"
                        },
                        "nativeSrc": "1700:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "1700:18:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "1687:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "1687:12:136"
                    },
                    "nativeSrc": "1687:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1687:32:136"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nativeSrc": "1678:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "1678:5:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "1728:15:136",
                  "nodeType": "YulAssignment",
                  "src": "1728:15:136",
                  "value": {
                    "name": "value",
                    "nativeSrc": "1738:5:136",
                    "nodeType": "YulIdentifier",
                    "src": "1738:5:136"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nativeSrc": "1728:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "1728:6:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes_memory_ptrt_bytes32",
            "nativeSrc": "1315:434:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "1369:9:136",
                "nodeType": "YulTypedName",
                "src": "1369:9:136",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "1380:7:136",
                "nodeType": "YulTypedName",
                "src": "1380:7:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "1392:6:136",
                "nodeType": "YulTypedName",
                "src": "1392:6:136",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "1400:6:136",
                "nodeType": "YulTypedName",
                "src": "1400:6:136",
                "type": ""
              }
            ],
            "src": "1315:434:136"
          },
          {
            "body": {
              "nativeSrc": "1867:503:136",
              "nodeType": "YulBlock",
              "src": "1867:503:136",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "1913:16:136",
                    "nodeType": "YulBlock",
                    "src": "1913:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "1922:1:136",
                              "nodeType": "YulLiteral",
                              "src": "1922:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "1925:1:136",
                              "nodeType": "YulLiteral",
                              "src": "1925:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "1915:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "1915:6:136"
                          },
                          "nativeSrc": "1915:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "1915:12:136"
                        },
                        "nativeSrc": "1915:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "1915:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "1888:7:136",
                            "nodeType": "YulIdentifier",
                            "src": "1888:7:136"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "1897:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "1897:9:136"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "1884:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "1884:3:136"
                        },
                        "nativeSrc": "1884:23:136",
                        "nodeType": "YulFunctionCall",
                        "src": "1884:23:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "1909:2:136",
                        "nodeType": "YulLiteral",
                        "src": "1909:2:136",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "1880:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "1880:3:136"
                    },
                    "nativeSrc": "1880:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1880:32:136"
                  },
                  "nativeSrc": "1877:52:136",
                  "nodeType": "YulIf",
                  "src": "1877:52:136"
                },
                {
                  "nativeSrc": "1938:14:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "1938:14:136",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "1951:1:136",
                    "nodeType": "YulLiteral",
                    "src": "1951:1:136",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "1942:5:136",
                      "nodeType": "YulTypedName",
                      "src": "1942:5:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "1961:32:136",
                  "nodeType": "YulAssignment",
                  "src": "1961:32:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "1983:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "1983:9:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "1970:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "1970:12:136"
                    },
                    "nativeSrc": "1970:23:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1970:23:136"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nativeSrc": "1961:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "1961:5:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "2002:15:136",
                  "nodeType": "YulAssignment",
                  "src": "2002:15:136",
                  "value": {
                    "name": "value",
                    "nativeSrc": "2012:5:136",
                    "nodeType": "YulIdentifier",
                    "src": "2012:5:136"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "2002:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "2002:6:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "2026:47:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "2026:47:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "2058:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "2058:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "2069:2:136",
                            "nodeType": "YulLiteral",
                            "src": "2069:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "2054:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "2054:3:136"
                        },
                        "nativeSrc": "2054:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "2054:18:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "2041:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "2041:12:136"
                    },
                    "nativeSrc": "2041:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2041:32:136"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nativeSrc": "2030:7:136",
                      "nodeType": "YulTypedName",
                      "src": "2030:7:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "2140:16:136",
                    "nodeType": "YulBlock",
                    "src": "2140:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "2149:1:136",
                              "nodeType": "YulLiteral",
                              "src": "2149:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "2152:1:136",
                              "nodeType": "YulLiteral",
                              "src": "2152:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "2142:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "2142:6:136"
                          },
                          "nativeSrc": "2142:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "2142:12:136"
                        },
                        "nativeSrc": "2142:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "2142:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value_1",
                            "nativeSrc": "2095:7:136",
                            "nodeType": "YulIdentifier",
                            "src": "2095:7:136"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value_1",
                                "nativeSrc": "2108:7:136",
                                "nodeType": "YulIdentifier",
                                "src": "2108:7:136"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nativeSrc": "2125:3:136",
                                        "nodeType": "YulLiteral",
                                        "src": "2125:3:136",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "2130:1:136",
                                        "nodeType": "YulLiteral",
                                        "src": "2130:1:136",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nativeSrc": "2121:3:136",
                                      "nodeType": "YulIdentifier",
                                      "src": "2121:3:136"
                                    },
                                    "nativeSrc": "2121:11:136",
                                    "nodeType": "YulFunctionCall",
                                    "src": "2121:11:136"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "2134:1:136",
                                    "nodeType": "YulLiteral",
                                    "src": "2134:1:136",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nativeSrc": "2117:3:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "2117:3:136"
                                },
                                "nativeSrc": "2117:19:136",
                                "nodeType": "YulFunctionCall",
                                "src": "2117:19:136"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nativeSrc": "2104:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "2104:3:136"
                            },
                            "nativeSrc": "2104:33:136",
                            "nodeType": "YulFunctionCall",
                            "src": "2104:33:136"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nativeSrc": "2092:2:136",
                          "nodeType": "YulIdentifier",
                          "src": "2092:2:136"
                        },
                        "nativeSrc": "2092:46:136",
                        "nodeType": "YulFunctionCall",
                        "src": "2092:46:136"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "2085:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "2085:6:136"
                    },
                    "nativeSrc": "2085:54:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2085:54:136"
                  },
                  "nativeSrc": "2082:74:136",
                  "nodeType": "YulIf",
                  "src": "2082:74:136"
                },
                {
                  "nativeSrc": "2165:17:136",
                  "nodeType": "YulAssignment",
                  "src": "2165:17:136",
                  "value": {
                    "name": "value_1",
                    "nativeSrc": "2175:7:136",
                    "nodeType": "YulIdentifier",
                    "src": "2175:7:136"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nativeSrc": "2165:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "2165:6:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "2191:46:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "2191:46:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "2222:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "2222:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "2233:2:136",
                            "nodeType": "YulLiteral",
                            "src": "2233:2:136",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "2218:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "2218:3:136"
                        },
                        "nativeSrc": "2218:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "2218:18:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "2205:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "2205:12:136"
                    },
                    "nativeSrc": "2205:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2205:32:136"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nativeSrc": "2195:6:136",
                      "nodeType": "YulTypedName",
                      "src": "2195:6:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "2280:16:136",
                    "nodeType": "YulBlock",
                    "src": "2280:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "2289:1:136",
                              "nodeType": "YulLiteral",
                              "src": "2289:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "2292:1:136",
                              "nodeType": "YulLiteral",
                              "src": "2292:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "2282:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "2282:6:136"
                          },
                          "nativeSrc": "2282:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "2282:12:136"
                        },
                        "nativeSrc": "2282:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "2282:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "2252:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "2252:6:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "2260:18:136",
                        "nodeType": "YulLiteral",
                        "src": "2260:18:136",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "2249:2:136",
                      "nodeType": "YulIdentifier",
                      "src": "2249:2:136"
                    },
                    "nativeSrc": "2249:30:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2249:30:136"
                  },
                  "nativeSrc": "2246:50:136",
                  "nodeType": "YulIf",
                  "src": "2246:50:136"
                },
                {
                  "nativeSrc": "2305:59:136",
                  "nodeType": "YulAssignment",
                  "src": "2305:59:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "2336:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "2336:9:136"
                          },
                          {
                            "name": "offset",
                            "nativeSrc": "2347:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "2347:6:136"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "2332:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "2332:3:136"
                        },
                        "nativeSrc": "2332:22:136",
                        "nodeType": "YulFunctionCall",
                        "src": "2332:22:136"
                      },
                      {
                        "name": "dataEnd",
                        "nativeSrc": "2356:7:136",
                        "nodeType": "YulIdentifier",
                        "src": "2356:7:136"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nativeSrc": "2315:16:136",
                      "nodeType": "YulIdentifier",
                      "src": "2315:16:136"
                    },
                    "nativeSrc": "2315:49:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2315:49:136"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nativeSrc": "2305:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "2305:6:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes32t_addresst_bytes_memory_ptr",
            "nativeSrc": "1754:616:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "1817:9:136",
                "nodeType": "YulTypedName",
                "src": "1817:9:136",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "1828:7:136",
                "nodeType": "YulTypedName",
                "src": "1828:7:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "1840:6:136",
                "nodeType": "YulTypedName",
                "src": "1840:6:136",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "1848:6:136",
                "nodeType": "YulTypedName",
                "src": "1848:6:136",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "1856:6:136",
                "nodeType": "YulTypedName",
                "src": "1856:6:136",
                "type": ""
              }
            ],
            "src": "1754:616:136"
          },
          {
            "body": {
              "nativeSrc": "2504:102:136",
              "nodeType": "YulBlock",
              "src": "2504:102:136",
              "statements": [
                {
                  "nativeSrc": "2514:26:136",
                  "nodeType": "YulAssignment",
                  "src": "2514:26:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "2526:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "2526:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "2537:2:136",
                        "nodeType": "YulLiteral",
                        "src": "2537:2:136",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "2522:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "2522:3:136"
                    },
                    "nativeSrc": "2522:18:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2522:18:136"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "2514:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "2514:4:136"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "2556:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "2556:9:136"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nativeSrc": "2571:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "2571:6:136"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "2587:3:136",
                                    "nodeType": "YulLiteral",
                                    "src": "2587:3:136",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "2592:1:136",
                                    "nodeType": "YulLiteral",
                                    "src": "2592:1:136",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nativeSrc": "2583:3:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "2583:3:136"
                                },
                                "nativeSrc": "2583:11:136",
                                "nodeType": "YulFunctionCall",
                                "src": "2583:11:136"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "2596:1:136",
                                "nodeType": "YulLiteral",
                                "src": "2596:1:136",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nativeSrc": "2579:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "2579:3:136"
                            },
                            "nativeSrc": "2579:19:136",
                            "nodeType": "YulFunctionCall",
                            "src": "2579:19:136"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "2567:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "2567:3:136"
                        },
                        "nativeSrc": "2567:32:136",
                        "nodeType": "YulFunctionCall",
                        "src": "2567:32:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "2549:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "2549:6:136"
                    },
                    "nativeSrc": "2549:51:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2549:51:136"
                  },
                  "nativeSrc": "2549:51:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "2549:51:136"
                }
              ]
            },
            "name": "abi_encode_tuple_t_contract$_WitnetProxy_$8994__to_t_address_payable__fromStack_reversed",
            "nativeSrc": "2375:231:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "2473:9:136",
                "nodeType": "YulTypedName",
                "src": "2473:9:136",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "2484:6:136",
                "nodeType": "YulTypedName",
                "src": "2484:6:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "2495:4:136",
                "nodeType": "YulTypedName",
                "src": "2495:4:136",
                "type": ""
              }
            ],
            "src": "2375:231:136"
          },
          {
            "body": {
              "nativeSrc": "2785:223:136",
              "nodeType": "YulBlock",
              "src": "2785:223:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "2802:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "2802:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "2813:2:136",
                        "nodeType": "YulLiteral",
                        "src": "2813:2:136",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "2795:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "2795:6:136"
                    },
                    "nativeSrc": "2795:21:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2795:21:136"
                  },
                  "nativeSrc": "2795:21:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "2795:21:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "2836:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "2836:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "2847:2:136",
                            "nodeType": "YulLiteral",
                            "src": "2847:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "2832:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "2832:3:136"
                        },
                        "nativeSrc": "2832:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "2832:18:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "2852:2:136",
                        "nodeType": "YulLiteral",
                        "src": "2852:2:136",
                        "type": "",
                        "value": "33"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "2825:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "2825:6:136"
                    },
                    "nativeSrc": "2825:30:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2825:30:136"
                  },
                  "nativeSrc": "2825:30:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "2825:30:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "2875:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "2875:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "2886:2:136",
                            "nodeType": "YulLiteral",
                            "src": "2886:2:136",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "2871:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "2871:3:136"
                        },
                        "nativeSrc": "2871:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "2871:18:136"
                      },
                      {
                        "hexValue": "5769746e65744465706c6f7965723a206465706c6f796d656e74206661696c65",
                        "kind": "string",
                        "nativeSrc": "2891:34:136",
                        "nodeType": "YulLiteral",
                        "src": "2891:34:136",
                        "type": "",
                        "value": "WitnetDeployer: deployment faile"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "2864:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "2864:6:136"
                    },
                    "nativeSrc": "2864:62:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2864:62:136"
                  },
                  "nativeSrc": "2864:62:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "2864:62:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "2946:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "2946:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "2957:2:136",
                            "nodeType": "YulLiteral",
                            "src": "2957:2:136",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "2942:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "2942:3:136"
                        },
                        "nativeSrc": "2942:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "2942:18:136"
                      },
                      {
                        "hexValue": "64",
                        "kind": "string",
                        "nativeSrc": "2962:3:136",
                        "nodeType": "YulLiteral",
                        "src": "2962:3:136",
                        "type": "",
                        "value": "d"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "2935:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "2935:6:136"
                    },
                    "nativeSrc": "2935:31:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2935:31:136"
                  },
                  "nativeSrc": "2935:31:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "2935:31:136"
                },
                {
                  "nativeSrc": "2975:27:136",
                  "nodeType": "YulAssignment",
                  "src": "2975:27:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "2987:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "2987:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "2998:3:136",
                        "nodeType": "YulLiteral",
                        "src": "2998:3:136",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "2983:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "2983:3:136"
                    },
                    "nativeSrc": "2983:19:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2983:19:136"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "2975:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "2975:4:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_a449f037473e66c93f74665b4547dc6279e787cd06aefbab4d74a9c55d42a13f__to_t_string_memory_ptr__fromStack_reversed",
            "nativeSrc": "2611:397:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "2762:9:136",
                "nodeType": "YulTypedName",
                "src": "2762:9:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "2776:4:136",
                "nodeType": "YulTypedName",
                "src": "2776:4:136",
                "type": ""
              }
            ],
            "src": "2611:397:136"
          },
          {
            "body": {
              "nativeSrc": "3160:366:136",
              "nodeType": "YulBlock",
              "src": "3160:366:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "3177:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "3177:9:136"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nativeSrc": "3192:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "3192:6:136"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "3208:3:136",
                                    "nodeType": "YulLiteral",
                                    "src": "3208:3:136",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "3213:1:136",
                                    "nodeType": "YulLiteral",
                                    "src": "3213:1:136",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nativeSrc": "3204:3:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "3204:3:136"
                                },
                                "nativeSrc": "3204:11:136",
                                "nodeType": "YulFunctionCall",
                                "src": "3204:11:136"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "3217:1:136",
                                "nodeType": "YulLiteral",
                                "src": "3217:1:136",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nativeSrc": "3200:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "3200:3:136"
                            },
                            "nativeSrc": "3200:19:136",
                            "nodeType": "YulFunctionCall",
                            "src": "3200:19:136"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "3188:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "3188:3:136"
                        },
                        "nativeSrc": "3188:32:136",
                        "nodeType": "YulFunctionCall",
                        "src": "3188:32:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "3170:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "3170:6:136"
                    },
                    "nativeSrc": "3170:51:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3170:51:136"
                  },
                  "nativeSrc": "3170:51:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "3170:51:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "3241:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "3241:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "3252:2:136",
                            "nodeType": "YulLiteral",
                            "src": "3252:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "3237:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "3237:3:136"
                        },
                        "nativeSrc": "3237:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "3237:18:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "3257:2:136",
                        "nodeType": "YulLiteral",
                        "src": "3257:2:136",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "3230:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "3230:6:136"
                    },
                    "nativeSrc": "3230:30:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3230:30:136"
                  },
                  "nativeSrc": "3230:30:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "3230:30:136"
                },
                {
                  "nativeSrc": "3269:27:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "3269:27:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "value1",
                        "nativeSrc": "3289:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "3289:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "3283:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "3283:5:136"
                    },
                    "nativeSrc": "3283:13:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3283:13:136"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nativeSrc": "3273:6:136",
                      "nodeType": "YulTypedName",
                      "src": "3273:6:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "3316:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "3316:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "3327:2:136",
                            "nodeType": "YulLiteral",
                            "src": "3327:2:136",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "3312:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "3312:3:136"
                        },
                        "nativeSrc": "3312:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "3312:18:136"
                      },
                      {
                        "name": "length",
                        "nativeSrc": "3332:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "3332:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "3305:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "3305:6:136"
                    },
                    "nativeSrc": "3305:34:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3305:34:136"
                  },
                  "nativeSrc": "3305:34:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "3305:34:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "3358:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "3358:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "3369:2:136",
                            "nodeType": "YulLiteral",
                            "src": "3369:2:136",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "3354:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "3354:3:136"
                        },
                        "nativeSrc": "3354:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "3354:18:136"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value1",
                            "nativeSrc": "3378:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "3378:6:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "3386:2:136",
                            "nodeType": "YulLiteral",
                            "src": "3386:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "3374:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "3374:3:136"
                        },
                        "nativeSrc": "3374:15:136",
                        "nodeType": "YulFunctionCall",
                        "src": "3374:15:136"
                      },
                      {
                        "name": "length",
                        "nativeSrc": "3391:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "3391:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "mcopy",
                      "nativeSrc": "3348:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "3348:5:136"
                    },
                    "nativeSrc": "3348:50:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3348:50:136"
                  },
                  "nativeSrc": "3348:50:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "3348:50:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nativeSrc": "3422:9:136",
                                "nodeType": "YulIdentifier",
                                "src": "3422:9:136"
                              },
                              {
                                "name": "length",
                                "nativeSrc": "3433:6:136",
                                "nodeType": "YulIdentifier",
                                "src": "3433:6:136"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "3418:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "3418:3:136"
                            },
                            "nativeSrc": "3418:22:136",
                            "nodeType": "YulFunctionCall",
                            "src": "3418:22:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "3442:2:136",
                            "nodeType": "YulLiteral",
                            "src": "3442:2:136",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "3414:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "3414:3:136"
                        },
                        "nativeSrc": "3414:31:136",
                        "nodeType": "YulFunctionCall",
                        "src": "3414:31:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "3447:1:136",
                        "nodeType": "YulLiteral",
                        "src": "3447:1:136",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "3407:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "3407:6:136"
                    },
                    "nativeSrc": "3407:42:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3407:42:136"
                  },
                  "nativeSrc": "3407:42:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "3407:42:136"
                },
                {
                  "nativeSrc": "3458:62:136",
                  "nodeType": "YulAssignment",
                  "src": "3458:62:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "3474:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "3474:9:136"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nativeSrc": "3493:6:136",
                                    "nodeType": "YulIdentifier",
                                    "src": "3493:6:136"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "3501:2:136",
                                    "nodeType": "YulLiteral",
                                    "src": "3501:2:136",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nativeSrc": "3489:3:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "3489:3:136"
                                },
                                "nativeSrc": "3489:15:136",
                                "nodeType": "YulFunctionCall",
                                "src": "3489:15:136"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "3510:2:136",
                                    "nodeType": "YulLiteral",
                                    "src": "3510:2:136",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nativeSrc": "3506:3:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "3506:3:136"
                                },
                                "nativeSrc": "3506:7:136",
                                "nodeType": "YulFunctionCall",
                                "src": "3506:7:136"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nativeSrc": "3485:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "3485:3:136"
                            },
                            "nativeSrc": "3485:29:136",
                            "nodeType": "YulFunctionCall",
                            "src": "3485:29:136"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "3470:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "3470:3:136"
                        },
                        "nativeSrc": "3470:45:136",
                        "nodeType": "YulFunctionCall",
                        "src": "3470:45:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "3517:2:136",
                        "nodeType": "YulLiteral",
                        "src": "3517:2:136",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "3466:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "3466:3:136"
                    },
                    "nativeSrc": "3466:54:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3466:54:136"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "3458:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "3458:4:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed",
            "nativeSrc": "3013:513:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "3121:9:136",
                "nodeType": "YulTypedName",
                "src": "3121:9:136",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "3132:6:136",
                "nodeType": "YulTypedName",
                "src": "3132:6:136",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "3140:6:136",
                "nodeType": "YulTypedName",
                "src": "3140:6:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "3151:4:136",
                "nodeType": "YulTypedName",
                "src": "3151:4:136",
                "type": ""
              }
            ],
            "src": "3013:513:136"
          },
          {
            "body": {
              "nativeSrc": "3609:199:136",
              "nodeType": "YulBlock",
              "src": "3609:199:136",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "3655:16:136",
                    "nodeType": "YulBlock",
                    "src": "3655:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "3664:1:136",
                              "nodeType": "YulLiteral",
                              "src": "3664:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "3667:1:136",
                              "nodeType": "YulLiteral",
                              "src": "3667:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "3657:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "3657:6:136"
                          },
                          "nativeSrc": "3657:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "3657:12:136"
                        },
                        "nativeSrc": "3657:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "3657:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "3630:7:136",
                            "nodeType": "YulIdentifier",
                            "src": "3630:7:136"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "3639:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "3639:9:136"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "3626:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "3626:3:136"
                        },
                        "nativeSrc": "3626:23:136",
                        "nodeType": "YulFunctionCall",
                        "src": "3626:23:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "3651:2:136",
                        "nodeType": "YulLiteral",
                        "src": "3651:2:136",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "3622:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "3622:3:136"
                    },
                    "nativeSrc": "3622:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3622:32:136"
                  },
                  "nativeSrc": "3619:52:136",
                  "nodeType": "YulIf",
                  "src": "3619:52:136"
                },
                {
                  "nativeSrc": "3680:29:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "3680:29:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "3699:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "3699:9:136"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "3693:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "3693:5:136"
                    },
                    "nativeSrc": "3693:16:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3693:16:136"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "3684:5:136",
                      "nodeType": "YulTypedName",
                      "src": "3684:5:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "3762:16:136",
                    "nodeType": "YulBlock",
                    "src": "3762:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "3771:1:136",
                              "nodeType": "YulLiteral",
                              "src": "3771:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "3774:1:136",
                              "nodeType": "YulLiteral",
                              "src": "3774:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "3764:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "3764:6:136"
                          },
                          "nativeSrc": "3764:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "3764:12:136"
                        },
                        "nativeSrc": "3764:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "3764:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nativeSrc": "3731:5:136",
                            "nodeType": "YulIdentifier",
                            "src": "3731:5:136"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nativeSrc": "3752:5:136",
                                    "nodeType": "YulIdentifier",
                                    "src": "3752:5:136"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nativeSrc": "3745:6:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "3745:6:136"
                                },
                                "nativeSrc": "3745:13:136",
                                "nodeType": "YulFunctionCall",
                                "src": "3745:13:136"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nativeSrc": "3738:6:136",
                              "nodeType": "YulIdentifier",
                              "src": "3738:6:136"
                            },
                            "nativeSrc": "3738:21:136",
                            "nodeType": "YulFunctionCall",
                            "src": "3738:21:136"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nativeSrc": "3728:2:136",
                          "nodeType": "YulIdentifier",
                          "src": "3728:2:136"
                        },
                        "nativeSrc": "3728:32:136",
                        "nodeType": "YulFunctionCall",
                        "src": "3728:32:136"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "3721:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "3721:6:136"
                    },
                    "nativeSrc": "3721:40:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3721:40:136"
                  },
                  "nativeSrc": "3718:60:136",
                  "nodeType": "YulIf",
                  "src": "3718:60:136"
                },
                {
                  "nativeSrc": "3787:15:136",
                  "nodeType": "YulAssignment",
                  "src": "3787:15:136",
                  "value": {
                    "name": "value",
                    "nativeSrc": "3797:5:136",
                    "nodeType": "YulIdentifier",
                    "src": "3797:5:136"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "3787:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "3787:6:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bool_fromMemory",
            "nativeSrc": "3531:277:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "3575:9:136",
                "nodeType": "YulTypedName",
                "src": "3575:9:136",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "3586:7:136",
                "nodeType": "YulTypedName",
                "src": "3586:7:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "3598:6:136",
                "nodeType": "YulTypedName",
                "src": "3598:6:136",
                "type": ""
              }
            ],
            "src": "3531:277:136"
          },
          {
            "body": {
              "nativeSrc": "3987:228:136",
              "nodeType": "YulBlock",
              "src": "3987:228:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "4004:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "4004:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "4015:2:136",
                        "nodeType": "YulLiteral",
                        "src": "4015:2:136",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "3997:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "3997:6:136"
                    },
                    "nativeSrc": "3997:21:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3997:21:136"
                  },
                  "nativeSrc": "3997:21:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "3997:21:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "4038:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "4038:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "4049:2:136",
                            "nodeType": "YulLiteral",
                            "src": "4049:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "4034:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "4034:3:136"
                        },
                        "nativeSrc": "4034:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "4034:18:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "4054:2:136",
                        "nodeType": "YulLiteral",
                        "src": "4054:2:136",
                        "type": "",
                        "value": "38"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4027:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "4027:6:136"
                    },
                    "nativeSrc": "4027:30:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4027:30:136"
                  },
                  "nativeSrc": "4027:30:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "4027:30:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "4077:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "4077:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "4088:2:136",
                            "nodeType": "YulLiteral",
                            "src": "4088:2:136",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "4073:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "4073:3:136"
                        },
                        "nativeSrc": "4073:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "4073:18:136"
                      },
                      {
                        "hexValue": "5769746e65744465706c6f7965724d657465723a20616c72656164792070726f",
                        "kind": "string",
                        "nativeSrc": "4093:34:136",
                        "nodeType": "YulLiteral",
                        "src": "4093:34:136",
                        "type": "",
                        "value": "WitnetDeployerMeter: already pro"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4066:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "4066:6:136"
                    },
                    "nativeSrc": "4066:62:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4066:62:136"
                  },
                  "nativeSrc": "4066:62:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "4066:62:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "4148:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "4148:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "4159:2:136",
                            "nodeType": "YulLiteral",
                            "src": "4159:2:136",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "4144:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "4144:3:136"
                        },
                        "nativeSrc": "4144:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "4144:18:136"
                      },
                      {
                        "hexValue": "786966696564",
                        "kind": "string",
                        "nativeSrc": "4164:8:136",
                        "nodeType": "YulLiteral",
                        "src": "4164:8:136",
                        "type": "",
                        "value": "xified"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4137:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "4137:6:136"
                    },
                    "nativeSrc": "4137:36:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4137:36:136"
                  },
                  "nativeSrc": "4137:36:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "4137:36:136"
                },
                {
                  "nativeSrc": "4182:27:136",
                  "nodeType": "YulAssignment",
                  "src": "4182:27:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "4194:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "4194:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "4205:3:136",
                        "nodeType": "YulLiteral",
                        "src": "4205:3:136",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "4190:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "4190:3:136"
                    },
                    "nativeSrc": "4190:19:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4190:19:136"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "4182:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "4182:4:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_35301ced9723f633ba26a41ab9b6ac754c475b81a3607fce6b33ac3eddaf591d__to_t_string_memory_ptr__fromStack_reversed",
            "nativeSrc": "3813:402:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "3964:9:136",
                "nodeType": "YulTypedName",
                "src": "3964:9:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "3978:4:136",
                "nodeType": "YulTypedName",
                "src": "3978:4:136",
                "type": ""
              }
            ],
            "src": "3813:402:136"
          },
          {
            "body": {
              "nativeSrc": "4421:240:136",
              "nodeType": "YulBlock",
              "src": "4421:240:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nativeSrc": "4438:3:136",
                        "nodeType": "YulIdentifier",
                        "src": "4438:3:136"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nativeSrc": "4447:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "4447:6:136"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "4459:3:136",
                                "nodeType": "YulLiteral",
                                "src": "4459:3:136",
                                "type": "",
                                "value": "248"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "4464:3:136",
                                "nodeType": "YulLiteral",
                                "src": "4464:3:136",
                                "type": "",
                                "value": "255"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nativeSrc": "4455:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "4455:3:136"
                            },
                            "nativeSrc": "4455:13:136",
                            "nodeType": "YulFunctionCall",
                            "src": "4455:13:136"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "4443:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "4443:3:136"
                        },
                        "nativeSrc": "4443:26:136",
                        "nodeType": "YulFunctionCall",
                        "src": "4443:26:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4431:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "4431:6:136"
                    },
                    "nativeSrc": "4431:39:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4431:39:136"
                  },
                  "nativeSrc": "4431:39:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "4431:39:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nativeSrc": "4490:3:136",
                            "nodeType": "YulIdentifier",
                            "src": "4490:3:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "4495:1:136",
                            "nodeType": "YulLiteral",
                            "src": "4495:1:136",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "4486:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "4486:3:136"
                        },
                        "nativeSrc": "4486:11:136",
                        "nodeType": "YulFunctionCall",
                        "src": "4486:11:136"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "4507:2:136",
                                "nodeType": "YulLiteral",
                                "src": "4507:2:136",
                                "type": "",
                                "value": "96"
                              },
                              {
                                "name": "value1",
                                "nativeSrc": "4511:6:136",
                                "nodeType": "YulIdentifier",
                                "src": "4511:6:136"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nativeSrc": "4503:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "4503:3:136"
                            },
                            "nativeSrc": "4503:15:136",
                            "nodeType": "YulFunctionCall",
                            "src": "4503:15:136"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "4524:26:136",
                                "nodeType": "YulLiteral",
                                "src": "4524:26:136",
                                "type": "",
                                "value": "0xffffffffffffffffffffffff"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nativeSrc": "4520:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "4520:3:136"
                            },
                            "nativeSrc": "4520:31:136",
                            "nodeType": "YulFunctionCall",
                            "src": "4520:31:136"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "4499:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "4499:3:136"
                        },
                        "nativeSrc": "4499:53:136",
                        "nodeType": "YulFunctionCall",
                        "src": "4499:53:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4479:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "4479:6:136"
                    },
                    "nativeSrc": "4479:74:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4479:74:136"
                  },
                  "nativeSrc": "4479:74:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "4479:74:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nativeSrc": "4573:3:136",
                            "nodeType": "YulIdentifier",
                            "src": "4573:3:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "4578:2:136",
                            "nodeType": "YulLiteral",
                            "src": "4578:2:136",
                            "type": "",
                            "value": "21"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "4569:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "4569:3:136"
                        },
                        "nativeSrc": "4569:12:136",
                        "nodeType": "YulFunctionCall",
                        "src": "4569:12:136"
                      },
                      {
                        "name": "value2",
                        "nativeSrc": "4583:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "4583:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4562:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "4562:6:136"
                    },
                    "nativeSrc": "4562:28:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4562:28:136"
                  },
                  "nativeSrc": "4562:28:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "4562:28:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nativeSrc": "4610:3:136",
                            "nodeType": "YulIdentifier",
                            "src": "4610:3:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "4615:2:136",
                            "nodeType": "YulLiteral",
                            "src": "4615:2:136",
                            "type": "",
                            "value": "53"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "4606:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "4606:3:136"
                        },
                        "nativeSrc": "4606:12:136",
                        "nodeType": "YulFunctionCall",
                        "src": "4606:12:136"
                      },
                      {
                        "name": "value3",
                        "nativeSrc": "4620:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "4620:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4599:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "4599:6:136"
                    },
                    "nativeSrc": "4599:28:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4599:28:136"
                  },
                  "nativeSrc": "4599:28:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "4599:28:136"
                },
                {
                  "nativeSrc": "4636:19:136",
                  "nodeType": "YulAssignment",
                  "src": "4636:19:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nativeSrc": "4647:3:136",
                        "nodeType": "YulIdentifier",
                        "src": "4647:3:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "4652:2:136",
                        "nodeType": "YulLiteral",
                        "src": "4652:2:136",
                        "type": "",
                        "value": "85"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "4643:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "4643:3:136"
                    },
                    "nativeSrc": "4643:12:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4643:12:136"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nativeSrc": "4636:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "4636:3:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_packed_t_bytes1_t_address_t_bytes32_t_bytes32__to_t_bytes1_t_address_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed",
            "nativeSrc": "4220:441:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nativeSrc": "4373:3:136",
                "nodeType": "YulTypedName",
                "src": "4373:3:136",
                "type": ""
              },
              {
                "name": "value3",
                "nativeSrc": "4378:6:136",
                "nodeType": "YulTypedName",
                "src": "4378:6:136",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "4386:6:136",
                "nodeType": "YulTypedName",
                "src": "4386:6:136",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "4394:6:136",
                "nodeType": "YulTypedName",
                "src": "4394:6:136",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "4402:6:136",
                "nodeType": "YulTypedName",
                "src": "4402:6:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nativeSrc": "4413:3:136",
                "nodeType": "YulTypedName",
                "src": "4413:3:136",
                "type": ""
              }
            ],
            "src": "4220:441:136"
          }
        ]
      },
      "contents": "{\n    { }\n    function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := 0\n        value := calldataload(headStart)\n        value0 := value\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_bytes(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(length, 0x1f), not(31)), 63), not(31)))\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, length)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n        calldatacopy(add(memPtr, 0x20), add(offset, 0x20), length)\n        mstore(add(add(memPtr, length), 0x20), 0)\n        array := memPtr\n    }\n    function abi_decode_tuple_t_bytes_memory_ptrt_bytes32(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_bytes(add(headStart, offset), dataEnd)\n        let value := 0\n        value := calldataload(add(headStart, 32))\n        value1 := value\n    }\n    function abi_decode_tuple_t_bytes32t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := 0\n        value := calldataload(headStart)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        if iszero(eq(value_1, and(value_1, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value1 := value_1\n        let offset := calldataload(add(headStart, 64))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value2 := abi_decode_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_encode_tuple_t_contract$_WitnetProxy_$8994__to_t_address_payable__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_stringliteral_a449f037473e66c93f74665b4547dc6279e787cd06aefbab4d74a9c55d42a13f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 33)\n        mstore(add(headStart, 64), \"WitnetDeployer: deployment faile\")\n        mstore(add(headStart, 96), \"d\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), 64)\n        let length := mload(value1)\n        mstore(add(headStart, 64), length)\n        mcopy(add(headStart, 96), add(value1, 32), length)\n        mstore(add(add(headStart, length), 96), 0)\n        tail := add(add(headStart, and(add(length, 31), not(31))), 96)\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_35301ced9723f633ba26a41ab9b6ac754c475b81a3607fce6b33ac3eddaf591d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"WitnetDeployerMeter: already pro\")\n        mstore(add(headStart, 96), \"xified\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_packed_t_bytes1_t_address_t_bytes32_t_bytes32__to_t_bytes1_t_address_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value3, value2, value1, value0) -> end\n    {\n        mstore(pos, and(value0, shl(248, 255)))\n        mstore(add(pos, 1), and(shl(96, value1), not(0xffffffffffffffffffffffff)))\n        mstore(add(pos, 21), value2)\n        mstore(add(pos, 53), value3)\n        end := add(pos, 85)\n    }\n}",
      "id": 136,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "sourceMap": "350:1267:24:-:0;;;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "350:1267:24:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;406:201;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;409:32:136;;;391:51;;379:2;364:18;406:201:24;;;;;;;893:448:21;;;;;;:::i;:::-;;:::i;615:997:24:-;;;;;;:::i;:::-;;:::i;1687:417:21:-;;;;;;:::i;:::-;;:::i;406:201:24:-;515:7;547:52;561:30;;;;;;;;:::i;:::-;-1:-1:-1;;561:30:24;;;;;;;;;;;;;;593:5;547:13;:52::i;:::-;540:59;406:201;-1:-1:-1;;406:201:24:o;893:448:21:-;990:17;1037:31;1051:9;1062:5;1037:13;:31::i;:::-;1025:43;;1083:9;-1:-1:-1;;;;;1083:21:21;;1108:1;1083:26;1079:255;;1218:5;1206:9;1200:16;1193:4;1182:9;1178:20;1175:1;1167:57;1154:70;-1:-1:-1;;;;;;1261:23:21;;1253:69;;;;-1:-1:-1;;;1253:69:21;;2813:2:136;1253:69:21;;;2795:21:136;2852:2;2832:18;;;2825:30;2891:34;2871:18;;;2864:62;-1:-1:-1;;;2942:18:136;;;2935:31;2983:19;;1253:69:21;;;;;;;;615:997:24;769:11;798:18;819:30;838:10;819:18;:30::i;:::-;798:51;;864:10;-1:-1:-1;;;;;864:22:24;;890:1;864:27;860:745;;947:50;954:30;;;;;;;;:::i;:::-;-1:-1:-1;;954:30:24;;;;;;;;;;;;;;986:10;947:6;:50::i;:::-;;1085:10;-1:-1:-1;;;;;1065:42:24;;1126:20;1317:10;1415:9;1215:228;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1065:393;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1500:10:24;-1:-1:-1;1473:39:24;;860:745;1545:48;;-1:-1:-1;;;1545:48:24;;4015:2:136;1545:48:24;;;3997:21:136;4054:2;4034:18;;;4027:30;4093:34;4073:18;;;4066:62;-1:-1:-1;;;4144:18:136;;;4137:36;4190:19;;1545:48:24;3813:402:136;615:997:24;;;;;;:::o;1687:417:21:-;2029:20;;;;;;;1891:177;;;-1:-1:-1;;;;;;1891:177:21;;;4431:39:136;1973:4:21;4507:2:136;4503:15;-1:-1:-1;;4499:53:136;4486:11;;;4479:74;4569:12;;;4562:28;;;;4606:12;;;;4599:28;;;;1891:177:21;;;;;;;;;;4643:12:136;;;;1891:177:21;;;1863:220;;;;;;1687:417::o;-1:-1:-1:-;;;;;;;;:::o;14:226:136:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;187:23:136;;14:226;-1:-1:-1;14:226:136:o;453:127::-;514:10;509:3;505:20;502:1;495:31;545:4;542:1;535:15;569:4;566:1;559:15;585:725;627:5;680:3;673:4;665:6;661:17;657:27;647:55;;698:1;695;688:12;647:55;738:6;725:20;768:18;760:6;757:30;754:56;;;790:18;;:::i;:::-;839:2;833:9;931:2;893:17;;-1:-1:-1;;889:31:136;;;922:2;885:40;881:54;869:67;;966:18;951:34;;987:22;;;948:62;945:88;;;1013:18;;:::i;:::-;1049:2;1042:22;1073;;;1114:19;;;1135:4;1110:30;1107:39;-1:-1:-1;1104:59:136;;;1159:1;1156;1149:12;1104:59;1223:6;1216:4;1208:6;1204:17;1197:4;1189:6;1185:17;1172:58;1278:1;1250:19;;;1271:4;1246:30;1239:41;;;;1254:6;585:725;-1:-1:-1;;;585:725:136:o;1315:434::-;1392:6;1400;1453:2;1441:9;1432:7;1428:23;1424:32;1421:52;;;1469:1;1466;1459:12;1421:52;1509:9;1496:23;1542:18;1534:6;1531:30;1528:50;;;1574:1;1571;1564:12;1528:50;1597:49;1638:7;1629:6;1618:9;1614:22;1597:49;:::i;:::-;1587:59;1715:2;1700:18;;;;1687:32;;-1:-1:-1;;;;1315:434:136:o;1754:616::-;1840:6;1848;1856;1909:2;1897:9;1888:7;1884:23;1880:32;1877:52;;;1925:1;1922;1915:12;1877:52;1970:23;;;-1:-1:-1;2069:2:136;2054:18;;2041:32;-1:-1:-1;;;;;2104:33:136;;2092:46;;2082:74;;2152:1;2149;2142:12;2082:74;2175:7;-1:-1:-1;2233:2:136;2218:18;;2205:32;2260:18;2249:30;;2246:50;;;2292:1;2289;2282:12;2246:50;2315:49;2356:7;2347:6;2336:9;2332:22;2315:49;:::i;:::-;2305:59;;;1754:616;;;;;:::o;3013:513::-;3217:1;3213;3208:3;3204:11;3200:19;3192:6;3188:32;3177:9;3170:51;3257:2;3252;3241:9;3237:18;3230:30;3151:4;3289:6;3283:13;3332:6;3327:2;3316:9;3312:18;3305:34;3391:6;3386:2;3378:6;3374:15;3369:2;3358:9;3354:18;3348:50;3447:1;3442:2;3433:6;3422:9;3418:22;3414:31;3407:42;3517:2;3510;3506:7;3501:2;3493:6;3489:15;3485:29;3474:9;3470:45;3466:54;3458:62;;;3013:513;;;;;:::o;3531:277::-;3598:6;3651:2;3639:9;3630:7;3626:23;3622:32;3619:52;;;3667:1;3664;3657:12;3619:52;3699:9;3693:16;3752:5;3745:13;3738:21;3731:5;3728:32;3718:60;;3774:1;3771;3764:12",
  "source": "// SPDX-License-Identifier: MIT\r\n\r\npragma solidity >=0.8.0 <0.9.0;\r\n\r\nimport \"./WitnetDeployer.sol\";\r\n\r\n/// @notice WitnetDeployerMeter contract used both as CREATE2 factory (EIP-1014) for Witnet artifacts, \r\n/// @notice and CREATE3 factory (EIP-3171) for Witnet proxies, on the Meter Ecosystem.\r\n/// @author Guillermo Díaz <guillermo@witnet.io>\r\n\r\ncontract WitnetDeployerMeter is WitnetDeployer {\r\n\r\n    function determineProxyAddr(bytes32 _salt) \r\n        virtual override\r\n        public view\r\n        returns (address)\r\n    {\r\n        return determineAddr(type(WitnetProxy).creationCode, _salt);\r\n    }\r\n\r\n    function proxify(bytes32 _proxySalt, address _firstImplementation, bytes memory _initData)\r\n        virtual override\r\n        external \r\n        returns (WitnetProxy)\r\n    {\r\n        address _proxyAddr = determineProxyAddr(_proxySalt);\r\n        if (_proxyAddr.code.length == 0) {\r\n            // deploy the WitnetProxy\r\n            deploy(type(WitnetProxy).creationCode, _proxySalt);\r\n            // settle first implementation address,\r\n            WitnetProxy(payable(_proxyAddr)).upgradeTo(\r\n                _firstImplementation, \r\n                // and initialize it, providing\r\n                abi.encode(\r\n                    // the owner (i.e. the caller of this function)\r\n                    msg.sender,\r\n                    // and some (optional) initialization data\r\n                     _initData\r\n                )\r\n            );\r\n            return WitnetProxy(payable(_proxyAddr));\r\n        } else {\r\n            revert(\"WitnetDeployerMeter: already proxified\");\r\n        }\r\n    }\r\n\r\n}",
  "sourcePath": "C:\\Users\\guill\\github\\guidiaz\\witnet-solidity-bridge\\contracts\\core\\WitnetDeployerMeter.sol",
  "ast": {
    "absolutePath": "project:/contracts/core/WitnetDeployerMeter.sol",
    "exportedSymbols": {
      "Create3": [
        31519
      ],
      "ERC165": [
        616
      ],
      "IERC165": [
        628
      ],
      "Initializable": [
        267
      ],
      "Proxiable": [
        45810
      ],
      "Upgradeable": [
        45930
      ],
      "WitnetDeployer": [
        8396
      ],
      "WitnetDeployerMeter": [
        8767
      ],
      "WitnetProxy": [
        8994
      ]
    },
    "id": 8768,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 8682,
        "literals": [
          "solidity",
          ">=",
          "0.8",
          ".0",
          "<",
          "0.9",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "35:31:24"
      },
      {
        "absolutePath": "project:/contracts/core/WitnetDeployer.sol",
        "file": "./WitnetDeployer.sol",
        "id": 8683,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 8768,
        "sourceUnit": 8397,
        "src": "70:30:24",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 8685,
              "name": "WitnetDeployer",
              "nameLocations": [
                "382:14:24"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 8396,
              "src": "382:14:24"
            },
            "id": 8686,
            "nodeType": "InheritanceSpecifier",
            "src": "382:14:24"
          }
        ],
        "canonicalName": "WitnetDeployerMeter",
        "contractDependencies": [
          8994
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 8684,
          "nodeType": "StructuredDocumentation",
          "src": "104:244:24",
          "text": "@notice WitnetDeployerMeter contract used both as CREATE2 factory (EIP-1014) for Witnet artifacts, \n @notice and CREATE3 factory (EIP-3171) for Witnet proxies, on the Meter Ecosystem.\n @author Guillermo Díaz <guillermo@witnet.io>"
        },
        "fullyImplemented": true,
        "id": 8767,
        "linearizedBaseContracts": [
          8767,
          8396
        ],
        "name": "WitnetDeployerMeter",
        "nameLocation": "359:19:24",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "baseFunctions": [
              8331
            ],
            "body": {
              "id": 8702,
              "nodeType": "Block",
              "src": "529:78:24",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8696,
                              "name": "WitnetProxy",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8994,
                              "src": "566:11:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_WitnetProxy_$8994_$",
                                "typeString": "type(contract WitnetProxy)"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_type$_t_contract$_WitnetProxy_$8994_$",
                                "typeString": "type(contract WitnetProxy)"
                              }
                            ],
                            "id": 8695,
                            "name": "type",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967269,
                            "src": "561:4:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 8697,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "561:17:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_meta_type_t_contract$_WitnetProxy_$8994",
                            "typeString": "type(contract WitnetProxy)"
                          }
                        },
                        "id": 8698,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "579:12:24",
                        "memberName": "creationCode",
                        "nodeType": "MemberAccess",
                        "src": "561:30:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "id": 8699,
                        "name": "_salt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8688,
                        "src": "593:5:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 8694,
                      "name": "determineAddr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8318,
                      "src": "547:13:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes memory,bytes32) view returns (address)"
                      }
                    },
                    "id": 8700,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "547:52:24",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 8693,
                  "id": 8701,
                  "nodeType": "Return",
                  "src": "540:59:24"
                }
              ]
            },
            "functionSelector": "4998f038",
            "id": 8703,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "determineProxyAddr",
            "nameLocation": "415:18:24",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 8690,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "467:8:24"
            },
            "parameters": {
              "id": 8689,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8688,
                  "mutability": "mutable",
                  "name": "_salt",
                  "nameLocation": "442:5:24",
                  "nodeType": "VariableDeclaration",
                  "scope": 8703,
                  "src": "434:13:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8687,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "434:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "433:15:24"
            },
            "returnParameters": {
              "id": 8693,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8692,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 8703,
                  "src": "515:7:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8691,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "515:7:24",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "514:9:24"
            },
            "scope": 8767,
            "src": "406:201:24",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              8395
            ],
            "body": {
              "id": 8765,
              "nodeType": "Block",
              "src": "787:825:24",
              "statements": [
                {
                  "assignments": [
                    8717
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 8717,
                      "mutability": "mutable",
                      "name": "_proxyAddr",
                      "nameLocation": "806:10:24",
                      "nodeType": "VariableDeclaration",
                      "scope": 8765,
                      "src": "798:18:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8716,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "798:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 8721,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 8719,
                        "name": "_proxySalt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8705,
                        "src": "838:10:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 8718,
                      "name": "determineProxyAddr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8703
                      ],
                      "referencedDeclaration": 8703,
                      "src": "819:18:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view returns (address)"
                      }
                    },
                    "id": 8720,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "819:30:24",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "798:51:24"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 8726,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "expression": {
                          "id": 8722,
                          "name": "_proxyAddr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8717,
                          "src": "864:10:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 8723,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "875:4:24",
                        "memberName": "code",
                        "nodeType": "MemberAccess",
                        "src": "864:15:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 8724,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "880:6:24",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "864:22:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 8725,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "890:1:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "864:27:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 8763,
                    "nodeType": "Block",
                    "src": "1530:75:24",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "hexValue": "5769746e65744465706c6f7965724d657465723a20616c72656164792070726f786966696564",
                              "id": 8760,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1552:40:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_35301ced9723f633ba26a41ab9b6ac754c475b81a3607fce6b33ac3eddaf591d",
                                "typeString": "literal_string \"WitnetDeployerMeter: already proxified\""
                              },
                              "value": "WitnetDeployerMeter: already proxified"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_35301ced9723f633ba26a41ab9b6ac754c475b81a3607fce6b33ac3eddaf591d",
                                "typeString": "literal_string \"WitnetDeployerMeter: already proxified\""
                              }
                            ],
                            "id": 8759,
                            "name": "revert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4294967277,
                              4294967277
                            ],
                            "referencedDeclaration": 4294967277,
                            "src": "1545:6:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory) pure"
                            }
                          },
                          "id": 8761,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1545:48:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8762,
                        "nodeType": "ExpressionStatement",
                        "src": "1545:48:24"
                      }
                    ]
                  },
                  "id": 8764,
                  "nodeType": "IfStatement",
                  "src": "860:745:24",
                  "trueBody": {
                    "id": 8758,
                    "nodeType": "Block",
                    "src": "893:631:24",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 8729,
                                    "name": "WitnetProxy",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8994,
                                    "src": "959:11:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_WitnetProxy_$8994_$",
                                      "typeString": "type(contract WitnetProxy)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_WitnetProxy_$8994_$",
                                      "typeString": "type(contract WitnetProxy)"
                                    }
                                  ],
                                  "id": 8728,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4294967269,
                                  "src": "954:4:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 8730,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "954:17:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_WitnetProxy_$8994",
                                  "typeString": "type(contract WitnetProxy)"
                                }
                              },
                              "id": 8731,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "972:12:24",
                              "memberName": "creationCode",
                              "nodeType": "MemberAccess",
                              "src": "954:30:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 8732,
                              "name": "_proxySalt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8705,
                              "src": "986:10:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 8727,
                            "name": "deploy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8280,
                            "src": "947:6:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes memory,bytes32) returns (address)"
                            }
                          },
                          "id": 8733,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "947:50:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 8734,
                        "nodeType": "ExpressionStatement",
                        "src": "947:50:24"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8742,
                              "name": "_firstImplementation",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8707,
                              "src": "1126:20:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "id": 8745,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4294967281,
                                    "src": "1317:3:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 8746,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "1321:6:24",
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "src": "1317:10:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 8747,
                                  "name": "_initData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8709,
                                  "src": "1415:9:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "expression": {
                                  "id": 8743,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4294967295,
                                  "src": "1215:3:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 8744,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "1219:6:24",
                                "memberName": "encode",
                                "nodeType": "MemberAccess",
                                "src": "1215:10:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 8748,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1215:228:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 8738,
                                      "name": "_proxyAddr",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8717,
                                      "src": "1085:10:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 8737,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1077:8:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_payable_$",
                                      "typeString": "type(address payable)"
                                    },
                                    "typeName": {
                                      "id": 8736,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "1077:8:24",
                                      "stateMutability": "payable",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 8739,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1077:19:24",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                ],
                                "id": 8735,
                                "name": "WitnetProxy",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8994,
                                "src": "1065:11:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_WitnetProxy_$8994_$",
                                  "typeString": "type(contract WitnetProxy)"
                                }
                              },
                              "id": 8740,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1065:32:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_WitnetProxy_$8994",
                                "typeString": "contract WitnetProxy"
                              }
                            },
                            "id": 8741,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1098:9:24",
                            "memberName": "upgradeTo",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8984,
                            "src": "1065:42:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                              "typeString": "function (address,bytes memory) external returns (bool)"
                            }
                          },
                          "id": 8749,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1065:393:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8750,
                        "nodeType": "ExpressionStatement",
                        "src": "1065:393:24"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 8754,
                                  "name": "_proxyAddr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8717,
                                  "src": "1500:10:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 8753,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1492:8:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_payable_$",
                                  "typeString": "type(address payable)"
                                },
                                "typeName": {
                                  "id": 8752,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1492:8:24",
                                  "stateMutability": "payable",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 8755,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1492:19:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 8751,
                            "name": "WitnetProxy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8994,
                            "src": "1480:11:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_WitnetProxy_$8994_$",
                              "typeString": "type(contract WitnetProxy)"
                            }
                          },
                          "id": 8756,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1480:32:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_WitnetProxy_$8994",
                            "typeString": "contract WitnetProxy"
                          }
                        },
                        "functionReturnParameters": 8715,
                        "id": 8757,
                        "nodeType": "Return",
                        "src": "1473:39:24"
                      }
                    ]
                  }
                }
              ]
            },
            "functionSelector": "5ba489e7",
            "id": 8766,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "proxify",
            "nameLocation": "624:7:24",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 8711,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "723:8:24"
            },
            "parameters": {
              "id": 8710,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8705,
                  "mutability": "mutable",
                  "name": "_proxySalt",
                  "nameLocation": "640:10:24",
                  "nodeType": "VariableDeclaration",
                  "scope": 8766,
                  "src": "632:18:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8704,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "632:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8707,
                  "mutability": "mutable",
                  "name": "_firstImplementation",
                  "nameLocation": "660:20:24",
                  "nodeType": "VariableDeclaration",
                  "scope": 8766,
                  "src": "652:28:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8706,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "652:7:24",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8709,
                  "mutability": "mutable",
                  "name": "_initData",
                  "nameLocation": "695:9:24",
                  "nodeType": "VariableDeclaration",
                  "scope": 8766,
                  "src": "682:22:24",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 8708,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "682:5:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "631:74:24"
            },
            "returnParameters": {
              "id": 8715,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8714,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 8766,
                  "src": "769:11:24",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_WitnetProxy_$8994",
                    "typeString": "contract WitnetProxy"
                  },
                  "typeName": {
                    "id": 8713,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 8712,
                      "name": "WitnetProxy",
                      "nameLocations": [
                        "769:11:24"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 8994,
                      "src": "769:11:24"
                    },
                    "referencedDeclaration": 8994,
                    "src": "769:11:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_WitnetProxy_$8994",
                      "typeString": "contract WitnetProxy"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "768:13:24"
            },
            "scope": 8767,
            "src": "615:997:24",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "external"
          }
        ],
        "scope": 8768,
        "src": "350:1267:24",
        "usedErrors": [],
        "usedEvents": []
      }
    ],
    "src": "35:1582:24"
  },
  "compiler": {
    "name": "solc",
    "version": "0.8.30+commit.73712a01.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.4.16",
  "updatedAt": "2025-10-15T14:34:45.462Z",
  "devdoc": {
    "author": "Guillermo Díaz <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": "WitnetDeployerMeter contract used both as CREATE2 factory (EIP-1014) for Witnet artifacts, and CREATE3 factory (EIP-3171) for Witnet proxies, on the Meter Ecosystem.",
    "version": 1
  }
}