UNPKG

@dolomite-exchange/dolomite-margin

Version:

Ethereum Smart Contracts and TypeScript library used for the DolomiteMargin trading protocol

541 lines (540 loc) 473 kB
{ "contractName": "ArbitrumMultiCall", "abi": [ { "constant": false, "inputs": [ { "components": [ { "internalType": "address", "name": "target", "type": "address" }, { "internalType": "bytes", "name": "callData", "type": "bytes" } ], "internalType": "struct ArbitrumMultiCall.Call[]", "name": "calls", "type": "tuple[]" } ], "name": "aggregate", "outputs": [ { "internalType": "uint256", "name": "blockNumber", "type": "uint256" }, { "internalType": "bytes[]", "name": "returnData", "type": "bytes[]" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "address", "name": "addr", "type": "address" } ], "name": "getEthBalance", "outputs": [ { "internalType": "uint256", "name": "balance", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "uint256", "name": "blockNumber", "type": "uint256" } ], "name": "getBlockHash", "outputs": [ { "internalType": "bytes32", "name": "blockHash", "type": "bytes32" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "getLastBlockHash", "outputs": [ { "internalType": "bytes32", "name": "blockHash", "type": "bytes32" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "getCurrentBlockTimestamp", "outputs": [ { "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "getCurrentBlockDifficulty", "outputs": [ { "internalType": "uint256", "name": "difficulty", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "getCurrentBlockGasLimit", "outputs": [ { "internalType": "uint256", "name": "gaslimit", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "getCurrentBlockCoinbase", "outputs": [ { "internalType": "address", "name": "coinbase", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "getBlockNumber", "outputs": [ { "internalType": "uint256", "name": "blockNumber", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "getL1BlockNumber", "outputs": [ { "internalType": "uint256", "name": "l1BlockNumber", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" } ], "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct ArbitrumMultiCall.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"aggregate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"returnData\",\"type\":\"bytes[]\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"getBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCurrentBlockCoinbase\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCurrentBlockDifficulty\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"difficulty\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCurrentBlockGasLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"gaslimit\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCurrentBlockTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"getEthBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getL1BlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"l1BlockNumber\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getLastBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Michael Elliot <mike@makerdao.com>Joshua Levine <joshua@makerdao.com>Nick Johnson <arachnid@notdot.net>Corey Caplan <corey@dolomite.io>\",\"details\":\"This multi call contract is almost the same as the ordinary one, with minor adjustments for Arbitrum. See: https://developer.offchainlabs.com/docs/time_in_arbitrum#case-study-multicall for more information.\",\"methods\":{},\"title\":\"ArbitrumMultiCall - Aggregate results from multiple read-only function calls\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/utils/ArbitrumMultiCall.sol\":\"ArbitrumMultiCall\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/interfaces/IArbitrumSys.sol\":{\"keccak256\":\"0xa5be17c5867f4616d31f13a8974cd441b73e3e65afb1095a7e9626d0b136338b\",\"urls\":[\"bzz-raw://97c99abaace129d781227a525953efe055e0dce963943fb70daa98acbed3130e\",\"dweb:/ipfs/QmRvuJJYPCyGTYJG7AzureXR9WKPXsHAn6RtGZ8ZSmL5Y4\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/utils/ArbitrumMultiCall.sol\":{\"keccak256\":\"0x7ab79513fddd3fcae6949f0ef38329b88ce6ad726ceb281876c7ebcc63530c9f\",\"urls\":[\"bzz-raw://ae015f0ba857dbcff7457646e21d4d4f280fd2b19d342f956ac3cd7d4f413edb\",\"dweb:/ipfs/Qmdp59C5jPZPQwCUUXKx2HdonvcVFqsn7P1q2KhHtiAH3K\"]}},\"version\":1}", "bytecode": "0x608060405234801561001057600080fd5b50610dc7806100206000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806372425d9d11610076578063a8b0574e1161005b578063a8b0574e14610135578063b9b3efe91461014a578063ee82ac5e14610152576100be565b806372425d9d1461012557806386d516e81461012d576100be565b806327e86d6e116100a757806327e86d6e1461010257806342cbb15c1461010a5780634d2301cc14610112576100be565b80630f28c97d146100c3578063252dba42146100e1575b600080fd5b6100cb610165565b6040516100d89190610bf4565b60405180910390f35b6100f46100ef366004610913565b610169565b6040516100d8929190610c13565b6100cb6103e2565b6100cb61046c565b6100cb6101203660046108ed565b6104f2565b6100cb61050c565b6100cb610510565b61013d610514565b6040516100d89190610be6565b6100cb610518565b6100cb61016036600461097d565b61051c565b4290565b60006060606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b815260040160206040518083038186803b1580156101b457600080fd5b505afa1580156101c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506101ec919081019061099b565b9150825160405190808252806020026020018201604052801561022357816020015b606081526020019060019003908161020e5790505b50905060005b83518110156103dc576000606085838151811061024257fe5b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1686848151811061027057fe5b6020026020010151602001516040516102899190610b8a565b6000604051808303816000865af19150503d80600081146102c6576040519150601f19603f3d011682016040523d82523d6000602084013e6102cb565b606091505b5091509150816103ba5760448151101561037b5760606103018785815181106102f057fe5b602002602001015160000151610520565b9050806040516020016103149190610bc4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261037291600401610c02565b60405180910390fd5b60048101905060606103928785815181106102f057fe5b905080828060200190516103a99190810190610948565b604051602001610314929190610b96565b808484815181106103c757fe5b60209081029190910101525050600101610229565b50915091565b60006001606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561042d57600080fd5b505afa158015610441573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610465919081019061099b565b0340905090565b6000606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b815260040160206040518083038186803b1580156104b557600080fd5b505afa1580156104c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104ed919081019061099b565b905090565b73ffffffffffffffffffffffffffffffffffffffff163190565b4490565b4590565b4190565b4390565b4090565b604080518082018252601081527f303132333435363738396162636465660000000000000000000000000000000060208201528151602a808252606082810190945273ffffffffffffffffffffffffffffffffffffffff8516929184916020820181803883390190505090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106105ba57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061061757fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060005b601481101561075d578260048583600c016020811061066457fe5b1a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901c60f81c60ff168151811061069c57fe5b602001015160f81c60f81b8282600202600201815181106106b957fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350828482600c01602081106106f857fe5b825191901a600f1690811061070957fe5b602001015160f81c60f81b82826002026003018151811061072657fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600101610649565b50949350505050565b803561077181610d64565b92915050565b600082601f83011261078857600080fd5b813561079b61079682610c5a565b610c33565b81815260209384019390925082018360005b838110156107d957813586016107c38882610878565b84525060209283019291909101906001016107ad565b5050505092915050565b600082601f8301126107f457600080fd5b813561080261079682610c7b565b9150808252602083016020830185838301111561081e57600080fd5b610829838284610d00565b50505092915050565b600082601f83011261084357600080fd5b815161085161079682610c7b565b9150808252602083016020830185838301111561086d57600080fd5b610829838284610d0c565b60006040828403121561088a57600080fd5b6108946040610c33565b905060006108a28484610766565b825250602082013567ffffffffffffffff8111156108bf57600080fd5b6108cb848285016107e3565b60208301525092915050565b803561077181610d7b565b805161077181610d7b565b6000602082840312156108ff57600080fd5b600061090b8484610766565b949350505050565b60006020828403121561092557600080fd5b813567ffffffffffffffff81111561093c57600080fd5b61090b84828501610777565b60006020828403121561095a57600080fd5b815167ffffffffffffffff81111561097157600080fd5b61090b84828501610832565b60006020828403121561098f57600080fd5b600061090b84846108d7565b6000602082840312156109ad57600080fd5b600061090b84846108e2565b60006109c58383610a52565b9392505050565b6109d581610cd9565b82525050565b60006109e682610cc7565b6109f08185610ccb565b935083602082028501610a0285610cc1565b8060005b85811015610a3c5784840389528151610a1f85826109b9565b9450610a2a83610cc1565b60209a909a0199925050600101610a06565b5091979650505050505050565b6109d581610ce4565b6000610a5d82610cc7565b610a678185610ccb565b9350610a77818560208601610d0c565b610a8081610d3c565b9093019392505050565b6000610a9582610cc7565b610a9f8185610cd4565b9350610aaf818560208601610d0c565b9290920192915050565b6000610ac6602183610cd4565b7f4d756c746963616c6c3a3a6167677265676174653a207265766572742061742081527f3c00000000000000000000000000000000000000000000000000000000000000602082015260210192915050565b6000610b25600f83610cd4565b7f3e207769746820726561736f6e3a2000000000000000000000000000000000008152600f0192915050565b6000610b5e600183610cd4565b7f3e00000000000000000000000000000000000000000000000000000000000000815260010192915050565b60006109c58284610a8a565b6000610ba182610ab9565b9150610bad8285610a8a565b9150610bb882610b18565b915061090b8284610a8a565b6000610bcf82610ab9565b9150610bdb8284610a8a565b91506109c582610b51565b6020810161077182846109cc565b602081016107718284610a49565b602080825281016109c58184610a52565b60408101610c218285610a49565b818103602083015261090b81846109db565b60405181810167ffffffffffffffff81118282101715610c5257600080fd5b604052919050565b600067ffffffffffffffff821115610c7157600080fd5b5060209081020190565b600067ffffffffffffffff821115610c9257600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b60200190565b5190565b90815260200190565b919050565b600061077182610ce7565b90565b73ffffffffffffffffffffffffffffffffffffffff1690565b82818337506000910152565b60005b83811015610d27578181015183820152602001610d0f565b83811115610d36576000848401525b50505050565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b610d6d81610cd9565b8114610d7857600080fd5b50565b610d6d81610ce456fea365627a7a723158202c9d0229b2a566bd12c280d9e2f8a0f860c36e48caa30d85fd2a645e56f669336c6578706572696d656e74616cf564736f6c63430005100040", "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100be5760003560e01c806372425d9d11610076578063a8b0574e1161005b578063a8b0574e14610135578063b9b3efe91461014a578063ee82ac5e14610152576100be565b806372425d9d1461012557806386d516e81461012d576100be565b806327e86d6e116100a757806327e86d6e1461010257806342cbb15c1461010a5780634d2301cc14610112576100be565b80630f28c97d146100c3578063252dba42146100e1575b600080fd5b6100cb610165565b6040516100d89190610bf4565b60405180910390f35b6100f46100ef366004610913565b610169565b6040516100d8929190610c13565b6100cb6103e2565b6100cb61046c565b6100cb6101203660046108ed565b6104f2565b6100cb61050c565b6100cb610510565b61013d610514565b6040516100d89190610be6565b6100cb610518565b6100cb61016036600461097d565b61051c565b4290565b60006060606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b815260040160206040518083038186803b1580156101b457600080fd5b505afa1580156101c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506101ec919081019061099b565b9150825160405190808252806020026020018201604052801561022357816020015b606081526020019060019003908161020e5790505b50905060005b83518110156103dc576000606085838151811061024257fe5b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1686848151811061027057fe5b6020026020010151602001516040516102899190610b8a565b6000604051808303816000865af19150503d80600081146102c6576040519150601f19603f3d011682016040523d82523d6000602084013e6102cb565b606091505b5091509150816103ba5760448151101561037b5760606103018785815181106102f057fe5b602002602001015160000151610520565b9050806040516020016103149190610bc4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261037291600401610c02565b60405180910390fd5b60048101905060606103928785815181106102f057fe5b905080828060200190516103a99190810190610948565b604051602001610314929190610b96565b808484815181106103c757fe5b60209081029190910101525050600101610229565b50915091565b60006001606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561042d57600080fd5b505afa158015610441573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610465919081019061099b565b0340905090565b6000606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b815260040160206040518083038186803b1580156104b557600080fd5b505afa1580156104c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104ed919081019061099b565b905090565b73ffffffffffffffffffffffffffffffffffffffff163190565b4490565b4590565b4190565b4390565b4090565b604080518082018252601081527f303132333435363738396162636465660000000000000000000000000000000060208201528151602a808252606082810190945273ffffffffffffffffffffffffffffffffffffffff8516929184916020820181803883390190505090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106105ba57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061061757fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060005b601481101561075d578260048583600c016020811061066457fe5b1a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901c60f81c60ff168151811061069c57fe5b602001015160f81c60f81b8282600202600201815181106106b957fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350828482600c01602081106106f857fe5b825191901a600f1690811061070957fe5b602001015160f81c60f81b82826002026003018151811061072657fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600101610649565b50949350505050565b803561077181610d64565b92915050565b600082601f83011261078857600080fd5b813561079b61079682610c5a565b610c33565b81815260209384019390925082018360005b838110156107d957813586016107c38882610878565b84525060209283019291909101906001016107ad565b5050505092915050565b600082601f8301126107f457600080fd5b813561080261079682610c7b565b9150808252602083016020830185838301111561081e57600080fd5b610829838284610d00565b50505092915050565b600082601f83011261084357600080fd5b815161085161079682610c7b565b9150808252602083016020830185838301111561086d57600080fd5b610829838284610d0c565b60006040828403121561088a57600080fd5b6108946040610c33565b905060006108a28484610766565b825250602082013567ffffffffffffffff8111156108bf57600080fd5b6108cb848285016107e3565b60208301525092915050565b803561077181610d7b565b805161077181610d7b565b6000602082840312156108ff57600080fd5b600061090b8484610766565b949350505050565b60006020828403121561092557600080fd5b813567ffffffffffffffff81111561093c57600080fd5b61090b84828501610777565b60006020828403121561095a57600080fd5b815167ffffffffffffffff81111561097157600080fd5b61090b84828501610832565b60006020828403121561098f57600080fd5b600061090b84846108d7565b6000602082840312156109ad57600080fd5b600061090b84846108e2565b60006109c58383610a52565b9392505050565b6109d581610cd9565b82525050565b60006109e682610cc7565b6109f08185610ccb565b935083602082028501610a0285610cc1565b8060005b85811015610a3c5784840389528151610a1f85826109b9565b9450610a2a83610cc1565b60209a909a0199925050600101610a06565b5091979650505050505050565b6109d581610ce4565b6000610a5d82610cc7565b610a678185610ccb565b9350610a77818560208601610d0c565b610a8081610d3c565b9093019392505050565b6000610a9582610cc7565b610a9f8185610cd4565b9350610aaf818560208601610d0c565b9290920192915050565b6000610ac6602183610cd4565b7f4d756c746963616c6c3a3a6167677265676174653a207265766572742061742081527f3c00000000000000000000000000000000000000000000000000000000000000602082015260210192915050565b6000610b25600f83610cd4565b7f3e207769746820726561736f6e3a2000000000000000000000000000000000008152600f0192915050565b6000610b5e600183610cd4565b7f3e00000000000000000000000000000000000000000000000000000000000000815260010192915050565b60006109c58284610a8a565b6000610ba182610ab9565b9150610bad8285610a8a565b9150610bb882610b18565b915061090b8284610a8a565b6000610bcf82610ab9565b9150610bdb8284610a8a565b91506109c582610b51565b6020810161077182846109cc565b602081016107718284610a49565b602080825281016109c58184610a52565b60408101610c218285610a49565b818103602083015261090b81846109db565b60405181810167ffffffffffffffff81118282101715610c5257600080fd5b604052919050565b600067ffffffffffffffff821115610c7157600080fd5b5060209081020190565b600067ffffffffffffffff821115610c9257600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b60200190565b5190565b90815260200190565b919050565b600061077182610ce7565b90565b73ffffffffffffffffffffffffffffffffffffffff1690565b82818337506000910152565b60005b83811015610d27578181015183820152602001610d0f565b83811115610d36576000848401525b50505050565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b610d6d81610cd9565b8114610d7857600080fd5b50565b610d6d81610ce456fea365627a7a723158202c9d0229b2a566bd12c280d9e2f8a0f860c36e48caa30d85fd2a645e56f669336c6578706572696d656e74616cf564736f6c63430005100040", "sourceMap": "637:3310:60:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;637:3310:60;;;;;;;", "deployedSourceMap": "637:3310:60:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;637:3310:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2673:120;;;:::i;:::-;;;;;;;;;;;;;;;;744:1478;;;;;;;;;:::i;:::-;;;;;;;;;2512:155;;;:::i;3173:142::-;;;:::i;2252:114::-;;;;;;;;;:::i;2799:124::-;;;:::i;2929:116::-;;;:::i;3051:::-;;;:::i;:::-;;;;;;;;3321:117;;;:::i;2372:134::-;;;;;;;;;:::i;2673:120::-;2771:15;;2673:120::o;744:1478::-;800:19;821:25;893:3;872:41;;;:43;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;872:43:60;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;872:43:60;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;872:43:60;;;;;;;;;858:57;;950:5;:12;938:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;925:38;;978:9;973:1243;993:5;:12;989:1;:16;973:1243;;;1095:12;1109:19;1132:5;1138:1;1132:8;;;;;;;;;;;;;;:15;;;:20;;1153:5;1159:1;1153:8;;;;;;;;;;;;;;:17;;;1132:39;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;1094:77:60;;;;1190:7;1185:985;;1237:2;1221:6;:13;:18;1217:939;;;1263:26;1292:33;1309:5;1315:1;1309:8;;;;;;;;;;;;;;:15;;;1292:16;:33::i;:::-;1263:62;;1415:12;1361:72;;;;;;;;;;;;;22:32:-1;26:21;;;22:32;6:49;;1361:72:60;;;;1347:88;;;;;;;;;;;;;;;;;1217:939;1615:4;1607:6;1603:17;1593:27;;1663:26;1692:33;1709:5;1715:1;1709:8;;;;;;;1692:33;1663:62;;1934:12;2042:6;2031:28;;;;;;;;;;;;;;1815:274;;;;;;;;;;1217:939;2199:6;2183:10;2194:1;2183:13;;;;;;;;;;;;;;;;;:22;-1:-1:-1;;1007:3:60;;973:1243;;;;744:1478;;;:::o;2512:155::-;2561:17;2658:1;2633:3;2612:41;;;:43;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2612:43:60;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2612:43:60;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2612:43:60;;;;;;;;;:47;2602:58;2590:70;;2512:155;:::o;3173:142::-;3220:19;3286:3;3265:41;;;:43;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3265:43:60;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3265:43:60;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3265:43:60;;;;;;;;;3251:57;;3173:142;:::o;2252:114::-;2347:12;;;;2252:114::o;2799:124::-;2900:16;;2799:124::o;2929:116::-;3024:14;;2929:116::o;3051:::-;3146:14;;3051:116::o;3321:117::-;3419:12;;3321:117::o;2372:134::-;2477:22;;2372:134::o;3444:501::-;3588:37;;;;;;;;;;;;;;;;3658:13;;3668:2;3658:13;;;3510;3658;;;;;;3560:17;;;;3588:37;3510:13;;3658;;;21:6:-1;;104:10;3658:13:60;87:34:-1;135:17;;-1:-1;3658:13:60;3635:36;;3681:16;:7;3689:1;3681:10;;;;;;;;;;;:16;;;;;;;;;;;3707;:7;3715:1;3707:10;;;;;;;;;;;:16;;;;;;;;;;;3738:9;3733:174;3753:2;3749:1;:6;3733:174;;;3797:3;3825:1;3807:6;3814:1;3818:2;3814:6;3807:14;;;;;;;;;;:19;;;;;3801:26;;3797:31;;;;;;;;;;;;;;;;;;3776:7;3788:1;3792;3788:5;3784:1;:9;3776:18;;;;;;;;;;;:52;;;;;;;;;;;3863:3;3873:6;3880:1;3884:2;3880:6;3873:14;;;;;;;3863:33;;3873:14;;;3890:4;3867:28;;3863:33;;;;;;;;;;;;;;3842:7;3854:1;3858;3854:5;3850:1;:9;3842:18;;;;;;;;;;;:54;;;;;;;;;;-1:-1:-1;3757:3:60;;3733:174;;;-1:-1:-1;3930:7:60;3444:501;-1:-1:-1;;;;3444:501:60:o;5:130:-1:-;72:20;;97:33;72:20;97:33;;;57:78;;;;;182:735;;318:3;311:4;303:6;299:17;295:27;285:2;;336:1;333;326:12;285:2;373:6;360:20;395:99;410:83;486:6;410:83;;;395:99;;;522:21;;;566:4;554:17;;;;386:108;;-1:-1;579:14;;554:17;674:1;659:252;684:6;681:1;678:13;659:252;;;767:3;754:17;746:6;742:30;791:56;843:3;831:10;791:56;;;779:69;;-1:-1;871:4;862:14;;;;890;;;;;706:1;699:9;659:252;;;663:14;278:639;;;;;;;;926:432;;1023:3;1016:4;1008:6;1004:17;1000:27;990:2;;1041:1;1038;1031:12;990:2;1078:6;1065:20;1100:60;1115:44;1152:6;1115:44;;1100:60;1091:69;;1180:6;1173:5;1166:21;1216:4;1208:6;1204:17;1249:4;1242:5;1238:16;1284:3;1275:6;1270:3;1266:16;1263:25;1260:2;;;1301:1;1298;1291:12;1260:2;1311:41;1345:6;1340:3;1335;1311:41;;;983:375;;;;;;;;1367:436;;1476:3;1469:4;1461:6;1457:17;1453:27;1443:2;;1494:1;1491;1484:12;1443:2;1524:6;1518:13;1546:61;1561:45;1599:6;1561:45;;1546:61;1537:70;;1627:6;1620:5;1613:21;1663:4;1655:6;1651:17;1696:4;1689:5;1685:16;1731:3;1722:6;1717:3;1713:16;1710:25;1707:2;;;1748:1;1745;1738:12;1707:2;1758:39;1790:6;1785:3;1780;1758:39;;1847:558;;1955:4;1943:9;1938:3;1934:19;1930:30;1927:2;;;1973:1;1970;1963:12;1927:2;1991:20;2006:4;1991:20;;;1982:29;-1:-1;2063:1;2095:49;2140:3;2120:9;2095:49;;;2070:75;;-1:-1;2238:2;2223:18;;2210:32;2262:18;2251:30;;2248:2;;;2294:1;2291;2284:12;2248:2;2329:54;2379:3;2370:6;2359:9;2355:22;2329:54;;;2322:4;2315:5;2311:16;2304:80;2166:229;1921:484;;;;;2412:130;2479:20;;2504:33;2479:20;2504:33;;2549:134;2627:13;;2645:33;2627:13;2645:33;;2690:241;;2794:2;2782:9;2773:7;2769:23;2765:32;2762:2;;;2810:1;2807;2800:12;2762:2;2845:1;2862:53;2907:7;2887:9;2862:53;;;2852:63;2756:175;-1:-1;;;;2756:175;2938:415;;3086:2;3074:9;3065:7;3061:23;3057:32;3054:2;;;3102:1;3099;3092:12;3054:2;3137:31;;3188:18;3177:30;;3174:2;;;3220:1;3217;3210:12;3174:2;3240:97;3329:7;3320:6;3309:9;3305:22;3240:97;;3360:354;;3481:2;3469:9;3460:7;3456:23;3452:32;3449:2;;;3497:1;3494;3487:12;3449:2;3532:24;;3576:18;3565:30;;3562:2;;;3608:1;3605;3598:12;3562:2;3628:70;3690:7;3681:6;3670:9;3666:22;3628:70;;3721:241;;3825:2;3813:9;3804:7;3800:23;3796:32;3793:2;;;3841:1;3838;3831:12;3793:2;3876:1;3893:53;3938:7;3918:9;3893:53;;3969:263;;4084:2;4072:9;4063:7;4059:23;4055:32;4052:2;;;4100:1;4097;4090:12;4052:2;4135:1;4152:64;4208:7;4188:9;4152:64;;4240:177;;4351:60;4407:3;4399:6;4351:60;;;4337:74;4330:87;-1:-1;;;4330:87;4425:113;4508:24;4526:5;4508:24;;;4503:3;4496:37;4490:48;;;4572:888;;4727:59;4780:5;4727:59;;;4799:91;4883:6;4878:3;4799:91;;;4792:98;;4913:3;4955:4;4947:6;4943:17;4938:3;4934:27;4982:61;5037:5;4982:61;;;5063:7;5091:1;5076:345;5101:6;5098:1;5095:13;5076:345;;;5163:9;5157:4;5153:20;5148:3;5141:33;5208:6;5202:13;5230:74;5299:4;5284:13;5230:74;;;5222:82;;5321:65;5379:6;5321:65;;;5409:4;5400:14;;;;;5311:75;-1:-1;;5123:1;5116:9;5076:345;;;-1:-1;5434:4;;4706:754;-1:-1;;;;;;;4706:754;5468:113;5551:24;5569:5;5551:24;;5588:315;;5684:34;5712:5;5684:34;;;5730:60;5783:6;5778:3;5730:60;;;5723:67;;5795:52;5840:6;5835:3;5828:4;5821:5;5817:16;5795:52;;;5868:29;5890:6;5868:29;;;5859:39;;;;5664:239;-1:-1;;;5664:239;5910:348;;6034:34;6062:5;6034:34;;;6080:88;6161:6;6156:3;6080:88;;;6073:95;;6173:52;6218:6;6213:3;6206:4;6199:5;6195:16;6173:52;;;6237:16;;;;;6014:244;-1:-1;;6014:244;7346:406;;7524:85;7606:2;7601:3;7524:85;;;7642:34;7622:55;;7711:3;7706:2;7697:12;;7690:25;7743:2;7734:12;;7510:242;-1:-1;;7510:242;7761:351;;7939:85;8021:2;8016:3;7939:85;;;8057:17;8037:38;;8103:2;8094:12;;7925:187;-1:-1;;7925:187;8121:335;;8299:84;8381:1;8376:3;8299:84;;;8416:3;8396:24;;8448:1;8439:11;;8285:171;-1:-1;;8285:171;8584:254;;8724:89;8809:3;8800:6;8724:89;;8845:953;;9237:148;9381:3;9237:148;;;9230:155;;9403:95;9494:3;9485:6;9403:95;;;9396:102;;9516:148;9660:3;9516:148;;;9509:155;;9682:91;9769:3;9760:6;9682:91;;9805:800;;10153:148;10297:3;10153:148;;;10146:155;;10319:95;10410:3;10401:6;10319:95;;;10312:102;;10432:148;10576:3;10432:148;;10612:213;10730:2;10715:18;;10744:71;10719:9;10788:6;10744:71;;10832:213;10950:2;10935:18;;10964:71;10939:9;11008:6;10964:71;;11052:301;11190:2;11204:47;;;11175:18;;11265:78;11175:18;11329:6;11265:78;;11580:492;11786:2;11771:18;;11800:71;11775:9;11844:6;11800:71;;;11919:9;11913:4;11909:20;11904:2;11893:9;11889:18;11882:48;11944:118;12057:4;12048:6;11944:118;;12079:256;12141:2;12135:9;12167:17;;;12242:18;12227:34;;12263:22;;;12224:62;12221:2;;;12299:1;12296;12289:12;12221:2;12315;12308:22;12119:216;;-1:-1;12119:216;12342:323;;12520:18;12512:6;12509:30;12506:2;;;12552:1;12549;12542:12;12506:2;-1:-1;12587:4;12575:17;;;12640:15;;12443:222;12672:317;;12811:18;12803:6;12800:30;12797:2;;;12843:1;12840;12833:12;12797:2;-1:-1;12974:4;12910;12887:17;;;;12906:9;12883:33;12964:15;;12734:255;13321:156;13450:4;13441:14;;13398:79;13484:142;13592:12;;13563:63;14132:183;14255:19;;;14304:4;14295:14;;14248:67;14485:144;14620:3;14598:31;-1:-1;14598:31;14963:91;;15025:24;15043:5;15025:24;;15061:72;15123:5;15106:27;15140:121;15213:42;15202:54;;15185:76;15348:145;15429:6;15424:3;15419;15406:30;-1:-1;15485:1;15467:16;;15460:27;15399:94;15502:268;15567:1;15574:101;15588:6;15585:1;15582:13;15574:101;;;15655:11;;;15649:18;15636:11;;;15629:39;15610:2;15603:10;15574:101;;;15690:6;15687:1;15684:13;15681:2;;;15755:1;15746:6;15741:3;15737:16;15730:27;15681:2;15551:219;;;;;15778:97;15866:2;15846:14;15862:7;15842:28;;15826:49;15883:117;15952:24;15970:5;15952:24;;;15945:5;15942:35;15932:2;;15991:1;15988;15981:12;15932:2;15926:74;;16007:117;16076:24;16094:5;16076:24;", "source": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.5.0;\npragma experimental ABIEncoderV2;\n\nimport \"../interfaces/IArbitrumSys.sol\";\n\n\n/**\n * @title ArbitrumMultiCall - 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 * @author Corey Caplan <corey@dolomite.io>\n * @dev This multi call contract is almost the same as the ordinary one, with minor adjustments for Arbitrum. See:\n * https://developer.offchainlabs.com/docs/time_in_arbitrum#case-study-multicall for more information.\n */\ncontract ArbitrumMultiCall {\n\n struct Call {\n address target;\n bytes callData;\n }\n\n function aggregate(Call[] memory calls) public returns (uint256 blockNumber, bytes[] memory returnData) {\n blockNumber = IArbitrumSys(address(100)).arbBlockNumber();\n returnData = new bytes[](calls.length);\n for (uint256 i; i < calls.length; ++i) {\n // solium-disable-next-line security/no-low-level-calls\n (bool success, bytes memory result) = calls[i].target.call(calls[i].callData);\n if (!success) {\n if (result.length < 68) {\n string memory targetString = _addressToString(calls[i].target);\n revert(string(abi.encodePacked(\"Multicall::aggregate: revert at <\", targetString, \">\")));\n } else {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n result := add(result, 0x04)\n }\n string memory targetString = _addressToString(calls[i].target);\n revert(\n string(\n abi.encodePacked(\n \"Multicall::aggregate: revert at <\",\n targetString,\n \"> with reason: \",\n abi.decode(result, (string))\n )\n )\n );\n }\n }\n returnData[i] = result;\n }\n }\n\n // Helper functions\n function getEthBalance(address addr) public view returns (uint256 balance) {\n balance = addr.balance;\n }\n\n function getBlockHash(uint256 blockNumber) public view returns (bytes32 blockHash) {\n blockHash = blockhash(blockNumber);\n }\n\n function getLastBlockHash() public view returns (bytes32 blockHash) {\n blockHash = blockhash(IArbitrumSys(address(100)).arbBlockNumber() - 1);\n }\n\n function getCurrentBlockTimestamp() public view returns (uint256 timestamp) {\n timestamp = block.timestamp;\n }\n\n function getCurrentBlockDifficulty() public view returns (uint256 difficulty) {\n difficulty = block.difficulty;\n }\n\n function getCurrentBlockGasLimit() public view returns (uint256 gaslimit) {\n gaslimit = block.gaslimit;\n }\n\n function getCurrentBlockCoinbase() public view returns (address coinbase) {\n coinbase = block.coinbase;\n }\n\n function getBlockNumber() public view returns (uint256 blockNumber) {\n blockNumber = IArbitrumSys(address(100)).arbBlockNumber();\n }\n\n function getL1BlockNumber() public view returns (uint256 l1BlockNumber) {\n l1BlockNumber = block.number;\n }\n\n function _addressToString(address _address) internal pure returns(string memory) {\n bytes32 _bytes = bytes32(uint256(_address));\n bytes memory HEX = \"0123456789abcdef\";\n bytes memory _string = new bytes(42);\n _string[0] = \"0\";\n _string[1] = \"x\";\n for (uint256 i; i < 20; ++i) {\n _string[2 + i * 2] = HEX[uint8(_bytes[i + 12] >> 4)];\n _string[3 + i * 2] = HEX[uint8(_bytes[i + 12] & 0x0f)];\n }\n return string(_string);\n }\n}\n", "sourcePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/utils/ArbitrumMultiCall.sol", "ast": { "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/utils/ArbitrumMultiCall.sol", "exportedSymbols": { "ArbitrumMultiCall": [ 16322 ] }, "id": 16323, "nodeType": "SourceUnit", "nodes": [ { "id": 15980, "literals": [ "solidity", ">=", "0.5", ".0" ], "nodeType": "PragmaDirective", "src": "33:24:60" }, { "id": 15981, "literals": [ "experimental", "ABIEncoderV2" ], "nodeType": "PragmaDirective", "src": "58:33:60" }, { "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/interfaces/IArbitrumSys.sol", "file": "../interfaces/IArbitrumSys.sol", "id": 15982, "nodeType": "ImportDirective", "scope": 16323, "sourceUnit": 3983, "src": "93:40:60", "symbolAliases": [], "unitAlias": "" }, { "baseContracts": [], "contractDependencies": [], "contractKind": "contract", "documentation": "@title ArbitrumMultiCall - 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@author Corey Caplan <corey@dolomite.io>\n@dev This multi call contract is almost the same as the ordinary one, with minor adjustments for Arbitrum. See:\n https://developer.offchainlabs.com/docs/time_in_arbitrum#case-study-multicall for more information.", "fullyImplemented": true, "id": 16322, "linearizedBaseContracts": [ 16322 ], "name": "ArbitrumMultiCall", "nodeType": "ContractDefinition", "nodes": [ { "canonicalName": "ArbitrumMultiCall.Call", "id": 15987, "members": [ { "constant": false, "id": 15984, "name": "target", "nodeType": "VariableDeclaration", "scope": 15987, "src": "693:14:60", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 15983, "name": "address", "nodeType": "ElementaryTypeName", "src": "693:7:60", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 15986, "name": "callData", "nodeType": "VariableDeclaration", "scope": 15987, "src": "717:14:60", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" }, "typeName": { "id": 15985, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "717:5:60", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "value": null, "visibility": "internal" } ], "name": "Call", "nodeType": "StructDefinition", "scope": 16322, "src": "671:67:60", "visibility": "public" }, { "body": { "id": 16108, "nodeType": "Block", "src": "848:1374:60", "statements": [ { "expression": { "argumentTypes": null, "id": 16006, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 15998, "name": "blockNumber", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 15993, "src": "858:11:60", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "313030", "id": 16001, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "893:3:60", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_100_by_1", "typeString": "int_const 100" }, "value": "100" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_100_by_1", "typeString": "int_const 100" } ], "id": 16000, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "885:7:60", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 16002, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "885:12:60", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "id": 15999, "name": "IArbitrumSys", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3982, "src": "872:12:60", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IArbitrumSys_$3982_$", "typeString": "type(contract IArbitrumSys)" } }, "id": 16003, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "872:26:60", "typeDescriptions": { "typeIdentifier": "t_contract$_IArbitrumSys_$3982", "typeString": "contract IArbitrumSys" } }, "id": 16004, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "arbBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 3981, "src": "872:41:60", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$", "typeString": "function () view external returns (uint256)" } }, "id": 16005, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "872:43:60", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "858:57:60", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 16007, "nodeType": "ExpressionStatement", "src": "858:57:60" }, { "expression": { "argumentTypes": null, "id": 16015, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 16008, "name": "returnData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 15996, "src": "925:10:60", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", "typeString": "bytes memory[] memory" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 16012, "name": "calls", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 15990, "src": "950:5:60", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Call_$15987_memory_$dyn_memory_ptr", "typeString": "struct ArbitrumMultiCall.Call memory[] memory" } }, "id": 16013, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "950:12:60", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }