From 9db245b81c8f0c65e51c161c3f546171641bf2d4 Mon Sep 17 00:00:00 2001 From: girazoki Date: Fri, 5 Nov 2021 18:43:34 +0100 Subject: [PATCH 1/3] Fix approval assets bug plus ts tests (#963) * pallet-assets fixing error matching * Add erc20 instance contract * TS tests with flag to true * More typescript tests * prettier * EditorConfig * Modify integration tests --- precompiles/assets-erc20/src/lib.rs | 33 +- precompiles/assets-erc20/src/tests.rs | 2 +- runtime/moonbase/src/lib.rs | 1 + runtime/moonbase/tests/integration_test.rs | 4 +- tests/contracts/compiled/ERC20Instance.json | 10269 ++++++++++++++++++ tests/contracts/sources.ts | 187 + tests/tests/test-precompile-assets-erc20.ts | 410 + 7 files changed, 10884 insertions(+), 22 deletions(-) create mode 100644 tests/contracts/compiled/ERC20Instance.json create mode 100644 tests/tests/test-precompile-assets-erc20.ts diff --git a/precompiles/assets-erc20/src/lib.rs b/precompiles/assets-erc20/src/lib.rs index 5ade07bffe..04447b6c4b 100644 --- a/precompiles/assets-erc20/src/lib.rs +++ b/precompiles/assets-erc20/src/lib.rs @@ -276,7 +276,6 @@ where context: &Context, ) -> EvmResult { let mut gasometer = Gasometer::new(target_gas); - gasometer.record_cost(RuntimeHelper::::db_write_gas_cost())?; gasometer.record_log_costs_manual(3, 32)?; // Parse input. @@ -291,40 +290,38 @@ where Runtime::account_to_asset_id(execution_address) .ok_or(error("non-assetId address"))?; - let caller: Runtime::AccountId = - Runtime::AddressMapping::into_account_id(context.caller); + let origin = Runtime::AddressMapping::into_account_id(context.caller); + let spender: Runtime::AccountId = Runtime::AddressMapping::into_account_id(spender); // Dispatch call (if enough gas). // We first cancel any existing approvals // Since we cannot check storage, we need to execute this call without knowing whether // another approval exists already. - // But we know that if no approval exists we should get "Unknown" // Allowance() should be checked instead of doing this Result matching let used_gas = match RuntimeHelper::::try_dispatch( - <::Call as Dispatchable>::Origin::root(), - pallet_assets::Call::::force_cancel_approval { + Some(origin.clone()).into(), + pallet_assets::Call::::cancel_approval { id: asset_id, - owner: Runtime::Lookup::unlookup(caller), delegate: Runtime::Lookup::unlookup(spender.clone()), }, gasometer.remaining_gas()?, ) { Ok(gas_used) => Ok(gas_used), - Err(ExitError::Other(e)) => { - // One DB read for checking the approval did not exist - if e.contains("Unknown") { - Ok(RuntimeHelper::::db_read_gas_cost()) - } else { - Err(ExitError::Other(e)) - } - } + // ExitError::Other is only returned if the dispatchable fails with an error + // We cannot format the error in wasm + // In our case, we know that if cancel_approval fails approve_transfer will also + // fail in all cases except the one we are interested on: that it does not exist + // a previous approval. In this case we still want to continue, so it is safe + // to do this + // TODO: Once 0.9.12 is here, we should be able to only call cance_approval if + // such approval exists. + Err(ExitError::Other(_e)) => Ok(2 * RuntimeHelper::::db_read_gas_cost()), + // Any other error can be returned Err(e) => Err(e), }?; gasometer.record_cost(used_gas)?; - let origin = Runtime::AddressMapping::into_account_id(context.caller); - // Dispatch call (if enough gas). let used_gas = RuntimeHelper::::try_dispatch( Some(origin).into(), @@ -413,8 +410,6 @@ where context: &Context, ) -> EvmResult { let mut gasometer = Gasometer::new(target_gas); - gasometer.record_cost(RuntimeHelper::::db_read_gas_cost())?; - gasometer.record_cost(RuntimeHelper::::db_write_gas_cost())?; gasometer.record_log_costs_manual(3, 32)?; // Parse input. diff --git a/precompiles/assets-erc20/src/tests.rs b/precompiles/assets-erc20/src/tests.rs index 7a16702632..98c25996d1 100644 --- a/precompiles/assets-erc20/src/tests.rs +++ b/precompiles/assets-erc20/src/tests.rs @@ -727,7 +727,7 @@ fn transfer_from_non_incremental_approval() { Some(Ok(PrecompileOutput { exit_status: ExitSucceed::Returned, output: Default::default(), - cost: 115329756u64, + cost: 114357756u64, logs: LogsBuilder::new(Account::AssetId(0u128).into()) .log3( SELECTOR_LOG_APPROVAL, diff --git a/runtime/moonbase/src/lib.rs b/runtime/moonbase/src/lib.rs index bd8fa74a28..f38682ae4e 100644 --- a/runtime/moonbase/src/lib.rs +++ b/runtime/moonbase/src/lib.rs @@ -1382,6 +1382,7 @@ impl Contains for NormalFilter { pallet_assets::Call::transfer_keep_alive { .. } => true, pallet_assets::Call::approve_transfer { .. } => true, pallet_assets::Call::transfer_approved { .. } => true, + pallet_assets::Call::cancel_approval { .. } => true, _ => false, }, _ => true, diff --git a/runtime/moonbase/tests/integration_test.rs b/runtime/moonbase/tests/integration_test.rs index 7b64a0b471..0e97633bae 100644 --- a/runtime/moonbase/tests/integration_test.rs +++ b/runtime/moonbase/tests/integration_test.rs @@ -1228,7 +1228,7 @@ fn asset_erc20_precompiles_approve() { let expected_result = Some(Ok(PrecompileOutput { exit_status: ExitSucceed::Returned, output: Default::default(), - cost: 19035u64, + cost: 16035u64, logs: LogsBuilder::new(asset_precompile_address) .log3( SELECTOR_LOG_APPROVAL, @@ -1261,7 +1261,7 @@ fn asset_erc20_precompiles_approve() { let expected_result = Some(Ok(PrecompileOutput { exit_status: ExitSucceed::Returned, output: Default::default(), - cost: 36042u64, + cost: 31042u64, logs: LogsBuilder::new(asset_precompile_address) .log3( SELECTOR_LOG_TRANSFER, diff --git a/tests/contracts/compiled/ERC20Instance.json b/tests/contracts/compiled/ERC20Instance.json new file mode 100644 index 0000000000..3c19689e8a --- /dev/null +++ b/tests/contracts/compiled/ERC20Instance.json @@ -0,0 +1,10269 @@ +{ + "byteCode": "0x60806040526108026000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801561005257600080fd5b50610a03806100626000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806370a082311161005b57806370a0823114610100578063785e9e8614610130578063a9059cbb1461014e578063dd62ed3e1461017e5761007d565b8063095ea7b31461008257806318160ddd146100b257806323b872dd146100d0575b600080fd5b61009c600480360381019061009791906106a5565b6101ae565b6040516100a99190610700565b60405180910390f35b6100ba610266565b6040516100c7919061072a565b60405180910390f35b6100ea60048036038101906100e59190610745565b61030c565b6040516100f79190610700565b60405180910390f35b61011a60048036038101906101159190610798565b6103c7565b604051610127919061072a565b60405180910390f35b61013861047a565b6040516101459190610824565b60405180910390f35b610168600480360381019061016391906106a5565b61049e565b6040516101759190610700565b60405180910390f35b6101986004803603810190610193919061083f565b610556565b6040516101a5919061072a565b60405180910390f35b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b815260040161020c92919061088e565b602060405180830381600087803b15801561022657600080fd5b505af115801561023a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061025e91906108e3565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102cf57600080fd5b505afa1580156102e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103079190610925565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd8585856040518463ffffffff1660e01b815260040161036c93929190610952565b602060405180830381600087803b15801561038657600080fd5b505af115801561039a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103be91906108e3565b90509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b81526004016104239190610989565b60206040518083038186803b15801561043b57600080fd5b505afa15801561044f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104739190610925565b9050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b81526004016104fc92919061088e565b602060405180830381600087803b15801561051657600080fd5b505af115801561052a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054e91906108e3565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e84846040518363ffffffff1660e01b81526004016105b49291906109a4565b60206040518083038186803b1580156105cc57600080fd5b505afa1580156105e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106049190610925565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061063c82610611565b9050919050565b61064c81610631565b811461065757600080fd5b50565b60008135905061066981610643565b92915050565b6000819050919050565b6106828161066f565b811461068d57600080fd5b50565b60008135905061069f81610679565b92915050565b600080604083850312156106bc576106bb61060c565b5b60006106ca8582860161065a565b92505060206106db85828601610690565b9150509250929050565b60008115159050919050565b6106fa816106e5565b82525050565b600060208201905061071560008301846106f1565b92915050565b6107248161066f565b82525050565b600060208201905061073f600083018461071b565b92915050565b60008060006060848603121561075e5761075d61060c565b5b600061076c8682870161065a565b935050602061077d8682870161065a565b925050604061078e86828701610690565b9150509250925092565b6000602082840312156107ae576107ad61060c565b5b60006107bc8482850161065a565b91505092915050565b6000819050919050565b60006107ea6107e56107e084610611565b6107c5565b610611565b9050919050565b60006107fc826107cf565b9050919050565b600061080e826107f1565b9050919050565b61081e81610803565b82525050565b60006020820190506108396000830184610815565b92915050565b600080604083850312156108565761085561060c565b5b60006108648582860161065a565b92505060206108758582860161065a565b9150509250929050565b61088881610631565b82525050565b60006040820190506108a3600083018561087f565b6108b0602083018461071b565b9392505050565b6108c0816106e5565b81146108cb57600080fd5b50565b6000815190506108dd816108b7565b92915050565b6000602082840312156108f9576108f861060c565b5b6000610907848285016108ce565b91505092915050565b60008151905061091f81610679565b92915050565b60006020828403121561093b5761093a61060c565b5b600061094984828501610910565b91505092915050565b6000606082019050610967600083018661087f565b610974602083018561087f565b610981604083018461071b565b949350505050565b600060208201905061099e600083018461087f565b92915050565b60006040820190506109b9600083018561087f565b6109c6602083018461087f565b939250505056fea264697066735822122004515cd8a6be26b5f970dbad408f3450176de6bafe2c9640b5544682d4c27bba64736f6c63430008090033", + "contract": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { "internalType": "address", "name": "owner", "type": "address" }, + { "internalType": "address", "name": "spender", "type": "address" } + ], + "name": "allowance", + "outputs": [ + { "internalType": "uint256", "name": "", "type": "uint256" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "spender", "type": "address" }, + { "internalType": "uint256", "name": "value", "type": "uint256" } + ], + "name": "approve", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "who", "type": "address" } + ], + "name": "balanceOf", + "outputs": [ + { "internalType": "uint256", "name": "", "type": "uint256" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "erc20", + "outputs": [ + { "internalType": "contract IERC20", "name": "", "type": "address" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { "internalType": "uint256", "name": "", "type": "uint256" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "value", "type": "uint256" } + ], + "name": "transfer", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "from", "type": "address" }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "value", "type": "uint256" } + ], + "name": "transferFrom", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": { + "allowance(address,address)": { + "details": "Function to check the amount of tokens that an owner allowed to a spender. Selector: dd62ed3e", + "params": { + "owner": "address The address which owns the funds.", + "spender": "address The address which will spend the funds." + }, + "returns": { + "_0": "A uint256 specifying the amount of tokens still available for the spender." + } + }, + "approve(address,uint256)": { + "details": "Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Selector: 095ea7b3", + "params": { + "spender": "The address which will spend the funds.", + "value": "The amount of tokens to be spent." + } + }, + "balanceOf(address)": { + "details": "Gets the balance of the specified address. Selector: 70a08231", + "params": { "who": "The address to query the balance of." }, + "returns": { + "_0": "An uint256 representing the amount owned by the passed address." + } + }, + "totalSupply()": { + "details": "Total number of tokens in existence Selector: 18160ddd" + }, + "transfer(address,uint256)": { + "details": "Transfer token for a specified address Selector: a9059cbb", + "params": { + "to": "The address to transfer to.", + "value": "The amount to be transferred." + } + }, + "transferFrom(address,address,uint256)": { + "details": "Transfer tokens from one address to another Selector: 23b872dd", + "params": { + "from": "address The address which you want to send tokens from", + "to": "address The address which you want to transfer to", + "value": "uint256 the amount of tokens to be transferred" + } + } + }, + "version": 1 + }, + "evm": { + "assembly": " /* \"main.sol\":3476:4831 contract ERC20Instance is IERC20 {... */\n mstore(0x40, 0x80)\n /* \"main.sol\":3606:3648 0x0000000000000000000000000000000000000802 */\n 0x0802\n /* \"main.sol\":3577:3649 IERC20 public erc20 = IERC20(0x0000000000000000000000000000000000000802) */\n 0x00\n dup1\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xffffffffffffffffffffffffffffffffffffffff\n mul\n not\n and\n swap1\n dup4\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n mul\n or\n swap1\n sstore\n pop\n /* \"main.sol\":3476:4831 contract ERC20Instance is IERC20 {... */\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\ntag_1:\n pop\n dataSize(sub_0)\n dup1\n dataOffset(sub_0)\n 0x00\n codecopy\n 0x00\n return\nstop\n\nsub_0: assembly {\n /* \"main.sol\":3476:4831 contract ERC20Instance is IERC20 {... */\n mstore(0x40, 0x80)\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\n tag_1:\n pop\n jumpi(tag_2, lt(calldatasize, 0x04))\n shr(0xe0, calldataload(0x00))\n dup1\n 0x70a08231\n gt\n tag_10\n jumpi\n dup1\n 0x70a08231\n eq\n tag_6\n jumpi\n dup1\n 0x785e9e86\n eq\n tag_7\n jumpi\n dup1\n 0xa9059cbb\n eq\n tag_8\n jumpi\n dup1\n 0xdd62ed3e\n eq\n tag_9\n jumpi\n jump(tag_2)\n tag_10:\n dup1\n 0x095ea7b3\n eq\n tag_3\n jumpi\n dup1\n 0x18160ddd\n eq\n tag_4\n jumpi\n dup1\n 0x23b872dd\n eq\n tag_5\n jumpi\n tag_2:\n 0x00\n dup1\n revert\n /* \"main.sol\":4475:4627 function approve(address spender, uint256 value) override external returns (bool) {... */\n tag_3:\n tag_11\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_12\n swap2\n swap1\n tag_13\n jump\t// in\n tag_12:\n tag_14\n jump\t// in\n tag_11:\n mload(0x40)\n tag_15\n swap2\n swap1\n tag_16\n jump\t// in\n tag_15:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"main.sol\":3664:3866 function totalSupply() override external view returns (uint256){... */\n tag_4:\n tag_17\n tag_18\n jump\t// in\n tag_17:\n mload(0x40)\n tag_19\n swap2\n swap1\n tag_20\n jump\t// in\n tag_19:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"main.sol\":4653:4825 function transferFrom(address from, address to, uint256 value) override external returns (bool) {... */\n tag_5:\n tag_21\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_22\n swap2\n swap1\n tag_23\n jump\t// in\n tag_22:\n tag_24\n jump\t// in\n tag_21:\n mload(0x40)\n tag_25\n swap2\n swap1\n tag_16\n jump\t// in\n tag_25:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"main.sol\":3892:4104 function balanceOf(address who) override external view returns (uint256){... */\n tag_6:\n tag_26\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_27\n swap2\n swap1\n tag_28\n jump\t// in\n tag_27:\n tag_29\n jump\t// in\n tag_26:\n mload(0x40)\n tag_30\n swap2\n swap1\n tag_20\n jump\t// in\n tag_30:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"main.sol\":3577:3649 IERC20 public erc20 = IERC20(0x0000000000000000000000000000000000000802) */\n tag_7:\n tag_31\n tag_32\n jump\t// in\n tag_31:\n mload(0x40)\n tag_33\n swap2\n swap1\n tag_34\n jump\t// in\n tag_33:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"main.sol\":4306:4449 function transfer(address to, uint256 value) override external returns (bool) {... */\n tag_8:\n tag_35\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_36\n swap2\n swap1\n tag_13\n jump\t// in\n tag_36:\n tag_37\n jump\t// in\n tag_35:\n mload(0x40)\n tag_38\n swap2\n swap1\n tag_16\n jump\t// in\n tag_38:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"main.sol\":4130:4292 function allowance(address owner, address spender) override external view returns (uint256){... */\n tag_9:\n tag_39\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_40\n swap2\n swap1\n tag_41\n jump\t// in\n tag_40:\n tag_42\n jump\t// in\n tag_39:\n mload(0x40)\n tag_43\n swap2\n swap1\n tag_20\n jump\t// in\n tag_43:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"main.sol\":4475:4627 function approve(address spender, uint256 value) override external returns (bool) {... */\n tag_14:\n /* \"main.sol\":4551:4555 bool */\n 0x00\n /* \"main.sol\":4582:4587 erc20 */\n dup1\n 0x00\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"main.sol\":4582:4596 erc20.transfer */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xa9059cbb\n /* \"main.sol\":4597:4604 spender */\n dup5\n /* \"main.sol\":4606:4611 value */\n dup5\n /* \"main.sol\":4582:4612 erc20.transfer(spender, value) */\n mload(0x40)\n dup4\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n tag_45\n swap3\n swap2\n swap1\n tag_46\n jump\t// in\n tag_45:\n 0x20\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n 0x00\n dup8\n dup1\n extcodesize\n iszero\n dup1\n iszero\n tag_47\n jumpi\n 0x00\n dup1\n revert\n tag_47:\n pop\n gas\n call\n iszero\n dup1\n iszero\n tag_49\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_49:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_50\n swap2\n swap1\n tag_51\n jump\t// in\n tag_50:\n /* \"main.sol\":4575:4612 return erc20.transfer(spender, value) */\n swap1\n pop\n /* \"main.sol\":4475:4627 function approve(address spender, uint256 value) override external returns (bool) {... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"main.sol\":3664:3866 function totalSupply() override external view returns (uint256){... */\n tag_18:\n /* \"main.sol\":3719:3726 uint256 */\n 0x00\n /* \"main.sol\":3832:3837 erc20 */\n dup1\n 0x00\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"main.sol\":3832:3849 erc20.totalSupply */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x18160ddd\n /* \"main.sol\":3832:3851 erc20.totalSupply() */\n mload(0x40)\n dup2\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n 0x20\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup7\n dup1\n extcodesize\n iszero\n dup1\n iszero\n tag_53\n jumpi\n 0x00\n dup1\n revert\n tag_53:\n pop\n gas\n staticcall\n iszero\n dup1\n iszero\n tag_55\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_55:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_56\n swap2\n swap1\n tag_57\n jump\t// in\n tag_56:\n /* \"main.sol\":3825:3851 return erc20.totalSupply() */\n swap1\n pop\n /* \"main.sol\":3664:3866 function totalSupply() override external view returns (uint256){... */\n swap1\n jump\t// out\n /* \"main.sol\":4653:4825 function transferFrom(address from, address to, uint256 value) override external returns (bool) {... */\n tag_24:\n /* \"main.sol\":4743:4747 bool */\n 0x00\n /* \"main.sol\":4774:4779 erc20 */\n dup1\n 0x00\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"main.sol\":4774:4792 erc20.transferFrom */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x23b872dd\n /* \"main.sol\":4793:4797 from */\n dup6\n /* \"main.sol\":4800:4802 to */\n dup6\n /* \"main.sol\":4804:4809 value */\n dup6\n /* \"main.sol\":4774:4810 erc20.transferFrom(from, to, value) */\n mload(0x40)\n dup5\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n tag_59\n swap4\n swap3\n swap2\n swap1\n tag_60\n jump\t// in\n tag_59:\n 0x20\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n 0x00\n dup8\n dup1\n extcodesize\n iszero\n dup1\n iszero\n tag_61\n jumpi\n 0x00\n dup1\n revert\n tag_61:\n pop\n gas\n call\n iszero\n dup1\n iszero\n tag_63\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_63:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_64\n swap2\n swap1\n tag_51\n jump\t// in\n tag_64:\n /* \"main.sol\":4767:4810 return erc20.transferFrom(from, to, value) */\n swap1\n pop\n /* \"main.sol\":4653:4825 function transferFrom(address from, address to, uint256 value) override external returns (bool) {... */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"main.sol\":3892:4104 function balanceOf(address who) override external view returns (uint256){... */\n tag_29:\n /* \"main.sol\":3956:3963 uint256 */\n 0x00\n /* \"main.sol\":4069:4074 erc20 */\n dup1\n 0x00\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"main.sol\":4069:4084 erc20.balanceOf */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x70a08231\n /* \"main.sol\":4085:4088 who */\n dup4\n /* \"main.sol\":4069:4089 erc20.balanceOf(who) */\n mload(0x40)\n dup3\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n tag_66\n swap2\n swap1\n tag_67\n jump\t// in\n tag_66:\n 0x20\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup7\n dup1\n extcodesize\n iszero\n dup1\n iszero\n tag_68\n jumpi\n 0x00\n dup1\n revert\n tag_68:\n pop\n gas\n staticcall\n iszero\n dup1\n iszero\n tag_70\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_70:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_71\n swap2\n swap1\n tag_57\n jump\t// in\n tag_71:\n /* \"main.sol\":4062:4089 return erc20.balanceOf(who) */\n swap1\n pop\n /* \"main.sol\":3892:4104 function balanceOf(address who) override external view returns (uint256){... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"main.sol\":3577:3649 IERC20 public erc20 = IERC20(0x0000000000000000000000000000000000000802) */\n tag_32:\n 0x00\n dup1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n jump\t// out\n /* \"main.sol\":4306:4449 function transfer(address to, uint256 value) override external returns (bool) {... */\n tag_37:\n /* \"main.sol\":4378:4382 bool */\n 0x00\n /* \"main.sol\":4409:4414 erc20 */\n dup1\n 0x00\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"main.sol\":4409:4423 erc20.transfer */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xa9059cbb\n /* \"main.sol\":4424:4426 to */\n dup5\n /* \"main.sol\":4428:4433 value */\n dup5\n /* \"main.sol\":4409:4434 erc20.transfer(to, value) */\n mload(0x40)\n dup4\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n tag_73\n swap3\n swap2\n swap1\n tag_46\n jump\t// in\n tag_73:\n 0x20\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n 0x00\n dup8\n dup1\n extcodesize\n iszero\n dup1\n iszero\n tag_74\n jumpi\n 0x00\n dup1\n revert\n tag_74:\n pop\n gas\n call\n iszero\n dup1\n iszero\n tag_76\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_76:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_77\n swap2\n swap1\n tag_51\n jump\t// in\n tag_77:\n /* \"main.sol\":4402:4434 return erc20.transfer(to, value) */\n swap1\n pop\n /* \"main.sol\":4306:4449 function transfer(address to, uint256 value) override external returns (bool) {... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"main.sol\":4130:4292 function allowance(address owner, address spender) override external view returns (uint256){... */\n tag_42:\n /* \"main.sol\":4213:4220 uint256 */\n 0x00\n /* \"main.sol\":4246:4251 erc20 */\n dup1\n 0x00\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"main.sol\":4246:4261 erc20.allowance */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xdd62ed3e\n /* \"main.sol\":4262:4267 owner */\n dup5\n /* \"main.sol\":4269:4276 spender */\n dup5\n /* \"main.sol\":4246:4277 erc20.allowance(owner, spender) */\n mload(0x40)\n dup4\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n tag_79\n swap3\n swap2\n swap1\n tag_80\n jump\t// in\n tag_79:\n 0x20\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup7\n dup1\n extcodesize\n iszero\n dup1\n iszero\n tag_81\n jumpi\n 0x00\n dup1\n revert\n tag_81:\n pop\n gas\n staticcall\n iszero\n dup1\n iszero\n tag_83\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_83:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_84\n swap2\n swap1\n tag_57\n jump\t// in\n tag_84:\n /* \"main.sol\":4239:4277 return erc20.allowance(owner, spender) */\n swap1\n pop\n /* \"main.sol\":4130:4292 function allowance(address owner, address spender) override external view returns (uint256){... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":88:205 */\n tag_86:\n /* \"#utility.yul\":197:198 */\n 0x00\n /* \"#utility.yul\":194:195 */\n dup1\n /* \"#utility.yul\":187:199 */\n revert\n /* \"#utility.yul\":334:460 */\n tag_88:\n /* \"#utility.yul\":371:378 */\n 0x00\n /* \"#utility.yul\":411:453 */\n 0xffffffffffffffffffffffffffffffffffffffff\n /* \"#utility.yul\":404:409 */\n dup3\n /* \"#utility.yul\":400:454 */\n and\n /* \"#utility.yul\":389:454 */\n swap1\n pop\n /* \"#utility.yul\":334:460 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":466:562 */\n tag_89:\n /* \"#utility.yul\":503:510 */\n 0x00\n /* \"#utility.yul\":532:556 */\n tag_113\n /* \"#utility.yul\":550:555 */\n dup3\n /* \"#utility.yul\":532:556 */\n tag_88\n jump\t// in\n tag_113:\n /* \"#utility.yul\":521:556 */\n swap1\n pop\n /* \"#utility.yul\":466:562 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":568:690 */\n tag_90:\n /* \"#utility.yul\":641:665 */\n tag_115\n /* \"#utility.yul\":659:664 */\n dup2\n /* \"#utility.yul\":641:665 */\n tag_89\n jump\t// in\n tag_115:\n /* \"#utility.yul\":634:639 */\n dup2\n /* \"#utility.yul\":631:666 */\n eq\n /* \"#utility.yul\":621:684 */\n tag_116\n jumpi\n /* \"#utility.yul\":680:681 */\n 0x00\n /* \"#utility.yul\":677:678 */\n dup1\n /* \"#utility.yul\":670:682 */\n revert\n /* \"#utility.yul\":621:684 */\n tag_116:\n /* \"#utility.yul\":568:690 */\n pop\n jump\t// out\n /* \"#utility.yul\":696:835 */\n tag_91:\n /* \"#utility.yul\":742:747 */\n 0x00\n /* \"#utility.yul\":780:786 */\n dup2\n /* \"#utility.yul\":767:787 */\n calldataload\n /* \"#utility.yul\":758:787 */\n swap1\n pop\n /* \"#utility.yul\":796:829 */\n tag_118\n /* \"#utility.yul\":823:828 */\n dup2\n /* \"#utility.yul\":796:829 */\n tag_90\n jump\t// in\n tag_118:\n /* \"#utility.yul\":696:835 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":841:918 */\n tag_92:\n /* \"#utility.yul\":878:885 */\n 0x00\n /* \"#utility.yul\":907:912 */\n dup2\n /* \"#utility.yul\":896:912 */\n swap1\n pop\n /* \"#utility.yul\":841:918 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":924:1046 */\n tag_93:\n /* \"#utility.yul\":997:1021 */\n tag_121\n /* \"#utility.yul\":1015:1020 */\n dup2\n /* \"#utility.yul\":997:1021 */\n tag_92\n jump\t// in\n tag_121:\n /* \"#utility.yul\":990:995 */\n dup2\n /* \"#utility.yul\":987:1022 */\n eq\n /* \"#utility.yul\":977:1040 */\n tag_122\n jumpi\n /* \"#utility.yul\":1036:1037 */\n 0x00\n /* \"#utility.yul\":1033:1034 */\n dup1\n /* \"#utility.yul\":1026:1038 */\n revert\n /* \"#utility.yul\":977:1040 */\n tag_122:\n /* \"#utility.yul\":924:1046 */\n pop\n jump\t// out\n /* \"#utility.yul\":1052:1191 */\n tag_94:\n /* \"#utility.yul\":1098:1103 */\n 0x00\n /* \"#utility.yul\":1136:1142 */\n dup2\n /* \"#utility.yul\":1123:1143 */\n calldataload\n /* \"#utility.yul\":1114:1143 */\n swap1\n pop\n /* \"#utility.yul\":1152:1185 */\n tag_124\n /* \"#utility.yul\":1179:1184 */\n dup2\n /* \"#utility.yul\":1152:1185 */\n tag_93\n jump\t// in\n tag_124:\n /* \"#utility.yul\":1052:1191 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":1197:1671 */\n tag_13:\n /* \"#utility.yul\":1265:1271 */\n 0x00\n /* \"#utility.yul\":1273:1279 */\n dup1\n /* \"#utility.yul\":1322:1324 */\n 0x40\n /* \"#utility.yul\":1310:1319 */\n dup4\n /* \"#utility.yul\":1301:1308 */\n dup6\n /* \"#utility.yul\":1297:1320 */\n sub\n /* \"#utility.yul\":1293:1325 */\n slt\n /* \"#utility.yul\":1290:1409 */\n iszero\n tag_126\n jumpi\n /* \"#utility.yul\":1328:1407 */\n tag_127\n tag_86\n jump\t// in\n tag_127:\n /* \"#utility.yul\":1290:1409 */\n tag_126:\n /* \"#utility.yul\":1448:1449 */\n 0x00\n /* \"#utility.yul\":1473:1526 */\n tag_128\n /* \"#utility.yul\":1518:1525 */\n dup6\n /* \"#utility.yul\":1509:1515 */\n dup3\n /* \"#utility.yul\":1498:1507 */\n dup7\n /* \"#utility.yul\":1494:1516 */\n add\n /* \"#utility.yul\":1473:1526 */\n tag_91\n jump\t// in\n tag_128:\n /* \"#utility.yul\":1463:1526 */\n swap3\n pop\n /* \"#utility.yul\":1419:1536 */\n pop\n /* \"#utility.yul\":1575:1577 */\n 0x20\n /* \"#utility.yul\":1601:1654 */\n tag_129\n /* \"#utility.yul\":1646:1653 */\n dup6\n /* \"#utility.yul\":1637:1643 */\n dup3\n /* \"#utility.yul\":1626:1635 */\n dup7\n /* \"#utility.yul\":1622:1644 */\n add\n /* \"#utility.yul\":1601:1654 */\n tag_94\n jump\t// in\n tag_129:\n /* \"#utility.yul\":1591:1654 */\n swap2\n pop\n /* \"#utility.yul\":1546:1664 */\n pop\n /* \"#utility.yul\":1197:1671 */\n swap3\n pop\n swap3\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":1677:1767 */\n tag_95:\n /* \"#utility.yul\":1711:1718 */\n 0x00\n /* \"#utility.yul\":1754:1759 */\n dup2\n /* \"#utility.yul\":1747:1760 */\n iszero\n /* \"#utility.yul\":1740:1761 */\n iszero\n /* \"#utility.yul\":1729:1761 */\n swap1\n pop\n /* \"#utility.yul\":1677:1767 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":1773:1882 */\n tag_96:\n /* \"#utility.yul\":1854:1875 */\n tag_132\n /* \"#utility.yul\":1869:1874 */\n dup2\n /* \"#utility.yul\":1854:1875 */\n tag_95\n jump\t// in\n tag_132:\n /* \"#utility.yul\":1849:1852 */\n dup3\n /* \"#utility.yul\":1842:1876 */\n mstore\n /* \"#utility.yul\":1773:1882 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":1888:2098 */\n tag_16:\n /* \"#utility.yul\":1975:1979 */\n 0x00\n /* \"#utility.yul\":2013:2015 */\n 0x20\n /* \"#utility.yul\":2002:2011 */\n dup3\n /* \"#utility.yul\":1998:2016 */\n add\n /* \"#utility.yul\":1990:2016 */\n swap1\n pop\n /* \"#utility.yul\":2026:2091 */\n tag_134\n /* \"#utility.yul\":2088:2089 */\n 0x00\n /* \"#utility.yul\":2077:2086 */\n dup4\n /* \"#utility.yul\":2073:2090 */\n add\n /* \"#utility.yul\":2064:2070 */\n dup5\n /* \"#utility.yul\":2026:2091 */\n tag_96\n jump\t// in\n tag_134:\n /* \"#utility.yul\":1888:2098 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":2104:2222 */\n tag_97:\n /* \"#utility.yul\":2191:2215 */\n tag_136\n /* \"#utility.yul\":2209:2214 */\n dup2\n /* \"#utility.yul\":2191:2215 */\n tag_92\n jump\t// in\n tag_136:\n /* \"#utility.yul\":2186:2189 */\n dup3\n /* \"#utility.yul\":2179:2216 */\n mstore\n /* \"#utility.yul\":2104:2222 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":2228:2450 */\n tag_20:\n /* \"#utility.yul\":2321:2325 */\n 0x00\n /* \"#utility.yul\":2359:2361 */\n 0x20\n /* \"#utility.yul\":2348:2357 */\n dup3\n /* \"#utility.yul\":2344:2362 */\n add\n /* \"#utility.yul\":2336:2362 */\n swap1\n pop\n /* \"#utility.yul\":2372:2443 */\n tag_138\n /* \"#utility.yul\":2440:2441 */\n 0x00\n /* \"#utility.yul\":2429:2438 */\n dup4\n /* \"#utility.yul\":2425:2442 */\n add\n /* \"#utility.yul\":2416:2422 */\n dup5\n /* \"#utility.yul\":2372:2443 */\n tag_97\n jump\t// in\n tag_138:\n /* \"#utility.yul\":2228:2450 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":2456:3075 */\n tag_23:\n /* \"#utility.yul\":2533:2539 */\n 0x00\n /* \"#utility.yul\":2541:2547 */\n dup1\n /* \"#utility.yul\":2549:2555 */\n 0x00\n /* \"#utility.yul\":2598:2600 */\n 0x60\n /* \"#utility.yul\":2586:2595 */\n dup5\n /* \"#utility.yul\":2577:2584 */\n dup7\n /* \"#utility.yul\":2573:2596 */\n sub\n /* \"#utility.yul\":2569:2601 */\n slt\n /* \"#utility.yul\":2566:2685 */\n iszero\n tag_140\n jumpi\n /* \"#utility.yul\":2604:2683 */\n tag_141\n tag_86\n jump\t// in\n tag_141:\n /* \"#utility.yul\":2566:2685 */\n tag_140:\n /* \"#utility.yul\":2724:2725 */\n 0x00\n /* \"#utility.yul\":2749:2802 */\n tag_142\n /* \"#utility.yul\":2794:2801 */\n dup7\n /* \"#utility.yul\":2785:2791 */\n dup3\n /* \"#utility.yul\":2774:2783 */\n dup8\n /* \"#utility.yul\":2770:2792 */\n add\n /* \"#utility.yul\":2749:2802 */\n tag_91\n jump\t// in\n tag_142:\n /* \"#utility.yul\":2739:2802 */\n swap4\n pop\n /* \"#utility.yul\":2695:2812 */\n pop\n /* \"#utility.yul\":2851:2853 */\n 0x20\n /* \"#utility.yul\":2877:2930 */\n tag_143\n /* \"#utility.yul\":2922:2929 */\n dup7\n /* \"#utility.yul\":2913:2919 */\n dup3\n /* \"#utility.yul\":2902:2911 */\n dup8\n /* \"#utility.yul\":2898:2920 */\n add\n /* \"#utility.yul\":2877:2930 */\n tag_91\n jump\t// in\n tag_143:\n /* \"#utility.yul\":2867:2930 */\n swap3\n pop\n /* \"#utility.yul\":2822:2940 */\n pop\n /* \"#utility.yul\":2979:2981 */\n 0x40\n /* \"#utility.yul\":3005:3058 */\n tag_144\n /* \"#utility.yul\":3050:3057 */\n dup7\n /* \"#utility.yul\":3041:3047 */\n dup3\n /* \"#utility.yul\":3030:3039 */\n dup8\n /* \"#utility.yul\":3026:3048 */\n add\n /* \"#utility.yul\":3005:3058 */\n tag_94\n jump\t// in\n tag_144:\n /* \"#utility.yul\":2995:3058 */\n swap2\n pop\n /* \"#utility.yul\":2950:3068 */\n pop\n /* \"#utility.yul\":2456:3075 */\n swap3\n pop\n swap3\n pop\n swap3\n jump\t// out\n /* \"#utility.yul\":3081:3410 */\n tag_28:\n /* \"#utility.yul\":3140:3146 */\n 0x00\n /* \"#utility.yul\":3189:3191 */\n 0x20\n /* \"#utility.yul\":3177:3186 */\n dup3\n /* \"#utility.yul\":3168:3175 */\n dup5\n /* \"#utility.yul\":3164:3187 */\n sub\n /* \"#utility.yul\":3160:3192 */\n slt\n /* \"#utility.yul\":3157:3276 */\n iszero\n tag_146\n jumpi\n /* \"#utility.yul\":3195:3274 */\n tag_147\n tag_86\n jump\t// in\n tag_147:\n /* \"#utility.yul\":3157:3276 */\n tag_146:\n /* \"#utility.yul\":3315:3316 */\n 0x00\n /* \"#utility.yul\":3340:3393 */\n tag_148\n /* \"#utility.yul\":3385:3392 */\n dup5\n /* \"#utility.yul\":3376:3382 */\n dup3\n /* \"#utility.yul\":3365:3374 */\n dup6\n /* \"#utility.yul\":3361:3383 */\n add\n /* \"#utility.yul\":3340:3393 */\n tag_91\n jump\t// in\n tag_148:\n /* \"#utility.yul\":3330:3393 */\n swap2\n pop\n /* \"#utility.yul\":3286:3403 */\n pop\n /* \"#utility.yul\":3081:3410 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":3416:3476 */\n tag_98:\n /* \"#utility.yul\":3444:3447 */\n 0x00\n /* \"#utility.yul\":3465:3470 */\n dup2\n /* \"#utility.yul\":3458:3470 */\n swap1\n pop\n /* \"#utility.yul\":3416:3476 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":3482:3624 */\n tag_99:\n /* \"#utility.yul\":3532:3541 */\n 0x00\n /* \"#utility.yul\":3565:3618 */\n tag_151\n /* \"#utility.yul\":3583:3617 */\n tag_152\n /* \"#utility.yul\":3592:3616 */\n tag_153\n /* \"#utility.yul\":3610:3615 */\n dup5\n /* \"#utility.yul\":3592:3616 */\n tag_88\n jump\t// in\n tag_153:\n /* \"#utility.yul\":3583:3617 */\n tag_98\n jump\t// in\n tag_152:\n /* \"#utility.yul\":3565:3618 */\n tag_88\n jump\t// in\n tag_151:\n /* \"#utility.yul\":3552:3618 */\n swap1\n pop\n /* \"#utility.yul\":3482:3624 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":3630:3756 */\n tag_100:\n /* \"#utility.yul\":3680:3689 */\n 0x00\n /* \"#utility.yul\":3713:3750 */\n tag_155\n /* \"#utility.yul\":3744:3749 */\n dup3\n /* \"#utility.yul\":3713:3750 */\n tag_99\n jump\t// in\n tag_155:\n /* \"#utility.yul\":3700:3750 */\n swap1\n pop\n /* \"#utility.yul\":3630:3756 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":3762:3901 */\n tag_101:\n /* \"#utility.yul\":3825:3834 */\n 0x00\n /* \"#utility.yul\":3858:3895 */\n tag_157\n /* \"#utility.yul\":3889:3894 */\n dup3\n /* \"#utility.yul\":3858:3895 */\n tag_100\n jump\t// in\n tag_157:\n /* \"#utility.yul\":3845:3895 */\n swap1\n pop\n /* \"#utility.yul\":3762:3901 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":3907:4064 */\n tag_102:\n /* \"#utility.yul\":4007:4057 */\n tag_159\n /* \"#utility.yul\":4051:4056 */\n dup2\n /* \"#utility.yul\":4007:4057 */\n tag_101\n jump\t// in\n tag_159:\n /* \"#utility.yul\":4002:4005 */\n dup3\n /* \"#utility.yul\":3995:4058 */\n mstore\n /* \"#utility.yul\":3907:4064 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":4070:4318 */\n tag_34:\n /* \"#utility.yul\":4176:4180 */\n 0x00\n /* \"#utility.yul\":4214:4216 */\n 0x20\n /* \"#utility.yul\":4203:4212 */\n dup3\n /* \"#utility.yul\":4199:4217 */\n add\n /* \"#utility.yul\":4191:4217 */\n swap1\n pop\n /* \"#utility.yul\":4227:4311 */\n tag_161\n /* \"#utility.yul\":4308:4309 */\n 0x00\n /* \"#utility.yul\":4297:4306 */\n dup4\n /* \"#utility.yul\":4293:4310 */\n add\n /* \"#utility.yul\":4284:4290 */\n dup5\n /* \"#utility.yul\":4227:4311 */\n tag_102\n jump\t// in\n tag_161:\n /* \"#utility.yul\":4070:4318 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":4324:4798 */\n tag_41:\n /* \"#utility.yul\":4392:4398 */\n 0x00\n /* \"#utility.yul\":4400:4406 */\n dup1\n /* \"#utility.yul\":4449:4451 */\n 0x40\n /* \"#utility.yul\":4437:4446 */\n dup4\n /* \"#utility.yul\":4428:4435 */\n dup6\n /* \"#utility.yul\":4424:4447 */\n sub\n /* \"#utility.yul\":4420:4452 */\n slt\n /* \"#utility.yul\":4417:4536 */\n iszero\n tag_163\n jumpi\n /* \"#utility.yul\":4455:4534 */\n tag_164\n tag_86\n jump\t// in\n tag_164:\n /* \"#utility.yul\":4417:4536 */\n tag_163:\n /* \"#utility.yul\":4575:4576 */\n 0x00\n /* \"#utility.yul\":4600:4653 */\n tag_165\n /* \"#utility.yul\":4645:4652 */\n dup6\n /* \"#utility.yul\":4636:4642 */\n dup3\n /* \"#utility.yul\":4625:4634 */\n dup7\n /* \"#utility.yul\":4621:4643 */\n add\n /* \"#utility.yul\":4600:4653 */\n tag_91\n jump\t// in\n tag_165:\n /* \"#utility.yul\":4590:4653 */\n swap3\n pop\n /* \"#utility.yul\":4546:4663 */\n pop\n /* \"#utility.yul\":4702:4704 */\n 0x20\n /* \"#utility.yul\":4728:4781 */\n tag_166\n /* \"#utility.yul\":4773:4780 */\n dup6\n /* \"#utility.yul\":4764:4770 */\n dup3\n /* \"#utility.yul\":4753:4762 */\n dup7\n /* \"#utility.yul\":4749:4771 */\n add\n /* \"#utility.yul\":4728:4781 */\n tag_91\n jump\t// in\n tag_166:\n /* \"#utility.yul\":4718:4781 */\n swap2\n pop\n /* \"#utility.yul\":4673:4791 */\n pop\n /* \"#utility.yul\":4324:4798 */\n swap3\n pop\n swap3\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":4804:4922 */\n tag_103:\n /* \"#utility.yul\":4891:4915 */\n tag_168\n /* \"#utility.yul\":4909:4914 */\n dup2\n /* \"#utility.yul\":4891:4915 */\n tag_89\n jump\t// in\n tag_168:\n /* \"#utility.yul\":4886:4889 */\n dup3\n /* \"#utility.yul\":4879:4916 */\n mstore\n /* \"#utility.yul\":4804:4922 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":4928:5260 */\n tag_46:\n /* \"#utility.yul\":5049:5053 */\n 0x00\n /* \"#utility.yul\":5087:5089 */\n 0x40\n /* \"#utility.yul\":5076:5085 */\n dup3\n /* \"#utility.yul\":5072:5090 */\n add\n /* \"#utility.yul\":5064:5090 */\n swap1\n pop\n /* \"#utility.yul\":5100:5171 */\n tag_170\n /* \"#utility.yul\":5168:5169 */\n 0x00\n /* \"#utility.yul\":5157:5166 */\n dup4\n /* \"#utility.yul\":5153:5170 */\n add\n /* \"#utility.yul\":5144:5150 */\n dup6\n /* \"#utility.yul\":5100:5171 */\n tag_103\n jump\t// in\n tag_170:\n /* \"#utility.yul\":5181:5253 */\n tag_171\n /* \"#utility.yul\":5249:5251 */\n 0x20\n /* \"#utility.yul\":5238:5247 */\n dup4\n /* \"#utility.yul\":5234:5252 */\n add\n /* \"#utility.yul\":5225:5231 */\n dup5\n /* \"#utility.yul\":5181:5253 */\n tag_97\n jump\t// in\n tag_171:\n /* \"#utility.yul\":4928:5260 */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":5266:5382 */\n tag_104:\n /* \"#utility.yul\":5336:5357 */\n tag_173\n /* \"#utility.yul\":5351:5356 */\n dup2\n /* \"#utility.yul\":5336:5357 */\n tag_95\n jump\t// in\n tag_173:\n /* \"#utility.yul\":5329:5334 */\n dup2\n /* \"#utility.yul\":5326:5358 */\n eq\n /* \"#utility.yul\":5316:5376 */\n tag_174\n jumpi\n /* \"#utility.yul\":5372:5373 */\n 0x00\n /* \"#utility.yul\":5369:5370 */\n dup1\n /* \"#utility.yul\":5362:5374 */\n revert\n /* \"#utility.yul\":5316:5376 */\n tag_174:\n /* \"#utility.yul\":5266:5382 */\n pop\n jump\t// out\n /* \"#utility.yul\":5388:5525 */\n tag_105:\n /* \"#utility.yul\":5442:5447 */\n 0x00\n /* \"#utility.yul\":5473:5479 */\n dup2\n /* \"#utility.yul\":5467:5480 */\n mload\n /* \"#utility.yul\":5458:5480 */\n swap1\n pop\n /* \"#utility.yul\":5489:5519 */\n tag_176\n /* \"#utility.yul\":5513:5518 */\n dup2\n /* \"#utility.yul\":5489:5519 */\n tag_104\n jump\t// in\n tag_176:\n /* \"#utility.yul\":5388:5525 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":5531:5876 */\n tag_51:\n /* \"#utility.yul\":5598:5604 */\n 0x00\n /* \"#utility.yul\":5647:5649 */\n 0x20\n /* \"#utility.yul\":5635:5644 */\n dup3\n /* \"#utility.yul\":5626:5633 */\n dup5\n /* \"#utility.yul\":5622:5645 */\n sub\n /* \"#utility.yul\":5618:5650 */\n slt\n /* \"#utility.yul\":5615:5734 */\n iszero\n tag_178\n jumpi\n /* \"#utility.yul\":5653:5732 */\n tag_179\n tag_86\n jump\t// in\n tag_179:\n /* \"#utility.yul\":5615:5734 */\n tag_178:\n /* \"#utility.yul\":5773:5774 */\n 0x00\n /* \"#utility.yul\":5798:5859 */\n tag_180\n /* \"#utility.yul\":5851:5858 */\n dup5\n /* \"#utility.yul\":5842:5848 */\n dup3\n /* \"#utility.yul\":5831:5840 */\n dup6\n /* \"#utility.yul\":5827:5849 */\n add\n /* \"#utility.yul\":5798:5859 */\n tag_105\n jump\t// in\n tag_180:\n /* \"#utility.yul\":5788:5859 */\n swap2\n pop\n /* \"#utility.yul\":5744:5869 */\n pop\n /* \"#utility.yul\":5531:5876 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":5882:6025 */\n tag_106:\n /* \"#utility.yul\":5939:5944 */\n 0x00\n /* \"#utility.yul\":5970:5976 */\n dup2\n /* \"#utility.yul\":5964:5977 */\n mload\n /* \"#utility.yul\":5955:5977 */\n swap1\n pop\n /* \"#utility.yul\":5986:6019 */\n tag_182\n /* \"#utility.yul\":6013:6018 */\n dup2\n /* \"#utility.yul\":5986:6019 */\n tag_93\n jump\t// in\n tag_182:\n /* \"#utility.yul\":5882:6025 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":6031:6382 */\n tag_57:\n /* \"#utility.yul\":6101:6107 */\n 0x00\n /* \"#utility.yul\":6150:6152 */\n 0x20\n /* \"#utility.yul\":6138:6147 */\n dup3\n /* \"#utility.yul\":6129:6136 */\n dup5\n /* \"#utility.yul\":6125:6148 */\n sub\n /* \"#utility.yul\":6121:6153 */\n slt\n /* \"#utility.yul\":6118:6237 */\n iszero\n tag_184\n jumpi\n /* \"#utility.yul\":6156:6235 */\n tag_185\n tag_86\n jump\t// in\n tag_185:\n /* \"#utility.yul\":6118:6237 */\n tag_184:\n /* \"#utility.yul\":6276:6277 */\n 0x00\n /* \"#utility.yul\":6301:6365 */\n tag_186\n /* \"#utility.yul\":6357:6364 */\n dup5\n /* \"#utility.yul\":6348:6354 */\n dup3\n /* \"#utility.yul\":6337:6346 */\n dup6\n /* \"#utility.yul\":6333:6355 */\n add\n /* \"#utility.yul\":6301:6365 */\n tag_106\n jump\t// in\n tag_186:\n /* \"#utility.yul\":6291:6365 */\n swap2\n pop\n /* \"#utility.yul\":6247:6375 */\n pop\n /* \"#utility.yul\":6031:6382 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":6388:6830 */\n tag_60:\n /* \"#utility.yul\":6537:6541 */\n 0x00\n /* \"#utility.yul\":6575:6577 */\n 0x60\n /* \"#utility.yul\":6564:6573 */\n dup3\n /* \"#utility.yul\":6560:6578 */\n add\n /* \"#utility.yul\":6552:6578 */\n swap1\n pop\n /* \"#utility.yul\":6588:6659 */\n tag_188\n /* \"#utility.yul\":6656:6657 */\n 0x00\n /* \"#utility.yul\":6645:6654 */\n dup4\n /* \"#utility.yul\":6641:6658 */\n add\n /* \"#utility.yul\":6632:6638 */\n dup7\n /* \"#utility.yul\":6588:6659 */\n tag_103\n jump\t// in\n tag_188:\n /* \"#utility.yul\":6669:6741 */\n tag_189\n /* \"#utility.yul\":6737:6739 */\n 0x20\n /* \"#utility.yul\":6726:6735 */\n dup4\n /* \"#utility.yul\":6722:6740 */\n add\n /* \"#utility.yul\":6713:6719 */\n dup6\n /* \"#utility.yul\":6669:6741 */\n tag_103\n jump\t// in\n tag_189:\n /* \"#utility.yul\":6751:6823 */\n tag_190\n /* \"#utility.yul\":6819:6821 */\n 0x40\n /* \"#utility.yul\":6808:6817 */\n dup4\n /* \"#utility.yul\":6804:6822 */\n add\n /* \"#utility.yul\":6795:6801 */\n dup5\n /* \"#utility.yul\":6751:6823 */\n tag_97\n jump\t// in\n tag_190:\n /* \"#utility.yul\":6388:6830 */\n swap5\n swap4\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":6836:7058 */\n tag_67:\n /* \"#utility.yul\":6929:6933 */\n 0x00\n /* \"#utility.yul\":6967:6969 */\n 0x20\n /* \"#utility.yul\":6956:6965 */\n dup3\n /* \"#utility.yul\":6952:6970 */\n add\n /* \"#utility.yul\":6944:6970 */\n swap1\n pop\n /* \"#utility.yul\":6980:7051 */\n tag_192\n /* \"#utility.yul\":7048:7049 */\n 0x00\n /* \"#utility.yul\":7037:7046 */\n dup4\n /* \"#utility.yul\":7033:7050 */\n add\n /* \"#utility.yul\":7024:7030 */\n dup5\n /* \"#utility.yul\":6980:7051 */\n tag_103\n jump\t// in\n tag_192:\n /* \"#utility.yul\":6836:7058 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":7064:7396 */\n tag_80:\n /* \"#utility.yul\":7185:7189 */\n 0x00\n /* \"#utility.yul\":7223:7225 */\n 0x40\n /* \"#utility.yul\":7212:7221 */\n dup3\n /* \"#utility.yul\":7208:7226 */\n add\n /* \"#utility.yul\":7200:7226 */\n swap1\n pop\n /* \"#utility.yul\":7236:7307 */\n tag_194\n /* \"#utility.yul\":7304:7305 */\n 0x00\n /* \"#utility.yul\":7293:7302 */\n dup4\n /* \"#utility.yul\":7289:7306 */\n add\n /* \"#utility.yul\":7280:7286 */\n dup6\n /* \"#utility.yul\":7236:7307 */\n tag_103\n jump\t// in\n tag_194:\n /* \"#utility.yul\":7317:7389 */\n tag_195\n /* \"#utility.yul\":7385:7387 */\n 0x20\n /* \"#utility.yul\":7374:7383 */\n dup4\n /* \"#utility.yul\":7370:7388 */\n add\n /* \"#utility.yul\":7361:7367 */\n dup5\n /* \"#utility.yul\":7317:7389 */\n tag_103\n jump\t// in\n tag_195:\n /* \"#utility.yul\":7064:7396 */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n\n auxdata: 0xa264697066735822122004515cd8a6be26b5f970dbad408f3450176de6bafe2c9640b5544682d4c27bba64736f6c63430008090033\n}\n", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60806040526108026000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801561005257600080fd5b50610a03806100626000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806370a082311161005b57806370a0823114610100578063785e9e8614610130578063a9059cbb1461014e578063dd62ed3e1461017e5761007d565b8063095ea7b31461008257806318160ddd146100b257806323b872dd146100d0575b600080fd5b61009c600480360381019061009791906106a5565b6101ae565b6040516100a99190610700565b60405180910390f35b6100ba610266565b6040516100c7919061072a565b60405180910390f35b6100ea60048036038101906100e59190610745565b61030c565b6040516100f79190610700565b60405180910390f35b61011a60048036038101906101159190610798565b6103c7565b604051610127919061072a565b60405180910390f35b61013861047a565b6040516101459190610824565b60405180910390f35b610168600480360381019061016391906106a5565b61049e565b6040516101759190610700565b60405180910390f35b6101986004803603810190610193919061083f565b610556565b6040516101a5919061072a565b60405180910390f35b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b815260040161020c92919061088e565b602060405180830381600087803b15801561022657600080fd5b505af115801561023a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061025e91906108e3565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102cf57600080fd5b505afa1580156102e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103079190610925565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd8585856040518463ffffffff1660e01b815260040161036c93929190610952565b602060405180830381600087803b15801561038657600080fd5b505af115801561039a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103be91906108e3565b90509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b81526004016104239190610989565b60206040518083038186803b15801561043b57600080fd5b505afa15801561044f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104739190610925565b9050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b81526004016104fc92919061088e565b602060405180830381600087803b15801561051657600080fd5b505af115801561052a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054e91906108e3565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e84846040518363ffffffff1660e01b81526004016105b49291906109a4565b60206040518083038186803b1580156105cc57600080fd5b505afa1580156105e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106049190610925565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061063c82610611565b9050919050565b61064c81610631565b811461065757600080fd5b50565b60008135905061066981610643565b92915050565b6000819050919050565b6106828161066f565b811461068d57600080fd5b50565b60008135905061069f81610679565b92915050565b600080604083850312156106bc576106bb61060c565b5b60006106ca8582860161065a565b92505060206106db85828601610690565b9150509250929050565b60008115159050919050565b6106fa816106e5565b82525050565b600060208201905061071560008301846106f1565b92915050565b6107248161066f565b82525050565b600060208201905061073f600083018461071b565b92915050565b60008060006060848603121561075e5761075d61060c565b5b600061076c8682870161065a565b935050602061077d8682870161065a565b925050604061078e86828701610690565b9150509250925092565b6000602082840312156107ae576107ad61060c565b5b60006107bc8482850161065a565b91505092915050565b6000819050919050565b60006107ea6107e56107e084610611565b6107c5565b610611565b9050919050565b60006107fc826107cf565b9050919050565b600061080e826107f1565b9050919050565b61081e81610803565b82525050565b60006020820190506108396000830184610815565b92915050565b600080604083850312156108565761085561060c565b5b60006108648582860161065a565b92505060206108758582860161065a565b9150509250929050565b61088881610631565b82525050565b60006040820190506108a3600083018561087f565b6108b0602083018461071b565b9392505050565b6108c0816106e5565b81146108cb57600080fd5b50565b6000815190506108dd816108b7565b92915050565b6000602082840312156108f9576108f861060c565b5b6000610907848285016108ce565b91505092915050565b60008151905061091f81610679565b92915050565b60006020828403121561093b5761093a61060c565b5b600061094984828501610910565b91505092915050565b6000606082019050610967600083018661087f565b610974602083018561087f565b610981604083018461071b565b949350505050565b600060208201905061099e600083018461087f565b92915050565b60006040820190506109b9600083018561087f565b6109c6602083018461087f565b939250505056fea264697066735822122004515cd8a6be26b5f970dbad408f3450176de6bafe2c9640b5544682d4c27bba64736f6c63430008090033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH2 0x802 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP CALLVALUE DUP1 ISZERO PUSH2 0x52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA03 DUP1 PUSH2 0x62 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x100 JUMPI DUP1 PUSH4 0x785E9E86 EQ PUSH2 0x130 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x14E JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x17E JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xB2 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xD0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x97 SWAP2 SWAP1 PUSH2 0x6A5 JUMP JUMPDEST PUSH2 0x1AE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0x700 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xBA PUSH2 0x266 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC7 SWAP2 SWAP1 PUSH2 0x72A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xEA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xE5 SWAP2 SWAP1 PUSH2 0x745 JUMP JUMPDEST PUSH2 0x30C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF7 SWAP2 SWAP1 PUSH2 0x700 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x11A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x115 SWAP2 SWAP1 PUSH2 0x798 JUMP JUMPDEST PUSH2 0x3C7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x127 SWAP2 SWAP1 PUSH2 0x72A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x138 PUSH2 0x47A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x145 SWAP2 SWAP1 PUSH2 0x824 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x163 SWAP2 SWAP1 PUSH2 0x6A5 JUMP JUMPDEST PUSH2 0x49E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x175 SWAP2 SWAP1 PUSH2 0x700 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x198 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x193 SWAP2 SWAP1 PUSH2 0x83F JUMP JUMPDEST PUSH2 0x556 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A5 SWAP2 SWAP1 PUSH2 0x72A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP5 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x20C SWAP3 SWAP2 SWAP1 PUSH2 0x88E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x226 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x23A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x25E SWAP2 SWAP1 PUSH2 0x8E3 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2E3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x307 SWAP2 SWAP1 PUSH2 0x925 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x23B872DD DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x36C SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x952 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x386 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x39A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3BE SWAP2 SWAP1 PUSH2 0x8E3 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x423 SWAP2 SWAP1 PUSH2 0x989 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x43B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x44F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x473 SWAP2 SWAP1 PUSH2 0x925 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP5 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4FC SWAP3 SWAP2 SWAP1 PUSH2 0x88E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x516 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x52A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x54E SWAP2 SWAP1 PUSH2 0x8E3 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDD62ED3E DUP5 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5B4 SWAP3 SWAP2 SWAP1 PUSH2 0x9A4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5E0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x604 SWAP2 SWAP1 PUSH2 0x925 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x63C DUP3 PUSH2 0x611 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x64C DUP2 PUSH2 0x631 JUMP JUMPDEST DUP2 EQ PUSH2 0x657 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x669 DUP2 PUSH2 0x643 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x682 DUP2 PUSH2 0x66F JUMP JUMPDEST DUP2 EQ PUSH2 0x68D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x69F DUP2 PUSH2 0x679 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x6BC JUMPI PUSH2 0x6BB PUSH2 0x60C JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x6CA DUP6 DUP3 DUP7 ADD PUSH2 0x65A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x6DB DUP6 DUP3 DUP7 ADD PUSH2 0x690 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6FA DUP2 PUSH2 0x6E5 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x715 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x6F1 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x724 DUP2 PUSH2 0x66F JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x73F PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x71B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x75E JUMPI PUSH2 0x75D PUSH2 0x60C JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x76C DUP7 DUP3 DUP8 ADD PUSH2 0x65A JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x77D DUP7 DUP3 DUP8 ADD PUSH2 0x65A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x78E DUP7 DUP3 DUP8 ADD PUSH2 0x690 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7AE JUMPI PUSH2 0x7AD PUSH2 0x60C JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x7BC DUP5 DUP3 DUP6 ADD PUSH2 0x65A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7EA PUSH2 0x7E5 PUSH2 0x7E0 DUP5 PUSH2 0x611 JUMP JUMPDEST PUSH2 0x7C5 JUMP JUMPDEST PUSH2 0x611 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7FC DUP3 PUSH2 0x7CF JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x80E DUP3 PUSH2 0x7F1 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x81E DUP2 PUSH2 0x803 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x839 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x815 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x856 JUMPI PUSH2 0x855 PUSH2 0x60C JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x864 DUP6 DUP3 DUP7 ADD PUSH2 0x65A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x875 DUP6 DUP3 DUP7 ADD PUSH2 0x65A JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x888 DUP2 PUSH2 0x631 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x8A3 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x87F JUMP JUMPDEST PUSH2 0x8B0 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x71B JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x8C0 DUP2 PUSH2 0x6E5 JUMP JUMPDEST DUP2 EQ PUSH2 0x8CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x8DD DUP2 PUSH2 0x8B7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x8F9 JUMPI PUSH2 0x8F8 PUSH2 0x60C JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x907 DUP5 DUP3 DUP6 ADD PUSH2 0x8CE JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x91F DUP2 PUSH2 0x679 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x93B JUMPI PUSH2 0x93A PUSH2 0x60C JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x949 DUP5 DUP3 DUP6 ADD PUSH2 0x910 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x967 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x87F JUMP JUMPDEST PUSH2 0x974 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x87F JUMP JUMPDEST PUSH2 0x981 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x71B JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x99E PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x87F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x9B9 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x87F JUMP JUMPDEST PUSH2 0x9C6 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x87F JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DIV MLOAD 0x5C 0xD8 0xA6 0xBE 0x26 0xB5 0xF9 PUSH17 0xDBAD408F3450176DE6BAFE2C9640B55446 DUP3 0xD4 0xC2 PUSH28 0xBA64736F6C6343000809003300000000000000000000000000000000 ", + "sourceMap": "3476:1355:0:-:0;;;3606:42;3577:72;;;;;;;;;;;;;;;;;;;;3476:1355;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@allowance_128": { + "entryPoint": 1366, + "id": 128, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@approve_162": { + "entryPoint": 430, + "id": 162, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@balanceOf_111": { + "entryPoint": 967, + "id": 111, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@erc20_86": { + "entryPoint": 1146, + "id": 86, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@totalSupply_97": { + "entryPoint": 614, + "id": 97, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@transferFrom_182": { + "entryPoint": 780, + "id": 182, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@transfer_145": { + "entryPoint": 1182, + "id": 145, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_address": { + "entryPoint": 1626, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_bool_fromMemory": { + "entryPoint": 2254, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_uint256": { + "entryPoint": 1680, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_uint256_fromMemory": { + "entryPoint": 2320, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_address": { + "entryPoint": 1944, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_addresst_address": { + "entryPoint": 2111, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_addresst_addresst_uint256": { + "entryPoint": 1861, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_decode_tuple_t_addresst_uint256": { + "entryPoint": 1701, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_bool_fromMemory": { + "entryPoint": 2275, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256_fromMemory": { + "entryPoint": 2341, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_t_address_to_t_address_fromStack": { + "entryPoint": 2175, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_bool_to_t_bool_fromStack": { + "entryPoint": 1777, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_contract$_IERC20_$77_to_t_address_fromStack": { + "entryPoint": 2069, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_uint256_to_t_uint256_fromStack": { + "entryPoint": 1819, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { + "entryPoint": 2441, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed": { + "entryPoint": 2468, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed": { + "entryPoint": 2386, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed": { + "entryPoint": 2190, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": { + "entryPoint": 1792, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_contract$_IERC20_$77__to_t_address__fromStack_reversed": { + "entryPoint": 2084, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { + "entryPoint": 1834, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "allocate_unbounded": { + "entryPoint": null, + "id": null, + "parameterSlots": 0, + "returnSlots": 1 + }, + "cleanup_t_address": { + "entryPoint": 1585, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_bool": { + "entryPoint": 1765, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint160": { + "entryPoint": 1553, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint256": { + "entryPoint": 1647, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "convert_t_contract$_IERC20_$77_to_t_address": { + "entryPoint": 2051, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "convert_t_uint160_to_t_address": { + "entryPoint": 2033, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "convert_t_uint160_to_t_uint160": { + "entryPoint": 1999, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "identity": { + "entryPoint": 1989, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": { + "entryPoint": null, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": { + "entryPoint": 1548, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "validator_revert_t_address": { + "entryPoint": 1603, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_t_bool": { + "entryPoint": 2231, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_t_uint256": { + "entryPoint": 1657, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:7399:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "47:35:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "57:19:1", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "73:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "67:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "67:9:1" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "57:6:1" + } + ] + } + ] + }, + "name": "allocate_unbounded", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "40:6:1", + "type": "" + } + ], + "src": "7:75:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "177:28:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "194:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "197:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "187:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "187:12:1" + }, + "nodeType": "YulExpressionStatement", + "src": "187:12:1" + } + ] + }, + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulFunctionDefinition", + "src": "88:117:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "300:28:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "317:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "320:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "310:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "310:12:1" + }, + "nodeType": "YulExpressionStatement", + "src": "310:12:1" + } + ] + }, + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulFunctionDefinition", + "src": "211:117:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "379:81:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "389:65:1", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "404:5:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "411:42:1", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "400:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "400:54:1" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "389:7:1" + } + ] + } + ] + }, + "name": "cleanup_t_uint160", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "361:5:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "371:7:1", + "type": "" + } + ], + "src": "334:126:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "511:51:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "521:35:1", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "550:5:1" + } + ], + "functionName": { + "name": "cleanup_t_uint160", + "nodeType": "YulIdentifier", + "src": "532:17:1" + }, + "nodeType": "YulFunctionCall", + "src": "532:24:1" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "521:7:1" + } + ] + } + ] + }, + "name": "cleanup_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "493:5:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "503:7:1", + "type": "" + } + ], + "src": "466:96:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "611:79:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "668:16:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "677:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "680:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "670:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "670:12:1" + }, + "nodeType": "YulExpressionStatement", + "src": "670:12:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "634:5:1" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "659:5:1" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "641:17:1" + }, + "nodeType": "YulFunctionCall", + "src": "641:24:1" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "631:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "631:35:1" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "624:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "624:43:1" + }, + "nodeType": "YulIf", + "src": "621:63:1" + } + ] + }, + "name": "validator_revert_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "604:5:1", + "type": "" + } + ], + "src": "568:122:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "748:87:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "758:29:1", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "780:6:1" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "767:12:1" + }, + "nodeType": "YulFunctionCall", + "src": "767:20:1" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "758:5:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "823:5:1" + } + ], + "functionName": { + "name": "validator_revert_t_address", + "nodeType": "YulIdentifier", + "src": "796:26:1" + }, + "nodeType": "YulFunctionCall", + "src": "796:33:1" + }, + "nodeType": "YulExpressionStatement", + "src": "796:33:1" + } + ] + }, + "name": "abi_decode_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "726:6:1", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "734:3:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "742:5:1", + "type": "" + } + ], + "src": "696:139:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "886:32:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "896:16:1", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "907:5:1" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "896:7:1" + } + ] + } + ] + }, + "name": "cleanup_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "868:5:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "878:7:1", + "type": "" + } + ], + "src": "841:77:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "967:79:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1024:16:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1033:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1036:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1026:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "1026:12:1" + }, + "nodeType": "YulExpressionStatement", + "src": "1026:12:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "990:5:1" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1015:5:1" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "997:17:1" + }, + "nodeType": "YulFunctionCall", + "src": "997:24:1" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "987:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "987:35:1" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "980:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "980:43:1" + }, + "nodeType": "YulIf", + "src": "977:63:1" + } + ] + }, + "name": "validator_revert_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "960:5:1", + "type": "" + } + ], + "src": "924:122:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1104:87:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1114:29:1", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1136:6:1" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1123:12:1" + }, + "nodeType": "YulFunctionCall", + "src": "1123:20:1" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1114:5:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1179:5:1" + } + ], + "functionName": { + "name": "validator_revert_t_uint256", + "nodeType": "YulIdentifier", + "src": "1152:26:1" + }, + "nodeType": "YulFunctionCall", + "src": "1152:33:1" + }, + "nodeType": "YulExpressionStatement", + "src": "1152:33:1" + } + ] + }, + "name": "abi_decode_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1082:6:1", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "1090:3:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1098:5:1", + "type": "" + } + ], + "src": "1052:139:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1280:391:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1326:83:1", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "1328:77:1" + }, + "nodeType": "YulFunctionCall", + "src": "1328:79:1" + }, + "nodeType": "YulExpressionStatement", + "src": "1328:79:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1301:7:1" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1310:9:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1297:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1297:23:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1322:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1293:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1293:32:1" + }, + "nodeType": "YulIf", + "src": "1290:119:1" + }, + { + "nodeType": "YulBlock", + "src": "1419:117:1", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "1434:15:1", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1448:1:1", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1438:6:1", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1463:63:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1498:9:1" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1509:6:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1494:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1494:22:1" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1518:7:1" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "1473:20:1" + }, + "nodeType": "YulFunctionCall", + "src": "1473:53:1" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1463:6:1" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "1546:118:1", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "1561:16:1", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1575:2:1", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1565:6:1", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1591:63:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1626:9:1" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1637:6:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1622:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1622:22:1" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1646:7:1" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "1601:20:1" + }, + "nodeType": "YulFunctionCall", + "src": "1601:53:1" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "1591:6:1" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1242:9:1", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1253:7:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1265:6:1", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "1273:6:1", + "type": "" + } + ], + "src": "1197:474:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1719:48:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1729:32:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1754:5:1" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1747:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "1747:13:1" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1740:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "1740:21:1" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "1729:7:1" + } + ] + } + ] + }, + "name": "cleanup_t_bool", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1701:5:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "1711:7:1", + "type": "" + } + ], + "src": "1677:90:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1832:50:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "1849:3:1" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1869:5:1" + } + ], + "functionName": { + "name": "cleanup_t_bool", + "nodeType": "YulIdentifier", + "src": "1854:14:1" + }, + "nodeType": "YulFunctionCall", + "src": "1854:21:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1842:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "1842:34:1" + }, + "nodeType": "YulExpressionStatement", + "src": "1842:34:1" + } + ] + }, + "name": "abi_encode_t_bool_to_t_bool_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1820:5:1", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "1827:3:1", + "type": "" + } + ], + "src": "1773:109:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1980:118:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1990:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2002:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2013:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1998:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1998:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1990:4:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2064:6:1" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2077:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2088:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2073:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "2073:17:1" + } + ], + "functionName": { + "name": "abi_encode_t_bool_to_t_bool_fromStack", + "nodeType": "YulIdentifier", + "src": "2026:37:1" + }, + "nodeType": "YulFunctionCall", + "src": "2026:65:1" + }, + "nodeType": "YulExpressionStatement", + "src": "2026:65:1" + } + ] + }, + "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1952:9:1", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1964:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1975:4:1", + "type": "" + } + ], + "src": "1888:210:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2169:53:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "2186:3:1" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2209:5:1" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "2191:17:1" + }, + "nodeType": "YulFunctionCall", + "src": "2191:24:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2179:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "2179:37:1" + }, + "nodeType": "YulExpressionStatement", + "src": "2179:37:1" + } + ] + }, + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2157:5:1", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "2164:3:1", + "type": "" + } + ], + "src": "2104:118:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2326:124:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2336:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2348:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2359:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2344:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "2344:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "2336:4:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2416:6:1" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2429:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2440:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2425:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "2425:17:1" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "2372:43:1" + }, + "nodeType": "YulFunctionCall", + "src": "2372:71:1" + }, + "nodeType": "YulExpressionStatement", + "src": "2372:71:1" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2298:9:1", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2310:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "2321:4:1", + "type": "" + } + ], + "src": "2228:222:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2556:519:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2602:83:1", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "2604:77:1" + }, + "nodeType": "YulFunctionCall", + "src": "2604:79:1" + }, + "nodeType": "YulExpressionStatement", + "src": "2604:79:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2577:7:1" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2586:9:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "2573:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "2573:23:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2598:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "2569:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "2569:32:1" + }, + "nodeType": "YulIf", + "src": "2566:119:1" + }, + { + "nodeType": "YulBlock", + "src": "2695:117:1", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "2710:15:1", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2724:1:1", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "2714:6:1", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2739:63:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2774:9:1" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2785:6:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2770:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "2770:22:1" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2794:7:1" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "2749:20:1" + }, + "nodeType": "YulFunctionCall", + "src": "2749:53:1" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2739:6:1" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "2822:118:1", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "2837:16:1", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2851:2:1", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "2841:6:1", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2867:63:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2902:9:1" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2913:6:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2898:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "2898:22:1" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2922:7:1" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "2877:20:1" + }, + "nodeType": "YulFunctionCall", + "src": "2877:53:1" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "2867:6:1" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "2950:118:1", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "2965:16:1", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2979:2:1", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "2969:6:1", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2995:63:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3030:9:1" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3041:6:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3026:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "3026:22:1" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "3050:7:1" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "3005:20:1" + }, + "nodeType": "YulFunctionCall", + "src": "3005:53:1" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "2995:6:1" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2510:9:1", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "2521:7:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2533:6:1", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "2541:6:1", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "2549:6:1", + "type": "" + } + ], + "src": "2456:619:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3147:263:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3193:83:1", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "3195:77:1" + }, + "nodeType": "YulFunctionCall", + "src": "3195:79:1" + }, + "nodeType": "YulExpressionStatement", + "src": "3195:79:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "3168:7:1" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3177:9:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "3164:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "3164:23:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3189:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "3160:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "3160:32:1" + }, + "nodeType": "YulIf", + "src": "3157:119:1" + }, + { + "nodeType": "YulBlock", + "src": "3286:117:1", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "3301:15:1", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3315:1:1", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "3305:6:1", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3330:63:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3365:9:1" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3376:6:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3361:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "3361:22:1" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "3385:7:1" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "3340:20:1" + }, + "nodeType": "YulFunctionCall", + "src": "3340:53:1" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "3330:6:1" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3117:9:1", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "3128:7:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "3140:6:1", + "type": "" + } + ], + "src": "3081:329:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3448:28:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3458:12:1", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3465:5:1" + }, + "variableNames": [ + { + "name": "ret", + "nodeType": "YulIdentifier", + "src": "3458:3:1" + } + ] + } + ] + }, + "name": "identity", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "3434:5:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nodeType": "YulTypedName", + "src": "3444:3:1", + "type": "" + } + ], + "src": "3416:60:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3542:82:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3552:66:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3610:5:1" + } + ], + "functionName": { + "name": "cleanup_t_uint160", + "nodeType": "YulIdentifier", + "src": "3592:17:1" + }, + "nodeType": "YulFunctionCall", + "src": "3592:24:1" + } + ], + "functionName": { + "name": "identity", + "nodeType": "YulIdentifier", + "src": "3583:8:1" + }, + "nodeType": "YulFunctionCall", + "src": "3583:34:1" + } + ], + "functionName": { + "name": "cleanup_t_uint160", + "nodeType": "YulIdentifier", + "src": "3565:17:1" + }, + "nodeType": "YulFunctionCall", + "src": "3565:53:1" + }, + "variableNames": [ + { + "name": "converted", + "nodeType": "YulIdentifier", + "src": "3552:9:1" + } + ] + } + ] + }, + "name": "convert_t_uint160_to_t_uint160", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "3522:5:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "converted", + "nodeType": "YulTypedName", + "src": "3532:9:1", + "type": "" + } + ], + "src": "3482:142:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3690:66:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3700:50:1", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3744:5:1" + } + ], + "functionName": { + "name": "convert_t_uint160_to_t_uint160", + "nodeType": "YulIdentifier", + "src": "3713:30:1" + }, + "nodeType": "YulFunctionCall", + "src": "3713:37:1" + }, + "variableNames": [ + { + "name": "converted", + "nodeType": "YulIdentifier", + "src": "3700:9:1" + } + ] + } + ] + }, + "name": "convert_t_uint160_to_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "3670:5:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "converted", + "nodeType": "YulTypedName", + "src": "3680:9:1", + "type": "" + } + ], + "src": "3630:126:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3835:66:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3845:50:1", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3889:5:1" + } + ], + "functionName": { + "name": "convert_t_uint160_to_t_address", + "nodeType": "YulIdentifier", + "src": "3858:30:1" + }, + "nodeType": "YulFunctionCall", + "src": "3858:37:1" + }, + "variableNames": [ + { + "name": "converted", + "nodeType": "YulIdentifier", + "src": "3845:9:1" + } + ] + } + ] + }, + "name": "convert_t_contract$_IERC20_$77_to_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "3815:5:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "converted", + "nodeType": "YulTypedName", + "src": "3825:9:1", + "type": "" + } + ], + "src": "3762:139:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3985:79:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "4002:3:1" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4051:5:1" + } + ], + "functionName": { + "name": "convert_t_contract$_IERC20_$77_to_t_address", + "nodeType": "YulIdentifier", + "src": "4007:43:1" + }, + "nodeType": "YulFunctionCall", + "src": "4007:50:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3995:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "3995:63:1" + }, + "nodeType": "YulExpressionStatement", + "src": "3995:63:1" + } + ] + }, + "name": "abi_encode_t_contract$_IERC20_$77_to_t_address_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "3973:5:1", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "3980:3:1", + "type": "" + } + ], + "src": "3907:157:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4181:137:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4191:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4203:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4214:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4199:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "4199:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "4191:4:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "4284:6:1" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4297:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4308:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4293:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "4293:17:1" + } + ], + "functionName": { + "name": "abi_encode_t_contract$_IERC20_$77_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "4227:56:1" + }, + "nodeType": "YulFunctionCall", + "src": "4227:84:1" + }, + "nodeType": "YulExpressionStatement", + "src": "4227:84:1" + } + ] + }, + "name": "abi_encode_tuple_t_contract$_IERC20_$77__to_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "4153:9:1", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "4165:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "4176:4:1", + "type": "" + } + ], + "src": "4070:248:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4407:391:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "4453:83:1", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "4455:77:1" + }, + "nodeType": "YulFunctionCall", + "src": "4455:79:1" + }, + "nodeType": "YulExpressionStatement", + "src": "4455:79:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4428:7:1" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4437:9:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "4424:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "4424:23:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4449:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "4420:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "4420:32:1" + }, + "nodeType": "YulIf", + "src": "4417:119:1" + }, + { + "nodeType": "YulBlock", + "src": "4546:117:1", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "4561:15:1", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4575:1:1", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "4565:6:1", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4590:63:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4625:9:1" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4636:6:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4621:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "4621:22:1" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4645:7:1" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "4600:20:1" + }, + "nodeType": "YulFunctionCall", + "src": "4600:53:1" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "4590:6:1" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "4673:118:1", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "4688:16:1", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4702:2:1", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "4692:6:1", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4718:63:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4753:9:1" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4764:6:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4749:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "4749:22:1" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4773:7:1" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "4728:20:1" + }, + "nodeType": "YulFunctionCall", + "src": "4728:53:1" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "4718:6:1" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "4369:9:1", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "4380:7:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "4392:6:1", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "4400:6:1", + "type": "" + } + ], + "src": "4324:474:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4869:53:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "4886:3:1" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4909:5:1" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "4891:17:1" + }, + "nodeType": "YulFunctionCall", + "src": "4891:24:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4879:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "4879:37:1" + }, + "nodeType": "YulExpressionStatement", + "src": "4879:37:1" + } + ] + }, + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "4857:5:1", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "4864:3:1", + "type": "" + } + ], + "src": "4804:118:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5054:206:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5064:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5076:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5087:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5072:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "5072:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "5064:4:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "5144:6:1" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5157:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5168:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5153:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "5153:17:1" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "5100:43:1" + }, + "nodeType": "YulFunctionCall", + "src": "5100:71:1" + }, + "nodeType": "YulExpressionStatement", + "src": "5100:71:1" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "5225:6:1" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5238:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5249:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5234:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "5234:18:1" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "5181:43:1" + }, + "nodeType": "YulFunctionCall", + "src": "5181:72:1" + }, + "nodeType": "YulExpressionStatement", + "src": "5181:72:1" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "5018:9:1", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "5030:6:1", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "5038:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "5049:4:1", + "type": "" + } + ], + "src": "4928:332:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5306:76:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "5360:16:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5369:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5372:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "5362:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "5362:12:1" + }, + "nodeType": "YulExpressionStatement", + "src": "5362:12:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5329:5:1" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5351:5:1" + } + ], + "functionName": { + "name": "cleanup_t_bool", + "nodeType": "YulIdentifier", + "src": "5336:14:1" + }, + "nodeType": "YulFunctionCall", + "src": "5336:21:1" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "5326:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "5326:32:1" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "5319:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "5319:40:1" + }, + "nodeType": "YulIf", + "src": "5316:60:1" + } + ] + }, + "name": "validator_revert_t_bool", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "5299:5:1", + "type": "" + } + ], + "src": "5266:116:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5448:77:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5458:22:1", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5473:6:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "5467:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "5467:13:1" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5458:5:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5513:5:1" + } + ], + "functionName": { + "name": "validator_revert_t_bool", + "nodeType": "YulIdentifier", + "src": "5489:23:1" + }, + "nodeType": "YulFunctionCall", + "src": "5489:30:1" + }, + "nodeType": "YulExpressionStatement", + "src": "5489:30:1" + } + ] + }, + "name": "abi_decode_t_bool_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "5426:6:1", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "5434:3:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "5442:5:1", + "type": "" + } + ], + "src": "5388:137:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5605:271:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "5651:83:1", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "5653:77:1" + }, + "nodeType": "YulFunctionCall", + "src": "5653:79:1" + }, + "nodeType": "YulExpressionStatement", + "src": "5653:79:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "5626:7:1" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5635:9:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "5622:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "5622:23:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5647:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "5618:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "5618:32:1" + }, + "nodeType": "YulIf", + "src": "5615:119:1" + }, + { + "nodeType": "YulBlock", + "src": "5744:125:1", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "5759:15:1", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5773:1:1", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "5763:6:1", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5788:71:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5831:9:1" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5842:6:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5827:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "5827:22:1" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "5851:7:1" + } + ], + "functionName": { + "name": "abi_decode_t_bool_fromMemory", + "nodeType": "YulIdentifier", + "src": "5798:28:1" + }, + "nodeType": "YulFunctionCall", + "src": "5798:61:1" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "5788:6:1" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bool_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "5575:9:1", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "5586:7:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "5598:6:1", + "type": "" + } + ], + "src": "5531:345:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5945:80:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5955:22:1", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5970:6:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "5964:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "5964:13:1" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5955:5:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "6013:5:1" + } + ], + "functionName": { + "name": "validator_revert_t_uint256", + "nodeType": "YulIdentifier", + "src": "5986:26:1" + }, + "nodeType": "YulFunctionCall", + "src": "5986:33:1" + }, + "nodeType": "YulExpressionStatement", + "src": "5986:33:1" + } + ] + }, + "name": "abi_decode_t_uint256_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "5923:6:1", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "5931:3:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "5939:5:1", + "type": "" + } + ], + "src": "5882:143:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6108:274:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "6154:83:1", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "6156:77:1" + }, + "nodeType": "YulFunctionCall", + "src": "6156:79:1" + }, + "nodeType": "YulExpressionStatement", + "src": "6156:79:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "6129:7:1" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6138:9:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "6125:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "6125:23:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6150:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "6121:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "6121:32:1" + }, + "nodeType": "YulIf", + "src": "6118:119:1" + }, + { + "nodeType": "YulBlock", + "src": "6247:128:1", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "6262:15:1", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6276:1:1", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "6266:6:1", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "6291:74:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6337:9:1" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6348:6:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6333:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "6333:22:1" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "6357:7:1" + } + ], + "functionName": { + "name": "abi_decode_t_uint256_fromMemory", + "nodeType": "YulIdentifier", + "src": "6301:31:1" + }, + "nodeType": "YulFunctionCall", + "src": "6301:64:1" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "6291:6:1" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "6078:9:1", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "6089:7:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "6101:6:1", + "type": "" + } + ], + "src": "6031:351:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6542:288:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6552:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6564:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6575:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6560:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "6560:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6552:4:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "6632:6:1" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6645:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6656:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6641:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "6641:17:1" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "6588:43:1" + }, + "nodeType": "YulFunctionCall", + "src": "6588:71:1" + }, + "nodeType": "YulExpressionStatement", + "src": "6588:71:1" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "6713:6:1" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6726:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6737:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6722:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "6722:18:1" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "6669:43:1" + }, + "nodeType": "YulFunctionCall", + "src": "6669:72:1" + }, + "nodeType": "YulExpressionStatement", + "src": "6669:72:1" + }, + { + "expression": { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "6795:6:1" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6808:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6819:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6804:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "6804:18:1" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "6751:43:1" + }, + "nodeType": "YulFunctionCall", + "src": "6751:72:1" + }, + "nodeType": "YulExpressionStatement", + "src": "6751:72:1" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "6498:9:1", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "6510:6:1", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "6518:6:1", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "6526:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "6537:4:1", + "type": "" + } + ], + "src": "6388:442:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6934:124:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6944:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6956:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6967:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6952:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "6952:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6944:4:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "7024:6:1" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7037:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7048:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7033:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "7033:17:1" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "6980:43:1" + }, + "nodeType": "YulFunctionCall", + "src": "6980:71:1" + }, + "nodeType": "YulExpressionStatement", + "src": "6980:71:1" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "6906:9:1", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "6918:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "6929:4:1", + "type": "" + } + ], + "src": "6836:222:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7190:206:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7200:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7212:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7223:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7208:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "7208:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7200:4:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "7280:6:1" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7293:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7304:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7289:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "7289:17:1" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "7236:43:1" + }, + "nodeType": "YulFunctionCall", + "src": "7236:71:1" + }, + "nodeType": "YulExpressionStatement", + "src": "7236:71:1" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "7361:6:1" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7374:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7385:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7370:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "7370:18:1" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "7317:43:1" + }, + "nodeType": "YulFunctionCall", + "src": "7317:72:1" + }, + "nodeType": "YulExpressionStatement", + "src": "7317:72:1" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "7154:9:1", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "7166:6:1", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "7174:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "7185:4:1", + "type": "" + } + ], + "src": "7064:332:1" + } + ] + }, + "contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint160_to_t_uint160(value) -> converted {\n converted := cleanup_t_uint160(identity(cleanup_t_uint160(value)))\n }\n\n function convert_t_uint160_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_uint160(value)\n }\n\n function convert_t_contract$_IERC20_$77_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_address(value)\n }\n\n function abi_encode_t_contract$_IERC20_$77_to_t_address_fromStack(value, pos) {\n mstore(pos, convert_t_contract$_IERC20_$77_to_t_address(value))\n }\n\n function abi_encode_tuple_t_contract$_IERC20_$77__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_contract$_IERC20_$77_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n function validator_revert_t_bool(value) {\n if iszero(eq(value, cleanup_t_bool(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bool_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_bool(value)\n }\n\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bool_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_t_uint256_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n }\n\n}\n", + "id": 1, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": {}, + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b506004361061007d5760003560e01c806370a082311161005b57806370a0823114610100578063785e9e8614610130578063a9059cbb1461014e578063dd62ed3e1461017e5761007d565b8063095ea7b31461008257806318160ddd146100b257806323b872dd146100d0575b600080fd5b61009c600480360381019061009791906106a5565b6101ae565b6040516100a99190610700565b60405180910390f35b6100ba610266565b6040516100c7919061072a565b60405180910390f35b6100ea60048036038101906100e59190610745565b61030c565b6040516100f79190610700565b60405180910390f35b61011a60048036038101906101159190610798565b6103c7565b604051610127919061072a565b60405180910390f35b61013861047a565b6040516101459190610824565b60405180910390f35b610168600480360381019061016391906106a5565b61049e565b6040516101759190610700565b60405180910390f35b6101986004803603810190610193919061083f565b610556565b6040516101a5919061072a565b60405180910390f35b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b815260040161020c92919061088e565b602060405180830381600087803b15801561022657600080fd5b505af115801561023a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061025e91906108e3565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102cf57600080fd5b505afa1580156102e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103079190610925565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd8585856040518463ffffffff1660e01b815260040161036c93929190610952565b602060405180830381600087803b15801561038657600080fd5b505af115801561039a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103be91906108e3565b90509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b81526004016104239190610989565b60206040518083038186803b15801561043b57600080fd5b505afa15801561044f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104739190610925565b9050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b81526004016104fc92919061088e565b602060405180830381600087803b15801561051657600080fd5b505af115801561052a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054e91906108e3565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e84846040518363ffffffff1660e01b81526004016105b49291906109a4565b60206040518083038186803b1580156105cc57600080fd5b505afa1580156105e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106049190610925565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061063c82610611565b9050919050565b61064c81610631565b811461065757600080fd5b50565b60008135905061066981610643565b92915050565b6000819050919050565b6106828161066f565b811461068d57600080fd5b50565b60008135905061069f81610679565b92915050565b600080604083850312156106bc576106bb61060c565b5b60006106ca8582860161065a565b92505060206106db85828601610690565b9150509250929050565b60008115159050919050565b6106fa816106e5565b82525050565b600060208201905061071560008301846106f1565b92915050565b6107248161066f565b82525050565b600060208201905061073f600083018461071b565b92915050565b60008060006060848603121561075e5761075d61060c565b5b600061076c8682870161065a565b935050602061077d8682870161065a565b925050604061078e86828701610690565b9150509250925092565b6000602082840312156107ae576107ad61060c565b5b60006107bc8482850161065a565b91505092915050565b6000819050919050565b60006107ea6107e56107e084610611565b6107c5565b610611565b9050919050565b60006107fc826107cf565b9050919050565b600061080e826107f1565b9050919050565b61081e81610803565b82525050565b60006020820190506108396000830184610815565b92915050565b600080604083850312156108565761085561060c565b5b60006108648582860161065a565b92505060206108758582860161065a565b9150509250929050565b61088881610631565b82525050565b60006040820190506108a3600083018561087f565b6108b0602083018461071b565b9392505050565b6108c0816106e5565b81146108cb57600080fd5b50565b6000815190506108dd816108b7565b92915050565b6000602082840312156108f9576108f861060c565b5b6000610907848285016108ce565b91505092915050565b60008151905061091f81610679565b92915050565b60006020828403121561093b5761093a61060c565b5b600061094984828501610910565b91505092915050565b6000606082019050610967600083018661087f565b610974602083018561087f565b610981604083018461071b565b949350505050565b600060208201905061099e600083018461087f565b92915050565b60006040820190506109b9600083018561087f565b6109c6602083018461087f565b939250505056fea264697066735822122004515cd8a6be26b5f970dbad408f3450176de6bafe2c9640b5544682d4c27bba64736f6c63430008090033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x100 JUMPI DUP1 PUSH4 0x785E9E86 EQ PUSH2 0x130 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x14E JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x17E JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xB2 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xD0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x97 SWAP2 SWAP1 PUSH2 0x6A5 JUMP JUMPDEST PUSH2 0x1AE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0x700 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xBA PUSH2 0x266 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC7 SWAP2 SWAP1 PUSH2 0x72A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xEA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xE5 SWAP2 SWAP1 PUSH2 0x745 JUMP JUMPDEST PUSH2 0x30C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF7 SWAP2 SWAP1 PUSH2 0x700 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x11A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x115 SWAP2 SWAP1 PUSH2 0x798 JUMP JUMPDEST PUSH2 0x3C7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x127 SWAP2 SWAP1 PUSH2 0x72A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x138 PUSH2 0x47A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x145 SWAP2 SWAP1 PUSH2 0x824 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x163 SWAP2 SWAP1 PUSH2 0x6A5 JUMP JUMPDEST PUSH2 0x49E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x175 SWAP2 SWAP1 PUSH2 0x700 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x198 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x193 SWAP2 SWAP1 PUSH2 0x83F JUMP JUMPDEST PUSH2 0x556 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A5 SWAP2 SWAP1 PUSH2 0x72A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP5 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x20C SWAP3 SWAP2 SWAP1 PUSH2 0x88E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x226 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x23A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x25E SWAP2 SWAP1 PUSH2 0x8E3 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2E3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x307 SWAP2 SWAP1 PUSH2 0x925 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x23B872DD DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x36C SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x952 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x386 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x39A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3BE SWAP2 SWAP1 PUSH2 0x8E3 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x423 SWAP2 SWAP1 PUSH2 0x989 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x43B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x44F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x473 SWAP2 SWAP1 PUSH2 0x925 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP5 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4FC SWAP3 SWAP2 SWAP1 PUSH2 0x88E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x516 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x52A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x54E SWAP2 SWAP1 PUSH2 0x8E3 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDD62ED3E DUP5 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5B4 SWAP3 SWAP2 SWAP1 PUSH2 0x9A4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5E0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x604 SWAP2 SWAP1 PUSH2 0x925 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x63C DUP3 PUSH2 0x611 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x64C DUP2 PUSH2 0x631 JUMP JUMPDEST DUP2 EQ PUSH2 0x657 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x669 DUP2 PUSH2 0x643 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x682 DUP2 PUSH2 0x66F JUMP JUMPDEST DUP2 EQ PUSH2 0x68D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x69F DUP2 PUSH2 0x679 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x6BC JUMPI PUSH2 0x6BB PUSH2 0x60C JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x6CA DUP6 DUP3 DUP7 ADD PUSH2 0x65A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x6DB DUP6 DUP3 DUP7 ADD PUSH2 0x690 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6FA DUP2 PUSH2 0x6E5 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x715 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x6F1 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x724 DUP2 PUSH2 0x66F JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x73F PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x71B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x75E JUMPI PUSH2 0x75D PUSH2 0x60C JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x76C DUP7 DUP3 DUP8 ADD PUSH2 0x65A JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x77D DUP7 DUP3 DUP8 ADD PUSH2 0x65A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x78E DUP7 DUP3 DUP8 ADD PUSH2 0x690 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7AE JUMPI PUSH2 0x7AD PUSH2 0x60C JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x7BC DUP5 DUP3 DUP6 ADD PUSH2 0x65A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7EA PUSH2 0x7E5 PUSH2 0x7E0 DUP5 PUSH2 0x611 JUMP JUMPDEST PUSH2 0x7C5 JUMP JUMPDEST PUSH2 0x611 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7FC DUP3 PUSH2 0x7CF JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x80E DUP3 PUSH2 0x7F1 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x81E DUP2 PUSH2 0x803 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x839 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x815 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x856 JUMPI PUSH2 0x855 PUSH2 0x60C JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x864 DUP6 DUP3 DUP7 ADD PUSH2 0x65A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x875 DUP6 DUP3 DUP7 ADD PUSH2 0x65A JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x888 DUP2 PUSH2 0x631 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x8A3 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x87F JUMP JUMPDEST PUSH2 0x8B0 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x71B JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x8C0 DUP2 PUSH2 0x6E5 JUMP JUMPDEST DUP2 EQ PUSH2 0x8CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x8DD DUP2 PUSH2 0x8B7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x8F9 JUMPI PUSH2 0x8F8 PUSH2 0x60C JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x907 DUP5 DUP3 DUP6 ADD PUSH2 0x8CE JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x91F DUP2 PUSH2 0x679 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x93B JUMPI PUSH2 0x93A PUSH2 0x60C JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x949 DUP5 DUP3 DUP6 ADD PUSH2 0x910 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x967 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x87F JUMP JUMPDEST PUSH2 0x974 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x87F JUMP JUMPDEST PUSH2 0x981 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x71B JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x99E PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x87F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x9B9 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x87F JUMP JUMPDEST PUSH2 0x9C6 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x87F JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DIV MLOAD 0x5C 0xD8 0xA6 0xBE 0x26 0xB5 0xF9 PUSH17 0xDBAD408F3450176DE6BAFE2C9640B55446 DUP3 0xD4 0xC2 PUSH28 0xBA64736F6C6343000809003300000000000000000000000000000000 ", + "sourceMap": "3476:1355:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4475:152;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3664:202;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4653:172;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3892:212;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3577:72;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4306:143;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4130:162;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4475:152;4551:4;4582:5;;;;;;;;;;;:14;;;4597:7;4606:5;4582:30;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4575:37;;4475:152;;;;:::o;3664:202::-;3719:7;3832:5;;;;;;;;;;;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3825:26;;3664:202;:::o;4653:172::-;4743:4;4774:5;;;;;;;;;;;:18;;;4793:4;4800:2;4804:5;4774:36;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4767:43;;4653:172;;;;;:::o;3892:212::-;3956:7;4069:5;;;;;;;;;;;:15;;;4085:3;4069:20;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4062:27;;3892:212;;;:::o;3577:72::-;;;;;;;;;;;;:::o;4306:143::-;4378:4;4409:5;;;;;;;;;;;:14;;;4424:2;4428:5;4409:25;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4402:32;;4306:143;;;;:::o;4130:162::-;4213:7;4246:5;;;;;;;;;;;:15;;;4262:5;4269:7;4246:31;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4239:38;;4130:162;;;;:::o;88:117:1:-;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:77::-;878:7;907:5;896:16;;841:77;;;:::o;924:122::-;997:24;1015:5;997:24;:::i;:::-;990:5;987:35;977:63;;1036:1;1033;1026:12;977:63;924:122;:::o;1052:139::-;1098:5;1136:6;1123:20;1114:29;;1152:33;1179:5;1152:33;:::i;:::-;1052:139;;;;:::o;1197:474::-;1265:6;1273;1322:2;1310:9;1301:7;1297:23;1293:32;1290:119;;;1328:79;;:::i;:::-;1290:119;1448:1;1473:53;1518:7;1509:6;1498:9;1494:22;1473:53;:::i;:::-;1463:63;;1419:117;1575:2;1601:53;1646:7;1637:6;1626:9;1622:22;1601:53;:::i;:::-;1591:63;;1546:118;1197:474;;;;;:::o;1677:90::-;1711:7;1754:5;1747:13;1740:21;1729:32;;1677:90;;;:::o;1773:109::-;1854:21;1869:5;1854:21;:::i;:::-;1849:3;1842:34;1773:109;;:::o;1888:210::-;1975:4;2013:2;2002:9;1998:18;1990:26;;2026:65;2088:1;2077:9;2073:17;2064:6;2026:65;:::i;:::-;1888:210;;;;:::o;2104:118::-;2191:24;2209:5;2191:24;:::i;:::-;2186:3;2179:37;2104:118;;:::o;2228:222::-;2321:4;2359:2;2348:9;2344:18;2336:26;;2372:71;2440:1;2429:9;2425:17;2416:6;2372:71;:::i;:::-;2228:222;;;;:::o;2456:619::-;2533:6;2541;2549;2598:2;2586:9;2577:7;2573:23;2569:32;2566:119;;;2604:79;;:::i;:::-;2566:119;2724:1;2749:53;2794:7;2785:6;2774:9;2770:22;2749:53;:::i;:::-;2739:63;;2695:117;2851:2;2877:53;2922:7;2913:6;2902:9;2898:22;2877:53;:::i;:::-;2867:63;;2822:118;2979:2;3005:53;3050:7;3041:6;3030:9;3026:22;3005:53;:::i;:::-;2995:63;;2950:118;2456:619;;;;;:::o;3081:329::-;3140:6;3189:2;3177:9;3168:7;3164:23;3160:32;3157:119;;;3195:79;;:::i;:::-;3157:119;3315:1;3340:53;3385:7;3376:6;3365:9;3361:22;3340:53;:::i;:::-;3330:63;;3286:117;3081:329;;;;:::o;3416:60::-;3444:3;3465:5;3458:12;;3416:60;;;:::o;3482:142::-;3532:9;3565:53;3583:34;3592:24;3610:5;3592:24;:::i;:::-;3583:34;:::i;:::-;3565:53;:::i;:::-;3552:66;;3482:142;;;:::o;3630:126::-;3680:9;3713:37;3744:5;3713:37;:::i;:::-;3700:50;;3630:126;;;:::o;3762:139::-;3825:9;3858:37;3889:5;3858:37;:::i;:::-;3845:50;;3762:139;;;:::o;3907:157::-;4007:50;4051:5;4007:50;:::i;:::-;4002:3;3995:63;3907:157;;:::o;4070:248::-;4176:4;4214:2;4203:9;4199:18;4191:26;;4227:84;4308:1;4297:9;4293:17;4284:6;4227:84;:::i;:::-;4070:248;;;;:::o;4324:474::-;4392:6;4400;4449:2;4437:9;4428:7;4424:23;4420:32;4417:119;;;4455:79;;:::i;:::-;4417:119;4575:1;4600:53;4645:7;4636:6;4625:9;4621:22;4600:53;:::i;:::-;4590:63;;4546:117;4702:2;4728:53;4773:7;4764:6;4753:9;4749:22;4728:53;:::i;:::-;4718:63;;4673:118;4324:474;;;;;:::o;4804:118::-;4891:24;4909:5;4891:24;:::i;:::-;4886:3;4879:37;4804:118;;:::o;4928:332::-;5049:4;5087:2;5076:9;5072:18;5064:26;;5100:71;5168:1;5157:9;5153:17;5144:6;5100:71;:::i;:::-;5181:72;5249:2;5238:9;5234:18;5225:6;5181:72;:::i;:::-;4928:332;;;;;:::o;5266:116::-;5336:21;5351:5;5336:21;:::i;:::-;5329:5;5326:32;5316:60;;5372:1;5369;5362:12;5316:60;5266:116;:::o;5388:137::-;5442:5;5473:6;5467:13;5458:22;;5489:30;5513:5;5489:30;:::i;:::-;5388:137;;;;:::o;5531:345::-;5598:6;5647:2;5635:9;5626:7;5622:23;5618:32;5615:119;;;5653:79;;:::i;:::-;5615:119;5773:1;5798:61;5851:7;5842:6;5831:9;5827:22;5798:61;:::i;:::-;5788:71;;5744:125;5531:345;;;;:::o;5882:143::-;5939:5;5970:6;5964:13;5955:22;;5986:33;6013:5;5986:33;:::i;:::-;5882:143;;;;:::o;6031:351::-;6101:6;6150:2;6138:9;6129:7;6125:23;6121:32;6118:119;;;6156:79;;:::i;:::-;6118:119;6276:1;6301:64;6357:7;6348:6;6337:9;6333:22;6301:64;:::i;:::-;6291:74;;6247:128;6031:351;;;;:::o;6388:442::-;6537:4;6575:2;6564:9;6560:18;6552:26;;6588:71;6656:1;6645:9;6641:17;6632:6;6588:71;:::i;:::-;6669:72;6737:2;6726:9;6722:18;6713:6;6669:72;:::i;:::-;6751;6819:2;6808:9;6804:18;6795:6;6751:72;:::i;:::-;6388:442;;;;;;:::o;6836:222::-;6929:4;6967:2;6956:9;6952:18;6944:26;;6980:71;7048:1;7037:9;7033:17;7024:6;6980:71;:::i;:::-;6836:222;;;;:::o;7064:332::-;7185:4;7223:2;7212:9;7208:18;7200:26;;7236:71;7304:1;7293:9;7289:17;7280:6;7236:71;:::i;:::-;7317:72;7385:2;7374:9;7370:18;7361:6;7317:72;:::i;:::-;7064:332;;;;;:::o" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "512600", + "executionCost": "24816", + "totalCost": "537416" + }, + "external": { + "allowance(address,address)": "infinite", + "approve(address,uint256)": "infinite", + "balanceOf(address)": "infinite", + "erc20()": "infinite", + "totalSupply()": "infinite", + "transfer(address,uint256)": "infinite", + "transferFrom(address,address,uint256)": "infinite" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 3476, + "end": 4831, + "name": "PUSH", + "source": 0, + "value": "80" + }, + { + "begin": 3476, + "end": 4831, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { "begin": 3476, "end": 4831, "name": "MSTORE", "source": 0 }, + { + "begin": 3606, + "end": 3648, + "name": "PUSH", + "source": 0, + "value": "802" + }, + { + "begin": 3577, + "end": 3649, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { "begin": 3577, "end": 3649, "name": "DUP1", "source": 0 }, + { + "begin": 3577, + "end": 3649, + "name": "PUSH", + "source": 0, + "value": "100" + }, + { "begin": 3577, "end": 3649, "name": "EXP", "source": 0 }, + { "begin": 3577, "end": 3649, "name": "DUP2", "source": 0 }, + { "begin": 3577, "end": 3649, "name": "SLOAD", "source": 0 }, + { "begin": 3577, "end": 3649, "name": "DUP2", "source": 0 }, + { + "begin": 3577, + "end": 3649, + "name": "PUSH", + "source": 0, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { "begin": 3577, "end": 3649, "name": "MUL", "source": 0 }, + { "begin": 3577, "end": 3649, "name": "NOT", "source": 0 }, + { "begin": 3577, "end": 3649, "name": "AND", "source": 0 }, + { "begin": 3577, "end": 3649, "name": "SWAP1", "source": 0 }, + { "begin": 3577, "end": 3649, "name": "DUP4", "source": 0 }, + { + "begin": 3577, + "end": 3649, + "name": "PUSH", + "source": 0, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { "begin": 3577, "end": 3649, "name": "AND", "source": 0 }, + { "begin": 3577, "end": 3649, "name": "MUL", "source": 0 }, + { "begin": 3577, "end": 3649, "name": "OR", "source": 0 }, + { "begin": 3577, "end": 3649, "name": "SWAP1", "source": 0 }, + { "begin": 3577, "end": 3649, "name": "SSTORE", "source": 0 }, + { "begin": 3577, "end": 3649, "name": "POP", "source": 0 }, + { "begin": 3476, "end": 4831, "name": "CALLVALUE", "source": 0 }, + { "begin": 3476, "end": 4831, "name": "DUP1", "source": 0 }, + { "begin": 3476, "end": 4831, "name": "ISZERO", "source": 0 }, + { + "begin": 3476, + "end": 4831, + "name": "PUSH [tag]", + "source": 0, + "value": "1" + }, + { "begin": 3476, "end": 4831, "name": "JUMPI", "source": 0 }, + { + "begin": 3476, + "end": 4831, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { "begin": 3476, "end": 4831, "name": "DUP1", "source": 0 }, + { "begin": 3476, "end": 4831, "name": "REVERT", "source": 0 }, + { + "begin": 3476, + "end": 4831, + "name": "tag", + "source": 0, + "value": "1" + }, + { "begin": 3476, "end": 4831, "name": "JUMPDEST", "source": 0 }, + { "begin": 3476, "end": 4831, "name": "POP", "source": 0 }, + { + "begin": 3476, + "end": 4831, + "name": "PUSH #[$]", + "source": 0, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { "begin": 3476, "end": 4831, "name": "DUP1", "source": 0 }, + { + "begin": 3476, + "end": 4831, + "name": "PUSH [$]", + "source": 0, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 3476, + "end": 4831, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { "begin": 3476, "end": 4831, "name": "CODECOPY", "source": 0 }, + { + "begin": 3476, + "end": 4831, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { "begin": 3476, "end": 4831, "name": "RETURN", "source": 0 } + ], + ".data": { + "0": { + ".auxdata": "a264697066735822122004515cd8a6be26b5f970dbad408f3450176de6bafe2c9640b5544682d4c27bba64736f6c63430008090033", + ".code": [ + { + "begin": 3476, + "end": 4831, + "name": "PUSH", + "source": 0, + "value": "80" + }, + { + "begin": 3476, + "end": 4831, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { "begin": 3476, "end": 4831, "name": "MSTORE", "source": 0 }, + { "begin": 3476, "end": 4831, "name": "CALLVALUE", "source": 0 }, + { "begin": 3476, "end": 4831, "name": "DUP1", "source": 0 }, + { "begin": 3476, "end": 4831, "name": "ISZERO", "source": 0 }, + { + "begin": 3476, + "end": 4831, + "name": "PUSH [tag]", + "source": 0, + "value": "1" + }, + { "begin": 3476, "end": 4831, "name": "JUMPI", "source": 0 }, + { + "begin": 3476, + "end": 4831, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { "begin": 3476, "end": 4831, "name": "DUP1", "source": 0 }, + { "begin": 3476, "end": 4831, "name": "REVERT", "source": 0 }, + { + "begin": 3476, + "end": 4831, + "name": "tag", + "source": 0, + "value": "1" + }, + { "begin": 3476, "end": 4831, "name": "JUMPDEST", "source": 0 }, + { "begin": 3476, "end": 4831, "name": "POP", "source": 0 }, + { + "begin": 3476, + "end": 4831, + "name": "PUSH", + "source": 0, + "value": "4" + }, + { + "begin": 3476, + "end": 4831, + "name": "CALLDATASIZE", + "source": 0 + }, + { "begin": 3476, "end": 4831, "name": "LT", "source": 0 }, + { + "begin": 3476, + "end": 4831, + "name": "PUSH [tag]", + "source": 0, + "value": "2" + }, + { "begin": 3476, "end": 4831, "name": "JUMPI", "source": 0 }, + { + "begin": 3476, + "end": 4831, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 3476, + "end": 4831, + "name": "CALLDATALOAD", + "source": 0 + }, + { + "begin": 3476, + "end": 4831, + "name": "PUSH", + "source": 0, + "value": "E0" + }, + { "begin": 3476, "end": 4831, "name": "SHR", "source": 0 }, + { "begin": 3476, "end": 4831, "name": "DUP1", "source": 0 }, + { + "begin": 3476, + "end": 4831, + "name": "PUSH", + "source": 0, + "value": "70A08231" + }, + { "begin": 3476, "end": 4831, "name": "GT", "source": 0 }, + { + "begin": 3476, + "end": 4831, + "name": "PUSH [tag]", + "source": 0, + "value": "10" + }, + { "begin": 3476, "end": 4831, "name": "JUMPI", "source": 0 }, + { "begin": 3476, "end": 4831, "name": "DUP1", "source": 0 }, + { + "begin": 3476, + "end": 4831, + "name": "PUSH", + "source": 0, + "value": "70A08231" + }, + { "begin": 3476, "end": 4831, "name": "EQ", "source": 0 }, + { + "begin": 3476, + "end": 4831, + "name": "PUSH [tag]", + "source": 0, + "value": "6" + }, + { "begin": 3476, "end": 4831, "name": "JUMPI", "source": 0 }, + { "begin": 3476, "end": 4831, "name": "DUP1", "source": 0 }, + { + "begin": 3476, + "end": 4831, + "name": "PUSH", + "source": 0, + "value": "785E9E86" + }, + { "begin": 3476, "end": 4831, "name": "EQ", "source": 0 }, + { + "begin": 3476, + "end": 4831, + "name": "PUSH [tag]", + "source": 0, + "value": "7" + }, + { "begin": 3476, "end": 4831, "name": "JUMPI", "source": 0 }, + { "begin": 3476, "end": 4831, "name": "DUP1", "source": 0 }, + { + "begin": 3476, + "end": 4831, + "name": "PUSH", + "source": 0, + "value": "A9059CBB" + }, + { "begin": 3476, "end": 4831, "name": "EQ", "source": 0 }, + { + "begin": 3476, + "end": 4831, + "name": "PUSH [tag]", + "source": 0, + "value": "8" + }, + { "begin": 3476, "end": 4831, "name": "JUMPI", "source": 0 }, + { "begin": 3476, "end": 4831, "name": "DUP1", "source": 0 }, + { + "begin": 3476, + "end": 4831, + "name": "PUSH", + "source": 0, + "value": "DD62ED3E" + }, + { "begin": 3476, "end": 4831, "name": "EQ", "source": 0 }, + { + "begin": 3476, + "end": 4831, + "name": "PUSH [tag]", + "source": 0, + "value": "9" + }, + { "begin": 3476, "end": 4831, "name": "JUMPI", "source": 0 }, + { + "begin": 3476, + "end": 4831, + "name": "PUSH [tag]", + "source": 0, + "value": "2" + }, + { "begin": 3476, "end": 4831, "name": "JUMP", "source": 0 }, + { + "begin": 3476, + "end": 4831, + "name": "tag", + "source": 0, + "value": "10" + }, + { "begin": 3476, "end": 4831, "name": "JUMPDEST", "source": 0 }, + { "begin": 3476, "end": 4831, "name": "DUP1", "source": 0 }, + { + "begin": 3476, + "end": 4831, + "name": "PUSH", + "source": 0, + "value": "95EA7B3" + }, + { "begin": 3476, "end": 4831, "name": "EQ", "source": 0 }, + { + "begin": 3476, + "end": 4831, + "name": "PUSH [tag]", + "source": 0, + "value": "3" + }, + { "begin": 3476, "end": 4831, "name": "JUMPI", "source": 0 }, + { "begin": 3476, "end": 4831, "name": "DUP1", "source": 0 }, + { + "begin": 3476, + "end": 4831, + "name": "PUSH", + "source": 0, + "value": "18160DDD" + }, + { "begin": 3476, "end": 4831, "name": "EQ", "source": 0 }, + { + "begin": 3476, + "end": 4831, + "name": "PUSH [tag]", + "source": 0, + "value": "4" + }, + { "begin": 3476, "end": 4831, "name": "JUMPI", "source": 0 }, + { "begin": 3476, "end": 4831, "name": "DUP1", "source": 0 }, + { + "begin": 3476, + "end": 4831, + "name": "PUSH", + "source": 0, + "value": "23B872DD" + }, + { "begin": 3476, "end": 4831, "name": "EQ", "source": 0 }, + { + "begin": 3476, + "end": 4831, + "name": "PUSH [tag]", + "source": 0, + "value": "5" + }, + { "begin": 3476, "end": 4831, "name": "JUMPI", "source": 0 }, + { + "begin": 3476, + "end": 4831, + "name": "tag", + "source": 0, + "value": "2" + }, + { "begin": 3476, "end": 4831, "name": "JUMPDEST", "source": 0 }, + { + "begin": 3476, + "end": 4831, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { "begin": 3476, "end": 4831, "name": "DUP1", "source": 0 }, + { "begin": 3476, "end": 4831, "name": "REVERT", "source": 0 }, + { + "begin": 4475, + "end": 4627, + "name": "tag", + "source": 0, + "value": "3" + }, + { "begin": 4475, "end": 4627, "name": "JUMPDEST", "source": 0 }, + { + "begin": 4475, + "end": 4627, + "name": "PUSH [tag]", + "source": 0, + "value": "11" + }, + { + "begin": 4475, + "end": 4627, + "name": "PUSH", + "source": 0, + "value": "4" + }, + { "begin": 4475, "end": 4627, "name": "DUP1", "source": 0 }, + { + "begin": 4475, + "end": 4627, + "name": "CALLDATASIZE", + "source": 0 + }, + { "begin": 4475, "end": 4627, "name": "SUB", "source": 0 }, + { "begin": 4475, "end": 4627, "name": "DUP2", "source": 0 }, + { "begin": 4475, "end": 4627, "name": "ADD", "source": 0 }, + { "begin": 4475, "end": 4627, "name": "SWAP1", "source": 0 }, + { + "begin": 4475, + "end": 4627, + "name": "PUSH [tag]", + "source": 0, + "value": "12" + }, + { "begin": 4475, "end": 4627, "name": "SWAP2", "source": 0 }, + { "begin": 4475, "end": 4627, "name": "SWAP1", "source": 0 }, + { + "begin": 4475, + "end": 4627, + "name": "PUSH [tag]", + "source": 0, + "value": "13" + }, + { + "begin": 4475, + "end": 4627, + "name": "JUMP", + "source": 0, + "value": "[in]" + }, + { + "begin": 4475, + "end": 4627, + "name": "tag", + "source": 0, + "value": "12" + }, + { "begin": 4475, "end": 4627, "name": "JUMPDEST", "source": 0 }, + { + "begin": 4475, + "end": 4627, + "name": "PUSH [tag]", + "source": 0, + "value": "14" + }, + { + "begin": 4475, + "end": 4627, + "name": "JUMP", + "source": 0, + "value": "[in]" + }, + { + "begin": 4475, + "end": 4627, + "name": "tag", + "source": 0, + "value": "11" + }, + { "begin": 4475, "end": 4627, "name": "JUMPDEST", "source": 0 }, + { + "begin": 4475, + "end": 4627, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { "begin": 4475, "end": 4627, "name": "MLOAD", "source": 0 }, + { + "begin": 4475, + "end": 4627, + "name": "PUSH [tag]", + "source": 0, + "value": "15" + }, + { "begin": 4475, "end": 4627, "name": "SWAP2", "source": 0 }, + { "begin": 4475, "end": 4627, "name": "SWAP1", "source": 0 }, + { + "begin": 4475, + "end": 4627, + "name": "PUSH [tag]", + "source": 0, + "value": "16" + }, + { + "begin": 4475, + "end": 4627, + "name": "JUMP", + "source": 0, + "value": "[in]" + }, + { + "begin": 4475, + "end": 4627, + "name": "tag", + "source": 0, + "value": "15" + }, + { "begin": 4475, "end": 4627, "name": "JUMPDEST", "source": 0 }, + { + "begin": 4475, + "end": 4627, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { "begin": 4475, "end": 4627, "name": "MLOAD", "source": 0 }, + { "begin": 4475, "end": 4627, "name": "DUP1", "source": 0 }, + { "begin": 4475, "end": 4627, "name": "SWAP2", "source": 0 }, + { "begin": 4475, "end": 4627, "name": "SUB", "source": 0 }, + { "begin": 4475, "end": 4627, "name": "SWAP1", "source": 0 }, + { "begin": 4475, "end": 4627, "name": "RETURN", "source": 0 }, + { + "begin": 3664, + "end": 3866, + "name": "tag", + "source": 0, + "value": "4" + }, + { "begin": 3664, "end": 3866, "name": "JUMPDEST", "source": 0 }, + { + "begin": 3664, + "end": 3866, + "name": "PUSH [tag]", + "source": 0, + "value": "17" + }, + { + "begin": 3664, + "end": 3866, + "name": "PUSH [tag]", + "source": 0, + "value": "18" + }, + { + "begin": 3664, + "end": 3866, + "name": "JUMP", + "source": 0, + "value": "[in]" + }, + { + "begin": 3664, + "end": 3866, + "name": "tag", + "source": 0, + "value": "17" + }, + { "begin": 3664, "end": 3866, "name": "JUMPDEST", "source": 0 }, + { + "begin": 3664, + "end": 3866, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { "begin": 3664, "end": 3866, "name": "MLOAD", "source": 0 }, + { + "begin": 3664, + "end": 3866, + "name": "PUSH [tag]", + "source": 0, + "value": "19" + }, + { "begin": 3664, "end": 3866, "name": "SWAP2", "source": 0 }, + { "begin": 3664, "end": 3866, "name": "SWAP1", "source": 0 }, + { + "begin": 3664, + "end": 3866, + "name": "PUSH [tag]", + "source": 0, + "value": "20" + }, + { + "begin": 3664, + "end": 3866, + "name": "JUMP", + "source": 0, + "value": "[in]" + }, + { + "begin": 3664, + "end": 3866, + "name": "tag", + "source": 0, + "value": "19" + }, + { "begin": 3664, "end": 3866, "name": "JUMPDEST", "source": 0 }, + { + "begin": 3664, + "end": 3866, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { "begin": 3664, "end": 3866, "name": "MLOAD", "source": 0 }, + { "begin": 3664, "end": 3866, "name": "DUP1", "source": 0 }, + { "begin": 3664, "end": 3866, "name": "SWAP2", "source": 0 }, + { "begin": 3664, "end": 3866, "name": "SUB", "source": 0 }, + { "begin": 3664, "end": 3866, "name": "SWAP1", "source": 0 }, + { "begin": 3664, "end": 3866, "name": "RETURN", "source": 0 }, + { + "begin": 4653, + "end": 4825, + "name": "tag", + "source": 0, + "value": "5" + }, + { "begin": 4653, "end": 4825, "name": "JUMPDEST", "source": 0 }, + { + "begin": 4653, + "end": 4825, + "name": "PUSH [tag]", + "source": 0, + "value": "21" + }, + { + "begin": 4653, + "end": 4825, + "name": "PUSH", + "source": 0, + "value": "4" + }, + { "begin": 4653, "end": 4825, "name": "DUP1", "source": 0 }, + { + "begin": 4653, + "end": 4825, + "name": "CALLDATASIZE", + "source": 0 + }, + { "begin": 4653, "end": 4825, "name": "SUB", "source": 0 }, + { "begin": 4653, "end": 4825, "name": "DUP2", "source": 0 }, + { "begin": 4653, "end": 4825, "name": "ADD", "source": 0 }, + { "begin": 4653, "end": 4825, "name": "SWAP1", "source": 0 }, + { + "begin": 4653, + "end": 4825, + "name": "PUSH [tag]", + "source": 0, + "value": "22" + }, + { "begin": 4653, "end": 4825, "name": "SWAP2", "source": 0 }, + { "begin": 4653, "end": 4825, "name": "SWAP1", "source": 0 }, + { + "begin": 4653, + "end": 4825, + "name": "PUSH [tag]", + "source": 0, + "value": "23" + }, + { + "begin": 4653, + "end": 4825, + "name": "JUMP", + "source": 0, + "value": "[in]" + }, + { + "begin": 4653, + "end": 4825, + "name": "tag", + "source": 0, + "value": "22" + }, + { "begin": 4653, "end": 4825, "name": "JUMPDEST", "source": 0 }, + { + "begin": 4653, + "end": 4825, + "name": "PUSH [tag]", + "source": 0, + "value": "24" + }, + { + "begin": 4653, + "end": 4825, + "name": "JUMP", + "source": 0, + "value": "[in]" + }, + { + "begin": 4653, + "end": 4825, + "name": "tag", + "source": 0, + "value": "21" + }, + { "begin": 4653, "end": 4825, "name": "JUMPDEST", "source": 0 }, + { + "begin": 4653, + "end": 4825, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { "begin": 4653, "end": 4825, "name": "MLOAD", "source": 0 }, + { + "begin": 4653, + "end": 4825, + "name": "PUSH [tag]", + "source": 0, + "value": "25" + }, + { "begin": 4653, "end": 4825, "name": "SWAP2", "source": 0 }, + { "begin": 4653, "end": 4825, "name": "SWAP1", "source": 0 }, + { + "begin": 4653, + "end": 4825, + "name": "PUSH [tag]", + "source": 0, + "value": "16" + }, + { + "begin": 4653, + "end": 4825, + "name": "JUMP", + "source": 0, + "value": "[in]" + }, + { + "begin": 4653, + "end": 4825, + "name": "tag", + "source": 0, + "value": "25" + }, + { "begin": 4653, "end": 4825, "name": "JUMPDEST", "source": 0 }, + { + "begin": 4653, + "end": 4825, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { "begin": 4653, "end": 4825, "name": "MLOAD", "source": 0 }, + { "begin": 4653, "end": 4825, "name": "DUP1", "source": 0 }, + { "begin": 4653, "end": 4825, "name": "SWAP2", "source": 0 }, + { "begin": 4653, "end": 4825, "name": "SUB", "source": 0 }, + { "begin": 4653, "end": 4825, "name": "SWAP1", "source": 0 }, + { "begin": 4653, "end": 4825, "name": "RETURN", "source": 0 }, + { + "begin": 3892, + "end": 4104, + "name": "tag", + "source": 0, + "value": "6" + }, + { "begin": 3892, "end": 4104, "name": "JUMPDEST", "source": 0 }, + { + "begin": 3892, + "end": 4104, + "name": "PUSH [tag]", + "source": 0, + "value": "26" + }, + { + "begin": 3892, + "end": 4104, + "name": "PUSH", + "source": 0, + "value": "4" + }, + { "begin": 3892, "end": 4104, "name": "DUP1", "source": 0 }, + { + "begin": 3892, + "end": 4104, + "name": "CALLDATASIZE", + "source": 0 + }, + { "begin": 3892, "end": 4104, "name": "SUB", "source": 0 }, + { "begin": 3892, "end": 4104, "name": "DUP2", "source": 0 }, + { "begin": 3892, "end": 4104, "name": "ADD", "source": 0 }, + { "begin": 3892, "end": 4104, "name": "SWAP1", "source": 0 }, + { + "begin": 3892, + "end": 4104, + "name": "PUSH [tag]", + "source": 0, + "value": "27" + }, + { "begin": 3892, "end": 4104, "name": "SWAP2", "source": 0 }, + { "begin": 3892, "end": 4104, "name": "SWAP1", "source": 0 }, + { + "begin": 3892, + "end": 4104, + "name": "PUSH [tag]", + "source": 0, + "value": "28" + }, + { + "begin": 3892, + "end": 4104, + "name": "JUMP", + "source": 0, + "value": "[in]" + }, + { + "begin": 3892, + "end": 4104, + "name": "tag", + "source": 0, + "value": "27" + }, + { "begin": 3892, "end": 4104, "name": "JUMPDEST", "source": 0 }, + { + "begin": 3892, + "end": 4104, + "name": "PUSH [tag]", + "source": 0, + "value": "29" + }, + { + "begin": 3892, + "end": 4104, + "name": "JUMP", + "source": 0, + "value": "[in]" + }, + { + "begin": 3892, + "end": 4104, + "name": "tag", + "source": 0, + "value": "26" + }, + { "begin": 3892, "end": 4104, "name": "JUMPDEST", "source": 0 }, + { + "begin": 3892, + "end": 4104, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { "begin": 3892, "end": 4104, "name": "MLOAD", "source": 0 }, + { + "begin": 3892, + "end": 4104, + "name": "PUSH [tag]", + "source": 0, + "value": "30" + }, + { "begin": 3892, "end": 4104, "name": "SWAP2", "source": 0 }, + { "begin": 3892, "end": 4104, "name": "SWAP1", "source": 0 }, + { + "begin": 3892, + "end": 4104, + "name": "PUSH [tag]", + "source": 0, + "value": "20" + }, + { + "begin": 3892, + "end": 4104, + "name": "JUMP", + "source": 0, + "value": "[in]" + }, + { + "begin": 3892, + "end": 4104, + "name": "tag", + "source": 0, + "value": "30" + }, + { "begin": 3892, "end": 4104, "name": "JUMPDEST", "source": 0 }, + { + "begin": 3892, + "end": 4104, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { "begin": 3892, "end": 4104, "name": "MLOAD", "source": 0 }, + { "begin": 3892, "end": 4104, "name": "DUP1", "source": 0 }, + { "begin": 3892, "end": 4104, "name": "SWAP2", "source": 0 }, + { "begin": 3892, "end": 4104, "name": "SUB", "source": 0 }, + { "begin": 3892, "end": 4104, "name": "SWAP1", "source": 0 }, + { "begin": 3892, "end": 4104, "name": "RETURN", "source": 0 }, + { + "begin": 3577, + "end": 3649, + "name": "tag", + "source": 0, + "value": "7" + }, + { "begin": 3577, "end": 3649, "name": "JUMPDEST", "source": 0 }, + { + "begin": 3577, + "end": 3649, + "name": "PUSH [tag]", + "source": 0, + "value": "31" + }, + { + "begin": 3577, + "end": 3649, + "name": "PUSH [tag]", + "source": 0, + "value": "32" + }, + { + "begin": 3577, + "end": 3649, + "name": "JUMP", + "source": 0, + "value": "[in]" + }, + { + "begin": 3577, + "end": 3649, + "name": "tag", + "source": 0, + "value": "31" + }, + { "begin": 3577, "end": 3649, "name": "JUMPDEST", "source": 0 }, + { + "begin": 3577, + "end": 3649, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { "begin": 3577, "end": 3649, "name": "MLOAD", "source": 0 }, + { + "begin": 3577, + "end": 3649, + "name": "PUSH [tag]", + "source": 0, + "value": "33" + }, + { "begin": 3577, "end": 3649, "name": "SWAP2", "source": 0 }, + { "begin": 3577, "end": 3649, "name": "SWAP1", "source": 0 }, + { + "begin": 3577, + "end": 3649, + "name": "PUSH [tag]", + "source": 0, + "value": "34" + }, + { + "begin": 3577, + "end": 3649, + "name": "JUMP", + "source": 0, + "value": "[in]" + }, + { + "begin": 3577, + "end": 3649, + "name": "tag", + "source": 0, + "value": "33" + }, + { "begin": 3577, "end": 3649, "name": "JUMPDEST", "source": 0 }, + { + "begin": 3577, + "end": 3649, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { "begin": 3577, "end": 3649, "name": "MLOAD", "source": 0 }, + { "begin": 3577, "end": 3649, "name": "DUP1", "source": 0 }, + { "begin": 3577, "end": 3649, "name": "SWAP2", "source": 0 }, + { "begin": 3577, "end": 3649, "name": "SUB", "source": 0 }, + { "begin": 3577, "end": 3649, "name": "SWAP1", "source": 0 }, + { "begin": 3577, "end": 3649, "name": "RETURN", "source": 0 }, + { + "begin": 4306, + "end": 4449, + "name": "tag", + "source": 0, + "value": "8" + }, + { "begin": 4306, "end": 4449, "name": "JUMPDEST", "source": 0 }, + { + "begin": 4306, + "end": 4449, + "name": "PUSH [tag]", + "source": 0, + "value": "35" + }, + { + "begin": 4306, + "end": 4449, + "name": "PUSH", + "source": 0, + "value": "4" + }, + { "begin": 4306, "end": 4449, "name": "DUP1", "source": 0 }, + { + "begin": 4306, + "end": 4449, + "name": "CALLDATASIZE", + "source": 0 + }, + { "begin": 4306, "end": 4449, "name": "SUB", "source": 0 }, + { "begin": 4306, "end": 4449, "name": "DUP2", "source": 0 }, + { "begin": 4306, "end": 4449, "name": "ADD", "source": 0 }, + { "begin": 4306, "end": 4449, "name": "SWAP1", "source": 0 }, + { + "begin": 4306, + "end": 4449, + "name": "PUSH [tag]", + "source": 0, + "value": "36" + }, + { "begin": 4306, "end": 4449, "name": "SWAP2", "source": 0 }, + { "begin": 4306, "end": 4449, "name": "SWAP1", "source": 0 }, + { + "begin": 4306, + "end": 4449, + "name": "PUSH [tag]", + "source": 0, + "value": "13" + }, + { + "begin": 4306, + "end": 4449, + "name": "JUMP", + "source": 0, + "value": "[in]" + }, + { + "begin": 4306, + "end": 4449, + "name": "tag", + "source": 0, + "value": "36" + }, + { "begin": 4306, "end": 4449, "name": "JUMPDEST", "source": 0 }, + { + "begin": 4306, + "end": 4449, + "name": "PUSH [tag]", + "source": 0, + "value": "37" + }, + { + "begin": 4306, + "end": 4449, + "name": "JUMP", + "source": 0, + "value": "[in]" + }, + { + "begin": 4306, + "end": 4449, + "name": "tag", + "source": 0, + "value": "35" + }, + { "begin": 4306, "end": 4449, "name": "JUMPDEST", "source": 0 }, + { + "begin": 4306, + "end": 4449, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { "begin": 4306, "end": 4449, "name": "MLOAD", "source": 0 }, + { + "begin": 4306, + "end": 4449, + "name": "PUSH [tag]", + "source": 0, + "value": "38" + }, + { "begin": 4306, "end": 4449, "name": "SWAP2", "source": 0 }, + { "begin": 4306, "end": 4449, "name": "SWAP1", "source": 0 }, + { + "begin": 4306, + "end": 4449, + "name": "PUSH [tag]", + "source": 0, + "value": "16" + }, + { + "begin": 4306, + "end": 4449, + "name": "JUMP", + "source": 0, + "value": "[in]" + }, + { + "begin": 4306, + "end": 4449, + "name": "tag", + "source": 0, + "value": "38" + }, + { "begin": 4306, "end": 4449, "name": "JUMPDEST", "source": 0 }, + { + "begin": 4306, + "end": 4449, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { "begin": 4306, "end": 4449, "name": "MLOAD", "source": 0 }, + { "begin": 4306, "end": 4449, "name": "DUP1", "source": 0 }, + { "begin": 4306, "end": 4449, "name": "SWAP2", "source": 0 }, + { "begin": 4306, "end": 4449, "name": "SUB", "source": 0 }, + { "begin": 4306, "end": 4449, "name": "SWAP1", "source": 0 }, + { "begin": 4306, "end": 4449, "name": "RETURN", "source": 0 }, + { + "begin": 4130, + "end": 4292, + "name": "tag", + "source": 0, + "value": "9" + }, + { "begin": 4130, "end": 4292, "name": "JUMPDEST", "source": 0 }, + { + "begin": 4130, + "end": 4292, + "name": "PUSH [tag]", + "source": 0, + "value": "39" + }, + { + "begin": 4130, + "end": 4292, + "name": "PUSH", + "source": 0, + "value": "4" + }, + { "begin": 4130, "end": 4292, "name": "DUP1", "source": 0 }, + { + "begin": 4130, + "end": 4292, + "name": "CALLDATASIZE", + "source": 0 + }, + { "begin": 4130, "end": 4292, "name": "SUB", "source": 0 }, + { "begin": 4130, "end": 4292, "name": "DUP2", "source": 0 }, + { "begin": 4130, "end": 4292, "name": "ADD", "source": 0 }, + { "begin": 4130, "end": 4292, "name": "SWAP1", "source": 0 }, + { + "begin": 4130, + "end": 4292, + "name": "PUSH [tag]", + "source": 0, + "value": "40" + }, + { "begin": 4130, "end": 4292, "name": "SWAP2", "source": 0 }, + { "begin": 4130, "end": 4292, "name": "SWAP1", "source": 0 }, + { + "begin": 4130, + "end": 4292, + "name": "PUSH [tag]", + "source": 0, + "value": "41" + }, + { + "begin": 4130, + "end": 4292, + "name": "JUMP", + "source": 0, + "value": "[in]" + }, + { + "begin": 4130, + "end": 4292, + "name": "tag", + "source": 0, + "value": "40" + }, + { "begin": 4130, "end": 4292, "name": "JUMPDEST", "source": 0 }, + { + "begin": 4130, + "end": 4292, + "name": "PUSH [tag]", + "source": 0, + "value": "42" + }, + { + "begin": 4130, + "end": 4292, + "name": "JUMP", + "source": 0, + "value": "[in]" + }, + { + "begin": 4130, + "end": 4292, + "name": "tag", + "source": 0, + "value": "39" + }, + { "begin": 4130, "end": 4292, "name": "JUMPDEST", "source": 0 }, + { + "begin": 4130, + "end": 4292, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { "begin": 4130, "end": 4292, "name": "MLOAD", "source": 0 }, + { + "begin": 4130, + "end": 4292, + "name": "PUSH [tag]", + "source": 0, + "value": "43" + }, + { "begin": 4130, "end": 4292, "name": "SWAP2", "source": 0 }, + { "begin": 4130, "end": 4292, "name": "SWAP1", "source": 0 }, + { + "begin": 4130, + "end": 4292, + "name": "PUSH [tag]", + "source": 0, + "value": "20" + }, + { + "begin": 4130, + "end": 4292, + "name": "JUMP", + "source": 0, + "value": "[in]" + }, + { + "begin": 4130, + "end": 4292, + "name": "tag", + "source": 0, + "value": "43" + }, + { "begin": 4130, "end": 4292, "name": "JUMPDEST", "source": 0 }, + { + "begin": 4130, + "end": 4292, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { "begin": 4130, "end": 4292, "name": "MLOAD", "source": 0 }, + { "begin": 4130, "end": 4292, "name": "DUP1", "source": 0 }, + { "begin": 4130, "end": 4292, "name": "SWAP2", "source": 0 }, + { "begin": 4130, "end": 4292, "name": "SUB", "source": 0 }, + { "begin": 4130, "end": 4292, "name": "SWAP1", "source": 0 }, + { "begin": 4130, "end": 4292, "name": "RETURN", "source": 0 }, + { + "begin": 4475, + "end": 4627, + "name": "tag", + "source": 0, + "value": "14" + }, + { "begin": 4475, "end": 4627, "name": "JUMPDEST", "source": 0 }, + { + "begin": 4551, + "end": 4555, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { "begin": 4582, "end": 4587, "name": "DUP1", "source": 0 }, + { + "begin": 4582, + "end": 4587, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { "begin": 4582, "end": 4587, "name": "SWAP1", "source": 0 }, + { "begin": 4582, "end": 4587, "name": "SLOAD", "source": 0 }, + { "begin": 4582, "end": 4587, "name": "SWAP1", "source": 0 }, + { + "begin": 4582, + "end": 4587, + "name": "PUSH", + "source": 0, + "value": "100" + }, + { "begin": 4582, "end": 4587, "name": "EXP", "source": 0 }, + { "begin": 4582, "end": 4587, "name": "SWAP1", "source": 0 }, + { "begin": 4582, "end": 4587, "name": "DIV", "source": 0 }, + { + "begin": 4582, + "end": 4587, + "name": "PUSH", + "source": 0, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { "begin": 4582, "end": 4587, "name": "AND", "source": 0 }, + { + "begin": 4582, + "end": 4596, + "name": "PUSH", + "source": 0, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { "begin": 4582, "end": 4596, "name": "AND", "source": 0 }, + { + "begin": 4582, + "end": 4596, + "name": "PUSH", + "source": 0, + "value": "A9059CBB" + }, + { "begin": 4597, "end": 4604, "name": "DUP5", "source": 0 }, + { "begin": 4606, "end": 4611, "name": "DUP5", "source": 0 }, + { + "begin": 4582, + "end": 4612, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { "begin": 4582, "end": 4612, "name": "MLOAD", "source": 0 }, + { "begin": 4582, "end": 4612, "name": "DUP4", "source": 0 }, + { + "begin": 4582, + "end": 4612, + "name": "PUSH", + "source": 0, + "value": "FFFFFFFF" + }, + { "begin": 4582, "end": 4612, "name": "AND", "source": 0 }, + { + "begin": 4582, + "end": 4612, + "name": "PUSH", + "source": 0, + "value": "E0" + }, + { "begin": 4582, "end": 4612, "name": "SHL", "source": 0 }, + { "begin": 4582, "end": 4612, "name": "DUP2", "source": 0 }, + { "begin": 4582, "end": 4612, "name": "MSTORE", "source": 0 }, + { + "begin": 4582, + "end": 4612, + "name": "PUSH", + "source": 0, + "value": "4" + }, + { "begin": 4582, "end": 4612, "name": "ADD", "source": 0 }, + { + "begin": 4582, + "end": 4612, + "name": "PUSH [tag]", + "source": 0, + "value": "45" + }, + { "begin": 4582, "end": 4612, "name": "SWAP3", "source": 0 }, + { "begin": 4582, "end": 4612, "name": "SWAP2", "source": 0 }, + { "begin": 4582, "end": 4612, "name": "SWAP1", "source": 0 }, + { + "begin": 4582, + "end": 4612, + "name": "PUSH [tag]", + "source": 0, + "value": "46" + }, + { + "begin": 4582, + "end": 4612, + "name": "JUMP", + "source": 0, + "value": "[in]" + }, + { + "begin": 4582, + "end": 4612, + "name": "tag", + "source": 0, + "value": "45" + }, + { "begin": 4582, "end": 4612, "name": "JUMPDEST", "source": 0 }, + { + "begin": 4582, + "end": 4612, + "name": "PUSH", + "source": 0, + "value": "20" + }, + { + "begin": 4582, + "end": 4612, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { "begin": 4582, "end": 4612, "name": "MLOAD", "source": 0 }, + { "begin": 4582, "end": 4612, "name": "DUP1", "source": 0 }, + { "begin": 4582, "end": 4612, "name": "DUP4", "source": 0 }, + { "begin": 4582, "end": 4612, "name": "SUB", "source": 0 }, + { "begin": 4582, "end": 4612, "name": "DUP2", "source": 0 }, + { + "begin": 4582, + "end": 4612, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { "begin": 4582, "end": 4612, "name": "DUP8", "source": 0 }, + { "begin": 4582, "end": 4612, "name": "DUP1", "source": 0 }, + { + "begin": 4582, + "end": 4612, + "name": "EXTCODESIZE", + "source": 0 + }, + { "begin": 4582, "end": 4612, "name": "ISZERO", "source": 0 }, + { "begin": 4582, "end": 4612, "name": "DUP1", "source": 0 }, + { "begin": 4582, "end": 4612, "name": "ISZERO", "source": 0 }, + { + "begin": 4582, + "end": 4612, + "name": "PUSH [tag]", + "source": 0, + "value": "47" + }, + { "begin": 4582, "end": 4612, "name": "JUMPI", "source": 0 }, + { + "begin": 4582, + "end": 4612, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { "begin": 4582, "end": 4612, "name": "DUP1", "source": 0 }, + { "begin": 4582, "end": 4612, "name": "REVERT", "source": 0 }, + { + "begin": 4582, + "end": 4612, + "name": "tag", + "source": 0, + "value": "47" + }, + { "begin": 4582, "end": 4612, "name": "JUMPDEST", "source": 0 }, + { "begin": 4582, "end": 4612, "name": "POP", "source": 0 }, + { "begin": 4582, "end": 4612, "name": "GAS", "source": 0 }, + { "begin": 4582, "end": 4612, "name": "CALL", "source": 0 }, + { "begin": 4582, "end": 4612, "name": "ISZERO", "source": 0 }, + { "begin": 4582, "end": 4612, "name": "DUP1", "source": 0 }, + { "begin": 4582, "end": 4612, "name": "ISZERO", "source": 0 }, + { + "begin": 4582, + "end": 4612, + "name": "PUSH [tag]", + "source": 0, + "value": "49" + }, + { "begin": 4582, "end": 4612, "name": "JUMPI", "source": 0 }, + { + "begin": 4582, + "end": 4612, + "name": "RETURNDATASIZE", + "source": 0 + }, + { + "begin": 4582, + "end": 4612, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { "begin": 4582, "end": 4612, "name": "DUP1", "source": 0 }, + { + "begin": 4582, + "end": 4612, + "name": "RETURNDATACOPY", + "source": 0 + }, + { + "begin": 4582, + "end": 4612, + "name": "RETURNDATASIZE", + "source": 0 + }, + { + "begin": 4582, + "end": 4612, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { "begin": 4582, "end": 4612, "name": "REVERT", "source": 0 }, + { + "begin": 4582, + "end": 4612, + "name": "tag", + "source": 0, + "value": "49" + }, + { "begin": 4582, "end": 4612, "name": "JUMPDEST", "source": 0 }, + { "begin": 4582, "end": 4612, "name": "POP", "source": 0 }, + { "begin": 4582, "end": 4612, "name": "POP", "source": 0 }, + { "begin": 4582, "end": 4612, "name": "POP", "source": 0 }, + { "begin": 4582, "end": 4612, "name": "POP", "source": 0 }, + { + "begin": 4582, + "end": 4612, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { "begin": 4582, "end": 4612, "name": "MLOAD", "source": 0 }, + { + "begin": 4582, + "end": 4612, + "name": "RETURNDATASIZE", + "source": 0 + }, + { + "begin": 4582, + "end": 4612, + "name": "PUSH", + "source": 0, + "value": "1F" + }, + { "begin": 4582, "end": 4612, "name": "NOT", "source": 0 }, + { + "begin": 4582, + "end": 4612, + "name": "PUSH", + "source": 0, + "value": "1F" + }, + { "begin": 4582, "end": 4612, "name": "DUP3", "source": 0 }, + { "begin": 4582, "end": 4612, "name": "ADD", "source": 0 }, + { "begin": 4582, "end": 4612, "name": "AND", "source": 0 }, + { "begin": 4582, "end": 4612, "name": "DUP3", "source": 0 }, + { "begin": 4582, "end": 4612, "name": "ADD", "source": 0 }, + { "begin": 4582, "end": 4612, "name": "DUP1", "source": 0 }, + { + "begin": 4582, + "end": 4612, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { "begin": 4582, "end": 4612, "name": "MSTORE", "source": 0 }, + { "begin": 4582, "end": 4612, "name": "POP", "source": 0 }, + { "begin": 4582, "end": 4612, "name": "DUP2", "source": 0 }, + { "begin": 4582, "end": 4612, "name": "ADD", "source": 0 }, + { "begin": 4582, "end": 4612, "name": "SWAP1", "source": 0 }, + { + "begin": 4582, + "end": 4612, + "name": "PUSH [tag]", + "source": 0, + "value": "50" + }, + { "begin": 4582, "end": 4612, "name": "SWAP2", "source": 0 }, + { "begin": 4582, "end": 4612, "name": "SWAP1", "source": 0 }, + { + "begin": 4582, + "end": 4612, + "name": "PUSH [tag]", + "source": 0, + "value": "51" + }, + { + "begin": 4582, + "end": 4612, + "name": "JUMP", + "source": 0, + "value": "[in]" + }, + { + "begin": 4582, + "end": 4612, + "name": "tag", + "source": 0, + "value": "50" + }, + { "begin": 4582, "end": 4612, "name": "JUMPDEST", "source": 0 }, + { "begin": 4575, "end": 4612, "name": "SWAP1", "source": 0 }, + { "begin": 4575, "end": 4612, "name": "POP", "source": 0 }, + { "begin": 4475, "end": 4627, "name": "SWAP3", "source": 0 }, + { "begin": 4475, "end": 4627, "name": "SWAP2", "source": 0 }, + { "begin": 4475, "end": 4627, "name": "POP", "source": 0 }, + { "begin": 4475, "end": 4627, "name": "POP", "source": 0 }, + { + "begin": 4475, + "end": 4627, + "name": "JUMP", + "source": 0, + "value": "[out]" + }, + { + "begin": 3664, + "end": 3866, + "name": "tag", + "source": 0, + "value": "18" + }, + { "begin": 3664, "end": 3866, "name": "JUMPDEST", "source": 0 }, + { + "begin": 3719, + "end": 3726, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { "begin": 3832, "end": 3837, "name": "DUP1", "source": 0 }, + { + "begin": 3832, + "end": 3837, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { "begin": 3832, "end": 3837, "name": "SWAP1", "source": 0 }, + { "begin": 3832, "end": 3837, "name": "SLOAD", "source": 0 }, + { "begin": 3832, "end": 3837, "name": "SWAP1", "source": 0 }, + { + "begin": 3832, + "end": 3837, + "name": "PUSH", + "source": 0, + "value": "100" + }, + { "begin": 3832, "end": 3837, "name": "EXP", "source": 0 }, + { "begin": 3832, "end": 3837, "name": "SWAP1", "source": 0 }, + { "begin": 3832, "end": 3837, "name": "DIV", "source": 0 }, + { + "begin": 3832, + "end": 3837, + "name": "PUSH", + "source": 0, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { "begin": 3832, "end": 3837, "name": "AND", "source": 0 }, + { + "begin": 3832, + "end": 3849, + "name": "PUSH", + "source": 0, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { "begin": 3832, "end": 3849, "name": "AND", "source": 0 }, + { + "begin": 3832, + "end": 3849, + "name": "PUSH", + "source": 0, + "value": "18160DDD" + }, + { + "begin": 3832, + "end": 3851, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { "begin": 3832, "end": 3851, "name": "MLOAD", "source": 0 }, + { "begin": 3832, "end": 3851, "name": "DUP2", "source": 0 }, + { + "begin": 3832, + "end": 3851, + "name": "PUSH", + "source": 0, + "value": "FFFFFFFF" + }, + { "begin": 3832, "end": 3851, "name": "AND", "source": 0 }, + { + "begin": 3832, + "end": 3851, + "name": "PUSH", + "source": 0, + "value": "E0" + }, + { "begin": 3832, "end": 3851, "name": "SHL", "source": 0 }, + { "begin": 3832, "end": 3851, "name": "DUP2", "source": 0 }, + { "begin": 3832, "end": 3851, "name": "MSTORE", "source": 0 }, + { + "begin": 3832, + "end": 3851, + "name": "PUSH", + "source": 0, + "value": "4" + }, + { "begin": 3832, "end": 3851, "name": "ADD", "source": 0 }, + { + "begin": 3832, + "end": 3851, + "name": "PUSH", + "source": 0, + "value": "20" + }, + { + "begin": 3832, + "end": 3851, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { "begin": 3832, "end": 3851, "name": "MLOAD", "source": 0 }, + { "begin": 3832, "end": 3851, "name": "DUP1", "source": 0 }, + { "begin": 3832, "end": 3851, "name": "DUP4", "source": 0 }, + { "begin": 3832, "end": 3851, "name": "SUB", "source": 0 }, + { "begin": 3832, "end": 3851, "name": "DUP2", "source": 0 }, + { "begin": 3832, "end": 3851, "name": "DUP7", "source": 0 }, + { "begin": 3832, "end": 3851, "name": "DUP1", "source": 0 }, + { + "begin": 3832, + "end": 3851, + "name": "EXTCODESIZE", + "source": 0 + }, + { "begin": 3832, "end": 3851, "name": "ISZERO", "source": 0 }, + { "begin": 3832, "end": 3851, "name": "DUP1", "source": 0 }, + { "begin": 3832, "end": 3851, "name": "ISZERO", "source": 0 }, + { + "begin": 3832, + "end": 3851, + "name": "PUSH [tag]", + "source": 0, + "value": "53" + }, + { "begin": 3832, "end": 3851, "name": "JUMPI", "source": 0 }, + { + "begin": 3832, + "end": 3851, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { "begin": 3832, "end": 3851, "name": "DUP1", "source": 0 }, + { "begin": 3832, "end": 3851, "name": "REVERT", "source": 0 }, + { + "begin": 3832, + "end": 3851, + "name": "tag", + "source": 0, + "value": "53" + }, + { "begin": 3832, "end": 3851, "name": "JUMPDEST", "source": 0 }, + { "begin": 3832, "end": 3851, "name": "POP", "source": 0 }, + { "begin": 3832, "end": 3851, "name": "GAS", "source": 0 }, + { "begin": 3832, "end": 3851, "name": "STATICCALL", "source": 0 }, + { "begin": 3832, "end": 3851, "name": "ISZERO", "source": 0 }, + { "begin": 3832, "end": 3851, "name": "DUP1", "source": 0 }, + { "begin": 3832, "end": 3851, "name": "ISZERO", "source": 0 }, + { + "begin": 3832, + "end": 3851, + "name": "PUSH [tag]", + "source": 0, + "value": "55" + }, + { "begin": 3832, "end": 3851, "name": "JUMPI", "source": 0 }, + { + "begin": 3832, + "end": 3851, + "name": "RETURNDATASIZE", + "source": 0 + }, + { + "begin": 3832, + "end": 3851, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { "begin": 3832, "end": 3851, "name": "DUP1", "source": 0 }, + { + "begin": 3832, + "end": 3851, + "name": "RETURNDATACOPY", + "source": 0 + }, + { + "begin": 3832, + "end": 3851, + "name": "RETURNDATASIZE", + "source": 0 + }, + { + "begin": 3832, + "end": 3851, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { "begin": 3832, "end": 3851, "name": "REVERT", "source": 0 }, + { + "begin": 3832, + "end": 3851, + "name": "tag", + "source": 0, + "value": "55" + }, + { "begin": 3832, "end": 3851, "name": "JUMPDEST", "source": 0 }, + { "begin": 3832, "end": 3851, "name": "POP", "source": 0 }, + { "begin": 3832, "end": 3851, "name": "POP", "source": 0 }, + { "begin": 3832, "end": 3851, "name": "POP", "source": 0 }, + { "begin": 3832, "end": 3851, "name": "POP", "source": 0 }, + { + "begin": 3832, + "end": 3851, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { "begin": 3832, "end": 3851, "name": "MLOAD", "source": 0 }, + { + "begin": 3832, + "end": 3851, + "name": "RETURNDATASIZE", + "source": 0 + }, + { + "begin": 3832, + "end": 3851, + "name": "PUSH", + "source": 0, + "value": "1F" + }, + { "begin": 3832, "end": 3851, "name": "NOT", "source": 0 }, + { + "begin": 3832, + "end": 3851, + "name": "PUSH", + "source": 0, + "value": "1F" + }, + { "begin": 3832, "end": 3851, "name": "DUP3", "source": 0 }, + { "begin": 3832, "end": 3851, "name": "ADD", "source": 0 }, + { "begin": 3832, "end": 3851, "name": "AND", "source": 0 }, + { "begin": 3832, "end": 3851, "name": "DUP3", "source": 0 }, + { "begin": 3832, "end": 3851, "name": "ADD", "source": 0 }, + { "begin": 3832, "end": 3851, "name": "DUP1", "source": 0 }, + { + "begin": 3832, + "end": 3851, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { "begin": 3832, "end": 3851, "name": "MSTORE", "source": 0 }, + { "begin": 3832, "end": 3851, "name": "POP", "source": 0 }, + { "begin": 3832, "end": 3851, "name": "DUP2", "source": 0 }, + { "begin": 3832, "end": 3851, "name": "ADD", "source": 0 }, + { "begin": 3832, "end": 3851, "name": "SWAP1", "source": 0 }, + { + "begin": 3832, + "end": 3851, + "name": "PUSH [tag]", + "source": 0, + "value": "56" + }, + { "begin": 3832, "end": 3851, "name": "SWAP2", "source": 0 }, + { "begin": 3832, "end": 3851, "name": "SWAP1", "source": 0 }, + { + "begin": 3832, + "end": 3851, + "name": "PUSH [tag]", + "source": 0, + "value": "57" + }, + { + "begin": 3832, + "end": 3851, + "name": "JUMP", + "source": 0, + "value": "[in]" + }, + { + "begin": 3832, + "end": 3851, + "name": "tag", + "source": 0, + "value": "56" + }, + { "begin": 3832, "end": 3851, "name": "JUMPDEST", "source": 0 }, + { "begin": 3825, "end": 3851, "name": "SWAP1", "source": 0 }, + { "begin": 3825, "end": 3851, "name": "POP", "source": 0 }, + { "begin": 3664, "end": 3866, "name": "SWAP1", "source": 0 }, + { + "begin": 3664, + "end": 3866, + "name": "JUMP", + "source": 0, + "value": "[out]" + }, + { + "begin": 4653, + "end": 4825, + "name": "tag", + "source": 0, + "value": "24" + }, + { "begin": 4653, "end": 4825, "name": "JUMPDEST", "source": 0 }, + { + "begin": 4743, + "end": 4747, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { "begin": 4774, "end": 4779, "name": "DUP1", "source": 0 }, + { + "begin": 4774, + "end": 4779, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { "begin": 4774, "end": 4779, "name": "SWAP1", "source": 0 }, + { "begin": 4774, "end": 4779, "name": "SLOAD", "source": 0 }, + { "begin": 4774, "end": 4779, "name": "SWAP1", "source": 0 }, + { + "begin": 4774, + "end": 4779, + "name": "PUSH", + "source": 0, + "value": "100" + }, + { "begin": 4774, "end": 4779, "name": "EXP", "source": 0 }, + { "begin": 4774, "end": 4779, "name": "SWAP1", "source": 0 }, + { "begin": 4774, "end": 4779, "name": "DIV", "source": 0 }, + { + "begin": 4774, + "end": 4779, + "name": "PUSH", + "source": 0, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { "begin": 4774, "end": 4779, "name": "AND", "source": 0 }, + { + "begin": 4774, + "end": 4792, + "name": "PUSH", + "source": 0, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { "begin": 4774, "end": 4792, "name": "AND", "source": 0 }, + { + "begin": 4774, + "end": 4792, + "name": "PUSH", + "source": 0, + "value": "23B872DD" + }, + { "begin": 4793, "end": 4797, "name": "DUP6", "source": 0 }, + { "begin": 4800, "end": 4802, "name": "DUP6", "source": 0 }, + { "begin": 4804, "end": 4809, "name": "DUP6", "source": 0 }, + { + "begin": 4774, + "end": 4810, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { "begin": 4774, "end": 4810, "name": "MLOAD", "source": 0 }, + { "begin": 4774, "end": 4810, "name": "DUP5", "source": 0 }, + { + "begin": 4774, + "end": 4810, + "name": "PUSH", + "source": 0, + "value": "FFFFFFFF" + }, + { "begin": 4774, "end": 4810, "name": "AND", "source": 0 }, + { + "begin": 4774, + "end": 4810, + "name": "PUSH", + "source": 0, + "value": "E0" + }, + { "begin": 4774, "end": 4810, "name": "SHL", "source": 0 }, + { "begin": 4774, "end": 4810, "name": "DUP2", "source": 0 }, + { "begin": 4774, "end": 4810, "name": "MSTORE", "source": 0 }, + { + "begin": 4774, + "end": 4810, + "name": "PUSH", + "source": 0, + "value": "4" + }, + { "begin": 4774, "end": 4810, "name": "ADD", "source": 0 }, + { + "begin": 4774, + "end": 4810, + "name": "PUSH [tag]", + "source": 0, + "value": "59" + }, + { "begin": 4774, "end": 4810, "name": "SWAP4", "source": 0 }, + { "begin": 4774, "end": 4810, "name": "SWAP3", "source": 0 }, + { "begin": 4774, "end": 4810, "name": "SWAP2", "source": 0 }, + { "begin": 4774, "end": 4810, "name": "SWAP1", "source": 0 }, + { + "begin": 4774, + "end": 4810, + "name": "PUSH [tag]", + "source": 0, + "value": "60" + }, + { + "begin": 4774, + "end": 4810, + "name": "JUMP", + "source": 0, + "value": "[in]" + }, + { + "begin": 4774, + "end": 4810, + "name": "tag", + "source": 0, + "value": "59" + }, + { "begin": 4774, "end": 4810, "name": "JUMPDEST", "source": 0 }, + { + "begin": 4774, + "end": 4810, + "name": "PUSH", + "source": 0, + "value": "20" + }, + { + "begin": 4774, + "end": 4810, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { "begin": 4774, "end": 4810, "name": "MLOAD", "source": 0 }, + { "begin": 4774, "end": 4810, "name": "DUP1", "source": 0 }, + { "begin": 4774, "end": 4810, "name": "DUP4", "source": 0 }, + { "begin": 4774, "end": 4810, "name": "SUB", "source": 0 }, + { "begin": 4774, "end": 4810, "name": "DUP2", "source": 0 }, + { + "begin": 4774, + "end": 4810, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { "begin": 4774, "end": 4810, "name": "DUP8", "source": 0 }, + { "begin": 4774, "end": 4810, "name": "DUP1", "source": 0 }, + { + "begin": 4774, + "end": 4810, + "name": "EXTCODESIZE", + "source": 0 + }, + { "begin": 4774, "end": 4810, "name": "ISZERO", "source": 0 }, + { "begin": 4774, "end": 4810, "name": "DUP1", "source": 0 }, + { "begin": 4774, "end": 4810, "name": "ISZERO", "source": 0 }, + { + "begin": 4774, + "end": 4810, + "name": "PUSH [tag]", + "source": 0, + "value": "61" + }, + { "begin": 4774, "end": 4810, "name": "JUMPI", "source": 0 }, + { + "begin": 4774, + "end": 4810, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { "begin": 4774, "end": 4810, "name": "DUP1", "source": 0 }, + { "begin": 4774, "end": 4810, "name": "REVERT", "source": 0 }, + { + "begin": 4774, + "end": 4810, + "name": "tag", + "source": 0, + "value": "61" + }, + { "begin": 4774, "end": 4810, "name": "JUMPDEST", "source": 0 }, + { "begin": 4774, "end": 4810, "name": "POP", "source": 0 }, + { "begin": 4774, "end": 4810, "name": "GAS", "source": 0 }, + { "begin": 4774, "end": 4810, "name": "CALL", "source": 0 }, + { "begin": 4774, "end": 4810, "name": "ISZERO", "source": 0 }, + { "begin": 4774, "end": 4810, "name": "DUP1", "source": 0 }, + { "begin": 4774, "end": 4810, "name": "ISZERO", "source": 0 }, + { + "begin": 4774, + "end": 4810, + "name": "PUSH [tag]", + "source": 0, + "value": "63" + }, + { "begin": 4774, "end": 4810, "name": "JUMPI", "source": 0 }, + { + "begin": 4774, + "end": 4810, + "name": "RETURNDATASIZE", + "source": 0 + }, + { + "begin": 4774, + "end": 4810, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { "begin": 4774, "end": 4810, "name": "DUP1", "source": 0 }, + { + "begin": 4774, + "end": 4810, + "name": "RETURNDATACOPY", + "source": 0 + }, + { + "begin": 4774, + "end": 4810, + "name": "RETURNDATASIZE", + "source": 0 + }, + { + "begin": 4774, + "end": 4810, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { "begin": 4774, "end": 4810, "name": "REVERT", "source": 0 }, + { + "begin": 4774, + "end": 4810, + "name": "tag", + "source": 0, + "value": "63" + }, + { "begin": 4774, "end": 4810, "name": "JUMPDEST", "source": 0 }, + { "begin": 4774, "end": 4810, "name": "POP", "source": 0 }, + { "begin": 4774, "end": 4810, "name": "POP", "source": 0 }, + { "begin": 4774, "end": 4810, "name": "POP", "source": 0 }, + { "begin": 4774, "end": 4810, "name": "POP", "source": 0 }, + { + "begin": 4774, + "end": 4810, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { "begin": 4774, "end": 4810, "name": "MLOAD", "source": 0 }, + { + "begin": 4774, + "end": 4810, + "name": "RETURNDATASIZE", + "source": 0 + }, + { + "begin": 4774, + "end": 4810, + "name": "PUSH", + "source": 0, + "value": "1F" + }, + { "begin": 4774, "end": 4810, "name": "NOT", "source": 0 }, + { + "begin": 4774, + "end": 4810, + "name": "PUSH", + "source": 0, + "value": "1F" + }, + { "begin": 4774, "end": 4810, "name": "DUP3", "source": 0 }, + { "begin": 4774, "end": 4810, "name": "ADD", "source": 0 }, + { "begin": 4774, "end": 4810, "name": "AND", "source": 0 }, + { "begin": 4774, "end": 4810, "name": "DUP3", "source": 0 }, + { "begin": 4774, "end": 4810, "name": "ADD", "source": 0 }, + { "begin": 4774, "end": 4810, "name": "DUP1", "source": 0 }, + { + "begin": 4774, + "end": 4810, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { "begin": 4774, "end": 4810, "name": "MSTORE", "source": 0 }, + { "begin": 4774, "end": 4810, "name": "POP", "source": 0 }, + { "begin": 4774, "end": 4810, "name": "DUP2", "source": 0 }, + { "begin": 4774, "end": 4810, "name": "ADD", "source": 0 }, + { "begin": 4774, "end": 4810, "name": "SWAP1", "source": 0 }, + { + "begin": 4774, + "end": 4810, + "name": "PUSH [tag]", + "source": 0, + "value": "64" + }, + { "begin": 4774, "end": 4810, "name": "SWAP2", "source": 0 }, + { "begin": 4774, "end": 4810, "name": "SWAP1", "source": 0 }, + { + "begin": 4774, + "end": 4810, + "name": "PUSH [tag]", + "source": 0, + "value": "51" + }, + { + "begin": 4774, + "end": 4810, + "name": "JUMP", + "source": 0, + "value": "[in]" + }, + { + "begin": 4774, + "end": 4810, + "name": "tag", + "source": 0, + "value": "64" + }, + { "begin": 4774, "end": 4810, "name": "JUMPDEST", "source": 0 }, + { "begin": 4767, "end": 4810, "name": "SWAP1", "source": 0 }, + { "begin": 4767, "end": 4810, "name": "POP", "source": 0 }, + { "begin": 4653, "end": 4825, "name": "SWAP4", "source": 0 }, + { "begin": 4653, "end": 4825, "name": "SWAP3", "source": 0 }, + { "begin": 4653, "end": 4825, "name": "POP", "source": 0 }, + { "begin": 4653, "end": 4825, "name": "POP", "source": 0 }, + { "begin": 4653, "end": 4825, "name": "POP", "source": 0 }, + { + "begin": 4653, + "end": 4825, + "name": "JUMP", + "source": 0, + "value": "[out]" + }, + { + "begin": 3892, + "end": 4104, + "name": "tag", + "source": 0, + "value": "29" + }, + { "begin": 3892, "end": 4104, "name": "JUMPDEST", "source": 0 }, + { + "begin": 3956, + "end": 3963, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { "begin": 4069, "end": 4074, "name": "DUP1", "source": 0 }, + { + "begin": 4069, + "end": 4074, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { "begin": 4069, "end": 4074, "name": "SWAP1", "source": 0 }, + { "begin": 4069, "end": 4074, "name": "SLOAD", "source": 0 }, + { "begin": 4069, "end": 4074, "name": "SWAP1", "source": 0 }, + { + "begin": 4069, + "end": 4074, + "name": "PUSH", + "source": 0, + "value": "100" + }, + { "begin": 4069, "end": 4074, "name": "EXP", "source": 0 }, + { "begin": 4069, "end": 4074, "name": "SWAP1", "source": 0 }, + { "begin": 4069, "end": 4074, "name": "DIV", "source": 0 }, + { + "begin": 4069, + "end": 4074, + "name": "PUSH", + "source": 0, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { "begin": 4069, "end": 4074, "name": "AND", "source": 0 }, + { + "begin": 4069, + "end": 4084, + "name": "PUSH", + "source": 0, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { "begin": 4069, "end": 4084, "name": "AND", "source": 0 }, + { + "begin": 4069, + "end": 4084, + "name": "PUSH", + "source": 0, + "value": "70A08231" + }, + { "begin": 4085, "end": 4088, "name": "DUP4", "source": 0 }, + { + "begin": 4069, + "end": 4089, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { "begin": 4069, "end": 4089, "name": "MLOAD", "source": 0 }, + { "begin": 4069, "end": 4089, "name": "DUP3", "source": 0 }, + { + "begin": 4069, + "end": 4089, + "name": "PUSH", + "source": 0, + "value": "FFFFFFFF" + }, + { "begin": 4069, "end": 4089, "name": "AND", "source": 0 }, + { + "begin": 4069, + "end": 4089, + "name": "PUSH", + "source": 0, + "value": "E0" + }, + { "begin": 4069, "end": 4089, "name": "SHL", "source": 0 }, + { "begin": 4069, "end": 4089, "name": "DUP2", "source": 0 }, + { "begin": 4069, "end": 4089, "name": "MSTORE", "source": 0 }, + { + "begin": 4069, + "end": 4089, + "name": "PUSH", + "source": 0, + "value": "4" + }, + { "begin": 4069, "end": 4089, "name": "ADD", "source": 0 }, + { + "begin": 4069, + "end": 4089, + "name": "PUSH [tag]", + "source": 0, + "value": "66" + }, + { "begin": 4069, "end": 4089, "name": "SWAP2", "source": 0 }, + { "begin": 4069, "end": 4089, "name": "SWAP1", "source": 0 }, + { + "begin": 4069, + "end": 4089, + "name": "PUSH [tag]", + "source": 0, + "value": "67" + }, + { + "begin": 4069, + "end": 4089, + "name": "JUMP", + "source": 0, + "value": "[in]" + }, + { + "begin": 4069, + "end": 4089, + "name": "tag", + "source": 0, + "value": "66" + }, + { "begin": 4069, "end": 4089, "name": "JUMPDEST", "source": 0 }, + { + "begin": 4069, + "end": 4089, + "name": "PUSH", + "source": 0, + "value": "20" + }, + { + "begin": 4069, + "end": 4089, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { "begin": 4069, "end": 4089, "name": "MLOAD", "source": 0 }, + { "begin": 4069, "end": 4089, "name": "DUP1", "source": 0 }, + { "begin": 4069, "end": 4089, "name": "DUP4", "source": 0 }, + { "begin": 4069, "end": 4089, "name": "SUB", "source": 0 }, + { "begin": 4069, "end": 4089, "name": "DUP2", "source": 0 }, + { "begin": 4069, "end": 4089, "name": "DUP7", "source": 0 }, + { "begin": 4069, "end": 4089, "name": "DUP1", "source": 0 }, + { + "begin": 4069, + "end": 4089, + "name": "EXTCODESIZE", + "source": 0 + }, + { "begin": 4069, "end": 4089, "name": "ISZERO", "source": 0 }, + { "begin": 4069, "end": 4089, "name": "DUP1", "source": 0 }, + { "begin": 4069, "end": 4089, "name": "ISZERO", "source": 0 }, + { + "begin": 4069, + "end": 4089, + "name": "PUSH [tag]", + "source": 0, + "value": "68" + }, + { "begin": 4069, "end": 4089, "name": "JUMPI", "source": 0 }, + { + "begin": 4069, + "end": 4089, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { "begin": 4069, "end": 4089, "name": "DUP1", "source": 0 }, + { "begin": 4069, "end": 4089, "name": "REVERT", "source": 0 }, + { + "begin": 4069, + "end": 4089, + "name": "tag", + "source": 0, + "value": "68" + }, + { "begin": 4069, "end": 4089, "name": "JUMPDEST", "source": 0 }, + { "begin": 4069, "end": 4089, "name": "POP", "source": 0 }, + { "begin": 4069, "end": 4089, "name": "GAS", "source": 0 }, + { "begin": 4069, "end": 4089, "name": "STATICCALL", "source": 0 }, + { "begin": 4069, "end": 4089, "name": "ISZERO", "source": 0 }, + { "begin": 4069, "end": 4089, "name": "DUP1", "source": 0 }, + { "begin": 4069, "end": 4089, "name": "ISZERO", "source": 0 }, + { + "begin": 4069, + "end": 4089, + "name": "PUSH [tag]", + "source": 0, + "value": "70" + }, + { "begin": 4069, "end": 4089, "name": "JUMPI", "source": 0 }, + { + "begin": 4069, + "end": 4089, + "name": "RETURNDATASIZE", + "source": 0 + }, + { + "begin": 4069, + "end": 4089, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { "begin": 4069, "end": 4089, "name": "DUP1", "source": 0 }, + { + "begin": 4069, + "end": 4089, + "name": "RETURNDATACOPY", + "source": 0 + }, + { + "begin": 4069, + "end": 4089, + "name": "RETURNDATASIZE", + "source": 0 + }, + { + "begin": 4069, + "end": 4089, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { "begin": 4069, "end": 4089, "name": "REVERT", "source": 0 }, + { + "begin": 4069, + "end": 4089, + "name": "tag", + "source": 0, + "value": "70" + }, + { "begin": 4069, "end": 4089, "name": "JUMPDEST", "source": 0 }, + { "begin": 4069, "end": 4089, "name": "POP", "source": 0 }, + { "begin": 4069, "end": 4089, "name": "POP", "source": 0 }, + { "begin": 4069, "end": 4089, "name": "POP", "source": 0 }, + { "begin": 4069, "end": 4089, "name": "POP", "source": 0 }, + { + "begin": 4069, + "end": 4089, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { "begin": 4069, "end": 4089, "name": "MLOAD", "source": 0 }, + { + "begin": 4069, + "end": 4089, + "name": "RETURNDATASIZE", + "source": 0 + }, + { + "begin": 4069, + "end": 4089, + "name": "PUSH", + "source": 0, + "value": "1F" + }, + { "begin": 4069, "end": 4089, "name": "NOT", "source": 0 }, + { + "begin": 4069, + "end": 4089, + "name": "PUSH", + "source": 0, + "value": "1F" + }, + { "begin": 4069, "end": 4089, "name": "DUP3", "source": 0 }, + { "begin": 4069, "end": 4089, "name": "ADD", "source": 0 }, + { "begin": 4069, "end": 4089, "name": "AND", "source": 0 }, + { "begin": 4069, "end": 4089, "name": "DUP3", "source": 0 }, + { "begin": 4069, "end": 4089, "name": "ADD", "source": 0 }, + { "begin": 4069, "end": 4089, "name": "DUP1", "source": 0 }, + { + "begin": 4069, + "end": 4089, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { "begin": 4069, "end": 4089, "name": "MSTORE", "source": 0 }, + { "begin": 4069, "end": 4089, "name": "POP", "source": 0 }, + { "begin": 4069, "end": 4089, "name": "DUP2", "source": 0 }, + { "begin": 4069, "end": 4089, "name": "ADD", "source": 0 }, + { "begin": 4069, "end": 4089, "name": "SWAP1", "source": 0 }, + { + "begin": 4069, + "end": 4089, + "name": "PUSH [tag]", + "source": 0, + "value": "71" + }, + { "begin": 4069, "end": 4089, "name": "SWAP2", "source": 0 }, + { "begin": 4069, "end": 4089, "name": "SWAP1", "source": 0 }, + { + "begin": 4069, + "end": 4089, + "name": "PUSH [tag]", + "source": 0, + "value": "57" + }, + { + "begin": 4069, + "end": 4089, + "name": "JUMP", + "source": 0, + "value": "[in]" + }, + { + "begin": 4069, + "end": 4089, + "name": "tag", + "source": 0, + "value": "71" + }, + { "begin": 4069, "end": 4089, "name": "JUMPDEST", "source": 0 }, + { "begin": 4062, "end": 4089, "name": "SWAP1", "source": 0 }, + { "begin": 4062, "end": 4089, "name": "POP", "source": 0 }, + { "begin": 3892, "end": 4104, "name": "SWAP2", "source": 0 }, + { "begin": 3892, "end": 4104, "name": "SWAP1", "source": 0 }, + { "begin": 3892, "end": 4104, "name": "POP", "source": 0 }, + { + "begin": 3892, + "end": 4104, + "name": "JUMP", + "source": 0, + "value": "[out]" + }, + { + "begin": 3577, + "end": 3649, + "name": "tag", + "source": 0, + "value": "32" + }, + { "begin": 3577, "end": 3649, "name": "JUMPDEST", "source": 0 }, + { + "begin": 3577, + "end": 3649, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { "begin": 3577, "end": 3649, "name": "DUP1", "source": 0 }, + { "begin": 3577, "end": 3649, "name": "SLOAD", "source": 0 }, + { "begin": 3577, "end": 3649, "name": "SWAP1", "source": 0 }, + { + "begin": 3577, + "end": 3649, + "name": "PUSH", + "source": 0, + "value": "100" + }, + { "begin": 3577, "end": 3649, "name": "EXP", "source": 0 }, + { "begin": 3577, "end": 3649, "name": "SWAP1", "source": 0 }, + { "begin": 3577, "end": 3649, "name": "DIV", "source": 0 }, + { + "begin": 3577, + "end": 3649, + "name": "PUSH", + "source": 0, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { "begin": 3577, "end": 3649, "name": "AND", "source": 0 }, + { "begin": 3577, "end": 3649, "name": "DUP2", "source": 0 }, + { + "begin": 3577, + "end": 3649, + "name": "JUMP", + "source": 0, + "value": "[out]" + }, + { + "begin": 4306, + "end": 4449, + "name": "tag", + "source": 0, + "value": "37" + }, + { "begin": 4306, "end": 4449, "name": "JUMPDEST", "source": 0 }, + { + "begin": 4378, + "end": 4382, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { "begin": 4409, "end": 4414, "name": "DUP1", "source": 0 }, + { + "begin": 4409, + "end": 4414, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { "begin": 4409, "end": 4414, "name": "SWAP1", "source": 0 }, + { "begin": 4409, "end": 4414, "name": "SLOAD", "source": 0 }, + { "begin": 4409, "end": 4414, "name": "SWAP1", "source": 0 }, + { + "begin": 4409, + "end": 4414, + "name": "PUSH", + "source": 0, + "value": "100" + }, + { "begin": 4409, "end": 4414, "name": "EXP", "source": 0 }, + { "begin": 4409, "end": 4414, "name": "SWAP1", "source": 0 }, + { "begin": 4409, "end": 4414, "name": "DIV", "source": 0 }, + { + "begin": 4409, + "end": 4414, + "name": "PUSH", + "source": 0, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { "begin": 4409, "end": 4414, "name": "AND", "source": 0 }, + { + "begin": 4409, + "end": 4423, + "name": "PUSH", + "source": 0, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { "begin": 4409, "end": 4423, "name": "AND", "source": 0 }, + { + "begin": 4409, + "end": 4423, + "name": "PUSH", + "source": 0, + "value": "A9059CBB" + }, + { "begin": 4424, "end": 4426, "name": "DUP5", "source": 0 }, + { "begin": 4428, "end": 4433, "name": "DUP5", "source": 0 }, + { + "begin": 4409, + "end": 4434, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { "begin": 4409, "end": 4434, "name": "MLOAD", "source": 0 }, + { "begin": 4409, "end": 4434, "name": "DUP4", "source": 0 }, + { + "begin": 4409, + "end": 4434, + "name": "PUSH", + "source": 0, + "value": "FFFFFFFF" + }, + { "begin": 4409, "end": 4434, "name": "AND", "source": 0 }, + { + "begin": 4409, + "end": 4434, + "name": "PUSH", + "source": 0, + "value": "E0" + }, + { "begin": 4409, "end": 4434, "name": "SHL", "source": 0 }, + { "begin": 4409, "end": 4434, "name": "DUP2", "source": 0 }, + { "begin": 4409, "end": 4434, "name": "MSTORE", "source": 0 }, + { + "begin": 4409, + "end": 4434, + "name": "PUSH", + "source": 0, + "value": "4" + }, + { "begin": 4409, "end": 4434, "name": "ADD", "source": 0 }, + { + "begin": 4409, + "end": 4434, + "name": "PUSH [tag]", + "source": 0, + "value": "73" + }, + { "begin": 4409, "end": 4434, "name": "SWAP3", "source": 0 }, + { "begin": 4409, "end": 4434, "name": "SWAP2", "source": 0 }, + { "begin": 4409, "end": 4434, "name": "SWAP1", "source": 0 }, + { + "begin": 4409, + "end": 4434, + "name": "PUSH [tag]", + "source": 0, + "value": "46" + }, + { + "begin": 4409, + "end": 4434, + "name": "JUMP", + "source": 0, + "value": "[in]" + }, + { + "begin": 4409, + "end": 4434, + "name": "tag", + "source": 0, + "value": "73" + }, + { "begin": 4409, "end": 4434, "name": "JUMPDEST", "source": 0 }, + { + "begin": 4409, + "end": 4434, + "name": "PUSH", + "source": 0, + "value": "20" + }, + { + "begin": 4409, + "end": 4434, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { "begin": 4409, "end": 4434, "name": "MLOAD", "source": 0 }, + { "begin": 4409, "end": 4434, "name": "DUP1", "source": 0 }, + { "begin": 4409, "end": 4434, "name": "DUP4", "source": 0 }, + { "begin": 4409, "end": 4434, "name": "SUB", "source": 0 }, + { "begin": 4409, "end": 4434, "name": "DUP2", "source": 0 }, + { + "begin": 4409, + "end": 4434, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { "begin": 4409, "end": 4434, "name": "DUP8", "source": 0 }, + { "begin": 4409, "end": 4434, "name": "DUP1", "source": 0 }, + { + "begin": 4409, + "end": 4434, + "name": "EXTCODESIZE", + "source": 0 + }, + { "begin": 4409, "end": 4434, "name": "ISZERO", "source": 0 }, + { "begin": 4409, "end": 4434, "name": "DUP1", "source": 0 }, + { "begin": 4409, "end": 4434, "name": "ISZERO", "source": 0 }, + { + "begin": 4409, + "end": 4434, + "name": "PUSH [tag]", + "source": 0, + "value": "74" + }, + { "begin": 4409, "end": 4434, "name": "JUMPI", "source": 0 }, + { + "begin": 4409, + "end": 4434, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { "begin": 4409, "end": 4434, "name": "DUP1", "source": 0 }, + { "begin": 4409, "end": 4434, "name": "REVERT", "source": 0 }, + { + "begin": 4409, + "end": 4434, + "name": "tag", + "source": 0, + "value": "74" + }, + { "begin": 4409, "end": 4434, "name": "JUMPDEST", "source": 0 }, + { "begin": 4409, "end": 4434, "name": "POP", "source": 0 }, + { "begin": 4409, "end": 4434, "name": "GAS", "source": 0 }, + { "begin": 4409, "end": 4434, "name": "CALL", "source": 0 }, + { "begin": 4409, "end": 4434, "name": "ISZERO", "source": 0 }, + { "begin": 4409, "end": 4434, "name": "DUP1", "source": 0 }, + { "begin": 4409, "end": 4434, "name": "ISZERO", "source": 0 }, + { + "begin": 4409, + "end": 4434, + "name": "PUSH [tag]", + "source": 0, + "value": "76" + }, + { "begin": 4409, "end": 4434, "name": "JUMPI", "source": 0 }, + { + "begin": 4409, + "end": 4434, + "name": "RETURNDATASIZE", + "source": 0 + }, + { + "begin": 4409, + "end": 4434, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { "begin": 4409, "end": 4434, "name": "DUP1", "source": 0 }, + { + "begin": 4409, + "end": 4434, + "name": "RETURNDATACOPY", + "source": 0 + }, + { + "begin": 4409, + "end": 4434, + "name": "RETURNDATASIZE", + "source": 0 + }, + { + "begin": 4409, + "end": 4434, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { "begin": 4409, "end": 4434, "name": "REVERT", "source": 0 }, + { + "begin": 4409, + "end": 4434, + "name": "tag", + "source": 0, + "value": "76" + }, + { "begin": 4409, "end": 4434, "name": "JUMPDEST", "source": 0 }, + { "begin": 4409, "end": 4434, "name": "POP", "source": 0 }, + { "begin": 4409, "end": 4434, "name": "POP", "source": 0 }, + { "begin": 4409, "end": 4434, "name": "POP", "source": 0 }, + { "begin": 4409, "end": 4434, "name": "POP", "source": 0 }, + { + "begin": 4409, + "end": 4434, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { "begin": 4409, "end": 4434, "name": "MLOAD", "source": 0 }, + { + "begin": 4409, + "end": 4434, + "name": "RETURNDATASIZE", + "source": 0 + }, + { + "begin": 4409, + "end": 4434, + "name": "PUSH", + "source": 0, + "value": "1F" + }, + { "begin": 4409, "end": 4434, "name": "NOT", "source": 0 }, + { + "begin": 4409, + "end": 4434, + "name": "PUSH", + "source": 0, + "value": "1F" + }, + { "begin": 4409, "end": 4434, "name": "DUP3", "source": 0 }, + { "begin": 4409, "end": 4434, "name": "ADD", "source": 0 }, + { "begin": 4409, "end": 4434, "name": "AND", "source": 0 }, + { "begin": 4409, "end": 4434, "name": "DUP3", "source": 0 }, + { "begin": 4409, "end": 4434, "name": "ADD", "source": 0 }, + { "begin": 4409, "end": 4434, "name": "DUP1", "source": 0 }, + { + "begin": 4409, + "end": 4434, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { "begin": 4409, "end": 4434, "name": "MSTORE", "source": 0 }, + { "begin": 4409, "end": 4434, "name": "POP", "source": 0 }, + { "begin": 4409, "end": 4434, "name": "DUP2", "source": 0 }, + { "begin": 4409, "end": 4434, "name": "ADD", "source": 0 }, + { "begin": 4409, "end": 4434, "name": "SWAP1", "source": 0 }, + { + "begin": 4409, + "end": 4434, + "name": "PUSH [tag]", + "source": 0, + "value": "77" + }, + { "begin": 4409, "end": 4434, "name": "SWAP2", "source": 0 }, + { "begin": 4409, "end": 4434, "name": "SWAP1", "source": 0 }, + { + "begin": 4409, + "end": 4434, + "name": "PUSH [tag]", + "source": 0, + "value": "51" + }, + { + "begin": 4409, + "end": 4434, + "name": "JUMP", + "source": 0, + "value": "[in]" + }, + { + "begin": 4409, + "end": 4434, + "name": "tag", + "source": 0, + "value": "77" + }, + { "begin": 4409, "end": 4434, "name": "JUMPDEST", "source": 0 }, + { "begin": 4402, "end": 4434, "name": "SWAP1", "source": 0 }, + { "begin": 4402, "end": 4434, "name": "POP", "source": 0 }, + { "begin": 4306, "end": 4449, "name": "SWAP3", "source": 0 }, + { "begin": 4306, "end": 4449, "name": "SWAP2", "source": 0 }, + { "begin": 4306, "end": 4449, "name": "POP", "source": 0 }, + { "begin": 4306, "end": 4449, "name": "POP", "source": 0 }, + { + "begin": 4306, + "end": 4449, + "name": "JUMP", + "source": 0, + "value": "[out]" + }, + { + "begin": 4130, + "end": 4292, + "name": "tag", + "source": 0, + "value": "42" + }, + { "begin": 4130, "end": 4292, "name": "JUMPDEST", "source": 0 }, + { + "begin": 4213, + "end": 4220, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { "begin": 4246, "end": 4251, "name": "DUP1", "source": 0 }, + { + "begin": 4246, + "end": 4251, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { "begin": 4246, "end": 4251, "name": "SWAP1", "source": 0 }, + { "begin": 4246, "end": 4251, "name": "SLOAD", "source": 0 }, + { "begin": 4246, "end": 4251, "name": "SWAP1", "source": 0 }, + { + "begin": 4246, + "end": 4251, + "name": "PUSH", + "source": 0, + "value": "100" + }, + { "begin": 4246, "end": 4251, "name": "EXP", "source": 0 }, + { "begin": 4246, "end": 4251, "name": "SWAP1", "source": 0 }, + { "begin": 4246, "end": 4251, "name": "DIV", "source": 0 }, + { + "begin": 4246, + "end": 4251, + "name": "PUSH", + "source": 0, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { "begin": 4246, "end": 4251, "name": "AND", "source": 0 }, + { + "begin": 4246, + "end": 4261, + "name": "PUSH", + "source": 0, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { "begin": 4246, "end": 4261, "name": "AND", "source": 0 }, + { + "begin": 4246, + "end": 4261, + "name": "PUSH", + "source": 0, + "value": "DD62ED3E" + }, + { "begin": 4262, "end": 4267, "name": "DUP5", "source": 0 }, + { "begin": 4269, "end": 4276, "name": "DUP5", "source": 0 }, + { + "begin": 4246, + "end": 4277, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { "begin": 4246, "end": 4277, "name": "MLOAD", "source": 0 }, + { "begin": 4246, "end": 4277, "name": "DUP4", "source": 0 }, + { + "begin": 4246, + "end": 4277, + "name": "PUSH", + "source": 0, + "value": "FFFFFFFF" + }, + { "begin": 4246, "end": 4277, "name": "AND", "source": 0 }, + { + "begin": 4246, + "end": 4277, + "name": "PUSH", + "source": 0, + "value": "E0" + }, + { "begin": 4246, "end": 4277, "name": "SHL", "source": 0 }, + { "begin": 4246, "end": 4277, "name": "DUP2", "source": 0 }, + { "begin": 4246, "end": 4277, "name": "MSTORE", "source": 0 }, + { + "begin": 4246, + "end": 4277, + "name": "PUSH", + "source": 0, + "value": "4" + }, + { "begin": 4246, "end": 4277, "name": "ADD", "source": 0 }, + { + "begin": 4246, + "end": 4277, + "name": "PUSH [tag]", + "source": 0, + "value": "79" + }, + { "begin": 4246, "end": 4277, "name": "SWAP3", "source": 0 }, + { "begin": 4246, "end": 4277, "name": "SWAP2", "source": 0 }, + { "begin": 4246, "end": 4277, "name": "SWAP1", "source": 0 }, + { + "begin": 4246, + "end": 4277, + "name": "PUSH [tag]", + "source": 0, + "value": "80" + }, + { + "begin": 4246, + "end": 4277, + "name": "JUMP", + "source": 0, + "value": "[in]" + }, + { + "begin": 4246, + "end": 4277, + "name": "tag", + "source": 0, + "value": "79" + }, + { "begin": 4246, "end": 4277, "name": "JUMPDEST", "source": 0 }, + { + "begin": 4246, + "end": 4277, + "name": "PUSH", + "source": 0, + "value": "20" + }, + { + "begin": 4246, + "end": 4277, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { "begin": 4246, "end": 4277, "name": "MLOAD", "source": 0 }, + { "begin": 4246, "end": 4277, "name": "DUP1", "source": 0 }, + { "begin": 4246, "end": 4277, "name": "DUP4", "source": 0 }, + { "begin": 4246, "end": 4277, "name": "SUB", "source": 0 }, + { "begin": 4246, "end": 4277, "name": "DUP2", "source": 0 }, + { "begin": 4246, "end": 4277, "name": "DUP7", "source": 0 }, + { "begin": 4246, "end": 4277, "name": "DUP1", "source": 0 }, + { + "begin": 4246, + "end": 4277, + "name": "EXTCODESIZE", + "source": 0 + }, + { "begin": 4246, "end": 4277, "name": "ISZERO", "source": 0 }, + { "begin": 4246, "end": 4277, "name": "DUP1", "source": 0 }, + { "begin": 4246, "end": 4277, "name": "ISZERO", "source": 0 }, + { + "begin": 4246, + "end": 4277, + "name": "PUSH [tag]", + "source": 0, + "value": "81" + }, + { "begin": 4246, "end": 4277, "name": "JUMPI", "source": 0 }, + { + "begin": 4246, + "end": 4277, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { "begin": 4246, "end": 4277, "name": "DUP1", "source": 0 }, + { "begin": 4246, "end": 4277, "name": "REVERT", "source": 0 }, + { + "begin": 4246, + "end": 4277, + "name": "tag", + "source": 0, + "value": "81" + }, + { "begin": 4246, "end": 4277, "name": "JUMPDEST", "source": 0 }, + { "begin": 4246, "end": 4277, "name": "POP", "source": 0 }, + { "begin": 4246, "end": 4277, "name": "GAS", "source": 0 }, + { "begin": 4246, "end": 4277, "name": "STATICCALL", "source": 0 }, + { "begin": 4246, "end": 4277, "name": "ISZERO", "source": 0 }, + { "begin": 4246, "end": 4277, "name": "DUP1", "source": 0 }, + { "begin": 4246, "end": 4277, "name": "ISZERO", "source": 0 }, + { + "begin": 4246, + "end": 4277, + "name": "PUSH [tag]", + "source": 0, + "value": "83" + }, + { "begin": 4246, "end": 4277, "name": "JUMPI", "source": 0 }, + { + "begin": 4246, + "end": 4277, + "name": "RETURNDATASIZE", + "source": 0 + }, + { + "begin": 4246, + "end": 4277, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { "begin": 4246, "end": 4277, "name": "DUP1", "source": 0 }, + { + "begin": 4246, + "end": 4277, + "name": "RETURNDATACOPY", + "source": 0 + }, + { + "begin": 4246, + "end": 4277, + "name": "RETURNDATASIZE", + "source": 0 + }, + { + "begin": 4246, + "end": 4277, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { "begin": 4246, "end": 4277, "name": "REVERT", "source": 0 }, + { + "begin": 4246, + "end": 4277, + "name": "tag", + "source": 0, + "value": "83" + }, + { "begin": 4246, "end": 4277, "name": "JUMPDEST", "source": 0 }, + { "begin": 4246, "end": 4277, "name": "POP", "source": 0 }, + { "begin": 4246, "end": 4277, "name": "POP", "source": 0 }, + { "begin": 4246, "end": 4277, "name": "POP", "source": 0 }, + { "begin": 4246, "end": 4277, "name": "POP", "source": 0 }, + { + "begin": 4246, + "end": 4277, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { "begin": 4246, "end": 4277, "name": "MLOAD", "source": 0 }, + { + "begin": 4246, + "end": 4277, + "name": "RETURNDATASIZE", + "source": 0 + }, + { + "begin": 4246, + "end": 4277, + "name": "PUSH", + "source": 0, + "value": "1F" + }, + { "begin": 4246, "end": 4277, "name": "NOT", "source": 0 }, + { + "begin": 4246, + "end": 4277, + "name": "PUSH", + "source": 0, + "value": "1F" + }, + { "begin": 4246, "end": 4277, "name": "DUP3", "source": 0 }, + { "begin": 4246, "end": 4277, "name": "ADD", "source": 0 }, + { "begin": 4246, "end": 4277, "name": "AND", "source": 0 }, + { "begin": 4246, "end": 4277, "name": "DUP3", "source": 0 }, + { "begin": 4246, "end": 4277, "name": "ADD", "source": 0 }, + { "begin": 4246, "end": 4277, "name": "DUP1", "source": 0 }, + { + "begin": 4246, + "end": 4277, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { "begin": 4246, "end": 4277, "name": "MSTORE", "source": 0 }, + { "begin": 4246, "end": 4277, "name": "POP", "source": 0 }, + { "begin": 4246, "end": 4277, "name": "DUP2", "source": 0 }, + { "begin": 4246, "end": 4277, "name": "ADD", "source": 0 }, + { "begin": 4246, "end": 4277, "name": "SWAP1", "source": 0 }, + { + "begin": 4246, + "end": 4277, + "name": "PUSH [tag]", + "source": 0, + "value": "84" + }, + { "begin": 4246, "end": 4277, "name": "SWAP2", "source": 0 }, + { "begin": 4246, "end": 4277, "name": "SWAP1", "source": 0 }, + { + "begin": 4246, + "end": 4277, + "name": "PUSH [tag]", + "source": 0, + "value": "57" + }, + { + "begin": 4246, + "end": 4277, + "name": "JUMP", + "source": 0, + "value": "[in]" + }, + { + "begin": 4246, + "end": 4277, + "name": "tag", + "source": 0, + "value": "84" + }, + { "begin": 4246, "end": 4277, "name": "JUMPDEST", "source": 0 }, + { "begin": 4239, "end": 4277, "name": "SWAP1", "source": 0 }, + { "begin": 4239, "end": 4277, "name": "POP", "source": 0 }, + { "begin": 4130, "end": 4292, "name": "SWAP3", "source": 0 }, + { "begin": 4130, "end": 4292, "name": "SWAP2", "source": 0 }, + { "begin": 4130, "end": 4292, "name": "POP", "source": 0 }, + { "begin": 4130, "end": 4292, "name": "POP", "source": 0 }, + { + "begin": 4130, + "end": 4292, + "name": "JUMP", + "source": 0, + "value": "[out]" + }, + { + "begin": 88, + "end": 205, + "name": "tag", + "source": 1, + "value": "86" + }, + { "begin": 88, "end": 205, "name": "JUMPDEST", "source": 1 }, + { + "begin": 197, + "end": 198, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { "begin": 194, "end": 195, "name": "DUP1", "source": 1 }, + { "begin": 187, "end": 199, "name": "REVERT", "source": 1 }, + { + "begin": 334, + "end": 460, + "name": "tag", + "source": 1, + "value": "88" + }, + { "begin": 334, "end": 460, "name": "JUMPDEST", "source": 1 }, + { + "begin": 371, + "end": 378, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 411, + "end": 453, + "name": "PUSH", + "source": 1, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { "begin": 404, "end": 409, "name": "DUP3", "source": 1 }, + { "begin": 400, "end": 454, "name": "AND", "source": 1 }, + { "begin": 389, "end": 454, "name": "SWAP1", "source": 1 }, + { "begin": 389, "end": 454, "name": "POP", "source": 1 }, + { "begin": 334, "end": 460, "name": "SWAP2", "source": 1 }, + { "begin": 334, "end": 460, "name": "SWAP1", "source": 1 }, + { "begin": 334, "end": 460, "name": "POP", "source": 1 }, + { + "begin": 334, + "end": 460, + "name": "JUMP", + "source": 1, + "value": "[out]" + }, + { + "begin": 466, + "end": 562, + "name": "tag", + "source": 1, + "value": "89" + }, + { "begin": 466, "end": 562, "name": "JUMPDEST", "source": 1 }, + { + "begin": 503, + "end": 510, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 532, + "end": 556, + "name": "PUSH [tag]", + "source": 1, + "value": "113" + }, + { "begin": 550, "end": 555, "name": "DUP3", "source": 1 }, + { + "begin": 532, + "end": 556, + "name": "PUSH [tag]", + "source": 1, + "value": "88" + }, + { + "begin": 532, + "end": 556, + "name": "JUMP", + "source": 1, + "value": "[in]" + }, + { + "begin": 532, + "end": 556, + "name": "tag", + "source": 1, + "value": "113" + }, + { "begin": 532, "end": 556, "name": "JUMPDEST", "source": 1 }, + { "begin": 521, "end": 556, "name": "SWAP1", "source": 1 }, + { "begin": 521, "end": 556, "name": "POP", "source": 1 }, + { "begin": 466, "end": 562, "name": "SWAP2", "source": 1 }, + { "begin": 466, "end": 562, "name": "SWAP1", "source": 1 }, + { "begin": 466, "end": 562, "name": "POP", "source": 1 }, + { + "begin": 466, + "end": 562, + "name": "JUMP", + "source": 1, + "value": "[out]" + }, + { + "begin": 568, + "end": 690, + "name": "tag", + "source": 1, + "value": "90" + }, + { "begin": 568, "end": 690, "name": "JUMPDEST", "source": 1 }, + { + "begin": 641, + "end": 665, + "name": "PUSH [tag]", + "source": 1, + "value": "115" + }, + { "begin": 659, "end": 664, "name": "DUP2", "source": 1 }, + { + "begin": 641, + "end": 665, + "name": "PUSH [tag]", + "source": 1, + "value": "89" + }, + { + "begin": 641, + "end": 665, + "name": "JUMP", + "source": 1, + "value": "[in]" + }, + { + "begin": 641, + "end": 665, + "name": "tag", + "source": 1, + "value": "115" + }, + { "begin": 641, "end": 665, "name": "JUMPDEST", "source": 1 }, + { "begin": 634, "end": 639, "name": "DUP2", "source": 1 }, + { "begin": 631, "end": 666, "name": "EQ", "source": 1 }, + { + "begin": 621, + "end": 684, + "name": "PUSH [tag]", + "source": 1, + "value": "116" + }, + { "begin": 621, "end": 684, "name": "JUMPI", "source": 1 }, + { + "begin": 680, + "end": 681, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { "begin": 677, "end": 678, "name": "DUP1", "source": 1 }, + { "begin": 670, "end": 682, "name": "REVERT", "source": 1 }, + { + "begin": 621, + "end": 684, + "name": "tag", + "source": 1, + "value": "116" + }, + { "begin": 621, "end": 684, "name": "JUMPDEST", "source": 1 }, + { "begin": 568, "end": 690, "name": "POP", "source": 1 }, + { + "begin": 568, + "end": 690, + "name": "JUMP", + "source": 1, + "value": "[out]" + }, + { + "begin": 696, + "end": 835, + "name": "tag", + "source": 1, + "value": "91" + }, + { "begin": 696, "end": 835, "name": "JUMPDEST", "source": 1 }, + { + "begin": 742, + "end": 747, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { "begin": 780, "end": 786, "name": "DUP2", "source": 1 }, + { "begin": 767, "end": 787, "name": "CALLDATALOAD", "source": 1 }, + { "begin": 758, "end": 787, "name": "SWAP1", "source": 1 }, + { "begin": 758, "end": 787, "name": "POP", "source": 1 }, + { + "begin": 796, + "end": 829, + "name": "PUSH [tag]", + "source": 1, + "value": "118" + }, + { "begin": 823, "end": 828, "name": "DUP2", "source": 1 }, + { + "begin": 796, + "end": 829, + "name": "PUSH [tag]", + "source": 1, + "value": "90" + }, + { + "begin": 796, + "end": 829, + "name": "JUMP", + "source": 1, + "value": "[in]" + }, + { + "begin": 796, + "end": 829, + "name": "tag", + "source": 1, + "value": "118" + }, + { "begin": 796, "end": 829, "name": "JUMPDEST", "source": 1 }, + { "begin": 696, "end": 835, "name": "SWAP3", "source": 1 }, + { "begin": 696, "end": 835, "name": "SWAP2", "source": 1 }, + { "begin": 696, "end": 835, "name": "POP", "source": 1 }, + { "begin": 696, "end": 835, "name": "POP", "source": 1 }, + { + "begin": 696, + "end": 835, + "name": "JUMP", + "source": 1, + "value": "[out]" + }, + { + "begin": 841, + "end": 918, + "name": "tag", + "source": 1, + "value": "92" + }, + { "begin": 841, "end": 918, "name": "JUMPDEST", "source": 1 }, + { + "begin": 878, + "end": 885, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { "begin": 907, "end": 912, "name": "DUP2", "source": 1 }, + { "begin": 896, "end": 912, "name": "SWAP1", "source": 1 }, + { "begin": 896, "end": 912, "name": "POP", "source": 1 }, + { "begin": 841, "end": 918, "name": "SWAP2", "source": 1 }, + { "begin": 841, "end": 918, "name": "SWAP1", "source": 1 }, + { "begin": 841, "end": 918, "name": "POP", "source": 1 }, + { + "begin": 841, + "end": 918, + "name": "JUMP", + "source": 1, + "value": "[out]" + }, + { + "begin": 924, + "end": 1046, + "name": "tag", + "source": 1, + "value": "93" + }, + { "begin": 924, "end": 1046, "name": "JUMPDEST", "source": 1 }, + { + "begin": 997, + "end": 1021, + "name": "PUSH [tag]", + "source": 1, + "value": "121" + }, + { "begin": 1015, "end": 1020, "name": "DUP2", "source": 1 }, + { + "begin": 997, + "end": 1021, + "name": "PUSH [tag]", + "source": 1, + "value": "92" + }, + { + "begin": 997, + "end": 1021, + "name": "JUMP", + "source": 1, + "value": "[in]" + }, + { + "begin": 997, + "end": 1021, + "name": "tag", + "source": 1, + "value": "121" + }, + { "begin": 997, "end": 1021, "name": "JUMPDEST", "source": 1 }, + { "begin": 990, "end": 995, "name": "DUP2", "source": 1 }, + { "begin": 987, "end": 1022, "name": "EQ", "source": 1 }, + { + "begin": 977, + "end": 1040, + "name": "PUSH [tag]", + "source": 1, + "value": "122" + }, + { "begin": 977, "end": 1040, "name": "JUMPI", "source": 1 }, + { + "begin": 1036, + "end": 1037, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { "begin": 1033, "end": 1034, "name": "DUP1", "source": 1 }, + { "begin": 1026, "end": 1038, "name": "REVERT", "source": 1 }, + { + "begin": 977, + "end": 1040, + "name": "tag", + "source": 1, + "value": "122" + }, + { "begin": 977, "end": 1040, "name": "JUMPDEST", "source": 1 }, + { "begin": 924, "end": 1046, "name": "POP", "source": 1 }, + { + "begin": 924, + "end": 1046, + "name": "JUMP", + "source": 1, + "value": "[out]" + }, + { + "begin": 1052, + "end": 1191, + "name": "tag", + "source": 1, + "value": "94" + }, + { "begin": 1052, "end": 1191, "name": "JUMPDEST", "source": 1 }, + { + "begin": 1098, + "end": 1103, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { "begin": 1136, "end": 1142, "name": "DUP2", "source": 1 }, + { + "begin": 1123, + "end": 1143, + "name": "CALLDATALOAD", + "source": 1 + }, + { "begin": 1114, "end": 1143, "name": "SWAP1", "source": 1 }, + { "begin": 1114, "end": 1143, "name": "POP", "source": 1 }, + { + "begin": 1152, + "end": 1185, + "name": "PUSH [tag]", + "source": 1, + "value": "124" + }, + { "begin": 1179, "end": 1184, "name": "DUP2", "source": 1 }, + { + "begin": 1152, + "end": 1185, + "name": "PUSH [tag]", + "source": 1, + "value": "93" + }, + { + "begin": 1152, + "end": 1185, + "name": "JUMP", + "source": 1, + "value": "[in]" + }, + { + "begin": 1152, + "end": 1185, + "name": "tag", + "source": 1, + "value": "124" + }, + { "begin": 1152, "end": 1185, "name": "JUMPDEST", "source": 1 }, + { "begin": 1052, "end": 1191, "name": "SWAP3", "source": 1 }, + { "begin": 1052, "end": 1191, "name": "SWAP2", "source": 1 }, + { "begin": 1052, "end": 1191, "name": "POP", "source": 1 }, + { "begin": 1052, "end": 1191, "name": "POP", "source": 1 }, + { + "begin": 1052, + "end": 1191, + "name": "JUMP", + "source": 1, + "value": "[out]" + }, + { + "begin": 1197, + "end": 1671, + "name": "tag", + "source": 1, + "value": "13" + }, + { "begin": 1197, "end": 1671, "name": "JUMPDEST", "source": 1 }, + { + "begin": 1265, + "end": 1271, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { "begin": 1273, "end": 1279, "name": "DUP1", "source": 1 }, + { + "begin": 1322, + "end": 1324, + "name": "PUSH", + "source": 1, + "value": "40" + }, + { "begin": 1310, "end": 1319, "name": "DUP4", "source": 1 }, + { "begin": 1301, "end": 1308, "name": "DUP6", "source": 1 }, + { "begin": 1297, "end": 1320, "name": "SUB", "source": 1 }, + { "begin": 1293, "end": 1325, "name": "SLT", "source": 1 }, + { "begin": 1290, "end": 1409, "name": "ISZERO", "source": 1 }, + { + "begin": 1290, + "end": 1409, + "name": "PUSH [tag]", + "source": 1, + "value": "126" + }, + { "begin": 1290, "end": 1409, "name": "JUMPI", "source": 1 }, + { + "begin": 1328, + "end": 1407, + "name": "PUSH [tag]", + "source": 1, + "value": "127" + }, + { + "begin": 1328, + "end": 1407, + "name": "PUSH [tag]", + "source": 1, + "value": "86" + }, + { + "begin": 1328, + "end": 1407, + "name": "JUMP", + "source": 1, + "value": "[in]" + }, + { + "begin": 1328, + "end": 1407, + "name": "tag", + "source": 1, + "value": "127" + }, + { "begin": 1328, "end": 1407, "name": "JUMPDEST", "source": 1 }, + { + "begin": 1290, + "end": 1409, + "name": "tag", + "source": 1, + "value": "126" + }, + { "begin": 1290, "end": 1409, "name": "JUMPDEST", "source": 1 }, + { + "begin": 1448, + "end": 1449, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 1473, + "end": 1526, + "name": "PUSH [tag]", + "source": 1, + "value": "128" + }, + { "begin": 1518, "end": 1525, "name": "DUP6", "source": 1 }, + { "begin": 1509, "end": 1515, "name": "DUP3", "source": 1 }, + { "begin": 1498, "end": 1507, "name": "DUP7", "source": 1 }, + { "begin": 1494, "end": 1516, "name": "ADD", "source": 1 }, + { + "begin": 1473, + "end": 1526, + "name": "PUSH [tag]", + "source": 1, + "value": "91" + }, + { + "begin": 1473, + "end": 1526, + "name": "JUMP", + "source": 1, + "value": "[in]" + }, + { + "begin": 1473, + "end": 1526, + "name": "tag", + "source": 1, + "value": "128" + }, + { "begin": 1473, "end": 1526, "name": "JUMPDEST", "source": 1 }, + { "begin": 1463, "end": 1526, "name": "SWAP3", "source": 1 }, + { "begin": 1463, "end": 1526, "name": "POP", "source": 1 }, + { "begin": 1419, "end": 1536, "name": "POP", "source": 1 }, + { + "begin": 1575, + "end": 1577, + "name": "PUSH", + "source": 1, + "value": "20" + }, + { + "begin": 1601, + "end": 1654, + "name": "PUSH [tag]", + "source": 1, + "value": "129" + }, + { "begin": 1646, "end": 1653, "name": "DUP6", "source": 1 }, + { "begin": 1637, "end": 1643, "name": "DUP3", "source": 1 }, + { "begin": 1626, "end": 1635, "name": "DUP7", "source": 1 }, + { "begin": 1622, "end": 1644, "name": "ADD", "source": 1 }, + { + "begin": 1601, + "end": 1654, + "name": "PUSH [tag]", + "source": 1, + "value": "94" + }, + { + "begin": 1601, + "end": 1654, + "name": "JUMP", + "source": 1, + "value": "[in]" + }, + { + "begin": 1601, + "end": 1654, + "name": "tag", + "source": 1, + "value": "129" + }, + { "begin": 1601, "end": 1654, "name": "JUMPDEST", "source": 1 }, + { "begin": 1591, "end": 1654, "name": "SWAP2", "source": 1 }, + { "begin": 1591, "end": 1654, "name": "POP", "source": 1 }, + { "begin": 1546, "end": 1664, "name": "POP", "source": 1 }, + { "begin": 1197, "end": 1671, "name": "SWAP3", "source": 1 }, + { "begin": 1197, "end": 1671, "name": "POP", "source": 1 }, + { "begin": 1197, "end": 1671, "name": "SWAP3", "source": 1 }, + { "begin": 1197, "end": 1671, "name": "SWAP1", "source": 1 }, + { "begin": 1197, "end": 1671, "name": "POP", "source": 1 }, + { + "begin": 1197, + "end": 1671, + "name": "JUMP", + "source": 1, + "value": "[out]" + }, + { + "begin": 1677, + "end": 1767, + "name": "tag", + "source": 1, + "value": "95" + }, + { "begin": 1677, "end": 1767, "name": "JUMPDEST", "source": 1 }, + { + "begin": 1711, + "end": 1718, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { "begin": 1754, "end": 1759, "name": "DUP2", "source": 1 }, + { "begin": 1747, "end": 1760, "name": "ISZERO", "source": 1 }, + { "begin": 1740, "end": 1761, "name": "ISZERO", "source": 1 }, + { "begin": 1729, "end": 1761, "name": "SWAP1", "source": 1 }, + { "begin": 1729, "end": 1761, "name": "POP", "source": 1 }, + { "begin": 1677, "end": 1767, "name": "SWAP2", "source": 1 }, + { "begin": 1677, "end": 1767, "name": "SWAP1", "source": 1 }, + { "begin": 1677, "end": 1767, "name": "POP", "source": 1 }, + { + "begin": 1677, + "end": 1767, + "name": "JUMP", + "source": 1, + "value": "[out]" + }, + { + "begin": 1773, + "end": 1882, + "name": "tag", + "source": 1, + "value": "96" + }, + { "begin": 1773, "end": 1882, "name": "JUMPDEST", "source": 1 }, + { + "begin": 1854, + "end": 1875, + "name": "PUSH [tag]", + "source": 1, + "value": "132" + }, + { "begin": 1869, "end": 1874, "name": "DUP2", "source": 1 }, + { + "begin": 1854, + "end": 1875, + "name": "PUSH [tag]", + "source": 1, + "value": "95" + }, + { + "begin": 1854, + "end": 1875, + "name": "JUMP", + "source": 1, + "value": "[in]" + }, + { + "begin": 1854, + "end": 1875, + "name": "tag", + "source": 1, + "value": "132" + }, + { "begin": 1854, "end": 1875, "name": "JUMPDEST", "source": 1 }, + { "begin": 1849, "end": 1852, "name": "DUP3", "source": 1 }, + { "begin": 1842, "end": 1876, "name": "MSTORE", "source": 1 }, + { "begin": 1773, "end": 1882, "name": "POP", "source": 1 }, + { "begin": 1773, "end": 1882, "name": "POP", "source": 1 }, + { + "begin": 1773, + "end": 1882, + "name": "JUMP", + "source": 1, + "value": "[out]" + }, + { + "begin": 1888, + "end": 2098, + "name": "tag", + "source": 1, + "value": "16" + }, + { "begin": 1888, "end": 2098, "name": "JUMPDEST", "source": 1 }, + { + "begin": 1975, + "end": 1979, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 2013, + "end": 2015, + "name": "PUSH", + "source": 1, + "value": "20" + }, + { "begin": 2002, "end": 2011, "name": "DUP3", "source": 1 }, + { "begin": 1998, "end": 2016, "name": "ADD", "source": 1 }, + { "begin": 1990, "end": 2016, "name": "SWAP1", "source": 1 }, + { "begin": 1990, "end": 2016, "name": "POP", "source": 1 }, + { + "begin": 2026, + "end": 2091, + "name": "PUSH [tag]", + "source": 1, + "value": "134" + }, + { + "begin": 2088, + "end": 2089, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { "begin": 2077, "end": 2086, "name": "DUP4", "source": 1 }, + { "begin": 2073, "end": 2090, "name": "ADD", "source": 1 }, + { "begin": 2064, "end": 2070, "name": "DUP5", "source": 1 }, + { + "begin": 2026, + "end": 2091, + "name": "PUSH [tag]", + "source": 1, + "value": "96" + }, + { + "begin": 2026, + "end": 2091, + "name": "JUMP", + "source": 1, + "value": "[in]" + }, + { + "begin": 2026, + "end": 2091, + "name": "tag", + "source": 1, + "value": "134" + }, + { "begin": 2026, "end": 2091, "name": "JUMPDEST", "source": 1 }, + { "begin": 1888, "end": 2098, "name": "SWAP3", "source": 1 }, + { "begin": 1888, "end": 2098, "name": "SWAP2", "source": 1 }, + { "begin": 1888, "end": 2098, "name": "POP", "source": 1 }, + { "begin": 1888, "end": 2098, "name": "POP", "source": 1 }, + { + "begin": 1888, + "end": 2098, + "name": "JUMP", + "source": 1, + "value": "[out]" + }, + { + "begin": 2104, + "end": 2222, + "name": "tag", + "source": 1, + "value": "97" + }, + { "begin": 2104, "end": 2222, "name": "JUMPDEST", "source": 1 }, + { + "begin": 2191, + "end": 2215, + "name": "PUSH [tag]", + "source": 1, + "value": "136" + }, + { "begin": 2209, "end": 2214, "name": "DUP2", "source": 1 }, + { + "begin": 2191, + "end": 2215, + "name": "PUSH [tag]", + "source": 1, + "value": "92" + }, + { + "begin": 2191, + "end": 2215, + "name": "JUMP", + "source": 1, + "value": "[in]" + }, + { + "begin": 2191, + "end": 2215, + "name": "tag", + "source": 1, + "value": "136" + }, + { "begin": 2191, "end": 2215, "name": "JUMPDEST", "source": 1 }, + { "begin": 2186, "end": 2189, "name": "DUP3", "source": 1 }, + { "begin": 2179, "end": 2216, "name": "MSTORE", "source": 1 }, + { "begin": 2104, "end": 2222, "name": "POP", "source": 1 }, + { "begin": 2104, "end": 2222, "name": "POP", "source": 1 }, + { + "begin": 2104, + "end": 2222, + "name": "JUMP", + "source": 1, + "value": "[out]" + }, + { + "begin": 2228, + "end": 2450, + "name": "tag", + "source": 1, + "value": "20" + }, + { "begin": 2228, "end": 2450, "name": "JUMPDEST", "source": 1 }, + { + "begin": 2321, + "end": 2325, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 2359, + "end": 2361, + "name": "PUSH", + "source": 1, + "value": "20" + }, + { "begin": 2348, "end": 2357, "name": "DUP3", "source": 1 }, + { "begin": 2344, "end": 2362, "name": "ADD", "source": 1 }, + { "begin": 2336, "end": 2362, "name": "SWAP1", "source": 1 }, + { "begin": 2336, "end": 2362, "name": "POP", "source": 1 }, + { + "begin": 2372, + "end": 2443, + "name": "PUSH [tag]", + "source": 1, + "value": "138" + }, + { + "begin": 2440, + "end": 2441, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { "begin": 2429, "end": 2438, "name": "DUP4", "source": 1 }, + { "begin": 2425, "end": 2442, "name": "ADD", "source": 1 }, + { "begin": 2416, "end": 2422, "name": "DUP5", "source": 1 }, + { + "begin": 2372, + "end": 2443, + "name": "PUSH [tag]", + "source": 1, + "value": "97" + }, + { + "begin": 2372, + "end": 2443, + "name": "JUMP", + "source": 1, + "value": "[in]" + }, + { + "begin": 2372, + "end": 2443, + "name": "tag", + "source": 1, + "value": "138" + }, + { "begin": 2372, "end": 2443, "name": "JUMPDEST", "source": 1 }, + { "begin": 2228, "end": 2450, "name": "SWAP3", "source": 1 }, + { "begin": 2228, "end": 2450, "name": "SWAP2", "source": 1 }, + { "begin": 2228, "end": 2450, "name": "POP", "source": 1 }, + { "begin": 2228, "end": 2450, "name": "POP", "source": 1 }, + { + "begin": 2228, + "end": 2450, + "name": "JUMP", + "source": 1, + "value": "[out]" + }, + { + "begin": 2456, + "end": 3075, + "name": "tag", + "source": 1, + "value": "23" + }, + { "begin": 2456, "end": 3075, "name": "JUMPDEST", "source": 1 }, + { + "begin": 2533, + "end": 2539, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { "begin": 2541, "end": 2547, "name": "DUP1", "source": 1 }, + { + "begin": 2549, + "end": 2555, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 2598, + "end": 2600, + "name": "PUSH", + "source": 1, + "value": "60" + }, + { "begin": 2586, "end": 2595, "name": "DUP5", "source": 1 }, + { "begin": 2577, "end": 2584, "name": "DUP7", "source": 1 }, + { "begin": 2573, "end": 2596, "name": "SUB", "source": 1 }, + { "begin": 2569, "end": 2601, "name": "SLT", "source": 1 }, + { "begin": 2566, "end": 2685, "name": "ISZERO", "source": 1 }, + { + "begin": 2566, + "end": 2685, + "name": "PUSH [tag]", + "source": 1, + "value": "140" + }, + { "begin": 2566, "end": 2685, "name": "JUMPI", "source": 1 }, + { + "begin": 2604, + "end": 2683, + "name": "PUSH [tag]", + "source": 1, + "value": "141" + }, + { + "begin": 2604, + "end": 2683, + "name": "PUSH [tag]", + "source": 1, + "value": "86" + }, + { + "begin": 2604, + "end": 2683, + "name": "JUMP", + "source": 1, + "value": "[in]" + }, + { + "begin": 2604, + "end": 2683, + "name": "tag", + "source": 1, + "value": "141" + }, + { "begin": 2604, "end": 2683, "name": "JUMPDEST", "source": 1 }, + { + "begin": 2566, + "end": 2685, + "name": "tag", + "source": 1, + "value": "140" + }, + { "begin": 2566, "end": 2685, "name": "JUMPDEST", "source": 1 }, + { + "begin": 2724, + "end": 2725, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 2749, + "end": 2802, + "name": "PUSH [tag]", + "source": 1, + "value": "142" + }, + { "begin": 2794, "end": 2801, "name": "DUP7", "source": 1 }, + { "begin": 2785, "end": 2791, "name": "DUP3", "source": 1 }, + { "begin": 2774, "end": 2783, "name": "DUP8", "source": 1 }, + { "begin": 2770, "end": 2792, "name": "ADD", "source": 1 }, + { + "begin": 2749, + "end": 2802, + "name": "PUSH [tag]", + "source": 1, + "value": "91" + }, + { + "begin": 2749, + "end": 2802, + "name": "JUMP", + "source": 1, + "value": "[in]" + }, + { + "begin": 2749, + "end": 2802, + "name": "tag", + "source": 1, + "value": "142" + }, + { "begin": 2749, "end": 2802, "name": "JUMPDEST", "source": 1 }, + { "begin": 2739, "end": 2802, "name": "SWAP4", "source": 1 }, + { "begin": 2739, "end": 2802, "name": "POP", "source": 1 }, + { "begin": 2695, "end": 2812, "name": "POP", "source": 1 }, + { + "begin": 2851, + "end": 2853, + "name": "PUSH", + "source": 1, + "value": "20" + }, + { + "begin": 2877, + "end": 2930, + "name": "PUSH [tag]", + "source": 1, + "value": "143" + }, + { "begin": 2922, "end": 2929, "name": "DUP7", "source": 1 }, + { "begin": 2913, "end": 2919, "name": "DUP3", "source": 1 }, + { "begin": 2902, "end": 2911, "name": "DUP8", "source": 1 }, + { "begin": 2898, "end": 2920, "name": "ADD", "source": 1 }, + { + "begin": 2877, + "end": 2930, + "name": "PUSH [tag]", + "source": 1, + "value": "91" + }, + { + "begin": 2877, + "end": 2930, + "name": "JUMP", + "source": 1, + "value": "[in]" + }, + { + "begin": 2877, + "end": 2930, + "name": "tag", + "source": 1, + "value": "143" + }, + { "begin": 2877, "end": 2930, "name": "JUMPDEST", "source": 1 }, + { "begin": 2867, "end": 2930, "name": "SWAP3", "source": 1 }, + { "begin": 2867, "end": 2930, "name": "POP", "source": 1 }, + { "begin": 2822, "end": 2940, "name": "POP", "source": 1 }, + { + "begin": 2979, + "end": 2981, + "name": "PUSH", + "source": 1, + "value": "40" + }, + { + "begin": 3005, + "end": 3058, + "name": "PUSH [tag]", + "source": 1, + "value": "144" + }, + { "begin": 3050, "end": 3057, "name": "DUP7", "source": 1 }, + { "begin": 3041, "end": 3047, "name": "DUP3", "source": 1 }, + { "begin": 3030, "end": 3039, "name": "DUP8", "source": 1 }, + { "begin": 3026, "end": 3048, "name": "ADD", "source": 1 }, + { + "begin": 3005, + "end": 3058, + "name": "PUSH [tag]", + "source": 1, + "value": "94" + }, + { + "begin": 3005, + "end": 3058, + "name": "JUMP", + "source": 1, + "value": "[in]" + }, + { + "begin": 3005, + "end": 3058, + "name": "tag", + "source": 1, + "value": "144" + }, + { "begin": 3005, "end": 3058, "name": "JUMPDEST", "source": 1 }, + { "begin": 2995, "end": 3058, "name": "SWAP2", "source": 1 }, + { "begin": 2995, "end": 3058, "name": "POP", "source": 1 }, + { "begin": 2950, "end": 3068, "name": "POP", "source": 1 }, + { "begin": 2456, "end": 3075, "name": "SWAP3", "source": 1 }, + { "begin": 2456, "end": 3075, "name": "POP", "source": 1 }, + { "begin": 2456, "end": 3075, "name": "SWAP3", "source": 1 }, + { "begin": 2456, "end": 3075, "name": "POP", "source": 1 }, + { "begin": 2456, "end": 3075, "name": "SWAP3", "source": 1 }, + { + "begin": 2456, + "end": 3075, + "name": "JUMP", + "source": 1, + "value": "[out]" + }, + { + "begin": 3081, + "end": 3410, + "name": "tag", + "source": 1, + "value": "28" + }, + { "begin": 3081, "end": 3410, "name": "JUMPDEST", "source": 1 }, + { + "begin": 3140, + "end": 3146, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 3189, + "end": 3191, + "name": "PUSH", + "source": 1, + "value": "20" + }, + { "begin": 3177, "end": 3186, "name": "DUP3", "source": 1 }, + { "begin": 3168, "end": 3175, "name": "DUP5", "source": 1 }, + { "begin": 3164, "end": 3187, "name": "SUB", "source": 1 }, + { "begin": 3160, "end": 3192, "name": "SLT", "source": 1 }, + { "begin": 3157, "end": 3276, "name": "ISZERO", "source": 1 }, + { + "begin": 3157, + "end": 3276, + "name": "PUSH [tag]", + "source": 1, + "value": "146" + }, + { "begin": 3157, "end": 3276, "name": "JUMPI", "source": 1 }, + { + "begin": 3195, + "end": 3274, + "name": "PUSH [tag]", + "source": 1, + "value": "147" + }, + { + "begin": 3195, + "end": 3274, + "name": "PUSH [tag]", + "source": 1, + "value": "86" + }, + { + "begin": 3195, + "end": 3274, + "name": "JUMP", + "source": 1, + "value": "[in]" + }, + { + "begin": 3195, + "end": 3274, + "name": "tag", + "source": 1, + "value": "147" + }, + { "begin": 3195, "end": 3274, "name": "JUMPDEST", "source": 1 }, + { + "begin": 3157, + "end": 3276, + "name": "tag", + "source": 1, + "value": "146" + }, + { "begin": 3157, "end": 3276, "name": "JUMPDEST", "source": 1 }, + { + "begin": 3315, + "end": 3316, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 3340, + "end": 3393, + "name": "PUSH [tag]", + "source": 1, + "value": "148" + }, + { "begin": 3385, "end": 3392, "name": "DUP5", "source": 1 }, + { "begin": 3376, "end": 3382, "name": "DUP3", "source": 1 }, + { "begin": 3365, "end": 3374, "name": "DUP6", "source": 1 }, + { "begin": 3361, "end": 3383, "name": "ADD", "source": 1 }, + { + "begin": 3340, + "end": 3393, + "name": "PUSH [tag]", + "source": 1, + "value": "91" + }, + { + "begin": 3340, + "end": 3393, + "name": "JUMP", + "source": 1, + "value": "[in]" + }, + { + "begin": 3340, + "end": 3393, + "name": "tag", + "source": 1, + "value": "148" + }, + { "begin": 3340, "end": 3393, "name": "JUMPDEST", "source": 1 }, + { "begin": 3330, "end": 3393, "name": "SWAP2", "source": 1 }, + { "begin": 3330, "end": 3393, "name": "POP", "source": 1 }, + { "begin": 3286, "end": 3403, "name": "POP", "source": 1 }, + { "begin": 3081, "end": 3410, "name": "SWAP3", "source": 1 }, + { "begin": 3081, "end": 3410, "name": "SWAP2", "source": 1 }, + { "begin": 3081, "end": 3410, "name": "POP", "source": 1 }, + { "begin": 3081, "end": 3410, "name": "POP", "source": 1 }, + { + "begin": 3081, + "end": 3410, + "name": "JUMP", + "source": 1, + "value": "[out]" + }, + { + "begin": 3416, + "end": 3476, + "name": "tag", + "source": 1, + "value": "98" + }, + { "begin": 3416, "end": 3476, "name": "JUMPDEST", "source": 1 }, + { + "begin": 3444, + "end": 3447, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { "begin": 3465, "end": 3470, "name": "DUP2", "source": 1 }, + { "begin": 3458, "end": 3470, "name": "SWAP1", "source": 1 }, + { "begin": 3458, "end": 3470, "name": "POP", "source": 1 }, + { "begin": 3416, "end": 3476, "name": "SWAP2", "source": 1 }, + { "begin": 3416, "end": 3476, "name": "SWAP1", "source": 1 }, + { "begin": 3416, "end": 3476, "name": "POP", "source": 1 }, + { + "begin": 3416, + "end": 3476, + "name": "JUMP", + "source": 1, + "value": "[out]" + }, + { + "begin": 3482, + "end": 3624, + "name": "tag", + "source": 1, + "value": "99" + }, + { "begin": 3482, "end": 3624, "name": "JUMPDEST", "source": 1 }, + { + "begin": 3532, + "end": 3541, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 3565, + "end": 3618, + "name": "PUSH [tag]", + "source": 1, + "value": "151" + }, + { + "begin": 3583, + "end": 3617, + "name": "PUSH [tag]", + "source": 1, + "value": "152" + }, + { + "begin": 3592, + "end": 3616, + "name": "PUSH [tag]", + "source": 1, + "value": "153" + }, + { "begin": 3610, "end": 3615, "name": "DUP5", "source": 1 }, + { + "begin": 3592, + "end": 3616, + "name": "PUSH [tag]", + "source": 1, + "value": "88" + }, + { + "begin": 3592, + "end": 3616, + "name": "JUMP", + "source": 1, + "value": "[in]" + }, + { + "begin": 3592, + "end": 3616, + "name": "tag", + "source": 1, + "value": "153" + }, + { "begin": 3592, "end": 3616, "name": "JUMPDEST", "source": 1 }, + { + "begin": 3583, + "end": 3617, + "name": "PUSH [tag]", + "source": 1, + "value": "98" + }, + { + "begin": 3583, + "end": 3617, + "name": "JUMP", + "source": 1, + "value": "[in]" + }, + { + "begin": 3583, + "end": 3617, + "name": "tag", + "source": 1, + "value": "152" + }, + { "begin": 3583, "end": 3617, "name": "JUMPDEST", "source": 1 }, + { + "begin": 3565, + "end": 3618, + "name": "PUSH [tag]", + "source": 1, + "value": "88" + }, + { + "begin": 3565, + "end": 3618, + "name": "JUMP", + "source": 1, + "value": "[in]" + }, + { + "begin": 3565, + "end": 3618, + "name": "tag", + "source": 1, + "value": "151" + }, + { "begin": 3565, "end": 3618, "name": "JUMPDEST", "source": 1 }, + { "begin": 3552, "end": 3618, "name": "SWAP1", "source": 1 }, + { "begin": 3552, "end": 3618, "name": "POP", "source": 1 }, + { "begin": 3482, "end": 3624, "name": "SWAP2", "source": 1 }, + { "begin": 3482, "end": 3624, "name": "SWAP1", "source": 1 }, + { "begin": 3482, "end": 3624, "name": "POP", "source": 1 }, + { + "begin": 3482, + "end": 3624, + "name": "JUMP", + "source": 1, + "value": "[out]" + }, + { + "begin": 3630, + "end": 3756, + "name": "tag", + "source": 1, + "value": "100" + }, + { "begin": 3630, "end": 3756, "name": "JUMPDEST", "source": 1 }, + { + "begin": 3680, + "end": 3689, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 3713, + "end": 3750, + "name": "PUSH [tag]", + "source": 1, + "value": "155" + }, + { "begin": 3744, "end": 3749, "name": "DUP3", "source": 1 }, + { + "begin": 3713, + "end": 3750, + "name": "PUSH [tag]", + "source": 1, + "value": "99" + }, + { + "begin": 3713, + "end": 3750, + "name": "JUMP", + "source": 1, + "value": "[in]" + }, + { + "begin": 3713, + "end": 3750, + "name": "tag", + "source": 1, + "value": "155" + }, + { "begin": 3713, "end": 3750, "name": "JUMPDEST", "source": 1 }, + { "begin": 3700, "end": 3750, "name": "SWAP1", "source": 1 }, + { "begin": 3700, "end": 3750, "name": "POP", "source": 1 }, + { "begin": 3630, "end": 3756, "name": "SWAP2", "source": 1 }, + { "begin": 3630, "end": 3756, "name": "SWAP1", "source": 1 }, + { "begin": 3630, "end": 3756, "name": "POP", "source": 1 }, + { + "begin": 3630, + "end": 3756, + "name": "JUMP", + "source": 1, + "value": "[out]" + }, + { + "begin": 3762, + "end": 3901, + "name": "tag", + "source": 1, + "value": "101" + }, + { "begin": 3762, "end": 3901, "name": "JUMPDEST", "source": 1 }, + { + "begin": 3825, + "end": 3834, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 3858, + "end": 3895, + "name": "PUSH [tag]", + "source": 1, + "value": "157" + }, + { "begin": 3889, "end": 3894, "name": "DUP3", "source": 1 }, + { + "begin": 3858, + "end": 3895, + "name": "PUSH [tag]", + "source": 1, + "value": "100" + }, + { + "begin": 3858, + "end": 3895, + "name": "JUMP", + "source": 1, + "value": "[in]" + }, + { + "begin": 3858, + "end": 3895, + "name": "tag", + "source": 1, + "value": "157" + }, + { "begin": 3858, "end": 3895, "name": "JUMPDEST", "source": 1 }, + { "begin": 3845, "end": 3895, "name": "SWAP1", "source": 1 }, + { "begin": 3845, "end": 3895, "name": "POP", "source": 1 }, + { "begin": 3762, "end": 3901, "name": "SWAP2", "source": 1 }, + { "begin": 3762, "end": 3901, "name": "SWAP1", "source": 1 }, + { "begin": 3762, "end": 3901, "name": "POP", "source": 1 }, + { + "begin": 3762, + "end": 3901, + "name": "JUMP", + "source": 1, + "value": "[out]" + }, + { + "begin": 3907, + "end": 4064, + "name": "tag", + "source": 1, + "value": "102" + }, + { "begin": 3907, "end": 4064, "name": "JUMPDEST", "source": 1 }, + { + "begin": 4007, + "end": 4057, + "name": "PUSH [tag]", + "source": 1, + "value": "159" + }, + { "begin": 4051, "end": 4056, "name": "DUP2", "source": 1 }, + { + "begin": 4007, + "end": 4057, + "name": "PUSH [tag]", + "source": 1, + "value": "101" + }, + { + "begin": 4007, + "end": 4057, + "name": "JUMP", + "source": 1, + "value": "[in]" + }, + { + "begin": 4007, + "end": 4057, + "name": "tag", + "source": 1, + "value": "159" + }, + { "begin": 4007, "end": 4057, "name": "JUMPDEST", "source": 1 }, + { "begin": 4002, "end": 4005, "name": "DUP3", "source": 1 }, + { "begin": 3995, "end": 4058, "name": "MSTORE", "source": 1 }, + { "begin": 3907, "end": 4064, "name": "POP", "source": 1 }, + { "begin": 3907, "end": 4064, "name": "POP", "source": 1 }, + { + "begin": 3907, + "end": 4064, + "name": "JUMP", + "source": 1, + "value": "[out]" + }, + { + "begin": 4070, + "end": 4318, + "name": "tag", + "source": 1, + "value": "34" + }, + { "begin": 4070, "end": 4318, "name": "JUMPDEST", "source": 1 }, + { + "begin": 4176, + "end": 4180, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 4214, + "end": 4216, + "name": "PUSH", + "source": 1, + "value": "20" + }, + { "begin": 4203, "end": 4212, "name": "DUP3", "source": 1 }, + { "begin": 4199, "end": 4217, "name": "ADD", "source": 1 }, + { "begin": 4191, "end": 4217, "name": "SWAP1", "source": 1 }, + { "begin": 4191, "end": 4217, "name": "POP", "source": 1 }, + { + "begin": 4227, + "end": 4311, + "name": "PUSH [tag]", + "source": 1, + "value": "161" + }, + { + "begin": 4308, + "end": 4309, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { "begin": 4297, "end": 4306, "name": "DUP4", "source": 1 }, + { "begin": 4293, "end": 4310, "name": "ADD", "source": 1 }, + { "begin": 4284, "end": 4290, "name": "DUP5", "source": 1 }, + { + "begin": 4227, + "end": 4311, + "name": "PUSH [tag]", + "source": 1, + "value": "102" + }, + { + "begin": 4227, + "end": 4311, + "name": "JUMP", + "source": 1, + "value": "[in]" + }, + { + "begin": 4227, + "end": 4311, + "name": "tag", + "source": 1, + "value": "161" + }, + { "begin": 4227, "end": 4311, "name": "JUMPDEST", "source": 1 }, + { "begin": 4070, "end": 4318, "name": "SWAP3", "source": 1 }, + { "begin": 4070, "end": 4318, "name": "SWAP2", "source": 1 }, + { "begin": 4070, "end": 4318, "name": "POP", "source": 1 }, + { "begin": 4070, "end": 4318, "name": "POP", "source": 1 }, + { + "begin": 4070, + "end": 4318, + "name": "JUMP", + "source": 1, + "value": "[out]" + }, + { + "begin": 4324, + "end": 4798, + "name": "tag", + "source": 1, + "value": "41" + }, + { "begin": 4324, "end": 4798, "name": "JUMPDEST", "source": 1 }, + { + "begin": 4392, + "end": 4398, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { "begin": 4400, "end": 4406, "name": "DUP1", "source": 1 }, + { + "begin": 4449, + "end": 4451, + "name": "PUSH", + "source": 1, + "value": "40" + }, + { "begin": 4437, "end": 4446, "name": "DUP4", "source": 1 }, + { "begin": 4428, "end": 4435, "name": "DUP6", "source": 1 }, + { "begin": 4424, "end": 4447, "name": "SUB", "source": 1 }, + { "begin": 4420, "end": 4452, "name": "SLT", "source": 1 }, + { "begin": 4417, "end": 4536, "name": "ISZERO", "source": 1 }, + { + "begin": 4417, + "end": 4536, + "name": "PUSH [tag]", + "source": 1, + "value": "163" + }, + { "begin": 4417, "end": 4536, "name": "JUMPI", "source": 1 }, + { + "begin": 4455, + "end": 4534, + "name": "PUSH [tag]", + "source": 1, + "value": "164" + }, + { + "begin": 4455, + "end": 4534, + "name": "PUSH [tag]", + "source": 1, + "value": "86" + }, + { + "begin": 4455, + "end": 4534, + "name": "JUMP", + "source": 1, + "value": "[in]" + }, + { + "begin": 4455, + "end": 4534, + "name": "tag", + "source": 1, + "value": "164" + }, + { "begin": 4455, "end": 4534, "name": "JUMPDEST", "source": 1 }, + { + "begin": 4417, + "end": 4536, + "name": "tag", + "source": 1, + "value": "163" + }, + { "begin": 4417, "end": 4536, "name": "JUMPDEST", "source": 1 }, + { + "begin": 4575, + "end": 4576, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 4600, + "end": 4653, + "name": "PUSH [tag]", + "source": 1, + "value": "165" + }, + { "begin": 4645, "end": 4652, "name": "DUP6", "source": 1 }, + { "begin": 4636, "end": 4642, "name": "DUP3", "source": 1 }, + { "begin": 4625, "end": 4634, "name": "DUP7", "source": 1 }, + { "begin": 4621, "end": 4643, "name": "ADD", "source": 1 }, + { + "begin": 4600, + "end": 4653, + "name": "PUSH [tag]", + "source": 1, + "value": "91" + }, + { + "begin": 4600, + "end": 4653, + "name": "JUMP", + "source": 1, + "value": "[in]" + }, + { + "begin": 4600, + "end": 4653, + "name": "tag", + "source": 1, + "value": "165" + }, + { "begin": 4600, "end": 4653, "name": "JUMPDEST", "source": 1 }, + { "begin": 4590, "end": 4653, "name": "SWAP3", "source": 1 }, + { "begin": 4590, "end": 4653, "name": "POP", "source": 1 }, + { "begin": 4546, "end": 4663, "name": "POP", "source": 1 }, + { + "begin": 4702, + "end": 4704, + "name": "PUSH", + "source": 1, + "value": "20" + }, + { + "begin": 4728, + "end": 4781, + "name": "PUSH [tag]", + "source": 1, + "value": "166" + }, + { "begin": 4773, "end": 4780, "name": "DUP6", "source": 1 }, + { "begin": 4764, "end": 4770, "name": "DUP3", "source": 1 }, + { "begin": 4753, "end": 4762, "name": "DUP7", "source": 1 }, + { "begin": 4749, "end": 4771, "name": "ADD", "source": 1 }, + { + "begin": 4728, + "end": 4781, + "name": "PUSH [tag]", + "source": 1, + "value": "91" + }, + { + "begin": 4728, + "end": 4781, + "name": "JUMP", + "source": 1, + "value": "[in]" + }, + { + "begin": 4728, + "end": 4781, + "name": "tag", + "source": 1, + "value": "166" + }, + { "begin": 4728, "end": 4781, "name": "JUMPDEST", "source": 1 }, + { "begin": 4718, "end": 4781, "name": "SWAP2", "source": 1 }, + { "begin": 4718, "end": 4781, "name": "POP", "source": 1 }, + { "begin": 4673, "end": 4791, "name": "POP", "source": 1 }, + { "begin": 4324, "end": 4798, "name": "SWAP3", "source": 1 }, + { "begin": 4324, "end": 4798, "name": "POP", "source": 1 }, + { "begin": 4324, "end": 4798, "name": "SWAP3", "source": 1 }, + { "begin": 4324, "end": 4798, "name": "SWAP1", "source": 1 }, + { "begin": 4324, "end": 4798, "name": "POP", "source": 1 }, + { + "begin": 4324, + "end": 4798, + "name": "JUMP", + "source": 1, + "value": "[out]" + }, + { + "begin": 4804, + "end": 4922, + "name": "tag", + "source": 1, + "value": "103" + }, + { "begin": 4804, "end": 4922, "name": "JUMPDEST", "source": 1 }, + { + "begin": 4891, + "end": 4915, + "name": "PUSH [tag]", + "source": 1, + "value": "168" + }, + { "begin": 4909, "end": 4914, "name": "DUP2", "source": 1 }, + { + "begin": 4891, + "end": 4915, + "name": "PUSH [tag]", + "source": 1, + "value": "89" + }, + { + "begin": 4891, + "end": 4915, + "name": "JUMP", + "source": 1, + "value": "[in]" + }, + { + "begin": 4891, + "end": 4915, + "name": "tag", + "source": 1, + "value": "168" + }, + { "begin": 4891, "end": 4915, "name": "JUMPDEST", "source": 1 }, + { "begin": 4886, "end": 4889, "name": "DUP3", "source": 1 }, + { "begin": 4879, "end": 4916, "name": "MSTORE", "source": 1 }, + { "begin": 4804, "end": 4922, "name": "POP", "source": 1 }, + { "begin": 4804, "end": 4922, "name": "POP", "source": 1 }, + { + "begin": 4804, + "end": 4922, + "name": "JUMP", + "source": 1, + "value": "[out]" + }, + { + "begin": 4928, + "end": 5260, + "name": "tag", + "source": 1, + "value": "46" + }, + { "begin": 4928, "end": 5260, "name": "JUMPDEST", "source": 1 }, + { + "begin": 5049, + "end": 5053, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 5087, + "end": 5089, + "name": "PUSH", + "source": 1, + "value": "40" + }, + { "begin": 5076, "end": 5085, "name": "DUP3", "source": 1 }, + { "begin": 5072, "end": 5090, "name": "ADD", "source": 1 }, + { "begin": 5064, "end": 5090, "name": "SWAP1", "source": 1 }, + { "begin": 5064, "end": 5090, "name": "POP", "source": 1 }, + { + "begin": 5100, + "end": 5171, + "name": "PUSH [tag]", + "source": 1, + "value": "170" + }, + { + "begin": 5168, + "end": 5169, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { "begin": 5157, "end": 5166, "name": "DUP4", "source": 1 }, + { "begin": 5153, "end": 5170, "name": "ADD", "source": 1 }, + { "begin": 5144, "end": 5150, "name": "DUP6", "source": 1 }, + { + "begin": 5100, + "end": 5171, + "name": "PUSH [tag]", + "source": 1, + "value": "103" + }, + { + "begin": 5100, + "end": 5171, + "name": "JUMP", + "source": 1, + "value": "[in]" + }, + { + "begin": 5100, + "end": 5171, + "name": "tag", + "source": 1, + "value": "170" + }, + { "begin": 5100, "end": 5171, "name": "JUMPDEST", "source": 1 }, + { + "begin": 5181, + "end": 5253, + "name": "PUSH [tag]", + "source": 1, + "value": "171" + }, + { + "begin": 5249, + "end": 5251, + "name": "PUSH", + "source": 1, + "value": "20" + }, + { "begin": 5238, "end": 5247, "name": "DUP4", "source": 1 }, + { "begin": 5234, "end": 5252, "name": "ADD", "source": 1 }, + { "begin": 5225, "end": 5231, "name": "DUP5", "source": 1 }, + { + "begin": 5181, + "end": 5253, + "name": "PUSH [tag]", + "source": 1, + "value": "97" + }, + { + "begin": 5181, + "end": 5253, + "name": "JUMP", + "source": 1, + "value": "[in]" + }, + { + "begin": 5181, + "end": 5253, + "name": "tag", + "source": 1, + "value": "171" + }, + { "begin": 5181, "end": 5253, "name": "JUMPDEST", "source": 1 }, + { "begin": 4928, "end": 5260, "name": "SWAP4", "source": 1 }, + { "begin": 4928, "end": 5260, "name": "SWAP3", "source": 1 }, + { "begin": 4928, "end": 5260, "name": "POP", "source": 1 }, + { "begin": 4928, "end": 5260, "name": "POP", "source": 1 }, + { "begin": 4928, "end": 5260, "name": "POP", "source": 1 }, + { + "begin": 4928, + "end": 5260, + "name": "JUMP", + "source": 1, + "value": "[out]" + }, + { + "begin": 5266, + "end": 5382, + "name": "tag", + "source": 1, + "value": "104" + }, + { "begin": 5266, "end": 5382, "name": "JUMPDEST", "source": 1 }, + { + "begin": 5336, + "end": 5357, + "name": "PUSH [tag]", + "source": 1, + "value": "173" + }, + { "begin": 5351, "end": 5356, "name": "DUP2", "source": 1 }, + { + "begin": 5336, + "end": 5357, + "name": "PUSH [tag]", + "source": 1, + "value": "95" + }, + { + "begin": 5336, + "end": 5357, + "name": "JUMP", + "source": 1, + "value": "[in]" + }, + { + "begin": 5336, + "end": 5357, + "name": "tag", + "source": 1, + "value": "173" + }, + { "begin": 5336, "end": 5357, "name": "JUMPDEST", "source": 1 }, + { "begin": 5329, "end": 5334, "name": "DUP2", "source": 1 }, + { "begin": 5326, "end": 5358, "name": "EQ", "source": 1 }, + { + "begin": 5316, + "end": 5376, + "name": "PUSH [tag]", + "source": 1, + "value": "174" + }, + { "begin": 5316, "end": 5376, "name": "JUMPI", "source": 1 }, + { + "begin": 5372, + "end": 5373, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { "begin": 5369, "end": 5370, "name": "DUP1", "source": 1 }, + { "begin": 5362, "end": 5374, "name": "REVERT", "source": 1 }, + { + "begin": 5316, + "end": 5376, + "name": "tag", + "source": 1, + "value": "174" + }, + { "begin": 5316, "end": 5376, "name": "JUMPDEST", "source": 1 }, + { "begin": 5266, "end": 5382, "name": "POP", "source": 1 }, + { + "begin": 5266, + "end": 5382, + "name": "JUMP", + "source": 1, + "value": "[out]" + }, + { + "begin": 5388, + "end": 5525, + "name": "tag", + "source": 1, + "value": "105" + }, + { "begin": 5388, "end": 5525, "name": "JUMPDEST", "source": 1 }, + { + "begin": 5442, + "end": 5447, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { "begin": 5473, "end": 5479, "name": "DUP2", "source": 1 }, + { "begin": 5467, "end": 5480, "name": "MLOAD", "source": 1 }, + { "begin": 5458, "end": 5480, "name": "SWAP1", "source": 1 }, + { "begin": 5458, "end": 5480, "name": "POP", "source": 1 }, + { + "begin": 5489, + "end": 5519, + "name": "PUSH [tag]", + "source": 1, + "value": "176" + }, + { "begin": 5513, "end": 5518, "name": "DUP2", "source": 1 }, + { + "begin": 5489, + "end": 5519, + "name": "PUSH [tag]", + "source": 1, + "value": "104" + }, + { + "begin": 5489, + "end": 5519, + "name": "JUMP", + "source": 1, + "value": "[in]" + }, + { + "begin": 5489, + "end": 5519, + "name": "tag", + "source": 1, + "value": "176" + }, + { "begin": 5489, "end": 5519, "name": "JUMPDEST", "source": 1 }, + { "begin": 5388, "end": 5525, "name": "SWAP3", "source": 1 }, + { "begin": 5388, "end": 5525, "name": "SWAP2", "source": 1 }, + { "begin": 5388, "end": 5525, "name": "POP", "source": 1 }, + { "begin": 5388, "end": 5525, "name": "POP", "source": 1 }, + { + "begin": 5388, + "end": 5525, + "name": "JUMP", + "source": 1, + "value": "[out]" + }, + { + "begin": 5531, + "end": 5876, + "name": "tag", + "source": 1, + "value": "51" + }, + { "begin": 5531, "end": 5876, "name": "JUMPDEST", "source": 1 }, + { + "begin": 5598, + "end": 5604, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 5647, + "end": 5649, + "name": "PUSH", + "source": 1, + "value": "20" + }, + { "begin": 5635, "end": 5644, "name": "DUP3", "source": 1 }, + { "begin": 5626, "end": 5633, "name": "DUP5", "source": 1 }, + { "begin": 5622, "end": 5645, "name": "SUB", "source": 1 }, + { "begin": 5618, "end": 5650, "name": "SLT", "source": 1 }, + { "begin": 5615, "end": 5734, "name": "ISZERO", "source": 1 }, + { + "begin": 5615, + "end": 5734, + "name": "PUSH [tag]", + "source": 1, + "value": "178" + }, + { "begin": 5615, "end": 5734, "name": "JUMPI", "source": 1 }, + { + "begin": 5653, + "end": 5732, + "name": "PUSH [tag]", + "source": 1, + "value": "179" + }, + { + "begin": 5653, + "end": 5732, + "name": "PUSH [tag]", + "source": 1, + "value": "86" + }, + { + "begin": 5653, + "end": 5732, + "name": "JUMP", + "source": 1, + "value": "[in]" + }, + { + "begin": 5653, + "end": 5732, + "name": "tag", + "source": 1, + "value": "179" + }, + { "begin": 5653, "end": 5732, "name": "JUMPDEST", "source": 1 }, + { + "begin": 5615, + "end": 5734, + "name": "tag", + "source": 1, + "value": "178" + }, + { "begin": 5615, "end": 5734, "name": "JUMPDEST", "source": 1 }, + { + "begin": 5773, + "end": 5774, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 5798, + "end": 5859, + "name": "PUSH [tag]", + "source": 1, + "value": "180" + }, + { "begin": 5851, "end": 5858, "name": "DUP5", "source": 1 }, + { "begin": 5842, "end": 5848, "name": "DUP3", "source": 1 }, + { "begin": 5831, "end": 5840, "name": "DUP6", "source": 1 }, + { "begin": 5827, "end": 5849, "name": "ADD", "source": 1 }, + { + "begin": 5798, + "end": 5859, + "name": "PUSH [tag]", + "source": 1, + "value": "105" + }, + { + "begin": 5798, + "end": 5859, + "name": "JUMP", + "source": 1, + "value": "[in]" + }, + { + "begin": 5798, + "end": 5859, + "name": "tag", + "source": 1, + "value": "180" + }, + { "begin": 5798, "end": 5859, "name": "JUMPDEST", "source": 1 }, + { "begin": 5788, "end": 5859, "name": "SWAP2", "source": 1 }, + { "begin": 5788, "end": 5859, "name": "POP", "source": 1 }, + { "begin": 5744, "end": 5869, "name": "POP", "source": 1 }, + { "begin": 5531, "end": 5876, "name": "SWAP3", "source": 1 }, + { "begin": 5531, "end": 5876, "name": "SWAP2", "source": 1 }, + { "begin": 5531, "end": 5876, "name": "POP", "source": 1 }, + { "begin": 5531, "end": 5876, "name": "POP", "source": 1 }, + { + "begin": 5531, + "end": 5876, + "name": "JUMP", + "source": 1, + "value": "[out]" + }, + { + "begin": 5882, + "end": 6025, + "name": "tag", + "source": 1, + "value": "106" + }, + { "begin": 5882, "end": 6025, "name": "JUMPDEST", "source": 1 }, + { + "begin": 5939, + "end": 5944, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { "begin": 5970, "end": 5976, "name": "DUP2", "source": 1 }, + { "begin": 5964, "end": 5977, "name": "MLOAD", "source": 1 }, + { "begin": 5955, "end": 5977, "name": "SWAP1", "source": 1 }, + { "begin": 5955, "end": 5977, "name": "POP", "source": 1 }, + { + "begin": 5986, + "end": 6019, + "name": "PUSH [tag]", + "source": 1, + "value": "182" + }, + { "begin": 6013, "end": 6018, "name": "DUP2", "source": 1 }, + { + "begin": 5986, + "end": 6019, + "name": "PUSH [tag]", + "source": 1, + "value": "93" + }, + { + "begin": 5986, + "end": 6019, + "name": "JUMP", + "source": 1, + "value": "[in]" + }, + { + "begin": 5986, + "end": 6019, + "name": "tag", + "source": 1, + "value": "182" + }, + { "begin": 5986, "end": 6019, "name": "JUMPDEST", "source": 1 }, + { "begin": 5882, "end": 6025, "name": "SWAP3", "source": 1 }, + { "begin": 5882, "end": 6025, "name": "SWAP2", "source": 1 }, + { "begin": 5882, "end": 6025, "name": "POP", "source": 1 }, + { "begin": 5882, "end": 6025, "name": "POP", "source": 1 }, + { + "begin": 5882, + "end": 6025, + "name": "JUMP", + "source": 1, + "value": "[out]" + }, + { + "begin": 6031, + "end": 6382, + "name": "tag", + "source": 1, + "value": "57" + }, + { "begin": 6031, "end": 6382, "name": "JUMPDEST", "source": 1 }, + { + "begin": 6101, + "end": 6107, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 6150, + "end": 6152, + "name": "PUSH", + "source": 1, + "value": "20" + }, + { "begin": 6138, "end": 6147, "name": "DUP3", "source": 1 }, + { "begin": 6129, "end": 6136, "name": "DUP5", "source": 1 }, + { "begin": 6125, "end": 6148, "name": "SUB", "source": 1 }, + { "begin": 6121, "end": 6153, "name": "SLT", "source": 1 }, + { "begin": 6118, "end": 6237, "name": "ISZERO", "source": 1 }, + { + "begin": 6118, + "end": 6237, + "name": "PUSH [tag]", + "source": 1, + "value": "184" + }, + { "begin": 6118, "end": 6237, "name": "JUMPI", "source": 1 }, + { + "begin": 6156, + "end": 6235, + "name": "PUSH [tag]", + "source": 1, + "value": "185" + }, + { + "begin": 6156, + "end": 6235, + "name": "PUSH [tag]", + "source": 1, + "value": "86" + }, + { + "begin": 6156, + "end": 6235, + "name": "JUMP", + "source": 1, + "value": "[in]" + }, + { + "begin": 6156, + "end": 6235, + "name": "tag", + "source": 1, + "value": "185" + }, + { "begin": 6156, "end": 6235, "name": "JUMPDEST", "source": 1 }, + { + "begin": 6118, + "end": 6237, + "name": "tag", + "source": 1, + "value": "184" + }, + { "begin": 6118, "end": 6237, "name": "JUMPDEST", "source": 1 }, + { + "begin": 6276, + "end": 6277, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 6301, + "end": 6365, + "name": "PUSH [tag]", + "source": 1, + "value": "186" + }, + { "begin": 6357, "end": 6364, "name": "DUP5", "source": 1 }, + { "begin": 6348, "end": 6354, "name": "DUP3", "source": 1 }, + { "begin": 6337, "end": 6346, "name": "DUP6", "source": 1 }, + { "begin": 6333, "end": 6355, "name": "ADD", "source": 1 }, + { + "begin": 6301, + "end": 6365, + "name": "PUSH [tag]", + "source": 1, + "value": "106" + }, + { + "begin": 6301, + "end": 6365, + "name": "JUMP", + "source": 1, + "value": "[in]" + }, + { + "begin": 6301, + "end": 6365, + "name": "tag", + "source": 1, + "value": "186" + }, + { "begin": 6301, "end": 6365, "name": "JUMPDEST", "source": 1 }, + { "begin": 6291, "end": 6365, "name": "SWAP2", "source": 1 }, + { "begin": 6291, "end": 6365, "name": "POP", "source": 1 }, + { "begin": 6247, "end": 6375, "name": "POP", "source": 1 }, + { "begin": 6031, "end": 6382, "name": "SWAP3", "source": 1 }, + { "begin": 6031, "end": 6382, "name": "SWAP2", "source": 1 }, + { "begin": 6031, "end": 6382, "name": "POP", "source": 1 }, + { "begin": 6031, "end": 6382, "name": "POP", "source": 1 }, + { + "begin": 6031, + "end": 6382, + "name": "JUMP", + "source": 1, + "value": "[out]" + }, + { + "begin": 6388, + "end": 6830, + "name": "tag", + "source": 1, + "value": "60" + }, + { "begin": 6388, "end": 6830, "name": "JUMPDEST", "source": 1 }, + { + "begin": 6537, + "end": 6541, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 6575, + "end": 6577, + "name": "PUSH", + "source": 1, + "value": "60" + }, + { "begin": 6564, "end": 6573, "name": "DUP3", "source": 1 }, + { "begin": 6560, "end": 6578, "name": "ADD", "source": 1 }, + { "begin": 6552, "end": 6578, "name": "SWAP1", "source": 1 }, + { "begin": 6552, "end": 6578, "name": "POP", "source": 1 }, + { + "begin": 6588, + "end": 6659, + "name": "PUSH [tag]", + "source": 1, + "value": "188" + }, + { + "begin": 6656, + "end": 6657, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { "begin": 6645, "end": 6654, "name": "DUP4", "source": 1 }, + { "begin": 6641, "end": 6658, "name": "ADD", "source": 1 }, + { "begin": 6632, "end": 6638, "name": "DUP7", "source": 1 }, + { + "begin": 6588, + "end": 6659, + "name": "PUSH [tag]", + "source": 1, + "value": "103" + }, + { + "begin": 6588, + "end": 6659, + "name": "JUMP", + "source": 1, + "value": "[in]" + }, + { + "begin": 6588, + "end": 6659, + "name": "tag", + "source": 1, + "value": "188" + }, + { "begin": 6588, "end": 6659, "name": "JUMPDEST", "source": 1 }, + { + "begin": 6669, + "end": 6741, + "name": "PUSH [tag]", + "source": 1, + "value": "189" + }, + { + "begin": 6737, + "end": 6739, + "name": "PUSH", + "source": 1, + "value": "20" + }, + { "begin": 6726, "end": 6735, "name": "DUP4", "source": 1 }, + { "begin": 6722, "end": 6740, "name": "ADD", "source": 1 }, + { "begin": 6713, "end": 6719, "name": "DUP6", "source": 1 }, + { + "begin": 6669, + "end": 6741, + "name": "PUSH [tag]", + "source": 1, + "value": "103" + }, + { + "begin": 6669, + "end": 6741, + "name": "JUMP", + "source": 1, + "value": "[in]" + }, + { + "begin": 6669, + "end": 6741, + "name": "tag", + "source": 1, + "value": "189" + }, + { "begin": 6669, "end": 6741, "name": "JUMPDEST", "source": 1 }, + { + "begin": 6751, + "end": 6823, + "name": "PUSH [tag]", + "source": 1, + "value": "190" + }, + { + "begin": 6819, + "end": 6821, + "name": "PUSH", + "source": 1, + "value": "40" + }, + { "begin": 6808, "end": 6817, "name": "DUP4", "source": 1 }, + { "begin": 6804, "end": 6822, "name": "ADD", "source": 1 }, + { "begin": 6795, "end": 6801, "name": "DUP5", "source": 1 }, + { + "begin": 6751, + "end": 6823, + "name": "PUSH [tag]", + "source": 1, + "value": "97" + }, + { + "begin": 6751, + "end": 6823, + "name": "JUMP", + "source": 1, + "value": "[in]" + }, + { + "begin": 6751, + "end": 6823, + "name": "tag", + "source": 1, + "value": "190" + }, + { "begin": 6751, "end": 6823, "name": "JUMPDEST", "source": 1 }, + { "begin": 6388, "end": 6830, "name": "SWAP5", "source": 1 }, + { "begin": 6388, "end": 6830, "name": "SWAP4", "source": 1 }, + { "begin": 6388, "end": 6830, "name": "POP", "source": 1 }, + { "begin": 6388, "end": 6830, "name": "POP", "source": 1 }, + { "begin": 6388, "end": 6830, "name": "POP", "source": 1 }, + { "begin": 6388, "end": 6830, "name": "POP", "source": 1 }, + { + "begin": 6388, + "end": 6830, + "name": "JUMP", + "source": 1, + "value": "[out]" + }, + { + "begin": 6836, + "end": 7058, + "name": "tag", + "source": 1, + "value": "67" + }, + { "begin": 6836, "end": 7058, "name": "JUMPDEST", "source": 1 }, + { + "begin": 6929, + "end": 6933, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 6967, + "end": 6969, + "name": "PUSH", + "source": 1, + "value": "20" + }, + { "begin": 6956, "end": 6965, "name": "DUP3", "source": 1 }, + { "begin": 6952, "end": 6970, "name": "ADD", "source": 1 }, + { "begin": 6944, "end": 6970, "name": "SWAP1", "source": 1 }, + { "begin": 6944, "end": 6970, "name": "POP", "source": 1 }, + { + "begin": 6980, + "end": 7051, + "name": "PUSH [tag]", + "source": 1, + "value": "192" + }, + { + "begin": 7048, + "end": 7049, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { "begin": 7037, "end": 7046, "name": "DUP4", "source": 1 }, + { "begin": 7033, "end": 7050, "name": "ADD", "source": 1 }, + { "begin": 7024, "end": 7030, "name": "DUP5", "source": 1 }, + { + "begin": 6980, + "end": 7051, + "name": "PUSH [tag]", + "source": 1, + "value": "103" + }, + { + "begin": 6980, + "end": 7051, + "name": "JUMP", + "source": 1, + "value": "[in]" + }, + { + "begin": 6980, + "end": 7051, + "name": "tag", + "source": 1, + "value": "192" + }, + { "begin": 6980, "end": 7051, "name": "JUMPDEST", "source": 1 }, + { "begin": 6836, "end": 7058, "name": "SWAP3", "source": 1 }, + { "begin": 6836, "end": 7058, "name": "SWAP2", "source": 1 }, + { "begin": 6836, "end": 7058, "name": "POP", "source": 1 }, + { "begin": 6836, "end": 7058, "name": "POP", "source": 1 }, + { + "begin": 6836, + "end": 7058, + "name": "JUMP", + "source": 1, + "value": "[out]" + }, + { + "begin": 7064, + "end": 7396, + "name": "tag", + "source": 1, + "value": "80" + }, + { "begin": 7064, "end": 7396, "name": "JUMPDEST", "source": 1 }, + { + "begin": 7185, + "end": 7189, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 7223, + "end": 7225, + "name": "PUSH", + "source": 1, + "value": "40" + }, + { "begin": 7212, "end": 7221, "name": "DUP3", "source": 1 }, + { "begin": 7208, "end": 7226, "name": "ADD", "source": 1 }, + { "begin": 7200, "end": 7226, "name": "SWAP1", "source": 1 }, + { "begin": 7200, "end": 7226, "name": "POP", "source": 1 }, + { + "begin": 7236, + "end": 7307, + "name": "PUSH [tag]", + "source": 1, + "value": "194" + }, + { + "begin": 7304, + "end": 7305, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { "begin": 7293, "end": 7302, "name": "DUP4", "source": 1 }, + { "begin": 7289, "end": 7306, "name": "ADD", "source": 1 }, + { "begin": 7280, "end": 7286, "name": "DUP6", "source": 1 }, + { + "begin": 7236, + "end": 7307, + "name": "PUSH [tag]", + "source": 1, + "value": "103" + }, + { + "begin": 7236, + "end": 7307, + "name": "JUMP", + "source": 1, + "value": "[in]" + }, + { + "begin": 7236, + "end": 7307, + "name": "tag", + "source": 1, + "value": "194" + }, + { "begin": 7236, "end": 7307, "name": "JUMPDEST", "source": 1 }, + { + "begin": 7317, + "end": 7389, + "name": "PUSH [tag]", + "source": 1, + "value": "195" + }, + { + "begin": 7385, + "end": 7387, + "name": "PUSH", + "source": 1, + "value": "20" + }, + { "begin": 7374, "end": 7383, "name": "DUP4", "source": 1 }, + { "begin": 7370, "end": 7388, "name": "ADD", "source": 1 }, + { "begin": 7361, "end": 7367, "name": "DUP5", "source": 1 }, + { + "begin": 7317, + "end": 7389, + "name": "PUSH [tag]", + "source": 1, + "value": "103" + }, + { + "begin": 7317, + "end": 7389, + "name": "JUMP", + "source": 1, + "value": "[in]" + }, + { + "begin": 7317, + "end": 7389, + "name": "tag", + "source": 1, + "value": "195" + }, + { "begin": 7317, "end": 7389, "name": "JUMPDEST", "source": 1 }, + { "begin": 7064, "end": 7396, "name": "SWAP4", "source": 1 }, + { "begin": 7064, "end": 7396, "name": "SWAP3", "source": 1 }, + { "begin": 7064, "end": 7396, "name": "POP", "source": 1 }, + { "begin": 7064, "end": 7396, "name": "POP", "source": 1 }, + { "begin": 7064, "end": 7396, "name": "POP", "source": 1 }, + { + "begin": 7064, + "end": 7396, + "name": "JUMP", + "source": 1, + "value": "[out]" + } + ] + } + } + }, + "methodIdentifiers": { + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "erc20()": "785e9e86", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "ewasm": { "wasm": "" }, + "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"erc20\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Function to check the amount of tokens that an owner allowed to a spender. Selector: dd62ed3e\",\"params\":{\"owner\":\"address The address which owns the funds.\",\"spender\":\"address The address which will spend the funds.\"},\"returns\":{\"_0\":\"A uint256 specifying the amount of tokens still available for the spender.\"}},\"approve(address,uint256)\":{\"details\":\"Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Selector: 095ea7b3\",\"params\":{\"spender\":\"The address which will spend the funds.\",\"value\":\"The amount of tokens to be spent.\"}},\"balanceOf(address)\":{\"details\":\"Gets the balance of the specified address. Selector: 70a08231\",\"params\":{\"who\":\"The address to query the balance of.\"},\"returns\":{\"_0\":\"An uint256 representing the amount owned by the passed address.\"}},\"totalSupply()\":{\"details\":\"Total number of tokens in existence Selector: 18160ddd\"},\"transfer(address,uint256)\":{\"details\":\"Transfer token for a specified address Selector: a9059cbb\",\"params\":{\"to\":\"The address to transfer to.\",\"value\":\"The amount to be transferred.\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfer tokens from one address to another Selector: 23b872dd\",\"params\":{\"from\":\"address The address which you want to send tokens from\",\"to\":\"address The address which you want to transfer to\",\"value\":\"uint256 the amount of tokens to be transferred\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"erc20()\":{\"notice\":\"The ierc20 at the known pre-compile address.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"main.sol\":\"ERC20Instance\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"main.sol\":{\"keccak256\":\"0x2080d684a34ff7cd598d0bf1589eb96b32e838c6c3a0de4e5915be05dd32e7b1\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://a7d81e6895a0cf70f1dfcbe3db4ce0179d72b03e748a6aa1ee630977c27f240a\",\"dweb:/ipfs/QmWGCKtpcw2K57v3HBq3g7QxttMLKfTFboDi3rFYJ1udwD\"]}},\"version\":1}", + "storageLayout": { + "storage": [ + { + "astId": 86, + "contract": "main.sol:ERC20Instance", + "label": "erc20", + "offset": 0, + "slot": "0", + "type": "t_contract(IERC20)77" + } + ], + "types": { + "t_contract(IERC20)77": { + "encoding": "inplace", + "label": "contract IERC20", + "numberOfBytes": "20" + } + } + }, + "userdoc": { + "kind": "user", + "methods": { + "erc20()": { "notice": "The ierc20 at the known pre-compile address." } + }, + "version": 1 + } + }, + "sourceCode": "\n // SPDX-License-Identifier: GPL-3.0-only\n pragma solidity ^0.8.0;\n\n /**\n * @title ERC20 interface\n * @dev see https://github.com/ethereum/EIPs/issues/20\n * @dev copied from https://github.com/OpenZeppelin/openzeppelin-contracts\n */\n interface IERC20 {\n /**\n * @dev Total number of tokens in existence\n * Selector: 18160ddd\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Gets the balance of the specified address.\n * Selector: 70a08231\n * @param who The address to query the balance of.\n * @return An uint256 representing the amount owned by the passed address.\n */\n function balanceOf(address who) external view returns (uint256);\n\n /**\n * @dev Function to check the amount of tokens that an owner allowed to a spender.\n * Selector: dd62ed3e\n * @param owner address The address which owns the funds.\n * @param spender address The address which will spend the funds.\n * @return A uint256 specifying the amount of tokens still available for the spender.\n */\n function allowance(address owner, address spender)\n external view returns (uint256);\n\n /**\n * @dev Transfer token for a specified address\n * Selector: a9059cbb\n * @param to The address to transfer to.\n * @param value The amount to be transferred.\n */\n function transfer(address to, uint256 value) external returns (bool);\n\n /**\n * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.\n * Beware that changing an allowance with this method brings the risk that someone may use both the old\n * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this\n * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n * Selector: 095ea7b3\n * @param spender The address which will spend the funds.\n * @param value The amount of tokens to be spent.\n */\n function approve(address spender, uint256 value)\n external returns (bool);\n\n /**\n * @dev Transfer tokens from one address to another\n * Selector: 23b872dd\n * @param from address The address which you want to send tokens from\n * @param to address The address which you want to transfer to\n * @param value uint256 the amount of tokens to be transferred\n */\n function transferFrom(address from, address to, uint256 value)\n external returns (bool);\n\n /**\n * @dev Event emited when a transfer has been performed.\n * Selector: ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\n * @param from address The address sending the tokens\n * @param to address The address receiving the tokens.\n * @param value uint256 The amount of tokens transfered.\n */\n event Transfer(\n address indexed from,\n address indexed to,\n uint256 value\n );\n\n /**\n * @dev Event emited when an approval has been registered.\n * Selector: 8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925\n * @param owner address Owner of the tokens.\n * @param spender address Allowed spender.\n * @param value uint256 Amount of tokens approved.\n */\n event Approval(\n address indexed owner,\n address indexed spender,\n uint256 value\n );\n }\n\n contract ERC20Instance is IERC20 {\n\n /// The ierc20 at the known pre-compile address.\n IERC20 public erc20 = IERC20(0x0000000000000000000000000000000000000802);\n\n function totalSupply() override external view returns (uint256){\n // We nominate our target collator with all the tokens provided\n return erc20.totalSupply();\n }\n \n function balanceOf(address who) override external view returns (uint256){\n // We nominate our target collator with all the tokens provided\n return erc20.balanceOf(who);\n }\n \n function allowance(address owner, address spender) override external view returns (uint256){\n return erc20.allowance(owner, spender);\n }\n\n function transfer(address to, uint256 value) override external returns (bool) {\n return erc20.transfer(to, value);\n }\n \n function approve(address spender, uint256 value) override external returns (bool) {\n return erc20.transfer(spender, value);\n }\n \n function transferFrom(address from, address to, uint256 value) override external returns (bool) {\n return erc20.transferFrom(from, to, value);\n }\n }" +} diff --git a/tests/contracts/sources.ts b/tests/contracts/sources.ts index a99551cd07..e8a688d358 100644 --- a/tests/contracts/sources.ts +++ b/tests/contracts/sources.ts @@ -839,4 +839,191 @@ export const contractSources: { [key: string]: string } = { ); } }`, + // Blake2Check contract used to test blake2 precompile at address 0x9 + // source: https://eips.ethereum.org/EIPS/eip-152#example-usage-in-solidity + Blake2Check: ` + pragma solidity >=0.8.0; + + contract Blake2Check { + + function F( + uint32 rounds, + bytes32[2] memory h, + bytes32[4] memory m, + bytes8[2] memory t, + bool f + ) public view returns (bytes32[2] memory) { + + bytes32[2] memory output; + + bytes memory args = + abi.encodePacked(rounds, h[0], h[1], m[0], m[1], m[2], m[3], t[0], t[1], f); + + assembly { + if iszero(staticcall(not(0), 0x09, add(args, 32), 0xd5, output, 0x40)) { + revert(0, 0) + } + } + + return output; + } + + function callF() public view returns (bytes32[2] memory) { + uint32 rounds = 12; + + bytes32[2] memory h; + h[0] = hex"48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa5"; + h[1] = hex"d182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b"; + + bytes32[4] memory m; + m[0] = hex"6162630000000000000000000000000000000000000000000000000000000000"; + m[1] = hex"0000000000000000000000000000000000000000000000000000000000000000"; + m[2] = hex"0000000000000000000000000000000000000000000000000000000000000000"; + m[3] = hex"0000000000000000000000000000000000000000000000000000000000000000"; + + bytes8[2] memory t; + t[0] = hex"03000000"; + t[1] = hex"00000000"; + + bool f = true; + + // Expected output: + // ba80a53f981c4d0d6a2797b69f12f6e94c212f14685ac4b74b12bb6fdbffa2d1 + // 7d87c5392aab792dc252d5de4533cc9518d38aa8dbf1925ab92386edd4009923 + return F(rounds, h, m, t, f); + } + }`, + ERC20Instance: ` + // SPDX-License-Identifier: GPL-3.0-only + pragma solidity ^0.8.0; + + /** + * @title ERC20 interface + * @dev see https://github.com/ethereum/EIPs/issues/20 + * @dev copied from https://github.com/OpenZeppelin/openzeppelin-contracts + */ + interface IERC20 { + /** + * @dev Total number of tokens in existence + * Selector: 18160ddd + */ + function totalSupply() external view returns (uint256); + + /** + * @dev Gets the balance of the specified address. + * Selector: 70a08231 + * @param who The address to query the balance of. + * @return An uint256 representing the amount owned by the passed address. + */ + function balanceOf(address who) external view returns (uint256); + + /** + * @dev Function to check the amount of tokens that an owner allowed to a spender. + * Selector: dd62ed3e + * @param owner address The address which owns the funds. + * @param spender address The address which will spend the funds. + * @return A uint256 specifying the amount of tokens still available for the spender. + */ + function allowance(address owner, address spender) + external view returns (uint256); + + /** + * @dev Transfer token for a specified address + * Selector: a9059cbb + * @param to The address to transfer to. + * @param value The amount to be transferred. + */ + function transfer(address to, uint256 value) external returns (bool); + + /** + * @dev Approve the passed address to spend the specified amount of tokens on behalf + * of msg.sender. + * Beware that changing an allowance with this method brings the risk that someone may + * use both the old + * and the new allowance by unfortunate transaction ordering. One possible solution to + * mitigate this race condition is to first reduce the spender's allowance to 0 and set + * the desired value afterwards: + * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 + * Selector: 095ea7b3 + * @param spender The address which will spend the funds. + * @param value The amount of tokens to be spent. + */ + function approve(address spender, uint256 value) + external returns (bool); + + /** + * @dev Transfer tokens from one address to another + * Selector: 23b872dd + * @param from address The address which you want to send tokens from + * @param to address The address which you want to transfer to + * @param value uint256 the amount of tokens to be transferred + */ + function transferFrom(address from, address to, uint256 value) + external returns (bool); + + /** + * @dev Event emited when a transfer has been performed. + * Selector: ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef + * @param from address The address sending the tokens + * @param to address The address receiving the tokens. + * @param value uint256 The amount of tokens transfered. + */ + event Transfer( + address indexed from, + address indexed to, + uint256 value + ); + + /** + * @dev Event emited when an approval has been registered. + * Selector: 8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925 + * @param owner address Owner of the tokens. + * @param spender address Allowed spender. + * @param value uint256 Amount of tokens approved. + */ + event Approval( + address indexed owner, + address indexed spender, + uint256 value + ); + } + + contract ERC20Instance is IERC20 { + + /// The ierc20 at the known pre-compile address. + IERC20 public erc20 = IERC20(0x0000000000000000000000000000000000000802); + + function totalSupply() override external view returns (uint256){ + // We nominate our target collator with all the tokens provided + return erc20.totalSupply(); + } + + function balanceOf(address who) override external view returns (uint256){ + // We nominate our target collator with all the tokens provided + return erc20.balanceOf(who); + } + + function allowance( + address owner, + address spender + ) override external view returns (uint256){ + return erc20.allowance(owner, spender); + } + + function transfer(address to, uint256 value) override external returns (bool) { + return erc20.transfer(to, value); + } + + function approve(address spender, uint256 value) override external returns (bool) { + return erc20.transfer(spender, value); + } + + function transferFrom( + address from, + address to, + int256 value + ) override external returns (bool) { + return erc20.transferFrom(from, to, value); + } + }`, }; diff --git a/tests/tests/test-precompile-assets-erc20.ts b/tests/tests/test-precompile-assets-erc20.ts new file mode 100644 index 0000000000..e4fd850f24 --- /dev/null +++ b/tests/tests/test-precompile-assets-erc20.ts @@ -0,0 +1,410 @@ +import { expect } from "chai"; +import { describeDevMoonbeam } from "../util/setup-dev-tests"; +import { customWeb3Request } from "../util/providers"; +import { + GENESIS_ACCOUNT, + ALITH, + BALTATHAR, + ALITH_PRIV_KEY, + CHARLETH, + BALTATHAR_PRIV_KEY, +} from "../util/constants"; +import { blake2AsU8a, xxhashAsU8a } from "@polkadot/util-crypto"; +import { BN, hexToU8a, bnToHex, u8aToHex } from "@polkadot/util"; +import Keyring from "@polkadot/keyring"; +import { getCompiled } from "../util/contracts"; +import { ethers } from "ethers"; +import { createContract, createTransaction } from "../util/transactions"; + +const sourceLocationRelay = { parents: 1, interior: "Here" }; + +const sourceLocationRelayAssetType = { XCM: { parents: 1, interior: "Here" } }; + +interface AssetMetadata { + name: string; + symbol: string; + decimals: BN; + isFrozen: boolean; +} + +const relayAssetMetadata: AssetMetadata = { + name: "DOT", + symbol: "DOT", + decimals: new BN(12), + isFrozen: false, +}; + +async function mockAssetBalance(context, assetBalance, assetDetails, sudoAccount, assetId) { + // Register the asset + await context.polkadotApi.tx.sudo + .sudo( + context.polkadotApi.tx.assetManager.registerAsset( + sourceLocationRelayAssetType, + relayAssetMetadata, + new BN(1) + ) + ) + .signAndSend(sudoAccount); + await context.createBlock(); + + let assets = ( + (await context.polkadotApi.query.assetManager.assetIdType(assetId)) as any + ).toJSON(); + // make sure we created it + expect(assets["xcm"]["parents"]).to.equal(1); + + // Get keys to modify balance + let module = xxhashAsU8a(new TextEncoder().encode("Assets"), 128); + let account_key = xxhashAsU8a(new TextEncoder().encode("Account"), 128); + let blake2concatAssetId = new Uint8Array([ + ...blake2AsU8a(assetId.toU8a(), 128), + ...assetId.toU8a(), + ]); + let blake2concatAccount = new Uint8Array([ + ...blake2AsU8a(hexToU8a(ALITH), 128), + ...hexToU8a(ALITH), + ]); + let overallAccountKey = new Uint8Array([ + ...module, + ...account_key, + ...blake2concatAssetId, + ...blake2concatAccount, + ]); + + // Get keys to modify total supply + let assetKey = xxhashAsU8a(new TextEncoder().encode("Asset"), 128); + let overallAssetKey = new Uint8Array([...module, ...assetKey, ...blake2concatAssetId]); + + await context.polkadotApi.tx.sudo + .sudo( + context.polkadotApi.tx.system.setStorage([ + [u8aToHex(overallAccountKey), u8aToHex(assetBalance.toU8a())], + [u8aToHex(overallAssetKey), u8aToHex(assetDetails.toU8a())], + ]) + ) + .signAndSend(sudoAccount); + await context.createBlock(); + return; +} + +const ADDRESS_ERC20 = "0xFfFFfFff1FcaCBd218EDc0EbA20Fc2308C778080"; +const SELECTORS = { + balanceOf: "70a08231", + totalSupply: "18160ddd", + approve: "095ea7b3", + allowance: "dd62ed3e", + transfer: "a9059cbb", + transferFrom: "23b872dd", + logApprove: "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + logTransfer: "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", +}; +const GAS_PRICE = "0x" + (1_000_000_000).toString(16); + +describeDevMoonbeam( + "Precompiles - Assets-ERC20 Wasm", + (context) => { + let sudoAccount, assetId, iFace; + before("Setup contract and mock balance", async () => { + const keyring = new Keyring({ type: "ethereum" }); + sudoAccount = await keyring.addFromUri(ALITH_PRIV_KEY, null, "ethereum"); + // We need to mint units with sudo.setStorage, as we dont have xcm mocker yet + // And we need relay tokens for issuing a transaction to be executed in the relay + const balance = context.polkadotApi.createType("Balance", 100000000000000); + const assetBalance = context.polkadotApi.createType("AssetBalance", { balance: balance }); + + assetId = context.polkadotApi.createType( + "AssetId", + new BN("42259045809535163221576417993425387648") + ); + const assetDetails = context.polkadotApi.createType("AssetDetails", { supply: balance }); + + await mockAssetBalance(context, assetBalance, assetDetails, sudoAccount, assetId); + + let beforeAssetBalance = ( + (await context.polkadotApi.query.assets.account(assetId, ALITH)) as any + ).balance as BN; + + const contractData = await getCompiled("ERC20Instance"); + iFace = new ethers.utils.Interface(contractData.contract.abi); + const { contract, rawTx } = await createContract(context.web3, "ERC20Instance"); + const address = contract.options.address; + await context.createBlock({ transactions: [rawTx] }); + }); + it("allows to call getBalance", async function () { + let data = iFace.encodeFunctionData( + // action + "balanceOf", + [ALITH] + ); + + const tx_call = await customWeb3Request(context.web3, "eth_call", [ + { + from: GENESIS_ACCOUNT, + value: "0x0", + gas: "0x10000", + gasPrice: GAS_PRICE, + to: ADDRESS_ERC20, + data: data, + }, + ]); + let amount = new BN(100000000000000); + + let amount_hex = "0x" + bnToHex(amount).slice(2).padStart(64, "0"); + expect(tx_call.result).equals(amount_hex); + }); + + it("allows to call totalSupply", async function () { + let data = iFace.encodeFunctionData( + // action + "totalSupply", + [] + ); + const tx_call = await customWeb3Request(context.web3, "eth_call", [ + { + from: GENESIS_ACCOUNT, + value: "0x0", + gas: "0x10000", + gasPrice: GAS_PRICE, + to: ADDRESS_ERC20, + data: data, + }, + ]); + + let amount = new BN(100000000000000); + + let amount_hex = "0x" + bnToHex(amount).slice(2).padStart(64, "0"); + expect(tx_call.result).equals(amount_hex); + }); + }, + true +); + +describeDevMoonbeam( + "Precompiles - Assets-ERC20 Wasm", + (context) => { + let sudoAccount, assetId, iFace; + before("Setup contract and mock balance", async () => { + const keyring = new Keyring({ type: "ethereum" }); + sudoAccount = await keyring.addFromUri(ALITH_PRIV_KEY, null, "ethereum"); + // We need to mint units with sudo.setStorage, as we dont have xcm mocker yet + // And we need relay tokens for issuing a transaction to be executed in the relay + const balance = context.polkadotApi.createType("Balance", 100000000000000); + const assetBalance = context.polkadotApi.createType("AssetBalance", { balance: balance }); + + assetId = context.polkadotApi.createType( + "AssetId", + new BN("42259045809535163221576417993425387648") + ); + const assetDetails = context.polkadotApi.createType("AssetDetails", { supply: balance }); + + await mockAssetBalance(context, assetBalance, assetDetails, sudoAccount, assetId); + + const contractData = await getCompiled("ERC20Instance"); + iFace = new ethers.utils.Interface(contractData.contract.abi); + const { contract, rawTx } = await createContract(context.web3, "ERC20Instance"); + const address = contract.options.address; + await context.createBlock({ transactions: [rawTx] }); + }); + it("allows to approve transfers, and allowance matches", async function () { + let data = iFace.encodeFunctionData( + // action + "approve", + [BALTATHAR, 1000] + ); + + const tx = await createTransaction(context.web3, { + from: ALITH, + privateKey: ALITH_PRIV_KEY, + value: "0x0", + gas: "0x200000", + gasPrice: GAS_PRICE, + to: ADDRESS_ERC20, + data: data, + }); + + const block = await context.createBlock({ + transactions: [tx], + }); + + const receipt = await context.web3.eth.getTransactionReceipt(block.txResults[0].result); + + expect(receipt.status).to.equal(true); + expect(receipt.logs.length).to.eq(1); + expect(receipt.logs[0].address).to.eq(ADDRESS_ERC20); + expect(receipt.logs[0].topics.length).to.eq(3); + expect(receipt.logs[0].topics[0]).to.eq(SELECTORS.logApprove); + let approvals = (await context.polkadotApi.query.assets.approvals( + assetId, + ALITH, + BALTATHAR + )) as any; + + expect(approvals.unwrap().amount.eq(new BN(1000))).to.equal(true); + }); + }, + true +); + +describeDevMoonbeam( + "Precompiles - Assets-ERC20 Wasm", + (context) => { + let sudoAccount, assetId, iFace; + before("Setup contract and mock balance", async () => { + const keyring = new Keyring({ type: "ethereum" }); + sudoAccount = await keyring.addFromUri(ALITH_PRIV_KEY, null, "ethereum"); + // We need to mint units with sudo.setStorage, as we dont have xcm mocker yet + // And we need relay tokens for issuing a transaction to be executed in the relay + const balance = context.polkadotApi.createType("Balance", 100000000000000); + const assetBalance = context.polkadotApi.createType("AssetBalance", { balance: balance }); + + assetId = context.polkadotApi.createType( + "AssetId", + new BN("42259045809535163221576417993425387648") + ); + const assetDetails = context.polkadotApi.createType("AssetDetails", { supply: balance }); + + await mockAssetBalance(context, assetBalance, assetDetails, sudoAccount, assetId); + + const contractData = await getCompiled("ERC20Instance"); + iFace = new ethers.utils.Interface(contractData.contract.abi); + const { contract, rawTx } = await createContract(context.web3, "ERC20Instance"); + const address = contract.options.address; + await context.createBlock({ transactions: [rawTx] }); + }); + it("allows to approve transfer and use transferFrom", async function () { + // Create approval + let data = iFace.encodeFunctionData( + // action + "approve", + [BALTATHAR, 1000] + ); + + let tx = await createTransaction(context.web3, { + from: ALITH, + privateKey: ALITH_PRIV_KEY, + value: "0x0", + gas: "0x200000", + gasPrice: GAS_PRICE, + to: ADDRESS_ERC20, + data: data, + }); + + let block = await context.createBlock({ + transactions: [tx], + }); + + let approvals = (await context.polkadotApi.query.assets.approvals( + assetId, + ALITH, + BALTATHAR + )) as any; + + expect(approvals.unwrap().amount.eq(new BN(1000))).to.equal(true); + // We are gonna spend 1000 from alith to send it to charleth + data = iFace.encodeFunctionData( + // action + "transferFrom", + [ALITH, CHARLETH, 1000] + ); + + tx = await createTransaction(context.web3, { + from: BALTATHAR, + privateKey: BALTATHAR_PRIV_KEY, + value: "0x0", + gas: "0x200000", + gasPrice: GAS_PRICE, + to: ADDRESS_ERC20, + data: data, + }); + + block = await context.createBlock({ + transactions: [tx], + }); + const receipt = await context.web3.eth.getTransactionReceipt(block.txResults[0].result); + + expect(receipt.logs.length).to.eq(1); + expect(receipt.logs[0].address).to.eq(ADDRESS_ERC20); + expect(receipt.logs[0].topics.length).to.eq(3); + expect(receipt.logs[0].topics[0]).to.eq(SELECTORS.logTransfer); + expect(receipt.status).to.equal(true); + + // Approve amount is null now + approvals = (await context.polkadotApi.query.assets.approvals( + assetId, + ALITH, + BALTATHAR + )) as any; + expect(approvals.isNone).to.eq(true); + + // Charleth balance is 1000 + let charletBalance = (await context.polkadotApi.query.assets.account( + assetId, + CHARLETH + )) as any; + expect(charletBalance.balance.eq(new BN(1000))).to.equal(true); + }); + }, + true +); + +describeDevMoonbeam( + "Precompiles - Assets-ERC20 Wasm", + (context) => { + let sudoAccount, assetId, iFace; + before("Setup contract and mock balance", async () => { + const keyring = new Keyring({ type: "ethereum" }); + sudoAccount = await keyring.addFromUri(ALITH_PRIV_KEY, null, "ethereum"); + // We need to mint units with sudo.setStorage, as we dont have xcm mocker yet + // And we need relay tokens for issuing a transaction to be executed in the relay + const balance = context.polkadotApi.createType("Balance", 100000000000000); + const assetBalance = context.polkadotApi.createType("AssetBalance", { balance: balance }); + + assetId = context.polkadotApi.createType( + "AssetId", + new BN("42259045809535163221576417993425387648") + ); + const assetDetails = context.polkadotApi.createType("AssetDetails", { supply: balance }); + + await mockAssetBalance(context, assetBalance, assetDetails, sudoAccount, assetId); + + const contractData = await getCompiled("ERC20Instance"); + iFace = new ethers.utils.Interface(contractData.contract.abi); + const { contract, rawTx } = await createContract(context.web3, "ERC20Instance"); + const address = contract.options.address; + await context.createBlock({ transactions: [rawTx] }); + }); + it("allows to transfer", async function () { + // Create approval + let data = iFace.encodeFunctionData( + // action + "transfer", + [BALTATHAR, 1000] + ); + + let tx = await createTransaction(context.web3, { + from: ALITH, + privateKey: ALITH_PRIV_KEY, + value: "0x0", + gas: "0x200000", + gasPrice: GAS_PRICE, + to: ADDRESS_ERC20, + data: data, + }); + + let block = await context.createBlock({ + transactions: [tx], + }); + + const receipt = await context.web3.eth.getTransactionReceipt(block.txResults[0].result); + expect(receipt.status).to.equal(true); + + // Baltathar balance is 1000 + let baltatharBalance = (await context.polkadotApi.query.assets.account( + assetId, + BALTATHAR + )) as any; + expect(baltatharBalance.balance.eq(new BN(1000))).to.equal(true); + }); + }, + true +); From 165454c5b743bd296481e7af1a4fd87024734511 Mon Sep 17 00:00:00 2001 From: gorka Date: Tue, 9 Nov 2021 15:59:26 +0100 Subject: [PATCH 2/3] bump spec version --- runtime/moonbase/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runtime/moonbase/src/lib.rs b/runtime/moonbase/src/lib.rs index f38682ae4e..24bdc60548 100644 --- a/runtime/moonbase/src/lib.rs +++ b/runtime/moonbase/src/lib.rs @@ -166,7 +166,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: create_runtime_str!("moonbase"), impl_name: create_runtime_str!("moonbase"), authoring_version: 3, - spec_version: 0900, + spec_version: 0901, impl_version: 0, apis: RUNTIME_API_VERSIONS, transaction_version: 2, From 1aff13e625c2c8769e4228a84ff85dbfca158a22 Mon Sep 17 00:00:00 2001 From: gorka Date: Tue, 9 Nov 2021 16:15:35 +0100 Subject: [PATCH 3/3] Remove blake2 contract --- tests/contracts/sources.ts | 54 -------------------------------------- 1 file changed, 54 deletions(-) diff --git a/tests/contracts/sources.ts b/tests/contracts/sources.ts index e8a688d358..fa16e57010 100644 --- a/tests/contracts/sources.ts +++ b/tests/contracts/sources.ts @@ -839,60 +839,6 @@ export const contractSources: { [key: string]: string } = { ); } }`, - // Blake2Check contract used to test blake2 precompile at address 0x9 - // source: https://eips.ethereum.org/EIPS/eip-152#example-usage-in-solidity - Blake2Check: ` - pragma solidity >=0.8.0; - - contract Blake2Check { - - function F( - uint32 rounds, - bytes32[2] memory h, - bytes32[4] memory m, - bytes8[2] memory t, - bool f - ) public view returns (bytes32[2] memory) { - - bytes32[2] memory output; - - bytes memory args = - abi.encodePacked(rounds, h[0], h[1], m[0], m[1], m[2], m[3], t[0], t[1], f); - - assembly { - if iszero(staticcall(not(0), 0x09, add(args, 32), 0xd5, output, 0x40)) { - revert(0, 0) - } - } - - return output; - } - - function callF() public view returns (bytes32[2] memory) { - uint32 rounds = 12; - - bytes32[2] memory h; - h[0] = hex"48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa5"; - h[1] = hex"d182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b"; - - bytes32[4] memory m; - m[0] = hex"6162630000000000000000000000000000000000000000000000000000000000"; - m[1] = hex"0000000000000000000000000000000000000000000000000000000000000000"; - m[2] = hex"0000000000000000000000000000000000000000000000000000000000000000"; - m[3] = hex"0000000000000000000000000000000000000000000000000000000000000000"; - - bytes8[2] memory t; - t[0] = hex"03000000"; - t[1] = hex"00000000"; - - bool f = true; - - // Expected output: - // ba80a53f981c4d0d6a2797b69f12f6e94c212f14685ac4b74b12bb6fdbffa2d1 - // 7d87c5392aab792dc252d5de4533cc9518d38aa8dbf1925ab92386edd4009923 - return F(rounds, h, m, t, f); - } - }`, ERC20Instance: ` // SPDX-License-Identifier: GPL-3.0-only pragma solidity ^0.8.0;