Skip to content

Instantly share code, notes, and snippets.

@dougpfeffer
Created February 21, 2022 02:37
Show Gist options
  • Save dougpfeffer/23f53b2472e1f6aefadfacc0678a94ce to your computer and use it in GitHub Desktop.
Save dougpfeffer/23f53b2472e1f6aefadfacc0678a94ce to your computer and use it in GitHub Desktop.
Created using remix-ide: Realtime Ethereum Contract Compiler and Runtime. Load this file by pasting this gists URL or ID at https://remix.ethereum.org/#version=soljson-v0.8.10+commit.fc410830.js&optimize=false&runs=200&gist=
REMIX EXAMPLE PROJECT
Remix example project is present when Remix loads for the very first time or there are no files existing in the File Explorer.
It contains 3 directories:
1. 'contracts': Holds three contracts with different complexity level, denoted with number prefix in file name.
2. 'scripts': Holds two scripts to deploy a contract. It is explained below.
3. 'tests': Contains one test file for 'Ballot' contract with unit tests in Solidity.
SCRIPTS
The 'scripts' folder contains example async/await scripts for deploying the 'Storage' contract.
For the deployment of any other contract, 'contractName' and 'constructorArgs' should be updated (along with other code if required).
Scripts have full access to the web3.js and ethers.js libraries.
To run a script, right click on file name in the file explorer and click 'Run'. Remember, Solidity file must already be compiled.
Output from script will appear in remix terminal.
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {
"@_16": {
"entryPoint": null,
"id": 16,
"parameterSlots": 0,
"returnSlots": 0
}
},
"generatedSources": [],
"linkReferences": {},
"object": "608060405234801561001057600080fd5b5060405161001d9061007e565b604051809103906000f080158015610039573d6000803e3d6000fd5b506000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061008b565b6101278061039183390190565b6102f78061009a6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806313918e73146100515780633d0d9e361461006f5780633d724a3f1461008d5780636e843127146100ab575b600080fd5b6100596100c9565b6040516100669190610248565b60405180910390f35b6100776100d1565b6040516100849190610248565b60405180910390f35b6100956100d9565b6040516100a29190610248565b60405180910390f35b6100b3610170565b6040516100c09190610248565b60405180910390f35b600032905090565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633d724a3f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610147573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061016b9190610294565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636e8431276040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102029190610294565b905090565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061023282610207565b9050919050565b61024281610227565b82525050565b600060208201905061025d6000830184610239565b92915050565b600080fd5b61027181610227565b811461027c57600080fd5b50565b60008151905061028e81610268565b92915050565b6000602082840312156102aa576102a9610263565b5b60006102b88482850161027f565b9150509291505056fea2646970667358221220cb21145a5d4e2ed8215a927eceb75b389551941fcf6ecb3683c48a47118adf9264736f6c634300080a0033608060405234801561001057600080fd5b50610107806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c80633d724a3f1460375780636e843127146051575b600080fd5b603d606b565b6040516048919060b8565b60405180910390f35b60576073565b6040516062919060b8565b60405180910390f35b600033905090565b600032905090565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600060a482607b565b9050919050565b60b281609b565b82525050565b600060208201905060cb600083018460ab565b9291505056fea26469706673582212202a1c0ca01e38d6f79b36560a0105c4108e424ee551794da03c531ad16967acfe64736f6c634300080a0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1D SWAP1 PUSH2 0x7E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x39 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x8B JUMP JUMPDEST PUSH2 0x127 DUP1 PUSH2 0x391 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH2 0x2F7 DUP1 PUSH2 0x9A 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 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x13918E73 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x3D0D9E36 EQ PUSH2 0x6F JUMPI DUP1 PUSH4 0x3D724A3F EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x6E843127 EQ PUSH2 0xAB JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0xC9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x248 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x77 PUSH2 0xD1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x84 SWAP2 SWAP1 PUSH2 0x248 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x95 PUSH2 0xD9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA2 SWAP2 SWAP1 PUSH2 0x248 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xB3 PUSH2 0x170 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC0 SWAP2 SWAP1 PUSH2 0x248 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 ORIGIN SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER 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 0x3D724A3F 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 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x147 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 0x16B SWAP2 SWAP1 PUSH2 0x294 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 0x6E843127 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 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1DE 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 0x202 SWAP2 SWAP1 PUSH2 0x294 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x232 DUP3 PUSH2 0x207 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x242 DUP2 PUSH2 0x227 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x25D PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x239 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x271 DUP2 PUSH2 0x227 JUMP JUMPDEST DUP2 EQ PUSH2 0x27C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x28E DUP2 PUSH2 0x268 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2AA JUMPI PUSH2 0x2A9 PUSH2 0x263 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2B8 DUP5 DUP3 DUP6 ADD PUSH2 0x27F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCB 0x21 EQ GAS 0x5D 0x4E 0x2E 0xD8 0x21 GAS SWAP3 PUSH31 0xCEB75B389551941FCF6ECB3683C48A47118ADF9264736F6C634300080A0033 PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x107 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x32 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3D724A3F EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0x6E843127 EQ PUSH1 0x51 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3D PUSH1 0x6B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x48 SWAP2 SWAP1 PUSH1 0xB8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x57 PUSH1 0x73 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x62 SWAP2 SWAP1 PUSH1 0xB8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 ORIGIN SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA4 DUP3 PUSH1 0x7B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0xB2 DUP2 PUSH1 0x9B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0xCB PUSH1 0x0 DUP4 ADD DUP5 PUSH1 0xAB JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2A SHR 0xC LOG0 0x1E CODESIZE 0xD6 0xF7 SWAP12 CALLDATASIZE JUMP EXP ADD SDIV 0xC4 LT DUP15 TIMESTAMP 0x4E 0xE5 MLOAD PUSH26 0x4DA03C531AD16967ACFE64736F6C634300080A00330000000000 ",
"sourceMap": "193:520:0:-:0;;;243:56;;;;;;;;;;278:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;267:8;;:25;;;;;;;;;;;;;;;;;;193:520;;;;;;;;;;:::o;:::-;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@myMsgSender_45": {
"entryPoint": 209,
"id": 45,
"parameterSlots": 0,
"returnSlots": 1
},
"@myTxOrigin_54": {
"entryPoint": 201,
"id": 54,
"parameterSlots": 0,
"returnSlots": 1
},
"@returnMsgSender_26": {
"entryPoint": 217,
"id": 26,
"parameterSlots": 0,
"returnSlots": 1
},
"@returnTxOrigin_36": {
"entryPoint": 368,
"id": 36,
"parameterSlots": 0,
"returnSlots": 1
},
"abi_decode_t_address_fromMemory": {
"entryPoint": 639,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_address_fromMemory": {
"entryPoint": 660,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_address_to_t_address_fromStack": {
"entryPoint": 569,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
"entryPoint": 584,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"allocate_unbounded": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
},
"cleanup_t_address": {
"entryPoint": 551,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint160": {
"entryPoint": 519,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": {
"entryPoint": 611,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"validator_revert_t_address": {
"entryPoint": 616,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:1551:2",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "52:81:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "62:65:2",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "77:5:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "84:42:2",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "73:3:2"
},
"nodeType": "YulFunctionCall",
"src": "73:54:2"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "62:7:2"
}
]
}
]
},
"name": "cleanup_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "34:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "44:7:2",
"type": ""
}
],
"src": "7:126:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "184:51:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "194:35:2",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "223:5:2"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "205:17:2"
},
"nodeType": "YulFunctionCall",
"src": "205:24:2"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "194:7:2"
}
]
}
]
},
"name": "cleanup_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "166:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "176:7:2",
"type": ""
}
],
"src": "139:96:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "306:53:2",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "323:3:2"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "346:5:2"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "328:17:2"
},
"nodeType": "YulFunctionCall",
"src": "328:24:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "316:6:2"
},
"nodeType": "YulFunctionCall",
"src": "316:37:2"
},
"nodeType": "YulExpressionStatement",
"src": "316:37:2"
}
]
},
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "294:5:2",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "301:3:2",
"type": ""
}
],
"src": "241:118:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "463:124:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "473:26:2",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "485:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "496:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "481:3:2"
},
"nodeType": "YulFunctionCall",
"src": "481:18:2"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "473:4:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "553:6:2"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "566:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "577:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "562:3:2"
},
"nodeType": "YulFunctionCall",
"src": "562:17:2"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "509:43:2"
},
"nodeType": "YulFunctionCall",
"src": "509:71:2"
},
"nodeType": "YulExpressionStatement",
"src": "509:71:2"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "435:9:2",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "447:6:2",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "458:4:2",
"type": ""
}
],
"src": "365:222:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "633:35:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "643:19:2",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "659:2:2",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "653:5:2"
},
"nodeType": "YulFunctionCall",
"src": "653:9:2"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "643:6:2"
}
]
}
]
},
"name": "allocate_unbounded",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "626:6:2",
"type": ""
}
],
"src": "593:75:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "763:28:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "780:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "783:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "773:6:2"
},
"nodeType": "YulFunctionCall",
"src": "773:12:2"
},
"nodeType": "YulExpressionStatement",
"src": "773:12:2"
}
]
},
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulFunctionDefinition",
"src": "674:117:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "886:28:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "903:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "906:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "896:6:2"
},
"nodeType": "YulFunctionCall",
"src": "896:12:2"
},
"nodeType": "YulExpressionStatement",
"src": "896:12:2"
}
]
},
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulFunctionDefinition",
"src": "797:117:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "963:79:2",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1020:16:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1029:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1032:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1022:6:2"
},
"nodeType": "YulFunctionCall",
"src": "1022:12:2"
},
"nodeType": "YulExpressionStatement",
"src": "1022:12:2"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "986:5:2"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1011:5:2"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "993:17:2"
},
"nodeType": "YulFunctionCall",
"src": "993:24:2"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "983:2:2"
},
"nodeType": "YulFunctionCall",
"src": "983:35:2"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "976:6:2"
},
"nodeType": "YulFunctionCall",
"src": "976:43:2"
},
"nodeType": "YulIf",
"src": "973:63:2"
}
]
},
"name": "validator_revert_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "956:5:2",
"type": ""
}
],
"src": "920:122:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1111:80:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1121:22:2",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1136:6:2"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1130:5:2"
},
"nodeType": "YulFunctionCall",
"src": "1130:13:2"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1121:5:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1179:5:2"
}
],
"functionName": {
"name": "validator_revert_t_address",
"nodeType": "YulIdentifier",
"src": "1152:26:2"
},
"nodeType": "YulFunctionCall",
"src": "1152:33:2"
},
"nodeType": "YulExpressionStatement",
"src": "1152:33:2"
}
]
},
"name": "abi_decode_t_address_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1089:6:2",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "1097:3:2",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1105:5:2",
"type": ""
}
],
"src": "1048:143:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1274:274:2",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1320:83:2",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "1322:77:2"
},
"nodeType": "YulFunctionCall",
"src": "1322:79:2"
},
"nodeType": "YulExpressionStatement",
"src": "1322:79:2"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1295:7:2"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1304:9:2"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1291:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1291:23:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1316:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "1287:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1287:32:2"
},
"nodeType": "YulIf",
"src": "1284:119:2"
},
{
"nodeType": "YulBlock",
"src": "1413:128:2",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1428:15:2",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "1442:1:2",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1432:6:2",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "1457:74:2",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1503:9:2"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1514:6:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1499:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1499:22:2"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1523:7:2"
}
],
"functionName": {
"name": "abi_decode_t_address_fromMemory",
"nodeType": "YulIdentifier",
"src": "1467:31:2"
},
"nodeType": "YulFunctionCall",
"src": "1467:64:2"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1457:6:2"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_address_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1244:9:2",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "1255:7:2",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1267:6:2",
"type": ""
}
],
"src": "1197:351:2"
}
]
},
"contents": "{\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 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__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 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 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_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_address_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_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n}\n",
"id": 2,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "608060405234801561001057600080fd5b506004361061004c5760003560e01c806313918e73146100515780633d0d9e361461006f5780633d724a3f1461008d5780636e843127146100ab575b600080fd5b6100596100c9565b6040516100669190610248565b60405180910390f35b6100776100d1565b6040516100849190610248565b60405180910390f35b6100956100d9565b6040516100a29190610248565b60405180910390f35b6100b3610170565b6040516100c09190610248565b60405180910390f35b600032905090565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633d724a3f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610147573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061016b9190610294565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636e8431276040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102029190610294565b905090565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061023282610207565b9050919050565b61024281610227565b82525050565b600060208201905061025d6000830184610239565b92915050565b600080fd5b61027181610227565b811461027c57600080fd5b50565b60008151905061028e81610268565b92915050565b6000602082840312156102aa576102a9610263565b5b60006102b88482850161027f565b9150509291505056fea2646970667358221220cb21145a5d4e2ed8215a927eceb75b389551941fcf6ecb3683c48a47118adf9264736f6c634300080a0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x13918E73 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x3D0D9E36 EQ PUSH2 0x6F JUMPI DUP1 PUSH4 0x3D724A3F EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x6E843127 EQ PUSH2 0xAB JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0xC9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x248 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x77 PUSH2 0xD1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x84 SWAP2 SWAP1 PUSH2 0x248 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x95 PUSH2 0xD9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA2 SWAP2 SWAP1 PUSH2 0x248 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xB3 PUSH2 0x170 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC0 SWAP2 SWAP1 PUSH2 0x248 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 ORIGIN SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER 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 0x3D724A3F 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 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x147 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 0x16B SWAP2 SWAP1 PUSH2 0x294 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 0x6E843127 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 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1DE 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 0x202 SWAP2 SWAP1 PUSH2 0x294 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x232 DUP3 PUSH2 0x207 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x242 DUP2 PUSH2 0x227 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x25D PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x239 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x271 DUP2 PUSH2 0x227 JUMP JUMPDEST DUP2 EQ PUSH2 0x27C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x28E DUP2 PUSH2 0x268 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2AA JUMPI PUSH2 0x2A9 PUSH2 0x263 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2B8 DUP5 DUP3 DUP6 ADD PUSH2 0x27F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCB 0x21 EQ GAS 0x5D 0x4E 0x2E 0xD8 0x21 GAS SWAP3 PUSH31 0xCEB75B389551941FCF6ECB3683C48A47118ADF9264736F6C634300080A0033 ",
"sourceMap": "193:520:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;627:84;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;535:86;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;309:106;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;421:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;627:84;669:7;695:9;688:16;;627:84;:::o;535:86::-;578:7;604:10;597:17;;535:86;:::o;309:106::-;356:7;382:8;;;;;;;;;;;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;375:33;;309:106;:::o;421:104::-;467:7;493:8;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;486:32;;421:104;:::o;7:126:2:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:96::-;176:7;205:24;223:5;205:24;:::i;:::-;194:35;;139:96;;;:::o;241:118::-;328:24;346:5;328:24;:::i;:::-;323:3;316:37;241:118;;:::o;365:222::-;458:4;496:2;485:9;481:18;473:26;;509:71;577:1;566:9;562:17;553:6;509:71;:::i;:::-;365:222;;;;:::o;674:117::-;783:1;780;773:12;920:122;993:24;1011:5;993:24;:::i;:::-;986:5;983:35;973:63;;1032:1;1029;1022:12;973:63;920:122;:::o;1048:143::-;1105:5;1136:6;1130:13;1121:22;;1152:33;1179:5;1152:33;:::i;:::-;1048:143;;;;:::o;1197:351::-;1267:6;1316:2;1304:9;1295:7;1291:23;1287:32;1284:119;;;1322:79;;:::i;:::-;1284:119;1442:1;1467:64;1523:7;1514:6;1503:9;1499:22;1467:64;:::i;:::-;1457:74;;1413:128;1197:351;;;;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "151800",
"executionCost": "infinite",
"totalCost": "infinite"
},
"external": {
"myMsgSender()": "385",
"myTxOrigin()": "363",
"returnMsgSender()": "infinite",
"returnTxOrigin()": "infinite"
}
},
"methodIdentifiers": {
"myMsgSender()": "3d0d9e36",
"myTxOrigin()": "13918e73",
"returnMsgSender()": "3d724a3f",
"returnTxOrigin()": "6e843127"
}
},
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "myMsgSender",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "myTxOrigin",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "returnMsgSender",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "returnTxOrigin",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.10+commit.fc410830"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "myMsgSender",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "myTxOrigin",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "returnMsgSender",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "returnTxOrigin",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/Caller.sol": "Caller"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/Caller.sol": {
"keccak256": "0x04902d5b5fa8196866824b634537845a26c23e2ca4f505b21d6ea636bfba24fb",
"license": "MIT",
"urls": [
"bzz-raw://9b4bcba776e57a04ffe31bec92017a8a2b75ccd543ef887dbf0c0060950e8af0",
"dweb:/ipfs/QmYcDuUzqwThKzQBLadQoY9dmoLWKDcz33CmTUSnr5MoxK"
]
},
"contracts/Original.sol": {
"keccak256": "0x8e2c329c8e8fd9c749f554db16d2af96e17bdf75e9a44f4c2a734c619e2301eb",
"license": "MIT",
"urls": [
"bzz-raw://360085fca5791d408fe8769ca51e982c25858ff81381e8b76711647951f6d035",
"dweb:/ipfs/QmQeheEuearftkfVXUPGfb5WcNii3C5HGpKLppHkhexidf"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {
"@_37": {
"entryPoint": null,
"id": 37,
"parameterSlots": 0,
"returnSlots": 0
},
"@getMsgSender_50": {
"entryPoint": 264,
"id": 50,
"parameterSlots": 0,
"returnSlots": 0
},
"@getTxOrigin_63": {
"entryPoint": 466,
"id": 63,
"parameterSlots": 0,
"returnSlots": 0
},
"abi_decode_t_address_fromMemory": {
"entryPoint": 746,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_address_fromMemory": {
"entryPoint": 767,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_address_to_t_address_fromStack": {
"entryPoint": 812,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
"entryPoint": 827,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"allocate_unbounded": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
},
"cleanup_t_address": {
"entryPoint": 705,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint160": {
"entryPoint": 673,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": {
"entryPoint": 668,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"validator_revert_t_address": {
"entryPoint": 723,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:1551:2",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "47:35:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "57:19:2",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "73:2:2",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "67:5:2"
},
"nodeType": "YulFunctionCall",
"src": "67:9:2"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "57:6:2"
}
]
}
]
},
"name": "allocate_unbounded",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "40:6:2",
"type": ""
}
],
"src": "7:75:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "177:28:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "194:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "197:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "187:6:2"
},
"nodeType": "YulFunctionCall",
"src": "187:12:2"
},
"nodeType": "YulExpressionStatement",
"src": "187:12:2"
}
]
},
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulFunctionDefinition",
"src": "88:117:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "300:28:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "317:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "320:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "310:6:2"
},
"nodeType": "YulFunctionCall",
"src": "310:12:2"
},
"nodeType": "YulExpressionStatement",
"src": "310:12:2"
}
]
},
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulFunctionDefinition",
"src": "211:117:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "379:81:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "389:65:2",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "404:5:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "411:42:2",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "400:3:2"
},
"nodeType": "YulFunctionCall",
"src": "400:54:2"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "389:7:2"
}
]
}
]
},
"name": "cleanup_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "361:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "371:7:2",
"type": ""
}
],
"src": "334:126:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "511:51:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "521:35:2",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "550:5:2"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "532:17:2"
},
"nodeType": "YulFunctionCall",
"src": "532:24:2"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "521:7:2"
}
]
}
]
},
"name": "cleanup_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "493:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "503:7:2",
"type": ""
}
],
"src": "466:96:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "611:79:2",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "668:16:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "677:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "680:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "670:6:2"
},
"nodeType": "YulFunctionCall",
"src": "670:12:2"
},
"nodeType": "YulExpressionStatement",
"src": "670:12:2"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "634:5:2"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "659:5:2"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "641:17:2"
},
"nodeType": "YulFunctionCall",
"src": "641:24:2"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "631:2:2"
},
"nodeType": "YulFunctionCall",
"src": "631:35:2"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "624:6:2"
},
"nodeType": "YulFunctionCall",
"src": "624:43:2"
},
"nodeType": "YulIf",
"src": "621:63:2"
}
]
},
"name": "validator_revert_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "604:5:2",
"type": ""
}
],
"src": "568:122:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "759:80:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "769:22:2",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "784:6:2"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "778:5:2"
},
"nodeType": "YulFunctionCall",
"src": "778:13:2"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "769:5:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "827:5:2"
}
],
"functionName": {
"name": "validator_revert_t_address",
"nodeType": "YulIdentifier",
"src": "800:26:2"
},
"nodeType": "YulFunctionCall",
"src": "800:33:2"
},
"nodeType": "YulExpressionStatement",
"src": "800:33:2"
}
]
},
"name": "abi_decode_t_address_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "737:6:2",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "745:3:2",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "753:5:2",
"type": ""
}
],
"src": "696:143:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "922:274:2",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "968:83:2",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "970:77:2"
},
"nodeType": "YulFunctionCall",
"src": "970:79:2"
},
"nodeType": "YulExpressionStatement",
"src": "970:79:2"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "943:7:2"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "952:9:2"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "939:3:2"
},
"nodeType": "YulFunctionCall",
"src": "939:23:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "964:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "935:3:2"
},
"nodeType": "YulFunctionCall",
"src": "935:32:2"
},
"nodeType": "YulIf",
"src": "932:119:2"
},
{
"nodeType": "YulBlock",
"src": "1061:128:2",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1076:15:2",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "1090:1:2",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1080:6:2",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "1105:74:2",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1151:9:2"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1162:6:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1147:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1147:22:2"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1171:7:2"
}
],
"functionName": {
"name": "abi_decode_t_address_fromMemory",
"nodeType": "YulIdentifier",
"src": "1115:31:2"
},
"nodeType": "YulFunctionCall",
"src": "1115:64:2"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1105:6:2"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_address_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "892:9:2",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "903:7:2",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "915:6:2",
"type": ""
}
],
"src": "845:351:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1267:53:2",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1284:3:2"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1307:5:2"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "1289:17:2"
},
"nodeType": "YulFunctionCall",
"src": "1289:24:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1277:6:2"
},
"nodeType": "YulFunctionCall",
"src": "1277:37:2"
},
"nodeType": "YulExpressionStatement",
"src": "1277:37:2"
}
]
},
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1255:5:2",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "1262:3:2",
"type": ""
}
],
"src": "1202:118:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1424:124:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1434:26:2",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1446:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1457:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1442:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1442:18:2"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1434:4:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1514:6:2"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1527:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1538:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1523:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1523:17:2"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "1470:43:2"
},
"nodeType": "YulFunctionCall",
"src": "1470:71:2"
},
"nodeType": "YulExpressionStatement",
"src": "1470:71:2"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1396:9:2",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1408:6:2",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1419:4:2",
"type": ""
}
],
"src": "1326:222:2"
}
]
},
"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_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_address_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_address_fromMemory(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__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}\n",
"id": 2,
"language": "Yul",
"name": "#utility.yul"
}
],
"linkReferences": {},
"object": "608060405273d8b934580fce35a11b58c6d73adee468a2833fa8600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f41d944b296228d0fabc86ab601ffc9ada90dda70d25e88df186e21aba0f77b2f60405160405180910390a16100f561010860201b60201c565b6101036101d260201b60201c565b610356565b7fb8a86b3188aec3bf03af2711b9216159916df43ac825a37e35a25c82638c2b3860008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633d724a3f346040518263ffffffff1660e01b815260040160206040518083038185885af1158015610196573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906101bb91906102ff565b6040516101c8919061033b565b60405180910390a1565b7f3ad2039733666e6297ac623dc033e11631899ed4f5cada24a1cf4805082f143f60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636e843127346040518263ffffffff1660e01b815260040160206040518083038185885af1158015610260573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061028591906102ff565b604051610292919061033b565b60405180910390a1565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006102cc826102a1565b9050919050565b6102dc816102c1565b81146102e757600080fd5b50565b6000815190506102f9816102d3565b92915050565b6000602082840312156103155761031461029c565b5b6000610323848285016102ea565b91505092915050565b610335816102c1565b82525050565b6000602082019050610350600083018461032c565b92915050565b610102806103656000396000f3fe608060405260043610601f5760003560e01c8063cab416b414602a576025565b36602557005b600080fd5b348015603557600080fd5b50603c6050565b6040516047919060b3565b60405180910390f35b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000609f826076565b9050919050565b60ad816096565b82525050565b600060208201905060c6600083018460a6565b9291505056fea26469706673582212202806c3ed995b82791a319b9cded00102ae8ef7a23ea1b2d4b6bbcfb3a87108fd64736f6c634300080a0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH20 0xD8B934580FCE35A11B58C6D73ADEE468A2833FA8 PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0x41D944B296228D0FABC86AB601FFC9ADA90DDA70D25E88DF186E21ABA0F77B2F PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH2 0xF5 PUSH2 0x108 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x103 PUSH2 0x1D2 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x356 JUMP JUMPDEST PUSH32 0xB8A86B3188AEC3BF03AF2711B9216159916DF43AC825A37E35A25C82638C2B38 PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x3D724A3F CALLVALUE PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x196 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP 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 0x1BB SWAP2 SWAP1 PUSH2 0x2FF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C8 SWAP2 SWAP1 PUSH2 0x33B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH32 0x3AD2039733666E6297AC623DC033E11631899ED4F5CADA24A1CF4805082F143F PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6E843127 CALLVALUE PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x260 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP 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 0x285 SWAP2 SWAP1 PUSH2 0x2FF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x292 SWAP2 SWAP1 PUSH2 0x33B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CC DUP3 PUSH2 0x2A1 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2DC DUP2 PUSH2 0x2C1 JUMP JUMPDEST DUP2 EQ PUSH2 0x2E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x2F9 DUP2 PUSH2 0x2D3 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x315 JUMPI PUSH2 0x314 PUSH2 0x29C JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x323 DUP5 DUP3 DUP6 ADD PUSH2 0x2EA JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x335 DUP2 PUSH2 0x2C1 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x350 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x32C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x102 DUP1 PUSH2 0x365 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x1F JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xCAB416B4 EQ PUSH1 0x2A JUMPI PUSH1 0x25 JUMP JUMPDEST CALLDATASIZE PUSH1 0x25 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH1 0x35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3C PUSH1 0x50 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x47 SWAP2 SWAP1 PUSH1 0xB3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9F DUP3 PUSH1 0x76 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0xAD DUP2 PUSH1 0x96 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0xC6 PUSH1 0x0 DUP4 ADD DUP5 PUSH1 0xA6 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x28 MOD 0xC3 0xED SWAP10 JUMPDEST DUP3 PUSH26 0x1A319B9CDED00102AE8EF7A23EA1B2D4B6BBCFB3A87108FD6473 PUSH16 0x6C634300080A00330000000000000000 ",
"sourceMap": "83:758:0:-:0;;;175:42;142:75;;;;;;;;;;;;;;;;;;;;422:15;;;;;;;;;;;402:8;;:36;;;;;;;;;;;;;;;;;;453:32;;;;;;;;;;495:14;:12;;;:14;;:::i;:::-;519:13;:11;;;:13;;:::i;:::-;83:758;;549:123;597:68;621:8;;;;;;;;;;:24;;;652:9;621:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;597:68;;;;;;:::i;:::-;;;;;;;;549:123::o;683:120::-;730:66;753:8;;;;;;;;;;:23;;;783:9;753:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;730:66;;;;;;:::i;:::-;;;;;;;;683:120::o;88:117:2:-;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:143::-;753:5;784:6;778:13;769:22;;800:33;827:5;800:33;:::i;:::-;696:143;;;;:::o;845:351::-;915:6;964:2;952:9;943:7;939:23;935:32;932:119;;;970:79;;:::i;:::-;932:119;1090:1;1115:64;1171:7;1162:6;1151:9;1147:22;1115:64;:::i;:::-;1105:74;;1061:128;845:351;;;;:::o;1202:118::-;1289:24;1307:5;1289:24;:::i;:::-;1284:3;1277:37;1202:118;;:::o;1326:222::-;1419:4;1457:2;1446:9;1442:18;1434:26;;1470:71;1538:1;1527:9;1523:17;1514:6;1470:71;:::i;:::-;1326:222;;;;:::o;83:758:0:-;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@_67": {
"entryPoint": null,
"id": 67,
"parameterSlots": 0,
"returnSlots": 0
},
"@originalAddress_8": {
"entryPoint": 80,
"id": 8,
"parameterSlots": 0,
"returnSlots": 0
},
"abi_encode_t_address_to_t_address_fromStack": {
"entryPoint": 166,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
"entryPoint": 179,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"cleanup_t_address": {
"entryPoint": 150,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint160": {
"entryPoint": 118,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:590:2",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "52:81:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "62:65:2",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "77:5:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "84:42:2",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "73:3:2"
},
"nodeType": "YulFunctionCall",
"src": "73:54:2"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "62:7:2"
}
]
}
]
},
"name": "cleanup_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "34:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "44:7:2",
"type": ""
}
],
"src": "7:126:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "184:51:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "194:35:2",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "223:5:2"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "205:17:2"
},
"nodeType": "YulFunctionCall",
"src": "205:24:2"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "194:7:2"
}
]
}
]
},
"name": "cleanup_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "166:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "176:7:2",
"type": ""
}
],
"src": "139:96:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "306:53:2",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "323:3:2"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "346:5:2"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "328:17:2"
},
"nodeType": "YulFunctionCall",
"src": "328:24:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "316:6:2"
},
"nodeType": "YulFunctionCall",
"src": "316:37:2"
},
"nodeType": "YulExpressionStatement",
"src": "316:37:2"
}
]
},
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "294:5:2",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "301:3:2",
"type": ""
}
],
"src": "241:118:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "463:124:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "473:26:2",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "485:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "496:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "481:3:2"
},
"nodeType": "YulFunctionCall",
"src": "481:18:2"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "473:4:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "553:6:2"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "566:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "577:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "562:3:2"
},
"nodeType": "YulFunctionCall",
"src": "562:17:2"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "509:43:2"
},
"nodeType": "YulFunctionCall",
"src": "509:71:2"
},
"nodeType": "YulExpressionStatement",
"src": "509:71:2"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "435:9:2",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "447:6:2",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "458:4:2",
"type": ""
}
],
"src": "365:222:2"
}
]
},
"contents": "{\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 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__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}\n",
"id": 2,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "608060405260043610601f5760003560e01c8063cab416b414602a576025565b36602557005b600080fd5b348015603557600080fd5b50603c6050565b6040516047919060b3565b60405180910390f35b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000609f826076565b9050919050565b60ad816096565b82525050565b600060208201905060c6600083018460a6565b9291505056fea26469706673582212202806c3ed995b82791a319b9cded00102ae8ef7a23ea1b2d4b6bbcfb3a87108fd64736f6c634300080a0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x1F JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xCAB416B4 EQ PUSH1 0x2A JUMPI PUSH1 0x25 JUMP JUMPDEST CALLDATASIZE PUSH1 0x25 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH1 0x35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3C PUSH1 0x50 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x47 SWAP2 SWAP1 PUSH1 0xB3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9F DUP3 PUSH1 0x76 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0xAD DUP2 PUSH1 0x96 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0xC6 PUSH1 0x0 DUP4 ADD DUP5 PUSH1 0xA6 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x28 MOD 0xC3 0xED SWAP10 JUMPDEST DUP3 PUSH26 0x1A319B9CDED00102AE8EF7A23EA1B2D4B6BBCFB3A87108FD6473 PUSH16 0x6C634300080A00330000000000000000 ",
"sourceMap": "83:758:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;142:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:126:2:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:96::-;176:7;205:24;223:5;205:24;:::i;:::-;194:35;;139:96;;;:::o;241:118::-;328:24;346:5;328:24;:::i;:::-;323:3;316:37;241:118;;:::o;365:222::-;458:4;496:2;485:9;481:18;473:26;;509:71;577:1;566:9;562:17;553:6;509:71;:::i;:::-;365:222;;;;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "51600",
"executionCost": "infinite",
"totalCost": "infinite"
},
"external": {
"originalAddress()": "2492"
},
"internal": {
"getMsgSender()": "infinite",
"getTxOrigin()": "infinite"
}
},
"methodIdentifiers": {
"originalAddress()": "cab416b4"
}
},
"abi": [
{
"inputs": [],
"stateMutability": "payable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [],
"name": "CallerByConstructorConstructed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "addr",
"type": "address"
}
],
"name": "MsgSenderViaConstructor",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "addr",
"type": "address"
}
],
"name": "TxOriginViaConstructor",
"type": "event"
},
{
"inputs": [],
"name": "originalAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"stateMutability": "payable",
"type": "receive"
}
]
}
{
"compiler": {
"version": "0.8.10+commit.fc410830"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [],
"stateMutability": "payable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [],
"name": "CallerByConstructorConstructed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "addr",
"type": "address"
}
],
"name": "MsgSenderViaConstructor",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "addr",
"type": "address"
}
],
"name": "TxOriginViaConstructor",
"type": "event"
},
{
"inputs": [],
"name": "originalAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"stateMutability": "payable",
"type": "receive"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/CallerByConstructor.sol": "CallerByConstructor"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/CallerByConstructor.sol": {
"keccak256": "0x02b159e86d219ed63ef34f9462a2085e1bcdaf0553a12c5dceac57e5f425dba0",
"license": "MIT",
"urls": [
"bzz-raw://4d396a0214cf15214da3379ddf50e6545ba0c5f3069a632e6ebdc5be1e4b2fbd",
"dweb:/ipfs/Qmd6LoLiLHyKowtFvor8JbWVApzyVszMpCr92iwB6yjGmg"
]
},
"contracts/Original.sol": {
"keccak256": "0xc956011519f40fe172bba8a69a7d126326506bc0a40aae9fff9d642cfcaa551d",
"license": "MIT",
"urls": [
"bzz-raw://cf5ab853da6d63fc6176f287fa750d72e7ace1b15deb1e0639b42e59f1ace261",
"dweb:/ipfs/Qmc816QteWbm4gb8sK1cfrZsWxFHMy3HeKSrxeTXA48HFr"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {
"@_82": {
"entryPoint": null,
"id": 82,
"parameterSlots": 0,
"returnSlots": 0
}
},
"generatedSources": [],
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50610601806100206000396000f3fe6080604052600436106100225760003560e01c8063808eaaac1461002e57610029565b3661002957005b600080fd5b610036610038565b005b34604051610045906100fb565b6040518091039082f0905080158015610062573d6000803e3d6000fd5b506000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fc3e1de6df2bb3e22ff4daa44973957cdea7ec13227048ce0777124e8c13170e560008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516100f19190610149565b60405180910390a1565b6104678061016583390190565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061013382610108565b9050919050565b61014381610128565b82525050565b600060208201905061015e600083018461013a565b9291505056fe608060405273d8b934580fce35a11b58c6d73adee468a2833fa8600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f41d944b296228d0fabc86ab601ffc9ada90dda70d25e88df186e21aba0f77b2f60405160405180910390a16100f561010860201b60201c565b6101036101d260201b60201c565b610356565b7fb8a86b3188aec3bf03af2711b9216159916df43ac825a37e35a25c82638c2b3860008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633d724a3f346040518263ffffffff1660e01b815260040160206040518083038185885af1158015610196573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906101bb91906102ff565b6040516101c8919061033b565b60405180910390a1565b7f3ad2039733666e6297ac623dc033e11631899ed4f5cada24a1cf4805082f143f60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636e843127346040518263ffffffff1660e01b815260040160206040518083038185885af1158015610260573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061028591906102ff565b604051610292919061033b565b60405180910390a1565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006102cc826102a1565b9050919050565b6102dc816102c1565b81146102e757600080fd5b50565b6000815190506102f9816102d3565b92915050565b6000602082840312156103155761031461029c565b5b6000610323848285016102ea565b91505092915050565b610335816102c1565b82525050565b6000602082019050610350600083018461032c565b92915050565b610102806103656000396000f3fe608060405260043610601f5760003560e01c8063cab416b414602a576025565b36602557005b600080fd5b348015603557600080fd5b50603c6050565b6040516047919060b3565b60405180910390f35b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000609f826076565b9050919050565b60ad816096565b82525050565b600060208201905060c6600083018460a6565b9291505056fea26469706673582212202806c3ed995b82791a319b9cded00102ae8ef7a23ea1b2d4b6bbcfb3a87108fd64736f6c634300080a0033a2646970667358221220c54eb03e64249a11e1d787a41856f042f66c0467a1ea1fb737b5f0071e3589c564736f6c634300080a0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x601 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x22 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x808EAAAC EQ PUSH2 0x2E JUMPI PUSH2 0x29 JUMP JUMPDEST CALLDATASIZE PUSH2 0x29 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x36 PUSH2 0x38 JUMP JUMPDEST STOP JUMPDEST CALLVALUE PUSH1 0x40 MLOAD PUSH2 0x45 SWAP1 PUSH2 0xFB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 DUP3 CREATE SWAP1 POP DUP1 ISZERO DUP1 ISZERO PUSH2 0x62 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0xC3E1DE6DF2BB3E22FF4DAA44973957CDEA7EC13227048CE0777124E8C13170E5 PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x40 MLOAD PUSH2 0xF1 SWAP2 SWAP1 PUSH2 0x149 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x467 DUP1 PUSH2 0x165 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x133 DUP3 PUSH2 0x108 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x143 DUP2 PUSH2 0x128 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x15E PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x13A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH20 0xD8B934580FCE35A11B58C6D73ADEE468A2833FA8 PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0x41D944B296228D0FABC86AB601FFC9ADA90DDA70D25E88DF186E21ABA0F77B2F PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH2 0xF5 PUSH2 0x108 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x103 PUSH2 0x1D2 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x356 JUMP JUMPDEST PUSH32 0xB8A86B3188AEC3BF03AF2711B9216159916DF43AC825A37E35A25C82638C2B38 PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x3D724A3F CALLVALUE PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x196 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP 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 0x1BB SWAP2 SWAP1 PUSH2 0x2FF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C8 SWAP2 SWAP1 PUSH2 0x33B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH32 0x3AD2039733666E6297AC623DC033E11631899ED4F5CADA24A1CF4805082F143F PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6E843127 CALLVALUE PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x260 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP 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 0x285 SWAP2 SWAP1 PUSH2 0x2FF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x292 SWAP2 SWAP1 PUSH2 0x33B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CC DUP3 PUSH2 0x2A1 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2DC DUP2 PUSH2 0x2C1 JUMP JUMPDEST DUP2 EQ PUSH2 0x2E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x2F9 DUP2 PUSH2 0x2D3 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x315 JUMPI PUSH2 0x314 PUSH2 0x29C JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x323 DUP5 DUP3 DUP6 ADD PUSH2 0x2EA JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x335 DUP2 PUSH2 0x2C1 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x350 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x32C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x102 DUP1 PUSH2 0x365 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x1F JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xCAB416B4 EQ PUSH1 0x2A JUMPI PUSH1 0x25 JUMP JUMPDEST CALLDATASIZE PUSH1 0x25 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH1 0x35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3C PUSH1 0x50 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x47 SWAP2 SWAP1 PUSH1 0xB3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9F DUP3 PUSH1 0x76 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0xAD DUP2 PUSH1 0x96 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0xC6 PUSH1 0x0 DUP4 ADD DUP5 PUSH1 0xA6 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x28 MOD 0xC3 0xED SWAP10 JUMPDEST DUP3 PUSH26 0x1A319B9CDED00102AE8EF7A23EA1B2D4B6BBCFB3A87108FD6473 PUSH16 0x6C634300080A0033A264697066735822 SLT KECCAK256 0xC5 0x4E 0xB0 RETURNDATACOPY PUSH5 0x249A11E1D7 DUP8 LOG4 XOR JUMP CREATE TIMESTAMP 0xF6 PUSH13 0x467A1EA1FB737B5F0071E3589 0xC5 PUSH5 0x736F6C6343 STOP ADDMOD EXP STOP CALLER ",
"sourceMap": "95:401:1:-:0;;;230:26;;;;;;;;;;95:401;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@_108": {
"entryPoint": null,
"id": 108,
"parameterSlots": 0,
"returnSlots": 0
},
"@deployTheOtherThing_104": {
"entryPoint": 56,
"id": 104,
"parameterSlots": 0,
"returnSlots": 0
},
"abi_encode_t_address_to_t_address_fromStack": {
"entryPoint": 314,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
"entryPoint": 329,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"cleanup_t_address": {
"entryPoint": 296,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint160": {
"entryPoint": 264,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:590:3",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "52:81:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "62:65:3",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "77:5:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "84:42:3",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "73:3:3"
},
"nodeType": "YulFunctionCall",
"src": "73:54:3"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "62:7:3"
}
]
}
]
},
"name": "cleanup_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "34:5:3",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "44:7:3",
"type": ""
}
],
"src": "7:126:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "184:51:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "194:35:3",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "223:5:3"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "205:17:3"
},
"nodeType": "YulFunctionCall",
"src": "205:24:3"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "194:7:3"
}
]
}
]
},
"name": "cleanup_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "166:5:3",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "176:7:3",
"type": ""
}
],
"src": "139:96:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "306:53:3",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "323:3:3"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "346:5:3"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "328:17:3"
},
"nodeType": "YulFunctionCall",
"src": "328:24:3"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "316:6:3"
},
"nodeType": "YulFunctionCall",
"src": "316:37:3"
},
"nodeType": "YulExpressionStatement",
"src": "316:37:3"
}
]
},
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "294:5:3",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "301:3:3",
"type": ""
}
],
"src": "241:118:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "463:124:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "473:26:3",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "485:9:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "496:2:3",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "481:3:3"
},
"nodeType": "YulFunctionCall",
"src": "481:18:3"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "473:4:3"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "553:6:3"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "566:9:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "577:1:3",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "562:3:3"
},
"nodeType": "YulFunctionCall",
"src": "562:17:3"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "509:43:3"
},
"nodeType": "YulFunctionCall",
"src": "509:71:3"
},
"nodeType": "YulExpressionStatement",
"src": "509:71:3"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "435:9:3",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "447:6:3",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "458:4:3",
"type": ""
}
],
"src": "365:222:3"
}
]
},
"contents": "{\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 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__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}\n",
"id": 3,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "6080604052600436106100225760003560e01c8063808eaaac1461002e57610029565b3661002957005b600080fd5b610036610038565b005b34604051610045906100fb565b6040518091039082f0905080158015610062573d6000803e3d6000fd5b506000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fc3e1de6df2bb3e22ff4daa44973957cdea7ec13227048ce0777124e8c13170e560008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516100f19190610149565b60405180910390a1565b6104678061016583390190565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061013382610108565b9050919050565b61014381610128565b82525050565b600060208201905061015e600083018461013a565b9291505056fe608060405273d8b934580fce35a11b58c6d73adee468a2833fa8600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f41d944b296228d0fabc86ab601ffc9ada90dda70d25e88df186e21aba0f77b2f60405160405180910390a16100f561010860201b60201c565b6101036101d260201b60201c565b610356565b7fb8a86b3188aec3bf03af2711b9216159916df43ac825a37e35a25c82638c2b3860008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633d724a3f346040518263ffffffff1660e01b815260040160206040518083038185885af1158015610196573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906101bb91906102ff565b6040516101c8919061033b565b60405180910390a1565b7f3ad2039733666e6297ac623dc033e11631899ed4f5cada24a1cf4805082f143f60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636e843127346040518263ffffffff1660e01b815260040160206040518083038185885af1158015610260573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061028591906102ff565b604051610292919061033b565b60405180910390a1565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006102cc826102a1565b9050919050565b6102dc816102c1565b81146102e757600080fd5b50565b6000815190506102f9816102d3565b92915050565b6000602082840312156103155761031461029c565b5b6000610323848285016102ea565b91505092915050565b610335816102c1565b82525050565b6000602082019050610350600083018461032c565b92915050565b610102806103656000396000f3fe608060405260043610601f5760003560e01c8063cab416b414602a576025565b36602557005b600080fd5b348015603557600080fd5b50603c6050565b6040516047919060b3565b60405180910390f35b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000609f826076565b9050919050565b60ad816096565b82525050565b600060208201905060c6600083018460a6565b9291505056fea26469706673582212202806c3ed995b82791a319b9cded00102ae8ef7a23ea1b2d4b6bbcfb3a87108fd64736f6c634300080a0033a2646970667358221220c54eb03e64249a11e1d787a41856f042f66c0467a1ea1fb737b5f0071e3589c564736f6c634300080a0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x22 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x808EAAAC EQ PUSH2 0x2E JUMPI PUSH2 0x29 JUMP JUMPDEST CALLDATASIZE PUSH2 0x29 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x36 PUSH2 0x38 JUMP JUMPDEST STOP JUMPDEST CALLVALUE PUSH1 0x40 MLOAD PUSH2 0x45 SWAP1 PUSH2 0xFB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 DUP3 CREATE SWAP1 POP DUP1 ISZERO DUP1 ISZERO PUSH2 0x62 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0xC3E1DE6DF2BB3E22FF4DAA44973957CDEA7EC13227048CE0777124E8C13170E5 PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x40 MLOAD PUSH2 0xF1 SWAP2 SWAP1 PUSH2 0x149 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x467 DUP1 PUSH2 0x165 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x133 DUP3 PUSH2 0x108 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x143 DUP2 PUSH2 0x128 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x15E PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x13A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH20 0xD8B934580FCE35A11B58C6D73ADEE468A2833FA8 PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0x41D944B296228D0FABC86AB601FFC9ADA90DDA70D25E88DF186E21ABA0F77B2F PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH2 0xF5 PUSH2 0x108 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x103 PUSH2 0x1D2 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x356 JUMP JUMPDEST PUSH32 0xB8A86B3188AEC3BF03AF2711B9216159916DF43AC825A37E35A25C82638C2B38 PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x3D724A3F CALLVALUE PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x196 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP 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 0x1BB SWAP2 SWAP1 PUSH2 0x2FF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C8 SWAP2 SWAP1 PUSH2 0x33B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH32 0x3AD2039733666E6297AC623DC033E11631899ED4F5CADA24A1CF4805082F143F PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6E843127 CALLVALUE PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x260 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP 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 0x285 SWAP2 SWAP1 PUSH2 0x2FF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x292 SWAP2 SWAP1 PUSH2 0x33B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CC DUP3 PUSH2 0x2A1 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2DC DUP2 PUSH2 0x2C1 JUMP JUMPDEST DUP2 EQ PUSH2 0x2E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x2F9 DUP2 PUSH2 0x2D3 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x315 JUMPI PUSH2 0x314 PUSH2 0x29C JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x323 DUP5 DUP3 DUP6 ADD PUSH2 0x2EA JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x335 DUP2 PUSH2 0x2C1 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x350 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x32C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x102 DUP1 PUSH2 0x365 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x1F JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xCAB416B4 EQ PUSH1 0x2A JUMPI PUSH1 0x25 JUMP JUMPDEST CALLDATASIZE PUSH1 0x25 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH1 0x35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3C PUSH1 0x50 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x47 SWAP2 SWAP1 PUSH1 0xB3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9F DUP3 PUSH1 0x76 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0xAD DUP2 PUSH1 0x96 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0xC6 PUSH1 0x0 DUP4 ADD DUP5 PUSH1 0xA6 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x28 MOD 0xC3 0xED SWAP10 JUMPDEST DUP3 PUSH26 0x1A319B9CDED00102AE8EF7A23EA1B2D4B6BBCFB3A87108FD6473 PUSH16 0x6C634300080A0033A264697066735822 SLT KECCAK256 0xC5 0x4E 0xB0 RETURNDATACOPY PUSH5 0x249A11E1D7 DUP8 LOG4 XOR JUMP CREATE TIMESTAMP 0xF6 PUSH13 0x467A1EA1FB737B5F0071E3589 0xC5 PUSH5 0x736F6C6343 STOP ADDMOD EXP STOP CALLER ",
"sourceMap": "95:401:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;260:201;;;:::i;:::-;;;369:9;336:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;314:19;;:67;;;;;;;;;;;;;;;;;;392:59;430:19;;;;;;;;;;392:59;;;;;;:::i;:::-;;;;;;;;260:201::o;-1:-1:-1:-;;;;;;;;:::o;7:126:3:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:96::-;176:7;205:24;223:5;205:24;:::i;:::-;194:35;;139:96;;;:::o;241:118::-;328:24;346:5;328:24;:::i;:::-;323:3;316:37;241:118;;:::o;365:222::-;458:4;496:2;485:9;481:18;473:26;;509:71;577:1;566:9;562:17;553:6;509:71;:::i;:::-;365:222;;;;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "307400",
"executionCost": "349",
"totalCost": "307749"
},
"external": {
"deployTheOtherThing()": "infinite"
}
},
"methodIdentifiers": {
"deployTheOtherThing()": "808eaaac"
}
},
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "addr",
"type": "address"
}
],
"name": "NewCallerByConstructorAddress",
"type": "event"
},
{
"inputs": [],
"name": "deployTheOtherThing",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"stateMutability": "payable",
"type": "receive"
}
]
}
{
"compiler": {
"version": "0.8.10+commit.fc410830"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "addr",
"type": "address"
}
],
"name": "NewCallerByConstructorAddress",
"type": "event"
},
{
"inputs": [],
"name": "deployTheOtherThing",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"stateMutability": "payable",
"type": "receive"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/DeployCallerByConstructor.sol": "DeployCallerByConstructor"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/CallerByConstructor.sol": {
"keccak256": "0x02b159e86d219ed63ef34f9462a2085e1bcdaf0553a12c5dceac57e5f425dba0",
"license": "MIT",
"urls": [
"bzz-raw://4d396a0214cf15214da3379ddf50e6545ba0c5f3069a632e6ebdc5be1e4b2fbd",
"dweb:/ipfs/Qmd6LoLiLHyKowtFvor8JbWVApzyVszMpCr92iwB6yjGmg"
]
},
"contracts/DeployCallerByConstructor.sol": {
"keccak256": "0x662b5ff19d33122cb3408244508f92db0a86ec21dc8d2e47e34a6b3e304dd3f4",
"license": "MIT",
"urls": [
"bzz-raw://5ebad7fb36c95f10781f43a44cfb0068cbd8bdd9ff9f4cf2b618d016b3285c42",
"dweb:/ipfs/QmduGjnSvUpByCoKAPf4mYQkdw4zYqEjDCUSQ1kVau6t6q"
]
},
"contracts/Original.sol": {
"keccak256": "0xc956011519f40fe172bba8a69a7d126326506bc0a40aae9fff9d642cfcaa551d",
"license": "MIT",
"urls": [
"bzz-raw://cf5ab853da6d63fc6176f287fa750d72e7ace1b15deb1e0639b42e59f1ace261",
"dweb:/ipfs/Qmc816QteWbm4gb8sK1cfrZsWxFHMy3HeKSrxeTXA48HFr"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {
"@_44": {
"entryPoint": null,
"id": 44,
"parameterSlots": 0,
"returnSlots": 0
}
},
"generatedSources": [],
"linkReferences": {},
"object": "6080604052600160005534801561001557600080fd5b5061017a806100256000396000f3fe6080604052600436106100295760003560e01c80633d724a3f1461002e5780636e8431271461004c575b600080fd5b61003661006a565b6040516100439190610129565b60405180910390f35b6100546100a9565b6040516100619190610129565b60405180910390f35b60007fb55c26fa9a48db805fc36601a1e153fb773665db53a62f7540e4f79f54925d843360405161009b9190610129565b60405180910390a133905090565b60007fbf7aaaffdceaa14993c887d6c484b846ce51d8a9798e30e13bf8c4049fbf5e8d326040516100da9190610129565b60405180910390a132905090565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610113826100e8565b9050919050565b61012381610108565b82525050565b600060208201905061013e600083018461011a565b9291505056fea2646970667358221220a8d018f116f13daf2cfc9796de30870872d5a7e91e0781407c8a1d257648adfe64736f6c634300080a0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x0 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17A DUP1 PUSH2 0x25 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x29 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3D724A3F EQ PUSH2 0x2E JUMPI DUP1 PUSH4 0x6E843127 EQ PUSH2 0x4C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x36 PUSH2 0x6A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x43 SWAP2 SWAP1 PUSH2 0x129 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x54 PUSH2 0xA9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x61 SWAP2 SWAP1 PUSH2 0x129 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH32 0xB55C26FA9A48DB805FC36601A1E153FB773665DB53A62F7540E4F79F54925D84 CALLER PUSH1 0x40 MLOAD PUSH2 0x9B SWAP2 SWAP1 PUSH2 0x129 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xBF7AAAFFDCEAA14993C887D6C484B846CE51D8A9798E30E13BF8C4049FBF5E8D ORIGIN PUSH1 0x40 MLOAD PUSH2 0xDA SWAP2 SWAP1 PUSH2 0x129 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 ORIGIN SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x113 DUP3 PUSH2 0xE8 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x123 DUP2 PUSH2 0x108 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x13E PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x11A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA8 0xD0 XOR CALL AND CALL RETURNDATASIZE 0xAF 0x2C 0xFC SWAP8 SWAP7 0xDE ADDRESS DUP8 ADDMOD PUSH19 0xD5A7E91E0781407C8A1D257648ADFE64736F6C PUSH4 0x4300080A STOP CALLER ",
"sourceMap": "107:458:0:-:0;;;158:1;132:27;;533:30;;;;;;;;;;107:458;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@returnMsgSender_26": {
"entryPoint": 106,
"id": 26,
"parameterSlots": 0,
"returnSlots": 1
},
"@returnTxOrigin_40": {
"entryPoint": 169,
"id": 40,
"parameterSlots": 0,
"returnSlots": 1
},
"abi_encode_t_address_to_t_address_fromStack": {
"entryPoint": 282,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
"entryPoint": 297,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"cleanup_t_address": {
"entryPoint": 264,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint160": {
"entryPoint": 232,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:590:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "52:81:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "62:65:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "77:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "84:42:1",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "73:3:1"
},
"nodeType": "YulFunctionCall",
"src": "73:54:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "62:7:1"
}
]
}
]
},
"name": "cleanup_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "34:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "44:7:1",
"type": ""
}
],
"src": "7:126:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "184:51:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "194:35:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "223:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "205:17:1"
},
"nodeType": "YulFunctionCall",
"src": "205:24:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "194:7:1"
}
]
}
]
},
"name": "cleanup_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "166:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "176:7:1",
"type": ""
}
],
"src": "139:96:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "306:53:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "323:3:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "346:5:1"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "328:17:1"
},
"nodeType": "YulFunctionCall",
"src": "328:24:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "316:6:1"
},
"nodeType": "YulFunctionCall",
"src": "316:37:1"
},
"nodeType": "YulExpressionStatement",
"src": "316:37:1"
}
]
},
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "294:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "301:3:1",
"type": ""
}
],
"src": "241:118:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "463:124:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "473:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "485:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "496:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "481:3:1"
},
"nodeType": "YulFunctionCall",
"src": "481:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "473:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "553:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "566:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "577:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "562:3:1"
},
"nodeType": "YulFunctionCall",
"src": "562:17:1"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "509:43:1"
},
"nodeType": "YulFunctionCall",
"src": "509:71:1"
},
"nodeType": "YulExpressionStatement",
"src": "509:71:1"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "435:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "447:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "458:4:1",
"type": ""
}
],
"src": "365:222:1"
}
]
},
"contents": "{\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 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__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}\n",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "6080604052600436106100295760003560e01c80633d724a3f1461002e5780636e8431271461004c575b600080fd5b61003661006a565b6040516100439190610129565b60405180910390f35b6100546100a9565b6040516100619190610129565b60405180910390f35b60007fb55c26fa9a48db805fc36601a1e153fb773665db53a62f7540e4f79f54925d843360405161009b9190610129565b60405180910390a133905090565b60007fbf7aaaffdceaa14993c887d6c484b846ce51d8a9798e30e13bf8c4049fbf5e8d326040516100da9190610129565b60405180910390a132905090565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610113826100e8565b9050919050565b61012381610108565b82525050565b600060208201905061013e600083018461011a565b9291505056fea2646970667358221220a8d018f116f13daf2cfc9796de30870872d5a7e91e0781407c8a1d257648adfe64736f6c634300080a0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x29 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3D724A3F EQ PUSH2 0x2E JUMPI DUP1 PUSH4 0x6E843127 EQ PUSH2 0x4C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x36 PUSH2 0x6A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x43 SWAP2 SWAP1 PUSH2 0x129 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x54 PUSH2 0xA9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x61 SWAP2 SWAP1 PUSH2 0x129 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH32 0xB55C26FA9A48DB805FC36601A1E153FB773665DB53A62F7540E4F79F54925D84 CALLER PUSH1 0x40 MLOAD PUSH2 0x9B SWAP2 SWAP1 PUSH2 0x129 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xBF7AAAFFDCEAA14993C887D6C484B846CE51D8A9798E30E13BF8C4049FBF5E8D ORIGIN PUSH1 0x40 MLOAD PUSH2 0xDA SWAP2 SWAP1 PUSH2 0x129 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 ORIGIN SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x113 DUP3 PUSH2 0xE8 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x123 DUP2 PUSH2 0x108 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x13E PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x11A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA8 0xD0 XOR CALL AND CALL RETURNDATASIZE 0xAF 0x2C 0xFC SWAP8 SWAP7 0xDE ADDRESS DUP8 ADDMOD PUSH19 0xD5A7E91E0781407C8A1D257648ADFE64736F6C PUSH4 0x4300080A STOP CALLER ",
"sourceMap": "107:458:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;251:133;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;394:129;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;251:133;301:7;323:29;341:10;323:29;;;;;;:::i;:::-;;;;;;;;367:10;360:17;;251:133;:::o;394:129::-;443:7;465:27;482:9;465:27;;;;;;:::i;:::-;;;;;;;;507:9;500:16;;394:129;:::o;7:126:1:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:96::-;176:7;205:24;223:5;205:24;:::i;:::-;194:35;;139:96;;;:::o;241:118::-;328:24;346:5;328:24;:::i;:::-;323:3;316:37;241:118;;:::o;365:222::-;458:4;496:2;485:9;481:18;473:26;;509:71;577:1;566:9;562:17;553:6;509:71;:::i;:::-;365:222;;;;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "75600",
"executionCost": "22229",
"totalCost": "97829"
},
"external": {
"returnMsgSender()": "infinite",
"returnTxOrigin()": "infinite"
}
},
"methodIdentifiers": {
"returnMsgSender()": "3d724a3f",
"returnTxOrigin()": "6e843127"
}
},
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "addr",
"type": "address"
}
],
"name": "OriginalMsgSender",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "addr",
"type": "address"
}
],
"name": "OriginalTxOrigin",
"type": "event"
},
{
"inputs": [],
"name": "returnMsgSender",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [],
"name": "returnTxOrigin",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "payable",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.10+commit.fc410830"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "addr",
"type": "address"
}
],
"name": "OriginalMsgSender",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "addr",
"type": "address"
}
],
"name": "OriginalTxOrigin",
"type": "event"
},
{
"inputs": [],
"name": "returnMsgSender",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [],
"name": "returnTxOrigin",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "payable",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/Original.sol": "Original"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/Original.sol": {
"keccak256": "0xc956011519f40fe172bba8a69a7d126326506bc0a40aae9fff9d642cfcaa551d",
"license": "MIT",
"urls": [
"bzz-raw://cf5ab853da6d63fc6176f287fa750d72e7ace1b15deb1e0639b42e59f1ace261",
"dweb:/ipfs/Qmc816QteWbm4gb8sK1cfrZsWxFHMy3HeKSrxeTXA48HFr"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {
"@_43": {
"entryPoint": null,
"id": 43,
"parameterSlots": 0,
"returnSlots": 0
}
},
"generatedSources": [],
"linkReferences": {},
"object": "608060405234801561001057600080fd5b5061020e806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632e64cec1146100515780634903b0441461006f5780636057361d1461008d578063acc7ecb1146100a9575b600080fd5b6100596100c7565b6040516100669190610165565b60405180910390f35b6100776100d0565b604051610084919061014a565b60405180910390f35b6100a760048036038101906100a291906100ff565b6100d8565b005b6100b16100e2565b6040516100be919061014a565b60405180910390f35b60008054905090565b600033905090565b8060008190555050565b600032905090565b6000813590506100f9816101c1565b92915050565b600060208284031215610115576101146101bc565b5b6000610123848285016100ea565b91505092915050565b61013581610180565b82525050565b610144816101b2565b82525050565b600060208201905061015f600083018461012c565b92915050565b600060208201905061017a600083018461013b565b92915050565b600061018b82610192565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600080fd5b6101ca816101b2565b81146101d557600080fd5b5056fea26469706673582212203be865162dd229bc51b807ce4c7fdfb2a7cd88b91909a75823a6483422ba21e564736f6c63430008070033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20E DUP1 PUSH2 0x20 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 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2E64CEC1 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x4903B044 EQ PUSH2 0x6F JUMPI DUP1 PUSH4 0x6057361D EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0xACC7ECB1 EQ PUSH2 0xA9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0xC7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x165 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x77 PUSH2 0xD0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x84 SWAP2 SWAP1 PUSH2 0x14A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xA2 SWAP2 SWAP1 PUSH2 0xFF JUMP JUMPDEST PUSH2 0xD8 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB1 PUSH2 0xE2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xBE SWAP2 SWAP1 PUSH2 0x14A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST DUP1 PUSH1 0x0 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 ORIGIN SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xF9 DUP2 PUSH2 0x1C1 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x115 JUMPI PUSH2 0x114 PUSH2 0x1BC JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x123 DUP5 DUP3 DUP6 ADD PUSH2 0xEA JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x135 DUP2 PUSH2 0x180 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x144 DUP2 PUSH2 0x1B2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x15F PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x12C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x17A PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x13B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x18B DUP3 PUSH2 0x192 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1CA DUP2 PUSH2 0x1B2 JUMP JUMPDEST DUP2 EQ PUSH2 0x1D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXTCODESIZE 0xE8 PUSH6 0x162DD229BC51 0xB8 SMOD 0xCE 0x4C PUSH32 0xDFB2A7CD88B91909A75823A6483422BA21E564736F6C63430008070033000000 ",
"sourceMap": "33:437:0:-:0;;;431:37;;;;;;;;;;33:437;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@inspectOrigin_39": {
"entryPoint": 226,
"id": 39,
"parameterSlots": 0,
"returnSlots": 1
},
"@inspectSender_30": {
"entryPoint": 208,
"id": 30,
"parameterSlots": 0,
"returnSlots": 1
},
"@retrieve_21": {
"entryPoint": 199,
"id": 21,
"parameterSlots": 0,
"returnSlots": 1
},
"@store_13": {
"entryPoint": 216,
"id": 13,
"parameterSlots": 1,
"returnSlots": 0
},
"abi_decode_t_uint256": {
"entryPoint": 234,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_uint256": {
"entryPoint": 255,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_address_to_t_address_fromStack": {
"entryPoint": 300,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_uint256_to_t_uint256_fromStack": {
"entryPoint": 315,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
"entryPoint": 330,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
"entryPoint": 357,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"allocate_unbounded": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
},
"cleanup_t_address": {
"entryPoint": 384,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint160": {
"entryPoint": 402,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint256": {
"entryPoint": 434,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": {
"entryPoint": 444,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"validator_revert_t_uint256": {
"entryPoint": 449,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:1960:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "59:87:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "69:29:1",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "91:6:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "78:12:1"
},
"nodeType": "YulFunctionCall",
"src": "78:20:1"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "69:5:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "134:5:1"
}
],
"functionName": {
"name": "validator_revert_t_uint256",
"nodeType": "YulIdentifier",
"src": "107:26:1"
},
"nodeType": "YulFunctionCall",
"src": "107:33:1"
},
"nodeType": "YulExpressionStatement",
"src": "107:33:1"
}
]
},
"name": "abi_decode_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "37:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "45:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "53:5:1",
"type": ""
}
],
"src": "7:139:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "218:263:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "264:83:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "266:77:1"
},
"nodeType": "YulFunctionCall",
"src": "266:79:1"
},
"nodeType": "YulExpressionStatement",
"src": "266:79:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "239:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "248:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "235:3:1"
},
"nodeType": "YulFunctionCall",
"src": "235:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "260:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "231:3:1"
},
"nodeType": "YulFunctionCall",
"src": "231:32:1"
},
"nodeType": "YulIf",
"src": "228:119:1"
},
{
"nodeType": "YulBlock",
"src": "357:117:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "372:15:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "386:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "376:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "401:63:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "436:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "447:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "432:3:1"
},
"nodeType": "YulFunctionCall",
"src": "432:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "456:7:1"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "411:20:1"
},
"nodeType": "YulFunctionCall",
"src": "411:53:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "401:6:1"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "188:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "199:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "211:6:1",
"type": ""
}
],
"src": "152:329:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "552:53:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "569:3:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "592:5:1"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "574:17:1"
},
"nodeType": "YulFunctionCall",
"src": "574:24:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "562:6:1"
},
"nodeType": "YulFunctionCall",
"src": "562:37:1"
},
"nodeType": "YulExpressionStatement",
"src": "562:37:1"
}
]
},
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "540:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "547:3:1",
"type": ""
}
],
"src": "487:118:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "676:53:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "693:3:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "716:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "698:17:1"
},
"nodeType": "YulFunctionCall",
"src": "698:24:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "686:6:1"
},
"nodeType": "YulFunctionCall",
"src": "686:37:1"
},
"nodeType": "YulExpressionStatement",
"src": "686:37:1"
}
]
},
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "664:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "671:3:1",
"type": ""
}
],
"src": "611:118:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "833:124:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "843:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "855:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "866:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "851:3:1"
},
"nodeType": "YulFunctionCall",
"src": "851:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "843:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "923:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "936:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "947:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "932:3:1"
},
"nodeType": "YulFunctionCall",
"src": "932:17:1"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "879:43:1"
},
"nodeType": "YulFunctionCall",
"src": "879:71:1"
},
"nodeType": "YulExpressionStatement",
"src": "879:71:1"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "805:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "817:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "828:4:1",
"type": ""
}
],
"src": "735:222:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1061:124:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1071:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1083:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1094:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1079:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1079:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1071:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1151:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1164:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1175:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1160:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1160:17:1"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "1107:43:1"
},
"nodeType": "YulFunctionCall",
"src": "1107:71:1"
},
"nodeType": "YulExpressionStatement",
"src": "1107:71:1"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1033:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1045:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1056:4:1",
"type": ""
}
],
"src": "963:222:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1231:35:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1241:19:1",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1257:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1251:5:1"
},
"nodeType": "YulFunctionCall",
"src": "1251:9:1"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "1241:6:1"
}
]
}
]
},
"name": "allocate_unbounded",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "1224:6:1",
"type": ""
}
],
"src": "1191:75:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1317:51:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1327:35:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1356:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "1338:17:1"
},
"nodeType": "YulFunctionCall",
"src": "1338:24:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "1327:7:1"
}
]
}
]
},
"name": "cleanup_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1299:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "1309:7:1",
"type": ""
}
],
"src": "1272:96:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1419:81:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1429:65:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1444:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1451:42:1",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "1440:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1440:54:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "1429:7:1"
}
]
}
]
},
"name": "cleanup_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1401:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "1411:7:1",
"type": ""
}
],
"src": "1374:126:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1551:32:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1561:16:1",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "1572:5:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "1561:7:1"
}
]
}
]
},
"name": "cleanup_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1533:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "1543:7:1",
"type": ""
}
],
"src": "1506:77:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1678:28:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1695:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1698:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1688:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1688:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "1688:12:1"
}
]
},
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulFunctionDefinition",
"src": "1589:117:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1801:28:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1818:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1821:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1811:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1811:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "1811:12:1"
}
]
},
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulFunctionDefinition",
"src": "1712:117:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1878:79:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1935:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1944:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1947:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1937:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1937:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "1937:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1901:5:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1926:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "1908:17:1"
},
"nodeType": "YulFunctionCall",
"src": "1908:24:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "1898:2:1"
},
"nodeType": "YulFunctionCall",
"src": "1898:35:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "1891:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1891:43:1"
},
"nodeType": "YulIf",
"src": "1888:63:1"
}
]
},
"name": "validator_revert_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1871:5:1",
"type": ""
}
],
"src": "1835:122:1"
}
]
},
"contents": "{\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_uint256(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(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_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\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_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 allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n}\n",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "608060405234801561001057600080fd5b506004361061004c5760003560e01c80632e64cec1146100515780634903b0441461006f5780636057361d1461008d578063acc7ecb1146100a9575b600080fd5b6100596100c7565b6040516100669190610165565b60405180910390f35b6100776100d0565b604051610084919061014a565b60405180910390f35b6100a760048036038101906100a291906100ff565b6100d8565b005b6100b16100e2565b6040516100be919061014a565b60405180910390f35b60008054905090565b600033905090565b8060008190555050565b600032905090565b6000813590506100f9816101c1565b92915050565b600060208284031215610115576101146101bc565b5b6000610123848285016100ea565b91505092915050565b61013581610180565b82525050565b610144816101b2565b82525050565b600060208201905061015f600083018461012c565b92915050565b600060208201905061017a600083018461013b565b92915050565b600061018b82610192565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600080fd5b6101ca816101b2565b81146101d557600080fd5b5056fea26469706673582212203be865162dd229bc51b807ce4c7fdfb2a7cd88b91909a75823a6483422ba21e564736f6c63430008070033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2E64CEC1 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x4903B044 EQ PUSH2 0x6F JUMPI DUP1 PUSH4 0x6057361D EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0xACC7ECB1 EQ PUSH2 0xA9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0xC7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x165 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x77 PUSH2 0xD0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x84 SWAP2 SWAP1 PUSH2 0x14A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xA2 SWAP2 SWAP1 PUSH2 0xFF JUMP JUMPDEST PUSH2 0xD8 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB1 PUSH2 0xE2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xBE SWAP2 SWAP1 PUSH2 0x14A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST DUP1 PUSH1 0x0 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 ORIGIN SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xF9 DUP2 PUSH2 0x1C1 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x115 JUMPI PUSH2 0x114 PUSH2 0x1BC JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x123 DUP5 DUP3 DUP6 ADD PUSH2 0xEA JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x135 DUP2 PUSH2 0x180 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x144 DUP2 PUSH2 0x1B2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x15F PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x12C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x17A PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x13B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x18B DUP3 PUSH2 0x192 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1CA DUP2 PUSH2 0x1B2 JUMP JUMPDEST DUP2 EQ PUSH2 0x1D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXTCODESIZE 0xE8 PUSH6 0x162DD229BC51 0xB8 SMOD 0xCE 0x4C PUSH32 0xDFB2A7CD88B91909A75823A6483422BA21E564736F6C63430008070033000000 ",
"sourceMap": "33:437:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;147:79;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;236:88;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;77:64;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;334:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;147:79;188:7;213:6;;206:13;;147:79;:::o;236:88::-;281:7;307:10;300:17;;236:88;:::o;77:64::-;131:3;122:6;:12;;;;77:64;:::o;334:87::-;379:7;405:9;398:16;;334:87;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:329::-;211:6;260:2;248:9;239:7;235:23;231:32;228:119;;;266:79;;:::i;:::-;228:119;386:1;411:53;456:7;447:6;436:9;432:22;411:53;:::i;:::-;401:63;;357:117;152:329;;;;:::o;487:118::-;574:24;592:5;574:24;:::i;:::-;569:3;562:37;487:118;;:::o;611:::-;698:24;716:5;698:24;:::i;:::-;693:3;686:37;611:118;;:::o;735:222::-;828:4;866:2;855:9;851:18;843:26;;879:71;947:1;936:9;932:17;923:6;879:71;:::i;:::-;735:222;;;;:::o;963:::-;1056:4;1094:2;1083:9;1079:18;1071:26;;1107:71;1175:1;1164:9;1160:17;1151:6;1107:71;:::i;:::-;963:222;;;;:::o;1272:96::-;1309:7;1338:24;1356:5;1338:24;:::i;:::-;1327:35;;1272:96;;;:::o;1374:126::-;1411:7;1451:42;1444:5;1440:54;1429:65;;1374:126;;;:::o;1506:77::-;1543:7;1572:5;1561:16;;1506:77;;;:::o;1712:117::-;1821:1;1818;1811:12;1835:122;1908:24;1926:5;1908:24;:::i;:::-;1901:5;1898:35;1888:63;;1947:1;1944;1937:12;1888:63;1835:122;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "105200",
"executionCost": "153",
"totalCost": "105353"
},
"external": {
"inspectOrigin()": "429",
"inspectSender()": "385",
"retrieve()": "2415",
"store(uint256)": "22542"
}
},
"methodIdentifiers": {
"inspectOrigin()": "acc7ecb1",
"inspectSender()": "4903b044",
"retrieve()": "2e64cec1",
"store(uint256)": "6057361d"
}
},
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "inspectOrigin",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "inspectSender",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "retrieve",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "num",
"type": "uint256"
}
],
"name": "store",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.7+commit.e28d00a7"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "inspectOrigin",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "inspectSender",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "retrieve",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "num",
"type": "uint256"
}
],
"name": "store",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/1_Storage.sol": "Storage"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/1_Storage.sol": {
"keccak256": "0x03c54380eeb509ba62cb0ff0c04d831fdcff9da8a5cf70ae3efa4e9d7954eedf",
"urls": [
"bzz-raw://c6c0913934db5048b5fdd6df987ddf1c12a8b044fcbadec7efc7293c86248562",
"dweb:/ipfs/QmUPmAbsXFA45YWUh9MqKqLGTFU4nutBD3KYtVdRQVDsbn"
]
}
},
"version": 1
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.10;
import "./Original.sol";
contract CallerByConstructor {
Original original;
address public originalAddress = 0xd8b934580fcE35a11B58C6D73aDeE468a2833fa8;
event MsgSenderViaConstructor(address addr);
event TxOriginViaConstructor(address addr);
event CallerByConstructorConstructed();
constructor() payable {
original = Original(originalAddress);
emit CallerByConstructorConstructed();
getMsgSender();
getTxOrigin();
}
function getMsgSender() internal {
emit MsgSenderViaConstructor(original.returnMsgSender{value:msg.value}());
}
function getTxOrigin() internal {
emit TxOriginViaConstructor(original.returnTxOrigin{value:msg.value}());
}
receive() external payable {}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.10;
import "./CallerByConstructor.sol";
contract DeployCallerByConstructor {
CallerByConstructor callerByConstructor;
event NewCallerByConstructorAddress(address addr);
constructor() {
}
function deployTheOtherThing() external payable {
callerByConstructor = (new CallerByConstructor){value: msg.value}();
emit NewCallerByConstructorAddress(address(callerByConstructor));
}
receive() external payable {}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.10;
// This is the stand-in for the `mint` contract.
contract Original {
uint256 someOtherNumber = 1;
event OriginalMsgSender(address addr);
event OriginalTxOrigin(address addr);
function returnMsgSender() public payable returns(address) {
emit OriginalMsgSender(msg.sender);
return msg.sender;
}
function returnTxOrigin() public payable returns(address) {
emit OriginalTxOrigin(tx.origin);
return tx.origin;
}
constructor() {
}
}
// Right click on the script name and hit "Run" to execute
(async () => {
try {
console.log('Running deployWithEthers script...')
const contractName = 'Original' // Change this for other contract
const constructorArgs = [] // Put constructor args (if any) here for your contract
// Note that the script needs the ABI which is generated from the compilation artifact.
// Make sure contract is compiled and artifacts are generated
const artifactsPath = `browser/contracts/artifacts/${contractName}.json` // Change this for different path
const metadata = JSON.parse(await remix.call('fileManager', 'getFile', artifactsPath))
// 'web3Provider' is a remix global variable object
const signer = (new ethers.providers.Web3Provider(web3Provider)).getSigner()
let factory = new ethers.ContractFactory(metadata.abi, metadata.data.bytecode.object, signer);
let contract = await factory.deploy(...constructorArgs);
console.log('Contract Address: ', contract.address);
// The contract is NOT deployed yet; we must wait until it is mined
await contract.deployed()
console.log('Deployment successful.')
} catch (e) {
console.log(e.message)
}
})()
// Right click on the script name and hit "Run" to execute
(async () => {
try {
console.log('Running deployWithEthers script...')
const contractName = 'CallerByConstructor' // Change this for other contract
const constructorArgs = ['0x7EF2e0048f5bAeDe046f6BF797943daF4ED8CB47'] // Put constructor args (if any) here for your contract
// Note that the script needs the ABI which is generated from the compilation artifact.
// Make sure contract is compiled and artifacts are generated
const artifactsPath = `browser/contracts/artifacts/${contractName}.json` // Change this for different path
const metadata = JSON.parse(await remix.call('fileManager', 'getFile', artifactsPath))
// 'web3Provider' is a remix global variable object
const signer = (new ethers.providers.Web3Provider(web3Provider)).getSigner()
let factory = new ethers.ContractFactory(metadata.abi, metadata.data.bytecode.object, signer);
let contract = await factory.deploy(...constructorArgs);
console.log('Contract Address: ', contract.address);
// The contract is NOT deployed yet; we must wait until it is mined
await contract.deployed()
console.log('Deployment successful.')
} catch (e) {
console.log(e.message)
}
})()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment