{
  "address": "0xE991413afB85Af3151D11d0C08E41FBaF7FfE46a",
  "abi": [
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "callData",
              "type": "bytes"
            }
          ],
          "internalType": "struct Multicall2.Call[]",
          "name": "calls",
          "type": "tuple[]"
        }
      ],
      "name": "aggregate",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "blockNumber",
          "type": "uint256"
        },
        {
          "internalType": "bytes[]",
          "name": "returnData",
          "type": "bytes[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "callData",
              "type": "bytes"
            }
          ],
          "internalType": "struct Multicall2.Call[]",
          "name": "calls",
          "type": "tuple[]"
        }
      ],
      "name": "blockAndAggregate",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "blockNumber",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "blockHash",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "bool",
              "name": "success",
              "type": "bool"
            },
            {
              "internalType": "bytes",
              "name": "returnData",
              "type": "bytes"
            }
          ],
          "internalType": "struct Multicall2.Result[]",
          "name": "returnData",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "blockNumber",
          "type": "uint256"
        }
      ],
      "name": "getBlockHash",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "blockHash",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getBlockNumber",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "blockNumber",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getCurrentBlockCoinbase",
      "outputs": [
        {
          "internalType": "address",
          "name": "coinbase",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getCurrentBlockDifficulty",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "difficulty",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getCurrentBlockGasLimit",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "gaslimit",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getCurrentBlockTimestamp",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "addr",
          "type": "address"
        }
      ],
      "name": "getEthBalance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getLastBlockHash",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "blockHash",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bool",
          "name": "requireSuccess",
          "type": "bool"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "callData",
              "type": "bytes"
            }
          ],
          "internalType": "struct Multicall2.Call[]",
          "name": "calls",
          "type": "tuple[]"
        }
      ],
      "name": "tryAggregate",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bool",
              "name": "success",
              "type": "bool"
            },
            {
              "internalType": "bytes",
              "name": "returnData",
              "type": "bytes"
            }
          ],
          "internalType": "struct Multicall2.Result[]",
          "name": "returnData",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bool",
          "name": "requireSuccess",
          "type": "bool"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "callData",
              "type": "bytes"
            }
          ],
          "internalType": "struct Multicall2.Call[]",
          "name": "calls",
          "type": "tuple[]"
        }
      ],
      "name": "tryBlockAndAggregate",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "blockNumber",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "blockHash",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "bool",
              "name": "success",
              "type": "bool"
            },
            {
              "internalType": "bytes",
              "name": "returnData",
              "type": "bytes"
            }
          ],
          "internalType": "struct Multicall2.Result[]",
          "name": "returnData",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "transactionHash": "0x6fdf9ffe5fdc94f903876eb8af8ce350bb81f407587970f25aff29b8fee6ba3a",
  "receipt": {
    "to": null,
    "from": "0xE575c99Ad8D5BFbe4C71CB88722b7F7fF2f574Ef",
    "contractAddress": "0xE991413afB85Af3151D11d0C08E41FBaF7FfE46a",
    "transactionIndex": 0,
    "gasUsed": "563129",
    "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
    "blockHash": "0xf4f2e546d809452876729ad1f9d76dca7618575d2f9a6802b30206f01441bd4f",
    "transactionHash": "0x6fdf9ffe5fdc94f903876eb8af8ce350bb81f407587970f25aff29b8fee6ba3a",
    "logs": [],
    "blockNumber": 10235909,
    "cumulativeGasUsed": "563129",
    "status": 1,
    "byzantium": true
  },
  "args": [],
  "solcInputHash": "af42c9b78f9459eb1f47e4c296c8d1f4",
  "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct Multicall2.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"aggregate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"returnData\",\"type\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct Multicall2.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"blockAndAggregate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct Multicall2.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"getBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentBlockCoinbase\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentBlockDifficulty\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"difficulty\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentBlockGasLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"gaslimit\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentBlockTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"getEthBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLastBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"requireSuccess\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct Multicall2.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"tryAggregate\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct Multicall2.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"requireSuccess\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct Multicall2.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"tryBlockAndAggregate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct Multicall2.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Michael Elliot <mike@makerdao.com>Joshua Levine <joshua@makerdao.com>Nick Johnson <arachnid@notdot.net>\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Multicall2 - Aggregate results from multiple read-only function calls\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Multicall2.sol\":\"Multicall2\"},\"evmVersion\":\"istanbul\",\"libraries\":{\"__CACHE_BREAKER__\":\"0x00000000d41867734bbee4c6863d9255b2b06ac1\"},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Multicall2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.5.0;\\npragma experimental ABIEncoderV2;\\n\\n/// @title Multicall2 - Aggregate results from multiple read-only function calls\\n/// @author Michael Elliot <mike@makerdao.com>\\n/// @author Joshua Levine <joshua@makerdao.com>\\n/// @author Nick Johnson <arachnid@notdot.net>\\n\\ncontract Multicall2 {\\n    struct Call {\\n        address target;\\n        bytes callData;\\n    }\\n    struct Result {\\n        bool success;\\n        bytes returnData;\\n    }\\n\\n    function aggregate(Call[] memory calls) public returns (uint256 blockNumber, bytes[] memory returnData) {\\n        blockNumber = block.number;\\n        returnData = new bytes[](calls.length);\\n        for(uint256 i = 0; i < calls.length; i++) {\\n            (bool success, bytes memory ret) = calls[i].target.call(calls[i].callData);\\n            require(success, \\\"Multicall aggregate: call failed\\\");\\n            returnData[i] = ret;\\n        }\\n    }\\n    function blockAndAggregate(Call[] memory calls) public returns (uint256 blockNumber, bytes32 blockHash, Result[] memory returnData) {\\n        (blockNumber, blockHash, returnData) = tryBlockAndAggregate(true, calls);\\n    }\\n    function getBlockHash(uint256 blockNumber) public view returns (bytes32 blockHash) {\\n        blockHash = blockhash(blockNumber);\\n    }\\n    function getBlockNumber() public view returns (uint256 blockNumber) {\\n        blockNumber = block.number;\\n    }\\n    function getCurrentBlockCoinbase() public view returns (address coinbase) {\\n        coinbase = block.coinbase;\\n    }\\n    function getCurrentBlockDifficulty() public view returns (uint256 difficulty) {\\n        difficulty = block.difficulty;\\n    }\\n    function getCurrentBlockGasLimit() public view returns (uint256 gaslimit) {\\n        gaslimit = block.gaslimit;\\n    }\\n    function getCurrentBlockTimestamp() public view returns (uint256 timestamp) {\\n        timestamp = block.timestamp;\\n    }\\n    function getEthBalance(address addr) public view returns (uint256 balance) {\\n        balance = addr.balance;\\n    }\\n    function getLastBlockHash() public view returns (bytes32 blockHash) {\\n        blockHash = blockhash(block.number - 1);\\n    }\\n    function tryAggregate(bool requireSuccess, Call[] memory calls) public returns (Result[] memory returnData) {\\n        returnData = new Result[](calls.length);\\n        for(uint256 i = 0; i < calls.length; i++) {\\n            (bool success, bytes memory ret) = calls[i].target.call(calls[i].callData);\\n\\n            if (requireSuccess) {\\n                require(success, \\\"Multicall2 aggregate: call failed\\\");\\n            }\\n\\n            returnData[i] = Result(success, ret);\\n        }\\n    }\\n    function tryBlockAndAggregate(bool requireSuccess, Call[] memory calls) public returns (uint256 blockNumber, bytes32 blockHash, Result[] memory returnData) {\\n        blockNumber = block.number;\\n        blockHash = blockhash(block.number);\\n        returnData = tryAggregate(requireSuccess, calls);\\n    }\\n}\",\"keccak256\":\"0x2a4124cb2b845bbddccdd443eef91d11edde470ce8af17b50df32aefc560273d\",\"license\":\"MIT\"}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b50610939806100206000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806372425d9d1161007157806372425d9d1461013d57806386d516e814610145578063a8b0574e1461014d578063bce38bd714610162578063c3077fa914610182578063ee82ac5e14610195576100b4565b80630f28c97d146100b9578063252dba42146100d757806327e86d6e146100f8578063399542e91461010057806342cbb15c146101225780634d2301cc1461012a575b600080fd5b6100c16101a8565b6040516100ce919061079d565b60405180910390f35b6100ea6100e5366004610620565b6101ac565b6040516100ce92919061081c565b6100c16102eb565b61011361010e36600461065b565b6102f4565b6040516100ce93929190610884565b6100c161030c565b6100c16101383660046105fe565b610310565b6100c161031d565b6100c1610321565b610155610325565b6040516100ce9190610776565b61017561017036600461065b565b610329565b6040516100ce919061078a565b610113610190366004610620565b61047f565b6100c16101a33660046106ad565b61049c565b4290565b8051439060609067ffffffffffffffff811180156101c957600080fd5b506040519080825280602002602001820160405280156101fd57816020015b60608152602001906001900390816101e85790505b50905060005b83518110156102e5576000606085838151811061021c57fe5b6020026020010151600001516001600160a01b031686848151811061023d57fe5b602002602001015160200151604051610256919061075a565b6000604051808303816000865af19150503d8060008114610293576040519150601f19603f3d011682016040523d82523d6000602084013e610298565b606091505b5091509150816102c35760405162461bcd60e51b81526004016102ba906107e7565b60405180910390fd5b808484815181106102d057fe5b60209081029190910101525050600101610203565b50915091565b60001943014090565b43804060606103038585610329565b90509250925092565b4390565b6001600160a01b03163190565b4490565b4590565b4190565b6060815167ffffffffffffffff8111801561034357600080fd5b5060405190808252806020026020018201604052801561037d57816020015b61036a6104a0565b8152602001906001900390816103625790505b50905060005b8251811015610478576000606084838151811061039c57fe5b6020026020010151600001516001600160a01b03168584815181106103bd57fe5b6020026020010151602001516040516103d6919061075a565b6000604051808303816000865af19150503d8060008114610413576040519150601f19603f3d011682016040523d82523d6000602084013e610418565b606091505b5091509150851561044057816104405760405162461bcd60e51b81526004016102ba906107a6565b604051806040016040528083151581526020018281525084848151811061046357fe5b60209081029190910101525050600101610383565b5092915050565b600080606061048f6001856102f4565b9196909550909350915050565b4090565b60408051808201909152600081526060602082015290565b80356001600160a01b03811681146104cf57600080fd5b92915050565b600082601f8301126104e5578081fd5b813567ffffffffffffffff808211156104fc578283fd5b602061050b81828502016108ac565b838152935080840185820160005b858110156105895781358801604080601f19838d0301121561053a57600080fd5b610543816108ac565b61054f8c8885016104b8565b815290820135908782111561056357600080fd5b6105718c8884860101610595565b81880152855250509183019190830190600101610519565b50505050505092915050565b600082601f8301126105a5578081fd5b813567ffffffffffffffff8111156105bb578182fd5b6105ce601f8201601f19166020016108ac565b91508082528360208285010111156105e557600080fd5b8060208401602084013760009082016020015292915050565b60006020828403121561060f578081fd5b61061983836104b8565b9392505050565b600060208284031215610631578081fd5b813567ffffffffffffffff811115610647578182fd5b610653848285016104d5565b949350505050565b6000806040838503121561066d578081fd5b8235801515811461067c578182fd5b9150602083013567ffffffffffffffff811115610697578182fd5b6106a3858286016104d5565b9150509250929050565b6000602082840312156106be578081fd5b5035919050565b6000815180845260208085018081965082840281019150828601855b858110156107215782840389528151805115158552850151604086860181905261070d8187018361072e565b9a87019a95505050908401906001016106e1565b5091979650505050505050565b600081518084526107468160208601602086016108d3565b601f01601f19169290920160200192915050565b6000825161076c8184602087016108d3565b9190910192915050565b6001600160a01b0391909116815260200190565b60006020825261061960208301846106c5565b90815260200190565b60208082526021908201527f4d756c746963616c6c32206167677265676174653a2063616c6c206661696c656040820152601960fa1b606082015260800190565b6020808252818101527f4d756c746963616c6c206167677265676174653a2063616c6c206661696c6564604082015260600190565b600060408201848352602060408185015281855180845260608601915060608382028701019350828701855b8281101561087657605f1988870301845261086486835161072e565b95509284019290840190600101610848565b509398975050505050505050565b6000848252836020830152606060408301526108a360608301846106c5565b95945050505050565b60405181810167ffffffffffffffff811182821017156108cb57600080fd5b604052919050565b60005b838110156108ee5781810151838201526020016108d6565b838111156108fd576000848401525b5050505056fea26469706673582212201009c8aa32d7f7d16fb6b75df2229fa7a9e269a502e095c20ae18f42bcb2d34b64736f6c634300060c0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100b45760003560e01c806372425d9d1161007157806372425d9d1461013d57806386d516e814610145578063a8b0574e1461014d578063bce38bd714610162578063c3077fa914610182578063ee82ac5e14610195576100b4565b80630f28c97d146100b9578063252dba42146100d757806327e86d6e146100f8578063399542e91461010057806342cbb15c146101225780634d2301cc1461012a575b600080fd5b6100c16101a8565b6040516100ce919061079d565b60405180910390f35b6100ea6100e5366004610620565b6101ac565b6040516100ce92919061081c565b6100c16102eb565b61011361010e36600461065b565b6102f4565b6040516100ce93929190610884565b6100c161030c565b6100c16101383660046105fe565b610310565b6100c161031d565b6100c1610321565b610155610325565b6040516100ce9190610776565b61017561017036600461065b565b610329565b6040516100ce919061078a565b610113610190366004610620565b61047f565b6100c16101a33660046106ad565b61049c565b4290565b8051439060609067ffffffffffffffff811180156101c957600080fd5b506040519080825280602002602001820160405280156101fd57816020015b60608152602001906001900390816101e85790505b50905060005b83518110156102e5576000606085838151811061021c57fe5b6020026020010151600001516001600160a01b031686848151811061023d57fe5b602002602001015160200151604051610256919061075a565b6000604051808303816000865af19150503d8060008114610293576040519150601f19603f3d011682016040523d82523d6000602084013e610298565b606091505b5091509150816102c35760405162461bcd60e51b81526004016102ba906107e7565b60405180910390fd5b808484815181106102d057fe5b60209081029190910101525050600101610203565b50915091565b60001943014090565b43804060606103038585610329565b90509250925092565b4390565b6001600160a01b03163190565b4490565b4590565b4190565b6060815167ffffffffffffffff8111801561034357600080fd5b5060405190808252806020026020018201604052801561037d57816020015b61036a6104a0565b8152602001906001900390816103625790505b50905060005b8251811015610478576000606084838151811061039c57fe5b6020026020010151600001516001600160a01b03168584815181106103bd57fe5b6020026020010151602001516040516103d6919061075a565b6000604051808303816000865af19150503d8060008114610413576040519150601f19603f3d011682016040523d82523d6000602084013e610418565b606091505b5091509150851561044057816104405760405162461bcd60e51b81526004016102ba906107a6565b604051806040016040528083151581526020018281525084848151811061046357fe5b60209081029190910101525050600101610383565b5092915050565b600080606061048f6001856102f4565b9196909550909350915050565b4090565b60408051808201909152600081526060602082015290565b80356001600160a01b03811681146104cf57600080fd5b92915050565b600082601f8301126104e5578081fd5b813567ffffffffffffffff808211156104fc578283fd5b602061050b81828502016108ac565b838152935080840185820160005b858110156105895781358801604080601f19838d0301121561053a57600080fd5b610543816108ac565b61054f8c8885016104b8565b815290820135908782111561056357600080fd5b6105718c8884860101610595565b81880152855250509183019190830190600101610519565b50505050505092915050565b600082601f8301126105a5578081fd5b813567ffffffffffffffff8111156105bb578182fd5b6105ce601f8201601f19166020016108ac565b91508082528360208285010111156105e557600080fd5b8060208401602084013760009082016020015292915050565b60006020828403121561060f578081fd5b61061983836104b8565b9392505050565b600060208284031215610631578081fd5b813567ffffffffffffffff811115610647578182fd5b610653848285016104d5565b949350505050565b6000806040838503121561066d578081fd5b8235801515811461067c578182fd5b9150602083013567ffffffffffffffff811115610697578182fd5b6106a3858286016104d5565b9150509250929050565b6000602082840312156106be578081fd5b5035919050565b6000815180845260208085018081965082840281019150828601855b858110156107215782840389528151805115158552850151604086860181905261070d8187018361072e565b9a87019a95505050908401906001016106e1565b5091979650505050505050565b600081518084526107468160208601602086016108d3565b601f01601f19169290920160200192915050565b6000825161076c8184602087016108d3565b9190910192915050565b6001600160a01b0391909116815260200190565b60006020825261061960208301846106c5565b90815260200190565b60208082526021908201527f4d756c746963616c6c32206167677265676174653a2063616c6c206661696c656040820152601960fa1b606082015260800190565b6020808252818101527f4d756c746963616c6c206167677265676174653a2063616c6c206661696c6564604082015260600190565b600060408201848352602060408185015281855180845260608601915060608382028701019350828701855b8281101561087657605f1988870301845261086486835161072e565b95509284019290840190600101610848565b509398975050505050505050565b6000848252836020830152606060408301526108a360608301846106c5565b95945050505050565b60405181810167ffffffffffffffff811182821017156108cb57600080fd5b604052919050565b60005b838110156108ee5781810151838201526020016108d6565b838111156108fd576000848401525b5050505056fea26469706673582212201009c8aa32d7f7d16fb6b75df2229fa7a9e269a502e095c20ae18f42bcb2d34b64736f6c634300060c0033",
  "devdoc": {
    "author": "Michael Elliot <mike@makerdao.com>Joshua Levine <joshua@makerdao.com>Nick Johnson <arachnid@notdot.net>",
    "kind": "dev",
    "methods": {},
    "title": "Multicall2 - Aggregate results from multiple read-only function calls",
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  },
  "storageLayout": {
    "storage": [],
    "types": null
  }
}