{"contracts":{"./contracts/ERC1820Client.sol:ERC1820Client":{"abi":"[]","asm":{".code":[{"begin":461,"end":1285,"name":"PUSH","value":"80"},{"begin":461,"end":1285,"name":"PUSH","value":"40"},{"begin":461,"end":1285,"name":"MSTORE"},{"begin":461,"end":1285,"name":"CALLVALUE"},{"begin":8,"end":17,"name":"DUP1"},{"begin":5,"end":7,"name":"ISZERO"},{"begin":5,"end":7,"name":"PUSH [tag]","value":"1"},{"begin":5,"end":7,"name":"JUMPI"},{"begin":30,"end":31,"name":"PUSH","value":"0"},{"begin":27,"end":28,"name":"DUP1"},{"begin":20,"end":32,"name":"REVERT"},{"begin":5,"end":7,"name":"tag","value":"1"},{"begin":5,"end":7,"name":"JUMPDEST"},{"begin":461,"end":1285,"name":"POP"},{"begin":461,"end":1285,"name":"PUSH #[$]","value":"0000000000000000000000000000000000000000000000000000000000000000"},{"begin":461,"end":1285,"name":"DUP1"},{"begin":461,"end":1285,"name":"PUSH [$]","value":"0000000000000000000000000000000000000000000000000000000000000000"},{"begin":461,"end":1285,"name":"PUSH","value":"0"},{"begin":461,"end":1285,"name":"CODECOPY"},{"begin":461,"end":1285,"name":"PUSH","value":"0"},{"begin":461,"end":1285,"name":"RETURN"}],".data":{"0":{".auxdata":"a165627a7a72305820077a13845ac2d62e9cbb978d0fddb4fd711b39afbdab63d852c782f3f104c0250029",".code":[{"begin":461,"end":1285,"name":"PUSH","value":"80"},{"begin":461,"end":1285,"name":"PUSH","value":"40"},{"begin":461,"end":1285,"name":"MSTORE"},{"begin":461,"end":1285,"name":"PUSH","value":"0"},{"begin":461,"end":1285,"name":"DUP1"},{"begin":461,"end":1285,"name":"REVERT"}]}}},"bin":"6080604052348015600f57600080fd5b50603580601d6000396000f3fe6080604052600080fdfea165627a7a72305820077a13845ac2d62e9cbb978d0fddb4fd711b39afbdab63d852c782f3f104c0250029","devdoc":"{\"methods\":{}}","hashes":{},"metadata":"{\"compiler\":{\"version\":\"0.5.3+commit.10d17f24\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{},\"notice\":\"Base client to interact with the registry.\"}},\"settings\":{\"compilationTarget\":{\"./contracts/ERC1820Client.sol\":\"ERC1820Client\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"./contracts/ERC1820Client.sol\":{\"content\":\"pragma solidity ^0.5.3;\\n\\n\\ncontract ERC1820Registry {\\n    function setInterfaceImplementer(address _addr, bytes32 _interfaceHash, address _implementer) external;\\n    function getInterfaceImplementer(address _addr, bytes32 _interfaceHash) external view returns (address);\\n    function setManager(address _addr, address _newManager) external;\\n    function getManager(address _addr) public view returns (address);\\n}\\n\\n\\n/// Base client to interact with the registry.\\ncontract ERC1820Client {\\n    ERC1820Registry constant ERC1820REGISTRY = ERC1820Registry(0x1820a4B7618BdE71Dce8cdc73aAB6C95905faD24);\\n\\n    function setInterfaceImplementation(string memory _interfaceLabel, address _implementation) internal {\\n        bytes32 interfaceHash = keccak256(abi.encodePacked(_interfaceLabel));\\n        ERC1820REGISTRY.setInterfaceImplementer(address(this), interfaceHash, _implementation);\\n    }\\n\\n    function interfaceAddr(address addr, string memory _interfaceLabel) internal view returns(address) {\\n        bytes32 interfaceHash = keccak256(abi.encodePacked(_interfaceLabel));\\n        return ERC1820REGISTRY.getInterfaceImplementer(addr, interfaceHash);\\n    }\\n\\n    function delegateManagement(address _newManager) internal {\\n        ERC1820REGISTRY.setManager(address(this), _newManager);\\n    }\\n}\\n\",\"keccak256\":\"0x69850e8790fc3db1f19370ce50f7fdbabadc41567c1a62361de42640de0612ec\"}},\"version\":1}","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x35 DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH6 0x627A7A723058 KECCAK256 SMOD PUSH27 0x13845AC2D62E9CBB978D0FDDB4FD711B39AFBDAB63D852C782F3F1 DIV 0xc0 0x25 STOP 0x29 ","srcmap":"461:824:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;461:824:0;;;;;;;","userdoc":"{\"methods\":{},\"notice\":\"Base client to interact with the registry.\"}"},"./contracts/ERC1820Client.sol:ERC1820Registry":{"abi":"[{\"constant\":false,\"inputs\":[{\"name\":\"_addr\",\"type\":\"address\"},{\"name\":\"_interfaceHash\",\"type\":\"bytes32\"},{\"name\":\"_implementer\",\"type\":\"address\"}],\"name\":\"setInterfaceImplementer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_addr\",\"type\":\"address\"}],\"name\":\"getManager\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_addr\",\"type\":\"address\"},{\"name\":\"_newManager\",\"type\":\"address\"}],\"name\":\"setManager\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_addr\",\"type\":\"address\"},{\"name\":\"_interfaceHash\",\"type\":\"bytes32\"}],\"name\":\"getInterfaceImplementer\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]","asm":null,"bin":"","devdoc":"{\"methods\":{}}","hashes":{"getInterfaceImplementer(address,bytes32)":"aabbb8ca","getManager(address)":"3d584063","setInterfaceImplementer(address,bytes32,address)":"29965a1d","setManager(address,address)":"5df8122f"},"metadata":"","opcodes":"","srcmap":"","userdoc":"{\"methods\":{}}"},"./contracts/ERC1820ImplementerInterface.sol:ERC1820ImplementerInterface":{"abi":"[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceHash\",\"type\":\"bytes32\"},{\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"canImplementInterfaceForAddress\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]","asm":null,"bin":"","devdoc":"{\"methods\":{\"canImplementInterfaceForAddress(bytes32,address)\":{\"params\":{\"addr\":\"Address for which the contract will implement the interface\",\"interfaceHash\":\"keccak256 hash of the name of the interface\"},\"return\":\"ERC1820_ACCEPT_MAGIC only if the contract implements `\\u00ecnterfaceHash` for the address `addr`.\"}}}","hashes":{"canImplementInterfaceForAddress(bytes32,address)":"249cb3fa"},"metadata":"","opcodes":"","srcmap":"","userdoc":"{\"methods\":{\"canImplementInterfaceForAddress(bytes32,address)\":{\"notice\":\"Indicates whether the contract implements the interface `interfaceHash` for the address `addr`.\"}}}"},"./contracts/ERC1820Registry.sol:ERC1820ImplementerInterface":{"abi":"[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceHash\",\"type\":\"bytes32\"},{\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"canImplementInterfaceForAddress\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]","asm":null,"bin":"","devdoc":"{\"details\":\"The interface a contract MUST implement if it is the implementer of some (other) interface for any address other than itself.\",\"methods\":{\"canImplementInterfaceForAddress(bytes32,address)\":{\"params\":{\"addr\":\"Address for which the contract will implement the interface\",\"interfaceHash\":\"keccak256 hash of the name of the interface\"},\"return\":\"ERC1820_ACCEPT_MAGIC only if the contract implements 'interfaceHash' for the address 'addr'.\"}}}","hashes":{"canImplementInterfaceForAddress(bytes32,address)":"249cb3fa"},"metadata":"","opcodes":"","srcmap":"","userdoc":"{\"methods\":{\"canImplementInterfaceForAddress(bytes32,address)\":{\"notice\":\"Indicates whether the contract implements the interface 'interfaceHash' for the address 'addr' or not.\"}}}"},"./contracts/ERC1820Registry.sol:ERC1820Registry":{"abi":"[{\"constant\":false,\"inputs\":[{\"name\":\"_addr\",\"type\":\"address\"},{\"name\":\"_interfaceHash\",\"type\":\"bytes32\"},{\"name\":\"_implementer\",\"type\":\"address\"}],\"name\":\"setInterfaceImplementer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_addr\",\"type\":\"address\"}],\"name\":\"getManager\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_addr\",\"type\":\"address\"},{\"name\":\"_newManager\",\"type\":\"address\"}],\"name\":\"setManager\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_interfaceName\",\"type\":\"string\"}],\"name\":\"interfaceHash\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_contract\",\"type\":\"address\"},{\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"updateERC165Cache\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_addr\",\"type\":\"address\"},{\"name\":\"_interfaceHash\",\"type\":\"bytes32\"}],\"name\":\"getInterfaceImplementer\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_contract\",\"type\":\"address\"},{\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"implementsERC165InterfaceNoCache\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_contract\",\"type\":\"address\"},{\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"implementsERC165Interface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"addr\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"interfaceHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"name\":\"implementer\",\"type\":\"address\"}],\"name\":\"InterfaceImplementerSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"addr\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newManager\",\"type\":\"address\"}],\"name\":\"ManagerChanged\",\"type\":\"event\"}]","asm":{".code":[{"begin":3705,"end":12937,"name":"PUSH","value":"80"},{"begin":3705,"end":12937,"name":"PUSH","value":"40"},{"begin":3705,"end":12937,"name":"MSTORE"},{"begin":3705,"end":12937,"name":"CALLVALUE"},{"begin":8,"end":17,"name":"DUP1"},{"begin":5,"end":7,"name":"ISZERO"},{"begin":5,"end":7,"name":"PUSH [tag]","value":"1"},{"begin":5,"end":7,"name":"JUMPI"},{"begin":30,"end":31,"name":"PUSH","value":"0"},{"begin":27,"end":28,"name":"DUP1"},{"begin":20,"end":32,"name":"REVERT"},{"begin":5,"end":7,"name":"tag","value":"1"},{"begin":5,"end":7,"name":"JUMPDEST"},{"begin":3705,"end":12937,"name":"POP"},{"begin":3705,"end":12937,"name":"PUSH #[$]","value":"0000000000000000000000000000000000000000000000000000000000000000"},{"begin":3705,"end":12937,"name":"DUP1"},{"begin":3705,"end":12937,"name":"PUSH [$]","value":"0000000000000000000000000000000000000000000000000000000000000000"},{"begin":3705,"end":12937,"name":"PUSH","value":"0"},{"begin":3705,"end":12937,"name":"CODECOPY"},{"begin":3705,"end":12937,"name":"PUSH","value":"0"},{"begin":3705,"end":12937,"name":"RETURN"}],".data":{"0":{".auxdata":"a165627a7a72305820377f4a2d4301ede9949f163f319021a6e9c687c292a5e2b2c4734c126b524e6c0029",".code":[{"begin":3705,"end":12937,"name":"PUSH","value":"80"},{"begin":3705,"end":12937,"name":"PUSH","value":"40"},{"begin":3705,"end":12937,"name":"MSTORE"},{"begin":3705,"end":12937,"name":"CALLVALUE"},{"begin":8,"end":17,"name":"DUP1"},{"begin":5,"end":7,"name":"ISZERO"},{"begin":5,"end":7,"name":"PUSH [tag]","value":"1"},{"begin":5,"end":7,"name":"JUMPI"},{"begin":30,"end":31,"name":"PUSH","value":"0"},{"begin":27,"end":28,"name":"DUP1"},{"begin":20,"end":32,"name":"REVERT"},{"begin":5,"end":7,"name":"tag","value":"1"},{"begin":5,"end":7,"name":"JUMPDEST"},{"begin":3705,"end":12937,"name":"POP"},{"begin":3705,"end":12937,"name":"PUSH","value":"4"},{"begin":3705,"end":12937,"name":"CALLDATASIZE"},{"begin":3705,"end":12937,"name":"LT"},{"begin":3705,"end":12937,"name":"PUSH [tag]","value":"2"},{"begin":3705,"end":12937,"name":"JUMPI"},{"begin":3705,"end":12937,"name":"PUSH","value":"0"},{"begin":3705,"end":12937,"name":"CALLDATALOAD"},{"begin":3705,"end":12937,"name":"PUSH","value":"100000000000000000000000000000000000000000000000000000000"},{"begin":3705,"end":12937,"name":"SWAP1"},{"begin":3705,"end":12937,"name":"DIV"},{"begin":3705,"end":12937,"name":"DUP1"},{"begin":3705,"end":12937,"name":"PUSH","value":"A41E7D51"},{"begin":3705,"end":12937,"name":"GT"},{"begin":3705,"end":12937,"name":"PUSH [tag]","value":"11"},{"begin":3705,"end":12937,"name":"JUMPI"},{"begin":3705,"end":12937,"name":"DUP1"},{"begin":3705,"end":12937,"name":"PUSH","value":"A41E7D51"},{"begin":3705,"end":12937,"name":"EQ"},{"begin":3705,"end":12937,"name":"PUSH [tag]","value":"7"},{"begin":3705,"end":12937,"name":"JUMPI"},{"begin":3705,"end":12937,"name":"DUP1"},{"begin":3705,"end":12937,"name":"PUSH","value":"AABBB8CA"},{"begin":3705,"end":12937,"name":"EQ"},{"begin":3705,"end":12937,"name":"PUSH [tag]","value":"8"},{"begin":3705,"end":12937,"name":"JUMPI"},{"begin":3705,"end":12937,"name":"DUP1"},{"begin":3705,"end":12937,"name":"PUSH","value":"B7056765"},{"begin":3705,"end":12937,"name":"EQ"},{"begin":3705,"end":12937,"name":"PUSH [tag]","value":"9"},{"begin":3705,"end":12937,"name":"JUMPI"},{"begin":3705,"end":12937,"name":"DUP1"},{"begin":3705,"end":12937,"name":"PUSH","value":"F712F3E8"},{"begin":3705,"end":12937,"name":"EQ"},{"begin":3705,"end":12937,"name":"PUSH [tag]","value":"10"},{"begin":3705,"end":12937,"name":"JUMPI"},{"begin":3705,"end":12937,"name":"PUSH [tag]","value":"2"},{"begin":3705,"end":12937,"name":"JUMP"},{"begin":3705,"end":12937,"name":"tag","value":"11"},{"begin":3705,"end":12937,"name":"JUMPDEST"},{"begin":3705,"end":12937,"name":"DUP1"},{"begin":3705,"end":12937,"name":"PUSH","value":"29965A1D"},{"begin":3705,"end":12937,"name":"EQ"},{"begin":3705,"end":12937,"name":"PUSH [tag]","value":"3"},{"begin":3705,"end":12937,"name":"JUMPI"},{"begin":3705,"end":12937,"name":"DUP1"},{"begin":3705,"end":12937,"name":"PUSH","value":"3D584063"},{"begin":3705,"end":12937,"name":"EQ"},{"begin":3705,"end":12937,"name":"PUSH [tag]","value":"4"},{"begin":3705,"end":12937,"name":"JUMPI"},{"begin":3705,"end":12937,"name":"DUP1"},{"begin":3705,"end":12937,"name":"PUSH","value":"5DF8122F"},{"begin":3705,"end":12937,"name":"EQ"},{"begin":3705,"end":12937,"name":"PUSH [tag]","value":"5"},{"begin":3705,"end":12937,"name":"JUMPI"},{"begin":3705,"end":12937,"name":"DUP1"},{"begin":3705,"end":12937,"name":"PUSH","value":"65BA36C1"},{"begin":3705,"end":12937,"name":"EQ"},{"begin":3705,"end":12937,"name":"PUSH [tag]","value":"6"},{"begin":3705,"end":12937,"name":"JUMPI"},{"begin":3705,"end":12937,"name":"tag","value":"2"},{"begin":3705,"end":12937,"name":"JUMPDEST"},{"begin":3705,"end":12937,"name":"PUSH","value":"0"},{"begin":3705,"end":12937,"name":"DUP1"},{"begin":3705,"end":12937,"name":"REVERT"},{"begin":6714,"end":7499,"name":"tag","value":"3"},{"begin":6714,"end":7499,"name":"JUMPDEST"},{"begin":6714,"end":7499,"name":"PUSH [tag]","value":"12"},{"begin":6714,"end":7499,"name":"PUSH","value":"4"},{"begin":6714,"end":7499,"name":"DUP1"},{"begin":6714,"end":7499,"name":"CALLDATASIZE"},{"begin":6714,"end":7499,"name":"SUB"},{"begin":13,"end":15,"name":"PUSH","value":"60"},{"begin":8,"end":11,"name":"DUP2"},{"begin":5,"end":16,"name":"LT"},{"begin":2,"end":4,"name":"ISZERO"},{"begin":2,"end":4,"name":"PUSH [tag]","value":"13"},{"begin":2,"end":4,"name":"JUMPI"},{"begin":29,"end":30,"name":"PUSH","value":"0"},{"begin":26,"end":27,"name":"DUP1"},{"begin":19,"end":31,"name":"REVERT"},{"begin":2,"end":4,"name":"tag","value":"13"},{"begin":2,"end":4,"name":"JUMPDEST"},{"begin":-1,"end":-1,"name":"POP"},{"begin":-1,"end":-1,"name":"PUSH","value":"1"},{"begin":-1,"end":-1,"name":"PUSH","value":"A0"},{"begin":-1,"end":-1,"name":"PUSH","value":"2"},{"begin":-1,"end":-1,"name":"EXP"},{"begin":-1,"end":-1,"name":"SUB"},{"begin":6714,"end":7499,"name":"DUP2"},{"begin":6714,"end":7499,"name":"CALLDATALOAD"},{"begin":6714,"end":7499,"name":"DUP2"},{"begin":6714,"end":7499,"name":"AND"},{"begin":6714,"end":7499,"name":"SWAP2"},{"begin":6714,"end":7499,"name":"PUSH","value":"20"},{"begin":6714,"end":7499,"name":"DUP2"},{"begin":6714,"end":7499,"name":"ADD"},{"begin":6714,"end":7499,"name":"CALLDATALOAD"},{"begin":6714,"end":7499,"name":"SWAP2"},{"begin":6714,"end":7499,"name":"PUSH","value":"40"},{"begin":6714,"end":7499,"name":"SWAP1"},{"begin":6714,"end":7499,"name":"SWAP2"},{"begin":6714,"end":7499,"name":"ADD"},{"begin":6714,"end":7499,"name":"CALLDATALOAD"},{"begin":6714,"end":7499,"name":"AND"},{"begin":6714,"end":7499,"name":"PUSH [tag]","value":"14"},{"begin":6714,"end":7499,"name":"JUMP","value":"[in]"},{"begin":6714,"end":7499,"name":"tag","value":"12"},{"begin":6714,"end":7499,"name":"JUMPDEST"},{"begin":6714,"end":7499,"name":"STOP"},{"begin":8263,"end":8536,"name":"tag","value":"4"},{"begin":8263,"end":8536,"name":"JUMPDEST"},{"begin":8263,"end":8536,"name":"PUSH [tag]","value":"15"},{"begin":8263,"end":8536,"name":"PUSH","value":"4"},{"begin":8263,"end":8536,"name":"DUP1"},{"begin":8263,"end":8536,"name":"CALLDATASIZE"},{"begin":8263,"end":8536,"name":"SUB"},{"begin":13,"end":15,"name":"PUSH","value":"20"},{"begin":8,"end":11,"name":"DUP2"},{"begin":5,"end":16,"name":"LT"},{"begin":2,"end":4,"name":"ISZERO"},{"begin":2,"end":4,"name":"PUSH [tag]","value":"16"},{"begin":2,"end":4,"name":"JUMPI"},{"begin":29,"end":30,"name":"PUSH","value":"0"},{"begin":26,"end":27,"name":"DUP1"},{"begin":19,"end":31,"name":"REVERT"},{"begin":2,"end":4,"name":"tag","value":"16"},{"begin":2,"end":4,"name":"JUMPDEST"},{"begin":-1,"end":-1,"name":"POP"},{"begin":8263,"end":8536,"name":"CALLDATALOAD"},{"begin":-1,"end":-1,"name":"PUSH","value":"1"},{"begin":-1,"end":-1,"name":"PUSH","value":"A0"},{"begin":-1,"end":-1,"name":"PUSH","value":"2"},{"begin":-1,"end":-1,"name":"EXP"},{"begin":-1,"end":-1,"name":"SUB"},{"begin":8263,"end":8536,"name":"AND"},{"begin":8263,"end":8536,"name":"PUSH [tag]","value":"17"},{"begin":8263,"end":8536,"name":"JUMP","value":"[in]"},{"begin":8263,"end":8536,"name":"tag","value":"15"},{"begin":8263,"end":8536,"name":"JUMPDEST"},{"begin":8263,"end":8536,"name":"PUSH","value":"40"},{"begin":8263,"end":8536,"name":"DUP1"},{"begin":8263,"end":8536,"name":"MLOAD"},{"begin":-1,"end":-1,"name":"PUSH","value":"1"},{"begin":-1,"end":-1,"name":"PUSH","value":"A0"},{"begin":-1,"end":-1,"name":"PUSH","value":"2"},{"begin":-1,"end":-1,"name":"EXP"},{"begin":-1,"end":-1,"name":"SUB"},{"begin":8263,"end":8536,"name":"SWAP1"},{"begin":8263,"end":8536,"name":"SWAP3"},{"begin":8263,"end":8536,"name":"AND"},{"begin":8263,"end":8536,"name":"DUP3"},{"begin":8263,"end":8536,"name":"MSTORE"},{"begin":8263,"end":8536,"name":"MLOAD"},{"begin":8263,"end":8536,"name":"SWAP1"},{"begin":8263,"end":8536,"name":"DUP2"},{"begin":8263,"end":8536,"name":"SWAP1"},{"begin":8263,"end":8536,"name":"SUB"},{"begin":8263,"end":8536,"name":"PUSH","value":"20"},{"begin":8263,"end":8536,"name":"ADD"},{"begin":8263,"end":8536,"name":"SWAP1"},{"begin":8263,"end":8536,"name":"RETURN"},{"begin":7823,"end":8088,"name":"tag","value":"5"},{"begin":7823,"end":8088,"name":"JUMPDEST"},{"begin":7823,"end":8088,"name":"PUSH [tag]","value":"12"},{"begin":7823,"end":8088,"name":"PUSH","value":"4"},{"begin":7823,"end":8088,"name":"DUP1"},{"begin":7823,"end":8088,"name":"CALLDATASIZE"},{"begin":7823,"end":8088,"name":"SUB"},{"begin":13,"end":15,"name":"PUSH","value":"40"},{"begin":8,"end":11,"name":"DUP2"},{"begin":5,"end":16,"name":"LT"},{"begin":2,"end":4,"name":"ISZERO"},{"begin":2,"end":4,"name":"PUSH [tag]","value":"19"},{"begin":2,"end":4,"name":"JUMPI"},{"begin":29,"end":30,"name":"PUSH","value":"0"},{"begin":26,"end":27,"name":"DUP1"},{"begin":19,"end":31,"name":"REVERT"},{"begin":2,"end":4,"name":"tag","value":"19"},{"begin":2,"end":4,"name":"JUMPDEST"},{"begin":-1,"end":-1,"name":"POP"},{"begin":-1,"end":-1,"name":"PUSH","value":"1"},{"begin":-1,"end":-1,"name":"PUSH","value":"A0"},{"begin":-1,"end":-1,"name":"PUSH","value":"2"},{"begin":-1,"end":-1,"name":"EXP"},{"begin":-1,"end":-1,"name":"SUB"},{"begin":7823,"end":8088,"name":"DUP2"},{"begin":7823,"end":8088,"name":"CALLDATALOAD"},{"begin":7823,"end":8088,"name":"DUP2"},{"begin":7823,"end":8088,"name":"AND"},{"begin":7823,"end":8088,"name":"SWAP2"},{"begin":7823,"end":8088,"name":"PUSH","value":"20"},{"begin":7823,"end":8088,"name":"ADD"},{"begin":7823,"end":8088,"name":"CALLDATALOAD"},{"begin":7823,"end":8088,"name":"AND"},{"begin":7823,"end":8088,"name":"PUSH [tag]","value":"20"},{"begin":7823,"end":8088,"name":"JUMP","value":"[in]"},{"begin":8727,"end":8880,"name":"tag","value":"6"},{"begin":8727,"end":8880,"name":"JUMPDEST"},{"begin":8727,"end":8880,"name":"PUSH [tag]","value":"21"},{"begin":8727,"end":8880,"name":"PUSH","value":"4"},{"begin":8727,"end":8880,"name":"DUP1"},{"begin":8727,"end":8880,"name":"CALLDATASIZE"},{"begin":8727,"end":8880,"name":"SUB"},{"begin":13,"end":15,"name":"PUSH","value":"20"},{"begin":8,"end":11,"name":"DUP2"},{"begin":5,"end":16,"name":"LT"},{"begin":2,"end":4,"name":"ISZERO"},{"begin":2,"end":4,"name":"PUSH [tag]","value":"22"},{"begin":2,"end":4,"name":"JUMPI"},{"begin":29,"end":30,"name":"PUSH","value":"0"},{"begin":26,"end":27,"name":"DUP1"},{"begin":19,"end":31,"name":"REVERT"},{"begin":2,"end":4,"name":"tag","value":"22"},{"begin":2,"end":4,"name":"JUMPDEST"},{"begin":8727,"end":8880,"name":"DUP2"},{"begin":8727,"end":8880,"name":"ADD"},{"begin":8727,"end":8880,"name":"SWAP1"},{"begin":8727,"end":8880,"name":"PUSH","value":"20"},{"begin":8727,"end":8880,"name":"DUP2"},{"begin":8727,"end":8880,"name":"ADD"},{"begin":8727,"end":8880,"name":"DUP2"},{"begin":8727,"end":8880,"name":"CALLDATALOAD"},{"begin":21,"end":32,"name":"PUSH","value":"100000000"},{"begin":5,"end":33,"name":"DUP2"},{"begin":5,"end":33,"name":"GT"},{"begin":2,"end":4,"name":"ISZERO"},{"begin":2,"end":4,"name":"PUSH [tag]","value":"23"},{"begin":2,"end":4,"name":"JUMPI"},{"begin":46,"end":47,"name":"PUSH","value":"0"},{"begin":43,"end":44,"name":"DUP1"},{"begin":36,"end":48,"name":"REVERT"},{"begin":2,"end":4,"name":"tag","value":"23"},{"begin":2,"end":4,"name":"JUMPDEST"},{"begin":8727,"end":8880,"name":"DUP3"},{"begin":8727,"end":8880,"name":"ADD"},{"begin":35,"end":44,"name":"DUP4"},{"begin":28,"end":32,"name":"PUSH","value":"20"},{"begin":12,"end":26,"name":"DUP3"},{"begin":8,"end":33,"name":"ADD"},{"begin":5,"end":45,"name":"GT"},{"begin":2,"end":4,"name":"ISZERO"},{"begin":2,"end":4,"name":"PUSH [tag]","value":"24"},{"begin":2,"end":4,"name":"JUMPI"},{"begin":58,"end":59,"name":"PUSH","value":"0"},{"begin":55,"end":56,"name":"DUP1"},{"begin":48,"end":60,"name":"REVERT"},{"begin":2,"end":4,"name":"tag","value":"24"},{"begin":2,"end":4,"name":"JUMPDEST"},{"begin":8727,"end":8880,"name":"DUP1"},{"begin":8727,"end":8880,"name":"CALLDATALOAD"},{"begin":8727,"end":8880,"name":"SWAP1"},{"begin":8727,"end":8880,"name":"PUSH","value":"20"},{"begin":8727,"end":8880,"name":"ADD"},{"begin":8727,"end":8880,"name":"SWAP2"},{"begin":100,"end":109,"name":"DUP5"},{"begin":95,"end":96,"name":"PUSH","value":"1"},{"begin":81,"end":93,"name":"DUP4"},{"begin":77,"end":97,"name":"MUL"},{"begin":67,"end":75,"name":"DUP5"},{"begin":63,"end":98,"name":"ADD"},{"begin":60,"end":110,"name":"GT"},{"begin":39,"end":50,"name":"PUSH","value":"100000000"},{"begin":25,"end":37,"name":"DUP4"},{"begin":22,"end":51,"name":"GT"},{"begin":11,"end":118,"name":"OR"},{"begin":8,"end":10,"name":"ISZERO"},{"begin":8,"end":10,"name":"PUSH [tag]","value":"25"},{"begin":8,"end":10,"name":"JUMPI"},{"begin":131,"end":132,"name":"PUSH","value":"0"},{"begin":128,"end":129,"name":"DUP1"},{"begin":121,"end":133,"name":"REVERT"},{"begin":8,"end":10,"name":"tag","value":"25"},{"begin":8,"end":10,"name":"JUMPDEST"},{"begin":-1,"end":-1,"name":"POP"},{"begin":8727,"end":8880,"name":"SWAP1"},{"begin":8727,"end":8880,"name":"SWAP3"},{"begin":-1,"end":-1,"name":"POP"},{"begin":8727,"end":8880,"name":"SWAP1"},{"begin":-1,"end":-1,"name":"POP"},{"begin":8727,"end":8880,"name":"PUSH [tag]","value":"26"},{"begin":8727,"end":8880,"name":"JUMP","value":"[in]"},{"begin":8727,"end":8880,"name":"tag","value":"21"},{"begin":8727,"end":8880,"name":"JUMPDEST"},{"begin":8727,"end":8880,"name":"PUSH","value":"40"},{"begin":8727,"end":8880,"name":"DUP1"},{"begin":8727,"end":8880,"name":"MLOAD"},{"begin":8727,"end":8880,"name":"SWAP2"},{"begin":8727,"end":8880,"name":"DUP3"},{"begin":8727,"end":8880,"name":"MSTORE"},{"begin":8727,"end":8880,"name":"MLOAD"},{"begin":8727,"end":8880,"name":"SWAP1"},{"begin":8727,"end":8880,"name":"DUP2"},{"begin":8727,"end":8880,"name":"SWAP1"},{"begin":8727,"end":8880,"name":"SUB"},{"begin":8727,"end":8880,"name":"PUSH","value":"20"},{"begin":8727,"end":8880,"name":"ADD"},{"begin":8727,"end":8880,"name":"SWAP1"},{"begin":8727,"end":8880,"name":"RETURN"},{"begin":9253,"end":9533,"name":"tag","value":"7"},{"begin":9253,"end":9533,"name":"JUMPDEST"},{"begin":9253,"end":9533,"name":"PUSH [tag]","value":"12"},{"begin":9253,"end":9533,"name":"PUSH","value":"4"},{"begin":9253,"end":9533,"name":"DUP1"},{"begin":9253,"end":9533,"name":"CALLDATASIZE"},{"begin":9253,"end":9533,"name":"SUB"},{"begin":13,"end":15,"name":"PUSH","value":"40"},{"begin":8,"end":11,"name":"DUP2"},{"begin":5,"end":16,"name":"LT"},{"begin":2,"end":4,"name":"ISZERO"},{"begin":2,"end":4,"name":"PUSH [tag]","value":"28"},{"begin":2,"end":4,"name":"JUMPI"},{"begin":29,"end":30,"name":"PUSH","value":"0"},{"begin":26,"end":27,"name":"DUP1"},{"begin":19,"end":31,"name":"REVERT"},{"begin":2,"end":4,"name":"tag","value":"28"},{"begin":2,"end":4,"name":"JUMPDEST"},{"begin":-1,"end":-1,"name":"POP"},{"begin":9253,"end":9533,"name":"DUP1"},{"begin":9253,"end":9533,"name":"CALLDATALOAD"},{"begin":-1,"end":-1,"name":"PUSH","value":"1"},{"begin":-1,"end":-1,"name":"PUSH","value":"A0"},{"begin":-1,"end":-1,"name":"PUSH","value":"2"},{"begin":-1,"end":-1,"name":"EXP"},{"begin":-1,"end":-1,"name":"SUB"},{"begin":9253,"end":9533,"name":"AND"},{"begin":9253,"end":9533,"name":"SWAP1"},{"begin":9253,"end":9533,"name":"PUSH","value":"20"},{"begin":9253,"end":9533,"name":"ADD"},{"begin":9253,"end":9533,"name":"CALLDATALOAD"},{"begin":-1,"end":-1,"name":"PUSH","value":"1"},{"begin":-1,"end":-1,"name":"PUSH","value":"E0"},{"begin":-1,"end":-1,"name":"PUSH","value":"2"},{"begin":-1,"end":-1,"name":"EXP"},{"begin":-1,"end":-1,"name":"SUB"},{"begin":-1,"end":-1,"name":"NOT"},{"begin":9253,"end":9533,"name":"AND"},{"begin":9253,"end":9533,"name":"PUSH [tag]","value":"29"},{"begin":9253,"end":9533,"name":"JUMP","value":"[in]"},{"begin":5626,"end":6068,"name":"tag","value":"8"},{"begin":5626,"end":6068,"name":"JUMPDEST"},{"begin":5626,"end":6068,"name":"PUSH [tag]","value":"15"},{"begin":5626,"end":6068,"name":"PUSH","value":"4"},{"begin":5626,"end":6068,"name":"DUP1"},{"begin":5626,"end":6068,"name":"CALLDATASIZE"},{"begin":5626,"end":6068,"name":"SUB"},{"begin":13,"end":15,"name":"PUSH","value":"40"},{"begin":8,"end":11,"name":"DUP2"},{"begin":5,"end":16,"name":"LT"},{"begin":2,"end":4,"name":"ISZERO"},{"begin":2,"end":4,"name":"PUSH [tag]","value":"31"},{"begin":2,"end":4,"name":"JUMPI"},{"begin":29,"end":30,"name":"PUSH","value":"0"},{"begin":26,"end":27,"name":"DUP1"},{"begin":19,"end":31,"name":"REVERT"},{"begin":2,"end":4,"name":"tag","value":"31"},{"begin":2,"end":4,"name":"JUMPDEST"},{"begin":-1,"end":-1,"name":"POP"},{"begin":-1,"end":-1,"name":"PUSH","value":"1"},{"begin":-1,"end":-1,"name":"PUSH","value":"A0"},{"begin":-1,"end":-1,"name":"PUSH","value":"2"},{"begin":-1,"end":-1,"name":"EXP"},{"begin":-1,"end":-1,"name":"SUB"},{"begin":5626,"end":6068,"name":"DUP2"},{"begin":5626,"end":6068,"name":"CALLDATALOAD"},{"begin":5626,"end":6068,"name":"AND"},{"begin":5626,"end":6068,"name":"SWAP1"},{"begin":5626,"end":6068,"name":"PUSH","value":"20"},{"begin":5626,"end":6068,"name":"ADD"},{"begin":5626,"end":6068,"name":"CALLDATALOAD"},{"begin":5626,"end":6068,"name":"PUSH [tag]","value":"32"},{"begin":5626,"end":6068,"name":"JUMP","value":"[in]"},{"begin":10711,"end":11329,"name":"tag","value":"9"},{"begin":10711,"end":11329,"name":"JUMPDEST"},{"begin":10711,"end":11329,"name":"PUSH [tag]","value":"33"},{"begin":10711,"end":11329,"name":"PUSH","value":"4"},{"begin":10711,"end":11329,"name":"DUP1"},{"begin":10711,"end":11329,"name":"CALLDATASIZE"},{"begin":10711,"end":11329,"name":"SUB"},{"begin":13,"end":15,"name":"PUSH","value":"40"},{"begin":8,"end":11,"name":"DUP2"},{"begin":5,"end":16,"name":"LT"},{"begin":2,"end":4,"name":"ISZERO"},{"begin":2,"end":4,"name":"PUSH [tag]","value":"34"},{"begin":2,"end":4,"name":"JUMPI"},{"begin":29,"end":30,"name":"PUSH","value":"0"},{"begin":26,"end":27,"name":"DUP1"},{"begin":19,"end":31,"name":"REVERT"},{"begin":2,"end":4,"name":"tag","value":"34"},{"begin":2,"end":4,"name":"JUMPDEST"},{"begin":-1,"end":-1,"name":"POP"},{"begin":10711,"end":11329,"name":"DUP1"},{"begin":10711,"end":11329,"name":"CALLDATALOAD"},{"begin":-1,"end":-1,"name":"PUSH","value":"1"},{"begin":-1,"end":-1,"name":"PUSH","value":"A0"},{"begin":-1,"end":-1,"name":"PUSH","value":"2"},{"begin":-1,"end":-1,"name":"EXP"},{"begin":-1,"end":-1,"name":"SUB"},{"begin":10711,"end":11329,"name":"AND"},{"begin":10711,"end":11329,"name":"SWAP1"},{"begin":10711,"end":11329,"name":"PUSH","value":"20"},{"begin":10711,"end":11329,"name":"ADD"},{"begin":10711,"end":11329,"name":"CALLDATALOAD"},{"begin":-1,"end":-1,"name":"PUSH","value":"1"},{"begin":-1,"end":-1,"name":"PUSH","value":"E0"},{"begin":-1,"end":-1,"name":"PUSH","value":"2"},{"begin":-1,"end":-1,"name":"EXP"},{"begin":-1,"end":-1,"name":"SUB"},{"begin":-1,"end":-1,"name":"NOT"},{"begin":10711,"end":11329,"name":"AND"},{"begin":10711,"end":11329,"name":"PUSH [tag]","value":"35"},{"begin":10711,"end":11329,"name":"JUMP","value":"[in]"},{"begin":10711,"end":11329,"name":"tag","value":"33"},{"begin":10711,"end":11329,"name":"JUMPDEST"},{"begin":10711,"end":11329,"name":"PUSH","value":"40"},{"begin":10711,"end":11329,"name":"DUP1"},{"begin":10711,"end":11329,"name":"MLOAD"},{"begin":10711,"end":11329,"name":"SWAP2"},{"begin":10711,"end":11329,"name":"ISZERO"},{"begin":10711,"end":11329,"name":"ISZERO"},{"begin":10711,"end":11329,"name":"DUP3"},{"begin":10711,"end":11329,"name":"MSTORE"},{"begin":10711,"end":11329,"name":"MLOAD"},{"begin":10711,"end":11329,"name":"SWAP1"},{"begin":10711,"end":11329,"name":"DUP2"},{"begin":10711,"end":11329,"name":"SWAP1"},{"begin":10711,"end":11329,"name":"SUB"},{"begin":10711,"end":11329,"name":"PUSH","value":"20"},{"begin":10711,"end":11329,"name":"ADD"},{"begin":10711,"end":11329,"name":"SWAP1"},{"begin":10711,"end":11329,"name":"RETURN"},{"begin":10077,"end":10393,"name":"tag","value":"10"},{"begin":10077,"end":10393,"name":"JUMPDEST"},{"begin":10077,"end":10393,"name":"PUSH [tag]","value":"33"},{"begin":10077,"end":10393,"name":"PUSH","value":"4"},{"begin":10077,"end":10393,"name":"DUP1"},{"begin":10077,"end":10393,"name":"CALLDATASIZE"},{"begin":10077,"end":10393,"name":"SUB"},{"begin":13,"end":15,"name":"PUSH","value":"40"},{"begin":8,"end":11,"name":"DUP2"},{"begin":5,"end":16,"name":"LT"},{"begin":2,"end":4,"name":"ISZERO"},{"begin":2,"end":4,"name":"PUSH [tag]","value":"37"},{"begin":2,"end":4,"name":"JUMPI"},{"begin":29,"end":30,"name":"PUSH","value":"0"},{"begin":26,"end":27,"name":"DUP1"},{"begin":19,"end":31,"name":"REVERT"},{"begin":2,"end":4,"name":"tag","value":"37"},{"begin":2,"end":4,"name":"JUMPDEST"},{"begin":-1,"end":-1,"name":"POP"},{"begin":10077,"end":10393,"name":"DUP1"},{"begin":10077,"end":10393,"name":"CALLDATALOAD"},{"begin":-1,"end":-1,"name":"PUSH","value":"1"},{"begin":-1,"end":-1,"name":"PUSH","value":"A0"},{"begin":-1,"end":-1,"name":"PUSH","value":"2"},{"begin":-1,"end":-1,"name":"EXP"},{"begin":-1,"end":-1,"name":"SUB"},{"begin":10077,"end":10393,"name":"AND"},{"begin":10077,"end":10393,"name":"SWAP1"},{"begin":10077,"end":10393,"name":"PUSH","value":"20"},{"begin":10077,"end":10393,"name":"ADD"},{"begin":10077,"end":10393,"name":"CALLDATALOAD"},{"begin":-1,"end":-1,"name":"PUSH","value":"1"},{"begin":-1,"end":-1,"name":"PUSH","value":"E0"},{"begin":-1,"end":-1,"name":"PUSH","value":"2"},{"begin":-1,"end":-1,"name":"EXP"},{"begin":-1,"end":-1,"name":"SUB"},{"begin":-1,"end":-1,"name":"NOT"},{"begin":10077,"end":10393,"name":"AND"},{"begin":10077,"end":10393,"name":"PUSH [tag]","value":"38"},{"begin":10077,"end":10393,"name":"JUMP","value":"[in]"},{"begin":6714,"end":7499,"name":"tag","value":"14"},{"begin":6714,"end":7499,"name":"JUMPDEST"},{"begin":6827,"end":6839,"name":"PUSH","value":"0"},{"begin":-1,"end":-1,"name":"PUSH","value":"1"},{"begin":-1,"end":-1,"name":"PUSH","value":"A0"},{"begin":-1,"end":-1,"name":"PUSH","value":"2"},{"begin":-1,"end":-1,"name":"EXP"},{"begin":-1,"end":-1,"name":"SUB"},{"begin":6842,"end":6861,"name":"DUP5"},{"begin":6842,"end":6861,"name":"AND"},{"begin":6842,"end":6861,"name":"ISZERO"},{"begin":6842,"end":6882,"name":"PUSH [tag]","value":"40"},{"begin":6842,"end":6882,"name":"JUMPI"},{"begin":6877,"end":6882,"name":"DUP4"},{"begin":6842,"end":6882,"name":"PUSH [tag]","value":"41"},{"begin":6842,"end":6882,"name":"JUMP"},{"begin":6842,"end":6882,"name":"tag","value":"40"},{"begin":6842,"end":6882,"name":"JUMPDEST"},{"begin":6864,"end":6874,"name":"CALLER"},{"begin":6842,"end":6882,"name":"tag","value":"41"},{"begin":6842,"end":6882,"name":"JUMPDEST"},{"begin":6827,"end":6882,"name":"SWAP1"},{"begin":-1,"end":-1,"name":"POP"},{"begin":6920,"end":6930,"name":"CALLER"},{"begin":6900,"end":6916,"name":"PUSH [tag]","value":"42"},{"begin":6827,"end":6882,"name":"DUP3"},{"begin":6900,"end":6910,"name":"PUSH [tag]","value":"17"},{"begin":6900,"end":6916,"name":"JUMP","value":"[in]"},{"begin":6900,"end":6916,"name":"tag","value":"42"},{"begin":6900,"end":6916,"name":"JUMPDEST"},{"begin":-1,"end":-1,"name":"PUSH","value":"1"},{"begin":-1,"end":-1,"name":"PUSH","value":"A0"},{"begin":-1,"end":-1,"name":"PUSH","value":"2"},{"begin":-1,"end":-1,"name":"EXP"},{"begin":-1,"end":-1,"name":"SUB"},{"begin":6900,"end":6930,"name":"AND"},{"begin":6900,"end":6930,"name":"EQ"},{"begin":6892,"end":6950,"name":"PUSH [tag]","value":"43"},{"begin":6892,"end":6950,"name":"JUMPI"},{"begin":6892,"end":6950,"name":"PUSH","value":"40"},{"begin":6892,"end":6950,"name":"DUP1"},{"begin":6892,"end":6950,"name":"MLOAD"},{"begin":-1,"end":-1,"name":"PUSH","value":"E5"},{"begin":-1,"end":-1,"name":"PUSH","value":"2"},{"begin":-1,"end":-1,"name":"EXP"},{"begin":-1,"end":-1,"name":"PUSH","value":"461BCD"},{"begin":-1,"end":-1,"name":"MUL"},{"begin":6892,"end":6950,"name":"DUP2"},{"begin":6892,"end":6950,"name":"MSTORE"},{"begin":6892,"end":6950,"name":"PUSH","value":"20"},{"begin":6892,"end":6950,"name":"PUSH","value":"4"},{"begin":6892,"end":6950,"name":"DUP3"},{"begin":6892,"end":6950,"name":"ADD"},{"begin":6892,"end":6950,"name":"MSTORE"},{"begin":6892,"end":6950,"name":"PUSH","value":"F"},{"begin":6892,"end":6950,"name":"PUSH","value":"24"},{"begin":6892,"end":6950,"name":"DUP3"},{"begin":6892,"end":6950,"name":"ADD"},{"begin":6892,"end":6950,"name":"MSTORE"},{"begin":6892,"end":6950,"name":"PUSH","value":"4E6F7420746865206D616E616765720000000000000000000000000000000000"},{"begin":6892,"end":6950,"name":"PUSH","value":"44"},{"begin":6892,"end":6950,"name":"DUP3"},{"begin":6892,"end":6950,"name":"ADD"},{"begin":6892,"end":6950,"name":"MSTORE"},{"begin":6892,"end":6950,"name":"SWAP1"},{"begin":6892,"end":6950,"name":"MLOAD"},{"begin":6892,"end":6950,"name":"SWAP1"},{"begin":6892,"end":6950,"name":"DUP2"},{"begin":6892,"end":6950,"name":"SWAP1"},{"begin":6892,"end":6950,"name":"SUB"},{"begin":6892,"end":6950,"name":"PUSH","value":"64"},{"begin":6892,"end":6950,"name":"ADD"},{"begin":6892,"end":6950,"name":"SWAP1"},{"begin":6892,"end":6950,"name":"REVERT"},{"begin":6892,"end":6950,"name":"tag","value":"43"},{"begin":6892,"end":6950,"name":"JUMPDEST"},{"begin":6970,"end":7003,"name":"PUSH [tag]","value":"44"},{"begin":6988,"end":7002,"name":"DUP4"},{"begin":6970,"end":6987,"name":"PUSH [tag]","value":"45"},{"begin":6970,"end":7003,"name":"JUMP","value":"[in]"},{"begin":6970,"end":7003,"name":"tag","value":"44"},{"begin":6970,"end":7003,"name":"JUMPDEST"},{"begin":6969,"end":7003,"name":"ISZERO"},{"begin":6961,"end":7034,"name":"PUSH [tag]","value":"46"},{"begin":6961,"end":7034,"name":"JUMPI"},{"begin":6961,"end":7034,"name":"PUSH","value":"40"},{"begin":6961,"end":7034,"name":"DUP1"},{"begin":6961,"end":7034,"name":"MLOAD"},{"begin":-1,"end":-1,"name":"PUSH","value":"E5"},{"begin":-1,"end":-1,"name":"PUSH","value":"2"},{"begin":-1,"end":-1,"name":"EXP"},{"begin":-1,"end":-1,"name":"PUSH","value":"461BCD"},{"begin":-1,"end":-1,"name":"MUL"},{"begin":6961,"end":7034,"name":"DUP2"},{"begin":6961,"end":7034,"name":"MSTORE"},{"begin":6961,"end":7034,"name":"PUSH","value":"20"},{"begin":6961,"end":7034,"name":"PUSH","value":"4"},{"begin":6961,"end":7034,"name":"DUP3"},{"begin":6961,"end":7034,"name":"ADD"},{"begin":6961,"end":7034,"name":"MSTORE"},{"begin":6961,"end":7034,"name":"PUSH","value":"1A"},{"begin":6961,"end":7034,"name":"PUSH","value":"24"},{"begin":6961,"end":7034,"name":"DUP3"},{"begin":6961,"end":7034,"name":"ADD"},{"begin":6961,"end":7034,"name":"MSTORE"},{"begin":6961,"end":7034,"name":"PUSH","value":"4D757374206E6F7420626520616E204552433136352068617368000000000000"},{"begin":6961,"end":7034,"name":"PUSH","value":"44"},{"begin":6961,"end":7034,"name":"DUP3"},{"begin":6961,"end":7034,"name":"ADD"},{"begin":6961,"end":7034,"name":"MSTORE"},{"begin":6961,"end":7034,"name":"SWAP1"},{"begin":6961,"end":7034,"name":"MLOAD"},{"begin":6961,"end":7034,"name":"SWAP1"},{"begin":6961,"end":7034,"name":"DUP2"},{"begin":6961,"end":7034,"name":"SWAP1"},{"begin":6961,"end":7034,"name":"SUB"},{"begin":6961,"end":7034,"name":"PUSH","value":"64"},{"begin":6961,"end":7034,"name":"ADD"},{"begin":6961,"end":7034,"name":"SWAP1"},{"begin":6961,"end":7034,"name":"REVERT"},{"begin":6961,"end":7034,"name":"tag","value":"46"},{"begin":6961,"end":7034,"name":"JUMPDEST"},{"begin":-1,"end":-1,"name":"PUSH","value":"1"},{"begin":-1,"end":-1,"name":"PUSH","value":"A0"},{"begin":-1,"end":-1,"name":"PUSH","value":"2"},{"begin":-1,"end":-1,"name":"EXP"},{"begin":-1,"end":-1,"name":"SUB"},{"begin":7048,"end":7074,"name":"DUP3"},{"begin":7048,"end":7074,"name":"AND"},{"begin":7048,"end":7074,"name":"ISZERO"},{"begin":7048,"end":7074,"name":"DUP1"},{"begin":7048,"end":7074,"name":"ISZERO"},{"begin":7048,"end":7074,"name":"SWAP1"},{"begin":7048,"end":7104,"name":"PUSH [tag]","value":"47"},{"begin":7048,"end":7104,"name":"JUMPI"},{"begin":-1,"end":-1,"name":"POP"},{"begin":-1,"end":-1,"name":"PUSH","value":"1"},{"begin":-1,"end":-1,"name":"PUSH","value":"A0"},{"begin":-1,"end":-1,"name":"PUSH","value":"2"},{"begin":-1,"end":-1,"name":"EXP"},{"begin":-1,"end":-1,"name":"SUB"},{"begin":7078,"end":7104,"name":"DUP3"},{"begin":7078,"end":7104,"name":"AND"},{"begin":7094,"end":7104,"name":"CALLER"},{"begin":7078,"end":7104,"name":"EQ"},{"begin":7078,"end":7104,"name":"ISZERO"},{"begin":7048,"end":7104,"name":"tag","value":"47"},{"begin":7048,"end":7104,"name":"JUMPDEST"},{"begin":7044,"end":7362,"name":"ISZERO"},{"begin":7044,"end":7362,"name":"PUSH [tag]","value":"52"},{"begin":7044,"end":7362,"name":"JUMPI"},{"begin":4173,"end":4213,"name":"PUSH","value":"40"},{"begin":4173,"end":4213,"name":"MLOAD"},{"begin":4173,"end":4213,"name":"PUSH","value":"20"},{"begin":4173,"end":4213,"name":"ADD"},{"begin":4173,"end":4213,"name":"DUP1"},{"begin":4173,"end":4213,"name":"DUP1"},{"begin":4173,"end":4213,"name":"PUSH","value":"455243313832305F4143434550545F4D41474943000000000000000000000000"},{"begin":4173,"end":4213,"name":"DUP2"},{"begin":4173,"end":4213,"name":"MSTORE"},{"begin":4173,"end":4213,"name":"POP"},{"begin":4173,"end":4213,"name":"PUSH","value":"14"},{"begin":4173,"end":4213,"name":"ADD"},{"begin":4173,"end":4213,"name":"SWAP1"},{"begin":4173,"end":4213,"name":"POP"},{"begin":4173,"end":4213,"name":"PUSH","value":"40"},{"begin":4173,"end":4213,"name":"MLOAD"},{"begin":49,"end":53,"name":"PUSH","value":"20"},{"begin":39,"end":46,"name":"DUP2"},{"begin":30,"end":37,"name":"DUP4"},{"begin":26,"end":47,"name":"SUB"},{"begin":22,"end":54,"name":"SUB"},{"begin":13,"end":20,"name":"DUP2"},{"begin":6,"end":55,"name":"MSTORE"},{"begin":4173,"end":4213,"name":"SWAP1"},{"begin":4173,"end":4213,"name":"PUSH","value":"40"},{"begin":4173,"end":4213,"name":"MSTORE"},{"begin":4163,"end":4214,"name":"DUP1"},{"begin":4163,"end":4214,"name":"MLOAD"},{"begin":4163,"end":4214,"name":"SWAP1"},{"begin":4163,"end":4214,"name":"PUSH","value":"20"},{"begin":4163,"end":4214,"name":"ADD"},{"begin":4163,"end":4214,"name":"KECCAK256"},{"begin":7173,"end":7185,"name":"DUP3"},{"begin":-1,"end":-1,"name":"PUSH","value":"1"},{"begin":-1,"end":-1,"name":"PUSH","value":"A0"},{"begin":-1,"end":-1,"name":"PUSH","value":"2"},{"begin":-1,"end":-1,"name":"EXP"},{"begin":-1,"end":-1,"name":"SUB"},{"begin":7145,"end":7239,"name":"AND"},{"begin":7145,"end":7239,"name":"PUSH","value":"249CB3FA"},{"begin":7240,"end":7254,"name":"DUP6"},{"begin":7256,"end":7260,"name":"DUP5"},{"begin":7145,"end":7261,"name":"PUSH","value":"40"},{"begin":7145,"end":7261,"name":"MLOAD"},{"begin":7145,"end":7261,"name":"DUP4"},{"begin":7145,"end":7261,"name":"PUSH","value":"FFFFFFFF"},{"begin":7145,"end":7261,"name":"AND"},{"begin":7145,"end":7261,"name":"PUSH","value":"100000000000000000000000000000000000000000000000000000000"},{"begin":7145,"end":7261,"name":"MUL"},{"begin":7145,"end":7261,"name":"DUP2"},{"begin":7145,"end":7261,"name":"MSTORE"},{"begin":7145,"end":7261,"name":"PUSH","value":"4"},{"begin":7145,"end":7261,"name":"ADD"},{"begin":7145,"end":7261,"name":"DUP1"},{"begin":7145,"end":7261,"name":"DUP4"},{"begin":7145,"end":7261,"name":"DUP2"},{"begin":7145,"end":7261,"name":"MSTORE"},{"begin":7145,"end":7261,"name":"PUSH","value":"20"},{"begin":7145,"end":7261,"name":"ADD"},{"begin":7145,"end":7261,"name":"DUP3"},{"begin":-1,"end":-1,"name":"PUSH","value":"1"},{"begin":-1,"end":-1,"name":"PUSH","value":"A0"},{"begin":-1,"end":-1,"name":"PUSH","value":"2"},{"begin":-1,"end":-1,"name":"EXP"},{"begin":-1,"end":-1,"name":"SUB"},{"begin":7145,"end":7261,"name":"AND"},{"begin":-1,"end":-1,"name":"PUSH","value":"1"},{"begin":-1,"end":-1,"name":"PUSH","value":"A0"},{"begin":-1,"end":-1,"name":"PUSH","value":"2"},{"begin":-1,"end":-1,"name":"EXP"},{"begin":-1,"end":-1,"name":"SUB"},{"begin":7145,"end":7261,"name":"AND"},{"begin":7145,"end":7261,"name":"DUP2"},{"begin":7145,"end":7261,"name":"MSTORE"},{"begin":7145,"end":7261,"name":"PUSH","value":"20"},{"begin":7145,"end":7261,"name":"ADD"},{"begin":7145,"end":7261,"name":"SWAP3"},{"begin":7145,"end":7261,"name":"POP"},{"begin":7145,"end":7261,"name":"POP"},{"begin":7145,"end":7261,"name":"POP"},{"begin":7145,"end":7261,"name":"PUSH","value":"20"},{"begin":7145,"end":7261,"name":"PUSH","value":"40"},{"begin":7145,"end":7261,"name":"MLOAD"},{"begin":7145,"end":7261,"name":"DUP1"},{"begin":7145,"end":7261,"name":"DUP4"},{"begin":7145,"end":7261,"name":"SUB"},{"begin":7145,"end":7261,"name":"DUP2"},{"begin":7145,"end":7261,"name":"DUP7"},{"begin":7145,"end":7261,"name":"DUP1"},{"begin":7145,"end":7261,"name":"EXTCODESIZE"},{"begin":7145,"end":7261,"name":"ISZERO"},{"begin":8,"end":17,"name":"DUP1"},{"begin":5,"end":7,"name":"ISZERO"},{"begin":5,"end":7,"name":"PUSH [tag]","value":"49"},{"begin":5,"end":7,"name":"JUMPI"},{"begin":30,"end":31,"name":"PUSH","value":"0"},{"begin":27,"end":28,"name":"DUP1"},{"begin":20,"end":32,"name":"REVERT"},{"begin":5,"end":7,"name":"tag","value":"49"},{"begin":5,"end":7,"name":"JUMPDEST"},{"begin":7145,"end":7261,"name":"POP"},{"begin":7145,"end":7261,"name":"GAS"},{"begin":7145,"end":7261,"name":"STATICCALL"},{"begin":7145,"end":7261,"name":"ISZERO"},{"begin":8,"end":17,"name":"DUP1"},{"begin":5,"end":7,"name":"ISZERO"},{"begin":5,"end":7,"name":"PUSH [tag]","value":"50"},{"begin":5,"end":7,"name":"JUMPI"},{"begin":45,"end":61,"name":"RETURNDATASIZE"},{"begin":42,"end":43,"name":"PUSH","value":"0"},{"begin":39,"end":40,"name":"DUP1"},{"begin":24,"end":62,"name":"RETURNDATACOPY"},{"begin":77,"end":93,"name":"RETURNDATASIZE"},{"begin":74,"end":75,"name":"PUSH","value":"0"},{"begin":67,"end":94,"name":"REVERT"},{"begin":5,"end":7,"name":"tag","value":"50"},{"begin":5,"end":7,"name":"JUMPDEST"},{"begin":7145,"end":7261,"name":"POP"},{"begin":7145,"end":7261,"name":"POP"},{"begin":7145,"end":7261,"name":"POP"},{"begin":7145,"end":7261,"name":"POP"},{"begin":7145,"end":7261,"name":"PUSH","value":"40"},{"begin":7145,"end":7261,"name":"MLOAD"},{"begin":7145,"end":7261,"name":"RETURNDATASIZE"},{"begin":13,"end":15,"name":"PUSH","value":"20"},{"begin":8,"end":11,"name":"DUP2"},{"begin":5,"end":16,"name":"LT"},{"begin":2,"end":4,"name":"ISZERO"},{"begin":2,"end":4,"name":"PUSH [tag]","value":"51"},{"begin":2,"end":4,"name":"JUMPI"},{"begin":29,"end":30,"name":"PUSH","value":"0"},{"begin":26,"end":27,"name":"DUP1"},{"begin":19,"end":31,"name":"REVERT"},{"begin":2,"end":4,"name":"tag","value":"51"},{"begin":2,"end":4,"name":"JUMPDEST"},{"begin":-1,"end":-1,"name":"POP"},{"begin":7145,"end":7261,"name":"MLOAD"},{"begin":7145,"end":7285,"name":"EQ"},{"begin":7120,"end":7351,"name":"PUSH [tag]","value":"52"},{"begin":7120,"end":7351,"name":"JUMPI"},{"begin":7120,"end":7351,"name":"PUSH","value":"40"},{"begin":7120,"end":7351,"name":"DUP1"},{"begin":7120,"end":7351,"name":"MLOAD"},{"begin":-1,"end":-1,"name":"PUSH","value":"E5"},{"begin":-1,"end":-1,"name":"PUSH","value":"2"},{"begin":-1,"end":-1,"name":"EXP"},{"begin":-1,"end":-1,"name":"PUSH","value":"461BCD"},{"begin":-1,"end":-1,"name":"MUL"},{"begin":7120,"end":7351,"name":"DUP2"},{"begin":7120,"end":7351,"name":"MSTORE"},{"begin":7120,"end":7351,"name":"PUSH","value":"20"},{"begin":7120,"end":7351,"name":"PUSH","value":"4"},{"begin":7120,"end":7351,"name":"DUP3"},{"begin":7120,"end":7351,"name":"ADD"},{"begin":7120,"end":7351,"name":"DUP2"},{"begin":7120,"end":7351,"name":"SWAP1"},{"begin":7120,"end":7351,"name":"MSTORE"},{"begin":7120,"end":7351,"name":"PUSH","value":"24"},{"begin":7120,"end":7351,"name":"DUP3"},{"begin":7120,"end":7351,"name":"ADD"},{"begin":7120,"end":7351,"name":"MSTORE"},{"begin":7120,"end":7351,"name":"PUSH","value":"446F6573206E6F7420696D706C656D656E742074686520696E74657266616365"},{"begin":7120,"end":7351,"name":"PUSH","value":"44"},{"begin":7120,"end":7351,"name":"DUP3"},{"begin":7120,"end":7351,"name":"ADD"},{"begin":7120,"end":7351,"name":"MSTORE"},{"begin":7120,"end":7351,"name":"SWAP1"},{"begin":7120,"end":7351,"name":"MLOAD"},{"begin":7120,"end":7351,"name":"SWAP1"},{"begin":7120,"end":7351,"name":"DUP2"},{"begin":7120,"end":7351,"name":"SWAP1"},{"begin":7120,"end":7351,"name":"SUB"},{"begin":7120,"end":7351,"name":"PUSH","value":"64"},{"begin":7120,"end":7351,"name":"ADD"},{"begin":7120,"end":7351,"name":"SWAP1"},{"begin":7120,"end":7351,"name":"REVERT"},{"begin":7120,"end":7351,"name":"tag","value":"52"},{"begin":7120,"end":7351,"name":"JUMPDEST"},{"begin":-1,"end":-1,"name":"PUSH","value":"1"},{"begin":-1,"end":-1,"name":"PUSH","value":"A0"},{"begin":-1,"end":-1,"name":"PUSH","value":"2"},{"begin":-1,"end":-1,"name":"EXP"},{"begin":-1,"end":-1,"name":"SUB"},{"begin":7371,"end":7387,"name":"DUP2"},{"begin":7371,"end":7387,"name":"DUP2"},{"begin":7371,"end":7387,"name":"AND"},{"begin":7371,"end":7381,"name":"PUSH","value":"0"},{"begin":7371,"end":7387,"name":"DUP2"},{"begin":7371,"end":7387,"name":"DUP2"},{"begin":7371,"end":7387,"name":"MSTORE"},{"begin":7371,"end":7387,"name":"PUSH","value":"20"},{"begin":7371,"end":7387,"name":"DUP2"},{"begin":7371,"end":7387,"name":"DUP2"},{"begin":7371,"end":7387,"name":"MSTORE"},{"begin":7371,"end":7387,"name":"PUSH","value":"40"},{"begin":7371,"end":7387,"name":"DUP1"},{"begin":7371,"end":7387,"name":"DUP4"},{"begin":7371,"end":7387,"name":"KECCAK256"},{"begin":7371,"end":7403,"name":"DUP9"},{"begin":7371,"end":7403,"name":"DUP5"},{"begin":7371,"end":7403,"name":"MSTORE"},{"begin":7371,"end":7403,"name":"SWAP1"},{"begin":7371,"end":7403,"name":"SWAP2"},{"begin":7371,"end":7403,"name":"MSTORE"},{"begin":7371,"end":7403,"name":"DUP1"},{"begin":7371,"end":7403,"name":"DUP3"},{"begin":7371,"end":7403,"name":"KECCAK256"},{"begin":7371,"end":7418,"name":"DUP1"},{"begin":7371,"end":7418,"name":"SLOAD"},{"begin":-1,"end":-1,"name":"PUSH","value":"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"},{"begin":-1,"end":-1,"name":"NOT"},{"begin":7371,"end":7418,"name":"AND"},{"begin":7371,"end":7418,"name":"SWAP5"},{"begin":7371,"end":7418,"name":"DUP8"},{"begin":7371,"end":7418,"name":"AND"},{"begin":7371,"end":7418,"name":"SWAP5"},{"begin":7371,"end":7418,"name":"DUP6"},{"begin":7371,"end":7418,"name":"OR"},{"begin":7371,"end":7418,"name":"SWAP1"},{"begin":7371,"end":7418,"name":"SSTORE"},{"begin":7433,"end":7492,"name":"MLOAD"},{"begin":7371,"end":7403,"name":"DUP7"},{"begin":7371,"end":7403,"name":"SWAP3"},{"begin":7371,"end":7387,"name":"SWAP2"},{"begin":7433,"end":7492,"name":"PUSH","value":"93BAA6EFBD2244243BFEE6CE4CFDD1D04FC4C0E9A786ABD3A41313BD352DB153"},{"begin":7433,"end":7492,"name":"SWAP2"},{"begin":7433,"end":7492,"name":"LOG4"},{"begin":6714,"end":7499,"name":"POP"},{"begin":6714,"end":7499,"name":"POP"},{"begin":6714,"end":7499,"name":"POP"},{"begin":6714,"end":7499,"name":"POP"},{"begin":6714,"end":7499,"name":"JUMP","value":"[out]"},{"begin":8263,"end":8536,"name":"tag","value":"17"},{"begin":8263,"end":8536,"name":"JUMPDEST"},{"begin":-1,"end":-1,"name":"PUSH","value":"1"},{"begin":-1,"end":-1,"name":"PUSH","value":"A0"},{"begin":-1,"end":-1,"name":"PUSH","value":"2"},{"begin":-1,"end":-1,"name":"EXP"},{"begin":-1,"end":-1,"name":"SUB"},{"begin":8409,"end":8424,"name":"DUP2"},{"begin":8409,"end":8424,"name":"DUP2"},{"begin":8409,"end":8424,"name":"AND"},{"begin":8318,"end":8325,"name":"PUSH","value":"0"},{"begin":8409,"end":8424,"name":"SWAP1"},{"begin":8409,"end":8424,"name":"DUP2"},{"begin":8409,"end":8424,"name":"MSTORE"},{"begin":8409,"end":8417,"name":"PUSH","value":"1"},{"begin":8409,"end":8424,"name":"PUSH","value":"20"},{"begin":8409,"end":8424,"name":"MSTORE"},{"begin":8409,"end":8424,"name":"PUSH","value":"40"},{"begin":8409,"end":8424,"name":"DUP2"},{"begin":8409,"end":8424,"name":"KECCAK256"},{"begin":8409,"end":8424,"name":"SLOAD"},{"begin":8318,"end":8325,"name":"SWAP1"},{"begin":8318,"end":8325,"name":"SWAP2"},{"begin":8409,"end":8424,"name":"AND"},{"begin":8409,"end":8438,"name":"ISZERO"},{"begin":8405,"end":8530,"name":"ISZERO"},{"begin":8405,"end":8530,"name":"PUSH [tag]","value":"54"},{"begin":8405,"end":8530,"name":"JUMPI"},{"begin":-1,"end":-1,"name":"POP"},{"begin":8461,"end":8466,"name":"DUP1"},{"begin":8454,"end":8466,"name":"PUSH [tag]","value":"55"},{"begin":8454,"end":8466,"name":"JUMP"},{"begin":8405,"end":8530,"name":"tag","value":"54"},{"begin":8405,"end":8530,"name":"JUMPDEST"},{"begin":-1,"end":-1,"name":"POP"},{"begin":-1,"end":-1,"name":"PUSH","value":"1"},{"begin":-1,"end":-1,"name":"PUSH","value":"A0"},{"begin":-1,"end":-1,"name":"PUSH","value":"2"},{"begin":-1,"end":-1,"name":"EXP"},{"begin":-1,"end":-1,"name":"SUB"},{"begin":8504,"end":8519,"name":"DUP1"},{"begin":8504,"end":8519,"name":"DUP3"},{"begin":8504,"end":8519,"name":"AND"},{"begin":8504,"end":8519,"name":"PUSH","value":"0"},{"begin":8504,"end":8519,"name":"SWAP1"},{"begin":8504,"end":8519,"name":"DUP2"},{"begin":8504,"end":8519,"name":"MSTORE"},{"begin":8504,"end":8512,"name":"PUSH","value":"1"},{"begin":8504,"end":8519,"name":"PUSH","value":"20"},{"begin":8504,"end":8519,"name":"MSTORE"},{"begin":8504,"end":8519,"name":"PUSH","value":"40"},{"begin":8504,"end":8519,"name":"SWAP1"},{"begin":8504,"end":8519,"name":"KECCAK256"},{"begin":8504,"end":8519,"name":"SLOAD"},{"begin":8504,"end":8519,"name":"AND"},{"begin":8405,"end":8530,"name":"tag","value":"55"},{"begin":8405,"end":8530,"name":"JUMPDEST"},{"begin":8263,"end":8536,"name":"SWAP2"},{"begin":8263,"end":8536,"name":"SWAP1"},{"begin":8263,"end":8536,"name":"POP"},{"begin":8263,"end":8536,"name":"JUMP","value":"[out]"},{"begin":7823,"end":8088,"name":"tag","value":"20"},{"begin":7823,"end":8088,"name":"JUMPDEST"},{"begin":7927,"end":7937,"name":"CALLER"},{"begin":7906,"end":7923,"name":"PUSH [tag]","value":"57"},{"begin":7917,"end":7922,"name":"DUP4"},{"begin":7906,"end":7916,"name":"PUSH [tag]","value":"17"},{"begin":7906,"end":7923,"name":"JUMP","value":"[in]"},{"begin":7906,"end":7923,"name":"tag","value":"57"},{"begin":7906,"end":7923,"name":"JUMPDEST"},{"begin":-1,"end":-1,"name":"PUSH","value":"1"},{"begin":-1,"end":-1,"name":"PUSH","value":"A0"},{"begin":-1,"end":-1,"name":"PUSH","value":"2"},{"begin":-1,"end":-1,"name":"EXP"},{"begin":-1,"end":-1,"name":"SUB"},{"begin":7906,"end":7937,"name":"AND"},{"begin":7906,"end":7937,"name":"EQ"},{"begin":7898,"end":7957,"name":"PUSH [tag]","value":"58"},{"begin":7898,"end":7957,"name":"JUMPI"},{"begin":7898,"end":7957,"name":"PUSH","value":"40"},{"begin":7898,"end":7957,"name":"DUP1"},{"begin":7898,"end":7957,"name":"MLOAD"},{"begin":-1,"end":-1,"name":"PUSH","value":"E5"},{"begin":-1,"end":-1,"name":"PUSH","value":"2"},{"begin":-1,"end":-1,"name":"EXP"},{"begin":-1,"end":-1,"name":"PUSH","value":"461BCD"},{"begin":-1,"end":-1,"name":"MUL"},{"begin":7898,"end":7957,"name":"DUP2"},{"begin":7898,"end":7957,"name":"MSTORE"},{"begin":7898,"end":7957,"name":"PUSH","value":"20"},{"begin":7898,"end":7957,"name":"PUSH","value":"4"},{"begin":7898,"end":7957,"name":"DUP3"},{"begin":7898,"end":7957,"name":"ADD"},{"begin":7898,"end":7957,"name":"MSTORE"},{"begin":7898,"end":7957,"name":"PUSH","value":"F"},{"begin":7898,"end":7957,"name":"PUSH","value":"24"},{"begin":7898,"end":7957,"name":"DUP3"},{"begin":7898,"end":7957,"name":"ADD"},{"begin":7898,"end":7957,"name":"MSTORE"},{"begin":7898,"end":7957,"name":"PUSH","value":"4E6F7420746865206D616E616765720000000000000000000000000000000000"},{"begin":7898,"end":7957,"name":"PUSH","value":"44"},{"begin":7898,"end":7957,"name":"DUP3"},{"begin":7898,"end":7957,"name":"ADD"},{"begin":7898,"end":7957,"name":"MSTORE"},{"begin":7898,"end":7957,"name":"SWAP1"},{"begin":7898,"end":7957,"name":"MLOAD"},{"begin":7898,"end":7957,"name":"SWAP1"},{"begin":7898,"end":7957,"name":"DUP2"},{"begin":7898,"end":7957,"name":"SWAP1"},{"begin":7898,"end":7957,"name":"SUB"},{"begin":7898,"end":7957,"name":"PUSH","value":"64"},{"begin":7898,"end":7957,"name":"ADD"},{"begin":7898,"end":7957,"name":"SWAP1"},{"begin":7898,"end":7957,"name":"REVERT"},{"begin":7898,"end":7957,"name":"tag","value":"58"},{"begin":7898,"end":7957,"name":"JUMPDEST"},{"begin":8000,"end":8005,"name":"DUP2"},{"begin":-1,"end":-1,"name":"PUSH","value":"1"},{"begin":-1,"end":-1,"name":"PUSH","value":"A0"},{"begin":-1,"end":-1,"name":"PUSH","value":"2"},{"begin":-1,"end":-1,"name":"EXP"},{"begin":-1,"end":-1,"name":"SUB"},{"begin":7985,"end":8005,"name":"AND"},{"begin":7985,"end":7996,"name":"DUP2"},{"begin":-1,"end":-1,"name":"PUSH","value":"1"},{"begin":-1,"end":-1,"name":"PUSH","value":"A0"},{"begin":-1,"end":-1,"name":"PUSH","value":"2"},{"begin":-1,"end":-1,"name":"EXP"},{"begin":-1,"end":-1,"name":"SUB"},{"begin":7985,"end":8005,"name":"AND"},{"begin":7985,"end":8005,"name":"EQ"},{"begin":7985,"end":8032,"name":"PUSH [tag]","value":"59"},{"begin":7985,"end":8032,"name":"JUMPI"},{"begin":8021,"end":8032,"name":"DUP1"},{"begin":7985,"end":8032,"name":"PUSH [tag]","value":"60"},{"begin":7985,"end":8032,"name":"JUMP"},{"begin":7985,"end":8032,"name":"tag","value":"59"},{"begin":7985,"end":8032,"name":"JUMPDEST"},{"begin":8016,"end":8017,"name":"PUSH","value":"0"},{"begin":7985,"end":8032,"name":"tag","value":"60"},{"begin":7985,"end":8032,"name":"JUMPDEST"},{"begin":-1,"end":-1,"name":"PUSH","value":"1"},{"begin":-1,"end":-1,"name":"PUSH","value":"A0"},{"begin":-1,"end":-1,"name":"PUSH","value":"2"},{"begin":-1,"end":-1,"name":"EXP"},{"begin":-1,"end":-1,"name":"SUB"},{"begin":7967,"end":7982,"name":"DUP4"},{"begin":7967,"end":7982,"name":"DUP2"},{"begin":7967,"end":7982,"name":"AND"},{"begin":7967,"end":7982,"name":"PUSH","value":"0"},{"begin":7967,"end":7982,"name":"DUP2"},{"begin":7967,"end":7982,"name":"DUP2"},{"begin":7967,"end":7982,"name":"MSTORE"},{"begin":7967,"end":7975,"name":"PUSH","value":"1"},{"begin":7967,"end":7982,"name":"PUSH","value":"20"},{"begin":7967,"end":7982,"name":"MSTORE"},{"begin":7967,"end":7982,"name":"PUSH","value":"40"},{"begin":7967,"end":7982,"name":"DUP1"},{"begin":7967,"end":7982,"name":"DUP3"},{"begin":7967,"end":7982,"name":"KECCAK256"},{"begin":7967,"end":8032,"name":"DUP1"},{"begin":7967,"end":8032,"name":"SLOAD"},{"begin":-1,"end":-1,"name":"PUSH","value":"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"},{"begin":-1,"end":-1,"name":"NOT"},{"begin":7967,"end":8032,"name":"AND"},{"begin":7967,"end":8032,"name":"SWAP6"},{"begin":7967,"end":8032,"name":"DUP6"},{"begin":7967,"end":8032,"name":"AND"},{"begin":7967,"end":8032,"name":"SWAP6"},{"begin":7967,"end":8032,"name":"SWAP1"},{"begin":7967,"end":8032,"name":"SWAP6"},{"begin":7967,"end":8032,"name":"OR"},{"begin":7967,"end":8032,"name":"SWAP1"},{"begin":7967,"end":8032,"name":"SWAP5"},{"begin":7967,"end":8032,"name":"SSTORE"},{"begin":8047,"end":8081,"name":"SWAP3"},{"begin":8047,"end":8081,"name":"MLOAD"},{"begin":8047,"end":8081,"name":"SWAP2"},{"begin":8047,"end":8081,"name":"DUP5"},{"begin":8047,"end":8081,"name":"AND"},{"begin":8047,"end":8081,"name":"SWAP3"},{"begin":7967,"end":7982,"name":"SWAP1"},{"begin":7967,"end":7982,"name":"SWAP2"},{"begin":8047,"end":8081,"name":"PUSH","value":"605C2DBF762E5F7D60A546D42E7205DCB1B011EBC62A61736A57C9089D3A4350"},{"begin":8047,"end":8081,"name":"SWAP2"},{"begin":7967,"end":7982,"name":"SWAP1"},{"begin":8047,"end":8081,"name":"LOG3"},{"begin":7823,"end":8088,"name":"POP"},{"begin":7823,"end":8088,"name":"POP"},{"begin":7823,"end":8088,"name":"JUMP","value":"[out]"},{"begin":8727,"end":8880,"name":"tag","value":"26"},{"begin":8727,"end":8880,"name":"JUMPDEST"},{"begin":8804,"end":8811,"name":"PUSH","value":"0"},{"begin":8857,"end":8871,"name":"DUP3"},{"begin":8857,"end":8871,"name":"DUP3"},{"begin":8840,"end":8872,"name":"PUSH","value":"40"},{"begin":8840,"end":8872,"name":"MLOAD"},{"begin":8840,"end":8872,"name":"PUSH","value":"20"},{"begin":8840,"end":8872,"name":"ADD"},{"begin":8840,"end":8872,"name":"DUP1"},{"begin":8840,"end":8872,"name":"DUP4"},{"begin":8840,"end":8872,"name":"DUP4"},{"begin":30,"end":33,"name":"DUP1"},{"begin":22,"end":28,"name":"DUP3"},{"begin":14,"end":20,"name":"DUP5"},{"begin":1,"end":34,"name":"CALLDATACOPY"},{"begin":57,"end":60,"name":"DUP1"},{"begin":49,"end":55,"name":"DUP4"},{"begin":45,"end":61,"name":"ADD"},{"begin":35,"end":61,"name":"SWAP3"},{"begin":35,"end":61,"name":"POP"},{"begin":8840,"end":8872,"name":"POP"},{"begin":8840,"end":8872,"name":"POP"},{"begin":8840,"end":8872,"name":"SWAP3"},{"begin":8840,"end":8872,"name":"POP"},{"begin":8840,"end":8872,"name":"POP"},{"begin":8840,"end":8872,"name":"POP"},{"begin":8840,"end":8872,"name":"PUSH","value":"40"},{"begin":8840,"end":8872,"name":"MLOAD"},{"begin":49,"end":53,"name":"PUSH","value":"20"},{"begin":39,"end":46,"name":"DUP2"},{"begin":30,"end":37,"name":"DUP4"},{"begin":26,"end":47,"name":"SUB"},{"begin":22,"end":54,"name":"SUB"},{"begin":13,"end":20,"name":"DUP2"},{"begin":6,"end":55,"name":"MSTORE"},{"begin":8840,"end":8872,"name":"SWAP1"},{"begin":8840,"end":8872,"name":"PUSH","value":"40"},{"begin":8840,"end":8872,"name":"MSTORE"},{"begin":8830,"end":8873,"name":"DUP1"},{"begin":8830,"end":8873,"name":"MLOAD"},{"begin":8830,"end":8873,"name":"SWAP1"},{"begin":8830,"end":8873,"name":"PUSH","value":"20"},{"begin":8830,"end":8873,"name":"ADD"},{"begin":8830,"end":8873,"name":"KECCAK256"},{"begin":8823,"end":8873,"name":"SWAP1"},{"begin":8823,"end":8873,"name":"POP"},{"begin":8727,"end":8880,"name":"tag","value":"61"},{"begin":8727,"end":8880,"name":"JUMPDEST"},{"begin":8727,"end":8880,"name":"SWAP3"},{"begin":8727,"end":8880,"name":"SWAP2"},{"begin":8727,"end":8880,"name":"POP"},{"begin":8727,"end":8880,"name":"POP"},{"begin":8727,"end":8880,"name":"JUMP","value":"[out]"},{"begin":9253,"end":9533,"name":"tag","value":"29"},{"begin":9253,"end":9533,"name":"JUMPDEST"},{"begin":9377,"end":9447,"name":"PUSH [tag]","value":"63"},{"begin":9423,"end":9432,"name":"DUP3"},{"begin":9434,"end":9446,"name":"DUP3"},{"begin":9377,"end":9409,"name":"PUSH [tag]","value":"35"},{"begin":9377,"end":9447,"name":"JUMP","value":"[in]"},{"begin":9377,"end":9447,"name":"tag","value":"63"},{"begin":9377,"end":9447,"name":"JUMPDEST"},{"begin":9377,"end":9472,"name":"PUSH [tag]","value":"64"},{"begin":9377,"end":9472,"name":"JUMPI"},{"begin":9470,"end":9471,"name":"PUSH","value":"0"},{"begin":9377,"end":9472,"name":"PUSH [tag]","value":"65"},{"begin":9377,"end":9472,"name":"JUMP"},{"begin":9377,"end":9472,"name":"tag","value":"64"},{"begin":9377,"end":9472,"name":"JUMPDEST"},{"begin":9450,"end":9459,"name":"DUP2"},{"begin":9377,"end":9472,"name":"tag","value":"65"},{"begin":9377,"end":9472,"name":"JUMPDEST"},{"begin":-1,"end":-1,"name":"PUSH","value":"1"},{"begin":-1,"end":-1,"name":"PUSH","value":"A0"},{"begin":-1,"end":-1,"name":"PUSH","value":"2"},{"begin":-1,"end":-1,"name":"EXP"},{"begin":-1,"end":-1,"name":"SUB"},{"begin":9339,"end":9360,"name":"SWAP3"},{"begin":9339,"end":9360,"name":"DUP4"},{"begin":9339,"end":9360,"name":"AND"},{"begin":9339,"end":9349,"name":"PUSH","value":"0"},{"begin":9339,"end":9360,"name":"DUP2"},{"begin":9339,"end":9360,"name":"DUP2"},{"begin":9339,"end":9360,"name":"MSTORE"},{"begin":9339,"end":9360,"name":"PUSH","value":"20"},{"begin":9339,"end":9360,"name":"DUP2"},{"begin":9339,"end":9360,"name":"DUP2"},{"begin":9339,"end":9360,"name":"MSTORE"},{"begin":9339,"end":9360,"name":"PUSH","value":"40"},{"begin":9339,"end":9360,"name":"DUP1"},{"begin":9339,"end":9360,"name":"DUP4"},{"begin":9339,"end":9360,"name":"KECCAK256"},{"begin":-1,"end":-1,"name":"PUSH","value":"1"},{"begin":-1,"end":-1,"name":"PUSH","value":"E0"},{"begin":-1,"end":-1,"name":"PUSH","value":"2"},{"begin":-1,"end":-1,"name":"EXP"},{"begin":-1,"end":-1,"name":"SUB"},{"begin":-1,"end":-1,"name":"NOT"},{"begin":9339,"end":9374,"name":"SWAP7"},{"begin":9339,"end":9374,"name":"SWAP1"},{"begin":9339,"end":9374,"name":"SWAP7"},{"begin":9339,"end":9374,"name":"AND"},{"begin":9339,"end":9374,"name":"DUP1"},{"begin":9339,"end":9374,"name":"DUP5"},{"begin":9339,"end":9374,"name":"MSTORE"},{"begin":9339,"end":9374,"name":"SWAP6"},{"begin":9339,"end":9374,"name":"DUP3"},{"begin":9339,"end":9374,"name":"MSTORE"},{"begin":9339,"end":9374,"name":"DUP1"},{"begin":9339,"end":9374,"name":"DUP4"},{"begin":9339,"end":9374,"name":"KECCAK256"},{"begin":9339,"end":9472,"name":"DUP1"},{"begin":9339,"end":9472,"name":"SLOAD"},{"begin":-1,"end":-1,"name":"PUSH","value":"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"},{"begin":-1,"end":-1,"name":"NOT"},{"begin":9339,"end":9472,"name":"AND"},{"begin":9339,"end":9472,"name":"SWAP6"},{"begin":9339,"end":9472,"name":"SWAP1"},{"begin":9339,"end":9472,"name":"SWAP8"},{"begin":9339,"end":9472,"name":"AND"},{"begin":9339,"end":9472,"name":"SWAP5"},{"begin":9339,"end":9472,"name":"SWAP1"},{"begin":9339,"end":9472,"name":"SWAP5"},{"begin":9339,"end":9472,"name":"OR"},{"begin":9339,"end":9472,"name":"SWAP1"},{"begin":9339,"end":9472,"name":"SWAP6"},{"begin":9339,"end":9472,"name":"SSTORE"},{"begin":9482,"end":9505,"name":"SWAP1"},{"begin":9482,"end":9505,"name":"DUP2"},{"begin":9482,"end":9505,"name":"MSTORE"},{"begin":9482,"end":9494,"name":"PUSH","value":"2"},{"begin":9482,"end":9505,"name":"DUP5"},{"begin":9482,"end":9505,"name":"MSTORE"},{"begin":9482,"end":9505,"name":"DUP2"},{"begin":9482,"end":9505,"name":"DUP2"},{"begin":9482,"end":9505,"name":"KECCAK256"},{"begin":9482,"end":9519,"name":"SWAP3"},{"begin":9482,"end":9519,"name":"DUP2"},{"begin":9482,"end":9519,"name":"MSTORE"},{"begin":9482,"end":9519,"name":"SWAP2"},{"begin":9482,"end":9519,"name":"SWAP1"},{"begin":9482,"end":9519,"name":"SWAP3"},{"begin":9482,"end":9519,"name":"MSTORE"},{"begin":9482,"end":9519,"name":"KECCAK256"},{"begin":9482,"end":9526,"name":"DUP1"},{"begin":9482,"end":9526,"name":"SLOAD"},{"begin":-1,"end":-1,"name":"PUSH","value":"FF"},{"begin":-1,"end":-1,"name":"NOT"},{"begin":9482,"end":9526,"name":"AND"},{"begin":-1,"end":-1,"name":"PUSH","value":"1"},{"begin":9482,"end":9526,"name":"OR"},{"begin":9482,"end":9526,"name":"SWAP1"},{"begin":9482,"end":9526,"name":"SSTORE"},{"begin":9253,"end":9533,"name":"JUMP","value":"[out]"},{"begin":5626,"end":6068,"name":"tag","value":"32"},{"begin":5626,"end":6068,"name":"JUMPDEST"},{"begin":5721,"end":5728,"name":"PUSH","value":"0"},{"begin":5721,"end":5728,"name":"DUP1"},{"begin":-1,"end":-1,"name":"PUSH","value":"1"},{"begin":-1,"end":-1,"name":"PUSH","value":"A0"},{"begin":-1,"end":-1,"name":"PUSH","value":"2"},{"begin":-1,"end":-1,"name":"EXP"},{"begin":-1,"end":-1,"name":"SUB"},{"begin":5755,"end":5774,"name":"DUP5"},{"begin":5755,"end":5774,"name":"AND"},{"begin":5755,"end":5774,"name":"ISZERO"},{"begin":5755,"end":5795,"name":"PUSH [tag]","value":"67"},{"begin":5755,"end":5795,"name":"JUMPI"},{"begin":5790,"end":5795,"name":"DUP4"},{"begin":5755,"end":5795,"name":"PUSH [tag]","value":"68"},{"begin":5755,"end":5795,"name":"JUMP"},{"begin":5755,"end":5795,"name":"tag","value":"67"},{"begin":5755,"end":5795,"name":"JUMPDEST"},{"begin":5777,"end":5787,"name":"CALLER"},{"begin":5755,"end":5795,"name":"tag","value":"68"},{"begin":5755,"end":5795,"name":"JUMPDEST"},{"begin":5740,"end":5795,"name":"SWAP1"},{"begin":5740,"end":5795,"name":"POP"},{"begin":5809,"end":5842,"name":"PUSH [tag]","value":"69"},{"begin":5827,"end":5841,"name":"DUP4"},{"begin":5809,"end":5826,"name":"PUSH [tag]","value":"45"},{"begin":5809,"end":5842,"name":"JUMP","value":"[in]"},{"begin":5809,"end":5842,"name":"tag","value":"69"},{"begin":5809,"end":5842,"name":"JUMPDEST"},{"begin":5805,"end":6013,"name":"ISZERO"},{"begin":5805,"end":6013,"name":"PUSH [tag]","value":"70"},{"begin":5805,"end":6013,"name":"JUMPI"},{"begin":5894,"end":5908,"name":"DUP3"},{"begin":5930,"end":5982,"name":"PUSH [tag]","value":"71"},{"begin":5956,"end":5960,"name":"DUP3"},{"begin":5894,"end":5908,"name":"DUP3"},{"begin":5930,"end":5955,"name":"PUSH [tag]","value":"38"},{"begin":5930,"end":5982,"name":"JUMP","value":"[in]"},{"begin":5930,"end":5982,"name":"tag","value":"71"},{"begin":5930,"end":5982,"name":"JUMPDEST"},{"begin":5930,"end":6002,"name":"PUSH [tag]","value":"72"},{"begin":5930,"end":6002,"name":"JUMPI"},{"begin":6000,"end":6001,"name":"PUSH","value":"0"},{"begin":5930,"end":6002,"name":"PUSH [tag]","value":"73"},{"begin":5930,"end":6002,"name":"JUMP"},{"begin":5930,"end":6002,"name":"tag","value":"72"},{"begin":5930,"end":6002,"name":"JUMPDEST"},{"begin":5985,"end":5989,"name":"DUP2"},{"begin":5930,"end":6002,"name":"tag","value":"73"},{"begin":5930,"end":6002,"name":"JUMPDEST"},{"begin":5923,"end":6002,"name":"SWAP3"},{"begin":5923,"end":6002,"name":"POP"},{"begin":5923,"end":6002,"name":"POP"},{"begin":5923,"end":6002,"name":"POP"},{"begin":5923,"end":6002,"name":"PUSH [tag]","value":"61"},{"begin":5923,"end":6002,"name":"JUMP"},{"begin":5805,"end":6013,"name":"tag","value":"70"},{"begin":5805,"end":6013,"name":"JUMPDEST"},{"begin":-1,"end":-1,"name":"PUSH","value":"1"},{"begin":-1,"end":-1,"name":"PUSH","value":"A0"},{"begin":-1,"end":-1,"name":"PUSH","value":"2"},{"begin":-1,"end":-1,"name":"EXP"},{"begin":-1,"end":-1,"name":"SUB"},{"begin":6029,"end":6045,"name":"SWAP1"},{"begin":6029,"end":6045,"name":"DUP2"},{"begin":6029,"end":6045,"name":"AND"},{"begin":6029,"end":6039,"name":"PUSH","value":"0"},{"begin":6029,"end":6045,"name":"SWAP1"},{"begin":6029,"end":6045,"name":"DUP2"},{"begin":6029,"end":6045,"name":"MSTORE"},{"begin":6029,"end":6045,"name":"PUSH","value":"20"},{"begin":6029,"end":6045,"name":"DUP2"},{"begin":6029,"end":6045,"name":"DUP2"},{"begin":6029,"end":6045,"name":"MSTORE"},{"begin":6029,"end":6045,"name":"PUSH","value":"40"},{"begin":6029,"end":6045,"name":"DUP1"},{"begin":6029,"end":6045,"name":"DUP4"},{"begin":6029,"end":6045,"name":"KECCAK256"},{"begin":6029,"end":6061,"name":"DUP7"},{"begin":6029,"end":6061,"name":"DUP5"},{"begin":6029,"end":6061,"name":"MSTORE"},{"begin":6029,"end":6061,"name":"SWAP1"},{"begin":6029,"end":6061,"name":"SWAP2"},{"begin":6029,"end":6061,"name":"MSTORE"},{"begin":6029,"end":6061,"name":"SWAP1"},{"begin":6029,"end":6061,"name":"KECCAK256"},{"begin":6029,"end":6061,"name":"SLOAD"},{"begin":6029,"end":6061,"name":"AND"},{"begin":6029,"end":6061,"name":"SWAP1"},{"begin":-1,"end":-1,"name":"POP"},{"begin":5626,"end":6068,"name":"SWAP3"},{"begin":5626,"end":6068,"name":"SWAP2"},{"begin":5626,"end":6068,"name":"POP"},{"begin":5626,"end":6068,"name":"POP"},{"begin":5626,"end":6068,"name":"JUMP","value":"[out]"},{"begin":10711,"end":11329,"name":"tag","value":"35"},{"begin":10711,"end":11329,"name":"JUMPDEST"},{"begin":10814,"end":10818,"name":"PUSH","value":"0"},{"begin":10814,"end":10818,"name":"DUP1"},{"begin":10814,"end":10818,"name":"DUP1"},{"begin":10900,"end":10932,"name":"PUSH [tag]","value":"75"},{"begin":10912,"end":10921,"name":"DUP6"},{"begin":10923,"end":10931,"name":"PUSH","value":"1FFC9A700000000000000000000000000000000000000000000000000000000"},{"begin":10900,"end":10911,"name":"PUSH [tag]","value":"76"},{"begin":10900,"end":10932,"name":"JUMP","value":"[in]"},{"begin":10900,"end":10932,"name":"tag","value":"75"},{"begin":10900,"end":10932,"name":"JUMPDEST"},{"begin":10880,"end":10932,"name":"SWAP1"},{"begin":10880,"end":10932,"name":"SWAP3"},{"begin":-1,"end":-1,"name":"POP"},{"begin":10880,"end":10932,"name":"SWAP1"},{"begin":-1,"end":-1,"name":"POP"},{"begin":10946,"end":10958,"name":"DUP2"},{"begin":10946,"end":10958,"name":"ISZERO"},{"begin":10946,"end":10958,"name":"DUP1"},{"begin":10946,"end":10973,"name":"PUSH [tag]","value":"77"},{"begin":10946,"end":10973,"name":"JUMPI"},{"begin":-1,"end":-1,"name":"POP"},{"begin":10962,"end":10973,"name":"DUP1"},{"begin":10962,"end":10973,"name":"ISZERO"},{"begin":10946,"end":10973,"name":"tag","value":"77"},{"begin":10946,"end":10973,"name":"JUMPDEST"},{"begin":10942,"end":11012,"name":"ISZERO"},{"begin":10942,"end":11012,"name":"PUSH [tag]","value":"78"},{"begin":10942,"end":11012,"name":"JUMPI"},{"begin":10996,"end":11001,"name":"PUSH","value":"0"},{"begin":10989,"end":11001,"name":"SWAP3"},{"begin":10989,"end":11001,"name":"POP"},{"begin":10989,"end":11001,"name":"POP"},{"begin":10989,"end":11001,"name":"POP"},{"begin":10989,"end":11001,"name":"PUSH [tag]","value":"61"},{"begin":10989,"end":11001,"name":"JUMP"},{"begin":10942,"end":11012,"name":"tag","value":"78"},{"begin":10942,"end":11012,"name":"JUMPDEST"},{"begin":11042,"end":11076,"name":"PUSH [tag]","value":"79"},{"begin":11054,"end":11063,"name":"DUP6"},{"begin":-1,"end":-1,"name":"PUSH","value":"1"},{"begin":-1,"end":-1,"name":"PUSH","value":"E0"},{"begin":-1,"end":-1,"name":"PUSH","value":"2"},{"begin":-1,"end":-1,"name":"EXP"},{"begin":-1,"end":-1,"name":"SUB"},{"begin":-1,"end":-1,"name":"NOT"},{"begin":11042,"end":11053,"name":"PUSH [tag]","value":"76"},{"begin":11042,"end":11076,"name":"JUMP","value":"[in]"},{"begin":11042,"end":11076,"name":"tag","value":"79"},{"begin":11042,"end":11076,"name":"JUMPDEST"},{"begin":11022,"end":11076,"name":"SWAP1"},{"begin":11022,"end":11076,"name":"SWAP3"},{"begin":-1,"end":-1,"name":"POP"},{"begin":11022,"end":11076,"name":"SWAP1"},{"begin":-1,"end":-1,"name":"POP"},{"begin":11090,"end":11102,"name":"DUP2"},{"begin":11090,"end":11102,"name":"ISZERO"},{"begin":11090,"end":11102,"name":"DUP1"},{"begin":11090,"end":11117,"name":"PUSH [tag]","value":"80"},{"begin":11090,"end":11117,"name":"JUMPI"},{"begin":-1,"end":-1,"name":"POP"},{"begin":11106,"end":11117,"name":"DUP1"},{"begin":11106,"end":11117,"name":"ISZERO"},{"begin":11106,"end":11117,"name":"ISZERO"},{"begin":11090,"end":11117,"name":"tag","value":"80"},{"begin":11090,"end":11117,"name":"JUMPDEST"},{"begin":11086,"end":11156,"name":"ISZERO"},{"begin":11086,"end":11156,"name":"PUSH [tag]","value":"81"},{"begin":11086,"end":11156,"name":"JUMPI"},{"begin":11140,"end":11145,"name":"PUSH","value":"0"},{"begin":11133,"end":11145,"name":"SWAP3"},{"begin":11133,"end":11145,"name":"POP"},{"begin":11133,"end":11145,"name":"POP"},{"begin":11133,"end":11145,"name":"POP"},{"begin":11133,"end":11145,"name":"PUSH [tag]","value":"61"},{"begin":11133,"end":11145,"name":"JUMP"},{"begin":11086,"end":11156,"name":"tag","value":"81"},{"begin":11086,"end":11156,"name":"JUMPDEST"},{"begin":11186,"end":11222,"name":"PUSH [tag]","value":"82"},{"begin":11198,"end":11207,"name":"DUP6"},{"begin":11209,"end":11221,"name":"DUP6"},{"begin":11186,"end":11197,"name":"PUSH [tag]","value":"76"},{"begin":11186,"end":11222,"name":"JUMP","value":"[in]"},{"begin":11186,"end":11222,"name":"tag","value":"82"},{"begin":11186,"end":11222,"name":"JUMPDEST"},{"begin":11166,"end":11222,"name":"SWAP1"},{"begin":11166,"end":11222,"name":"SWAP3"},{"begin":-1,"end":-1,"name":"POP"},{"begin":11166,"end":11222,"name":"SWAP1"},{"begin":-1,"end":-1,"name":"POP"},{"begin":11247,"end":11248,"name":"PUSH","value":"1"},{"begin":11236,"end":11248,"name":"DUP3"},{"begin":11236,"end":11248,"name":"EQ"},{"begin":11236,"end":11263,"name":"DUP1"},{"begin":11236,"end":11263,"name":"ISZERO"},{"begin":11236,"end":11263,"name":"PUSH [tag]","value":"83"},{"begin":11236,"end":11263,"name":"JUMPI"},{"begin":11236,"end":11263,"name":"POP"},{"begin":11252,"end":11258,"name":"DUP1"},{"begin":11262,"end":11263,"name":"PUSH","value":"1"},{"begin":11252,"end":11263,"name":"EQ"},{"begin":11236,"end":11263,"name":"tag","value":"83"},{"begin":11236,"end":11263,"name":"JUMPDEST"},{"begin":11232,"end":11301,"name":"ISZERO"},{"begin":11232,"end":11301,"name":"PUSH [tag]","value":"84"},{"begin":11232,"end":11301,"name":"JUMPI"},{"begin":11286,"end":11290,"name":"PUSH","value":"1"},{"begin":11279,"end":11290,"name":"SWAP3"},{"begin":11279,"end":11290,"name":"POP"},{"begin":11279,"end":11290,"name":"POP"},{"begin":11279,"end":11290,"name":"POP"},{"begin":11279,"end":11290,"name":"PUSH [tag]","value":"61"},{"begin":11279,"end":11290,"name":"JUMP"},{"begin":11232,"end":11301,"name":"tag","value":"84"},{"begin":11232,"end":11301,"name":"JUMPDEST"},{"begin":-1,"end":-1,"name":"POP"},{"begin":11317,"end":11322,"name":"PUSH","value":"0"},{"begin":11317,"end":11322,"name":"SWAP5"},{"begin":10711,"end":11329,"name":"SWAP4"},{"begin":-1,"end":-1,"name":"POP"},{"begin":-1,"end":-1,"name":"POP"},{"begin":-1,"end":-1,"name":"POP"},{"begin":-1,"end":-1,"name":"POP"},{"begin":10711,"end":11329,"name":"JUMP","value":"[out]"},{"begin":10077,"end":10393,"name":"tag","value":"38"},{"begin":10077,"end":10393,"name":"JUMPDEST"},{"begin":-1,"end":-1,"name":"PUSH","value":"1"},{"begin":-1,"end":-1,"name":"PUSH","value":"A0"},{"begin":-1,"end":-1,"name":"PUSH","value":"2"},{"begin":-1,"end":-1,"name":"EXP"},{"begin":-1,"end":-1,"name":"SUB"},{"begin":10194,"end":10217,"name":"DUP3"},{"begin":10194,"end":10217,"name":"AND"},{"begin":10173,"end":10177,"name":"PUSH","value":"0"},{"begin":10194,"end":10217,"name":"SWAP1"},{"begin":10194,"end":10217,"name":"DUP2"},{"begin":10194,"end":10217,"name":"MSTORE"},{"begin":10194,"end":10206,"name":"PUSH","value":"2"},{"begin":10194,"end":10217,"name":"PUSH","value":"20"},{"begin":10194,"end":10217,"name":"SWAP1"},{"begin":10194,"end":10217,"name":"DUP2"},{"begin":10194,"end":10217,"name":"MSTORE"},{"begin":10194,"end":10217,"name":"PUSH","value":"40"},{"begin":10194,"end":10217,"name":"DUP1"},{"begin":10194,"end":10217,"name":"DUP4"},{"begin":10194,"end":10217,"name":"KECCAK256"},{"begin":-1,"end":-1,"name":"PUSH","value":"1"},{"begin":-1,"end":-1,"name":"PUSH","value":"E0"},{"begin":-1,"end":-1,"name":"PUSH","value":"2"},{"begin":-1,"end":-1,"name":"EXP"},{"begin":-1,"end":-1,"name":"SUB"},{"begin":-1,"end":-1,"name":"NOT"},{"begin":10194,"end":10231,"name":"DUP6"},{"begin":10194,"end":10231,"name":"AND"},{"begin":10194,"end":10231,"name":"DUP5"},{"begin":10194,"end":10231,"name":"MSTORE"},{"begin":10194,"end":10231,"name":"SWAP1"},{"begin":10194,"end":10231,"name":"SWAP2"},{"begin":10194,"end":10231,"name":"MSTORE"},{"begin":10194,"end":10231,"name":"DUP2"},{"begin":10194,"end":10231,"name":"KECCAK256"},{"begin":10194,"end":10231,"name":"SLOAD"},{"begin":10194,"end":10231,"name":"PUSH","value":"FF"},{"begin":10194,"end":10231,"name":"AND"},{"begin":10193,"end":10231,"name":"ISZERO"},{"begin":10189,"end":10322,"name":"ISZERO"},{"begin":10189,"end":10322,"name":"PUSH [tag]","value":"86"},{"begin":10189,"end":10322,"name":"JUMPI"},{"begin":10254,"end":10311,"name":"PUSH [tag]","value":"87"},{"begin":10287,"end":10296,"name":"DUP4"},{"begin":10298,"end":10310,"name":"DUP4"},{"begin":10254,"end":10286,"name":"PUSH [tag]","value":"35"},{"begin":10254,"end":10311,"name":"JUMP","value":"[in]"},{"begin":10254,"end":10311,"name":"tag","value":"87"},{"begin":10254,"end":10311,"name":"JUMPDEST"},{"begin":10247,"end":10311,"name":"SWAP1"},{"begin":10247,"end":10311,"name":"POP"},{"begin":10247,"end":10311,"name":"PUSH [tag]","value":"61"},{"begin":10247,"end":10311,"name":"JUMP"},{"begin":10189,"end":10322,"name":"tag","value":"86"},{"begin":10189,"end":10322,"name":"JUMPDEST"},{"begin":-1,"end":-1,"name":"POP"},{"begin":-1,"end":-1,"name":"PUSH","value":"1"},{"begin":-1,"end":-1,"name":"PUSH","value":"A0"},{"begin":-1,"end":-1,"name":"PUSH","value":"2"},{"begin":-1,"end":-1,"name":"EXP"},{"begin":-1,"end":-1,"name":"SUB"},{"begin":10338,"end":10386,"name":"DUP1"},{"begin":10338,"end":10386,"name":"DUP4"},{"begin":10338,"end":10386,"name":"AND"},{"begin":10338,"end":10348,"name":"PUSH","value":"0"},{"begin":10338,"end":10359,"name":"DUP2"},{"begin":10338,"end":10359,"name":"DUP2"},{"begin":10338,"end":10359,"name":"MSTORE"},{"begin":10338,"end":10359,"name":"PUSH","value":"20"},{"begin":10338,"end":10359,"name":"DUP2"},{"begin":10338,"end":10359,"name":"DUP2"},{"begin":10338,"end":10359,"name":"MSTORE"},{"begin":10338,"end":10359,"name":"PUSH","value":"40"},{"begin":10338,"end":10359,"name":"DUP1"},{"begin":10338,"end":10359,"name":"DUP4"},{"begin":10338,"end":10359,"name":"KECCAK256"},{"begin":-1,"end":-1,"name":"PUSH","value":"1"},{"begin":-1,"end":-1,"name":"PUSH","value":"E0"},{"begin":-1,"end":-1,"name":"PUSH","value":"2"},{"begin":-1,"end":-1,"name":"EXP"},{"begin":-1,"end":-1,"name":"SUB"},{"begin":-1,"end":-1,"name":"NOT"},{"begin":10338,"end":10373,"name":"DUP8"},{"begin":10338,"end":10373,"name":"AND"},{"begin":10338,"end":10373,"name":"DUP5"},{"begin":10338,"end":10373,"name":"MSTORE"},{"begin":10338,"end":10373,"name":"SWAP1"},{"begin":10338,"end":10373,"name":"SWAP2"},{"begin":10338,"end":10373,"name":"MSTORE"},{"begin":10338,"end":10373,"name":"SWAP1"},{"begin":10338,"end":10373,"name":"KECCAK256"},{"begin":10338,"end":10373,"name":"SLOAD"},{"begin":10338,"end":10373,"name":"SWAP1"},{"begin":10338,"end":10373,"name":"SWAP2"},{"begin":10338,"end":10373,"name":"AND"},{"begin":10338,"end":10386,"name":"EQ"},{"begin":10077,"end":10393,"name":"SWAP3"},{"begin":10077,"end":10393,"name":"SWAP2"},{"begin":10077,"end":10393,"name":"POP"},{"begin":10077,"end":10393,"name":"POP"},{"begin":10077,"end":10393,"name":"JUMP","value":"[out]"},{"begin":11584,"end":11776,"name":"tag","value":"45"},{"begin":11584,"end":11776,"name":"JUMPDEST"},{"begin":11698,"end":11764,"name":"PUSH","value":"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"},{"begin":11681,"end":11764,"name":"AND"},{"begin":11681,"end":11769,"name":"ISZERO"},{"begin":11681,"end":11769,"name":"SWAP1"},{"begin":11584,"end":11776,"name":"JUMP","value":"[out]"},{"begin":11870,"end":12935,"name":"tag","value":"76"},{"begin":11870,"end":12935,"name":"JUMPDEST"},{"begin":12084,"end":12088,"name":"PUSH","value":"40"},{"begin":12078,"end":12089,"name":"MLOAD"},{"begin":12027,"end":12035,"name":"PUSH","value":"1FFC9A700000000000000000000000000000000000000000000000000000000"},{"begin":12175,"end":12194,"name":"DUP1"},{"begin":12175,"end":12194,"name":"DUP3"},{"begin":12175,"end":12194,"name":"MSTORE"},{"begin":12285,"end":12289,"name":"PUSH","value":"4"},{"begin":12278,"end":12290,"name":"DUP3"},{"begin":12278,"end":12290,"name":"ADD"},{"begin":12271,"end":12305,"name":"DUP4"},{"begin":12271,"end":12305,"name":"SWAP1"},{"begin":12271,"end":12305,"name":"MSTORE"},{"begin":11962,"end":11977,"name":"PUSH","value":"0"},{"begin":11962,"end":11977,"name":"SWAP2"},{"begin":11962,"end":11977,"name":"DUP3"},{"begin":11962,"end":11977,"name":"SWAP2"},{"begin":12027,"end":12035,"name":"SWAP1"},{"begin":12779,"end":12783,"name":"PUSH","value":"20"},{"begin":12078,"end":12089,"name":"DUP2"},{"begin":12607,"end":12611,"name":"PUSH","value":"24"},{"begin":12078,"end":12089,"name":"DUP2"},{"begin":12467,"end":12476,"name":"DUP10"},{"begin":12409,"end":12414,"name":"PUSH","value":"7530"},{"begin":12381,"end":12852,"name":"STATICCALL"},{"begin":12876,"end":12884,"name":"SWAP1"},{"begin":12876,"end":12884,"name":"MLOAD"},{"begin":12370,"end":12852,"name":"SWAP1"},{"begin":12370,"end":12852,"name":"SWAP7"},{"begin":12876,"end":12884,"name":"SWAP1"},{"begin":12876,"end":12884,"name":"SWAP6"},{"begin":-1,"end":-1,"name":"POP"},{"begin":12055,"end":12929,"name":"SWAP4"},{"begin":-1,"end":-1,"name":"POP"},{"begin":-1,"end":-1,"name":"POP"},{"begin":-1,"end":-1,"name":"POP"},{"begin":-1,"end":-1,"name":"POP"},{"begin":12055,"end":12929,"name":"JUMP","value":"[out]"}]}}},"bin":"608060405234801561001057600080fd5b506109c5806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a5576000357c010000000000000000000000000000000000000000000000000000000090048063a41e7d5111610078578063a41e7d51146101d4578063aabbb8ca1461020a578063b705676514610236578063f712f3e814610280576100a5565b806329965a1d146100aa5780633d584063146100e25780635df8122f1461012457806365ba36c114610152575b600080fd5b6100e0600480360360608110156100c057600080fd5b50600160a060020a038135811691602081013591604090910135166102b6565b005b610108600480360360208110156100f857600080fd5b5035600160a060020a0316610570565b60408051600160a060020a039092168252519081900360200190f35b6100e06004803603604081101561013a57600080fd5b50600160a060020a03813581169160200135166105bc565b6101c26004803603602081101561016857600080fd5b81019060208101813564010000000081111561018357600080fd5b82018360208201111561019557600080fd5b803590602001918460018302840111640100000000831117156101b757600080fd5b5090925090506106b3565b60408051918252519081900360200190f35b6100e0600480360360408110156101ea57600080fd5b508035600160a060020a03169060200135600160e060020a0319166106ee565b6101086004803603604081101561022057600080fd5b50600160a060020a038135169060200135610778565b61026c6004803603604081101561024c57600080fd5b508035600160a060020a03169060200135600160e060020a0319166107ef565b604080519115158252519081900360200190f35b61026c6004803603604081101561029657600080fd5b508035600160a060020a03169060200135600160e060020a0319166108aa565b6000600160a060020a038416156102cd57836102cf565b335b9050336102db82610570565b600160a060020a031614610339576040805160e560020a62461bcd02815260206004820152600f60248201527f4e6f7420746865206d616e616765720000000000000000000000000000000000604482015290519081900360640190fd5b6103428361092a565b15610397576040805160e560020a62461bcd02815260206004820152601a60248201527f4d757374206e6f7420626520616e204552433136352068617368000000000000604482015290519081900360640190fd5b600160a060020a038216158015906103b85750600160a060020a0382163314155b156104ff5760405160200180807f455243313832305f4143434550545f4d4147494300000000000000000000000081525060140190506040516020818303038152906040528051906020012082600160a060020a031663249cb3fa85846040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083815260200182600160a060020a0316600160a060020a031681526020019250505060206040518083038186803b15801561047e57600080fd5b505afa158015610492573d6000803e3d6000fd5b505050506040513d60208110156104a857600080fd5b5051146104ff576040805160e560020a62461bcd02815260206004820181905260248201527f446f6573206e6f7420696d706c656d656e742074686520696e74657266616365604482015290519081900360640190fd5b600160a060020a03818116600081815260208181526040808320888452909152808220805473ffffffffffffffffffffffffffffffffffffffff19169487169485179055518692917f93baa6efbd2244243bfee6ce4cfdd1d04fc4c0e9a786abd3a41313bd352db15391a450505050565b600160a060020a03818116600090815260016020526040812054909116151561059a5750806105b7565b50600160a060020a03808216600090815260016020526040902054165b919050565b336105c683610570565b600160a060020a031614610624576040805160e560020a62461bcd02815260206004820152600f60248201527f4e6f7420746865206d616e616765720000000000000000000000000000000000604482015290519081900360640190fd5b81600160a060020a031681600160a060020a0316146106435780610646565b60005b600160a060020a03838116600081815260016020526040808220805473ffffffffffffffffffffffffffffffffffffffff19169585169590951790945592519184169290917f605c2dbf762e5f7d60a546d42e7205dcb1b011ebc62a61736a57c9089d3a43509190a35050565b600082826040516020018083838082843780830192505050925050506040516020818303038152906040528051906020012090505b92915050565b6106f882826107ef565b610703576000610705565b815b600160a060020a03928316600081815260208181526040808320600160e060020a031996909616808452958252808320805473ffffffffffffffffffffffffffffffffffffffff19169590971694909417909555908152600284528181209281529190925220805460ff19166001179055565b600080600160a060020a038416156107905783610792565b335b905061079d8361092a565b156107c357826107ad82826108aa565b6107b85760006107ba565b815b925050506106e8565b600160a060020a0390811660009081526020818152604080832086845290915290205416905092915050565b6000808061081d857f01ffc9a70000000000000000000000000000000000000000000000000000000061094c565b909250905081158061082d575080155b1561083d576000925050506106e8565b61084f85600160e060020a031961094c565b909250905081158061086057508015155b15610870576000925050506106e8565b61087a858561094c565b909250905060018214801561088f5750806001145b1561089f576001925050506106e8565b506000949350505050565b600160a060020a0382166000908152600260209081526040808320600160e060020a03198516845290915281205460ff1615156108f2576108eb83836107ef565b90506106e8565b50600160a060020a03808316600081815260208181526040808320600160e060020a0319871684529091529020549091161492915050565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff161590565b6040517f01ffc9a7000000000000000000000000000000000000000000000000000000008082526004820183905260009182919060208160248189617530fa90519096909550935050505056fea165627a7a72305820377f4a2d4301ede9949f163f319021a6e9c687c292a5e2b2c4734c126b524e6c0029","devdoc":"{\"author\":\"Jordi Baylina and Jacques Dafflon\",\"methods\":{\"getInterfaceImplementer(address,bytes32)\":{\"params\":{\"_addr\":\"Address being queried for the implementer of an interface. (If '_addr' is the zero address then 'msg.sender' is assumed.)\",\"_interfaceHash\":\"Keccak256 hash of the name of the interface as a string. E.g., 'web3.utils.keccak256(\\\"ERC777TokensRecipient\\\")' for the 'ERC777TokensRecipient' interface.\"},\"return\":\"The address of the contract which implements the interface '_interfaceHash' for '_addr' or '0' if '_addr' did not register an implementer for this interface.\"},\"getManager(address)\":{\"params\":{\"_addr\":\"Address for which to return the manager.\"},\"return\":\"Address of the manager for a given address.\"},\"implementsERC165Interface(address,bytes4)\":{\"params\":{\"_contract\":\"Address of the contract to check.\",\"_interfaceId\":\"ERC165 interface to check.\"},\"return\":\"True if '_contract' implements '_interfaceId', false otherwise.\"},\"implementsERC165InterfaceNoCache(address,bytes4)\":{\"params\":{\"_contract\":\"Address of the contract to check.\",\"_interfaceId\":\"ERC165 interface to check.\"},\"return\":\"True if '_contract' implements '_interfaceId', false otherwise.\"},\"interfaceHash(string)\":{\"params\":{\"_interfaceName\":\"Name of the interface.\"},\"return\":\"The keccak256 hash of an interface name.\"},\"setInterfaceImplementer(address,bytes32,address)\":{\"params\":{\"_addr\":\"Address for which to set the interface. (If '_addr' is the zero address then 'msg.sender' is assumed.)\",\"_implementer\":\"Contract address implementing '_interfaceHash' for '_addr'.\",\"_interfaceHash\":\"Keccak256 hash of the name of the interface as a string. E.g., 'web3.utils.keccak256(\\\"ERC777TokensRecipient\\\")' for the 'ERC777TokensRecipient' interface.\"}},\"setManager(address,address)\":{\"params\":{\"_addr\":\"Address for which to set the new manager.\",\"_newManager\":\"Address of the new manager for 'addr'. (Pass '0x0' to reset the manager to '_addr'.)\"}},\"updateERC165Cache(address,bytes4)\":{\"params\":{\"_contract\":\"Address of the contract for which to update the cache.\",\"_interfaceId\":\"ERC165 interface for which to update the cache.\"}}},\"title\":\"ERC1820 Pseudo-introspection Registry Contract\"}","hashes":{"getInterfaceImplementer(address,bytes32)":"aabbb8ca","getManager(address)":"3d584063","implementsERC165Interface(address,bytes4)":"f712f3e8","implementsERC165InterfaceNoCache(address,bytes4)":"b7056765","interfaceHash(string)":"65ba36c1","setInterfaceImplementer(address,bytes32,address)":"29965a1d","setManager(address,address)":"5df8122f","updateERC165Cache(address,bytes4)":"a41e7d51"},"metadata":"{\"compiler\":{\"version\":\"0.5.3+commit.10d17f24\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"name\":\"_addr\",\"type\":\"address\"},{\"name\":\"_interfaceHash\",\"type\":\"bytes32\"},{\"name\":\"_implementer\",\"type\":\"address\"}],\"name\":\"setInterfaceImplementer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_addr\",\"type\":\"address\"}],\"name\":\"getManager\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_addr\",\"type\":\"address\"},{\"name\":\"_newManager\",\"type\":\"address\"}],\"name\":\"setManager\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_interfaceName\",\"type\":\"string\"}],\"name\":\"interfaceHash\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_contract\",\"type\":\"address\"},{\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"updateERC165Cache\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_addr\",\"type\":\"address\"},{\"name\":\"_interfaceHash\",\"type\":\"bytes32\"}],\"name\":\"getInterfaceImplementer\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_contract\",\"type\":\"address\"},{\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"implementsERC165InterfaceNoCache\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_contract\",\"type\":\"address\"},{\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"implementsERC165Interface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"addr\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"interfaceHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"name\":\"implementer\",\"type\":\"address\"}],\"name\":\"InterfaceImplementerSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"addr\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newManager\",\"type\":\"address\"}],\"name\":\"ManagerChanged\",\"type\":\"event\"}],\"devdoc\":{\"author\":\"Jordi Baylina and Jacques Dafflon\",\"methods\":{\"getInterfaceImplementer(address,bytes32)\":{\"params\":{\"_addr\":\"Address being queried for the implementer of an interface. (If '_addr' is the zero address then 'msg.sender' is assumed.)\",\"_interfaceHash\":\"Keccak256 hash of the name of the interface as a string. E.g., 'web3.utils.keccak256(\\\"ERC777TokensRecipient\\\")' for the 'ERC777TokensRecipient' interface.\"},\"return\":\"The address of the contract which implements the interface '_interfaceHash' for '_addr' or '0' if '_addr' did not register an implementer for this interface.\"},\"getManager(address)\":{\"params\":{\"_addr\":\"Address for which to return the manager.\"},\"return\":\"Address of the manager for a given address.\"},\"implementsERC165Interface(address,bytes4)\":{\"params\":{\"_contract\":\"Address of the contract to check.\",\"_interfaceId\":\"ERC165 interface to check.\"},\"return\":\"True if '_contract' implements '_interfaceId', false otherwise.\"},\"implementsERC165InterfaceNoCache(address,bytes4)\":{\"params\":{\"_contract\":\"Address of the contract to check.\",\"_interfaceId\":\"ERC165 interface to check.\"},\"return\":\"True if '_contract' implements '_interfaceId', false otherwise.\"},\"interfaceHash(string)\":{\"params\":{\"_interfaceName\":\"Name of the interface.\"},\"return\":\"The keccak256 hash of an interface name.\"},\"setInterfaceImplementer(address,bytes32,address)\":{\"params\":{\"_addr\":\"Address for which to set the interface. (If '_addr' is the zero address then 'msg.sender' is assumed.)\",\"_implementer\":\"Contract address implementing '_interfaceHash' for '_addr'.\",\"_interfaceHash\":\"Keccak256 hash of the name of the interface as a string. E.g., 'web3.utils.keccak256(\\\"ERC777TokensRecipient\\\")' for the 'ERC777TokensRecipient' interface.\"}},\"setManager(address,address)\":{\"params\":{\"_addr\":\"Address for which to set the new manager.\",\"_newManager\":\"Address of the new manager for 'addr'. (Pass '0x0' to reset the manager to '_addr'.)\"}},\"updateERC165Cache(address,bytes4)\":{\"params\":{\"_contract\":\"Address of the contract for which to update the cache.\",\"_interfaceId\":\"ERC165 interface for which to update the cache.\"}}},\"title\":\"ERC1820 Pseudo-introspection Registry Contract\"},\"userdoc\":{\"methods\":{\"getInterfaceImplementer(address,bytes32)\":{\"notice\":\"Query if an address implements an interface and through which contract.\"},\"getManager(address)\":{\"notice\":\"Get the manager of an address.\"},\"implementsERC165InterfaceNoCache(address,bytes4)\":{\"notice\":\"Checks whether a contract implements an ERC165 interface or not without using nor updating the cache.\"},\"interfaceHash(string)\":{\"notice\":\"Compute the keccak256 hash of an interface given its name.\"},\"setInterfaceImplementer(address,bytes32,address)\":{\"notice\":\"Sets the contract which implements a specific interface for an address. Only the manager defined for that address can set it. (Each address is the manager for itself until it sets a new manager.)\"},\"setManager(address,address)\":{\"notice\":\"Sets '_newManager' as manager for '_addr'. The new manager will be able to call 'setInterfaceImplementer' for '_addr'.\"},\"updateERC165Cache(address,bytes4)\":{\"notice\":\"Updates the cache with whether the contract implements an ERC165 interface or not.\"}},\"notice\":\"This contract is the official implementation of the ERC1820 Registry.For more details, see https://eips.ethereum.org/EIPS/eip-1820\"}},\"settings\":{\"compilationTarget\":{\"./contracts/ERC1820Registry.sol\":\"ERC1820Registry\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"./contracts/ERC1820Registry.sol\":{\"content\":\"/* ERC1820 Pseudo-introspection Registry Contract\\n * This standard defines a universal registry smart contract where any address (contract or regular account) can\\n * register which interface it supports and which smart contract is responsible for its implementation.\\n *\\n * Written in 2019 by Jordi Baylina and Jacques Dafflon\\n *\\n * To the extent possible under law, the author(s) have dedicated all copyright and related and neighboring rights to\\n * this software to the public domain worldwide. This software is distributed without any warranty.\\n *\\n * You should have received a copy of the CC0 Public Domain Dedication along with this software. If not, see\\n * <http://creativecommons.org/publicdomain/zero/1.0/>.\\n *\\n *    \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2557\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2557  \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2557 \\u2588\\u2588\\u2557 \\u2588\\u2588\\u2588\\u2588\\u2588\\u2557 \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2557  \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2557\\n *    \\u2588\\u2588\\u2554\\u2550\\u2550\\u2550\\u2550\\u255d\\u2588\\u2588\\u2554\\u2550\\u2550\\u2588\\u2588\\u2557\\u2588\\u2588\\u2554\\u2550\\u2550\\u2550\\u2550\\u255d\\u2588\\u2588\\u2588\\u2551\\u2588\\u2588\\u2554\\u2550\\u2550\\u2588\\u2588\\u2557\\u255a\\u2550\\u2550\\u2550\\u2550\\u2588\\u2588\\u2557\\u2588\\u2588\\u2554\\u2550\\u2588\\u2588\\u2588\\u2588\\u2557\\n *    \\u2588\\u2588\\u2588\\u2588\\u2588\\u2557  \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2554\\u255d\\u2588\\u2588\\u2551     \\u255a\\u2588\\u2588\\u2551\\u255a\\u2588\\u2588\\u2588\\u2588\\u2588\\u2554\\u255d \\u2588\\u2588\\u2588\\u2588\\u2588\\u2554\\u255d\\u2588\\u2588\\u2551\\u2588\\u2588\\u2554\\u2588\\u2588\\u2551\\n *    \\u2588\\u2588\\u2554\\u2550\\u2550\\u255d  \\u2588\\u2588\\u2554\\u2550\\u2550\\u2588\\u2588\\u2557\\u2588\\u2588\\u2551      \\u2588\\u2588\\u2551\\u2588\\u2588\\u2554\\u2550\\u2550\\u2588\\u2588\\u2557\\u2588\\u2588\\u2554\\u2550\\u2550\\u2550\\u255d \\u2588\\u2588\\u2588\\u2588\\u2554\\u255d\\u2588\\u2588\\u2551\\n *    \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2557\\u2588\\u2588\\u2551  \\u2588\\u2588\\u2551\\u255a\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2557 \\u2588\\u2588\\u2551\\u255a\\u2588\\u2588\\u2588\\u2588\\u2588\\u2554\\u255d\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2557\\u255a\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2554\\u255d\\n *    \\u255a\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u255d\\u255a\\u2550\\u255d  \\u255a\\u2550\\u255d \\u255a\\u2550\\u2550\\u2550\\u2550\\u2550\\u255d \\u255a\\u2550\\u255d \\u255a\\u2550\\u2550\\u2550\\u2550\\u255d \\u255a\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u255d \\u255a\\u2550\\u2550\\u2550\\u2550\\u2550\\u255d\\n *\\n *    \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2557 \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2557 \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2557 \\u2588\\u2588\\u2557\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2557\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2557\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2557 \\u2588\\u2588\\u2557   \\u2588\\u2588\\u2557\\n *    \\u2588\\u2588\\u2554\\u2550\\u2550\\u2588\\u2588\\u2557\\u2588\\u2588\\u2554\\u2550\\u2550\\u2550\\u2550\\u255d\\u2588\\u2588\\u2554\\u2550\\u2550\\u2550\\u2550\\u255d \\u2588\\u2588\\u2551\\u2588\\u2588\\u2554\\u2550\\u2550\\u2550\\u2550\\u255d\\u255a\\u2550\\u2550\\u2588\\u2588\\u2554\\u2550\\u2550\\u255d\\u2588\\u2588\\u2554\\u2550\\u2550\\u2588\\u2588\\u2557\\u255a\\u2588\\u2588\\u2557 \\u2588\\u2588\\u2554\\u255d\\n *    \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2554\\u255d\\u2588\\u2588\\u2588\\u2588\\u2588\\u2557  \\u2588\\u2588\\u2551  \\u2588\\u2588\\u2588\\u2557\\u2588\\u2588\\u2551\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2557   \\u2588\\u2588\\u2551   \\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2554\\u255d \\u255a\\u2588\\u2588\\u2588\\u2588\\u2554\\u255d\\n *    \\u2588\\u2588\\u2554\\u2550\\u2550\\u2588\\u2588\\u2557\\u2588\\u2588\\u2554\\u2550\\u2550\\u255d  \\u2588\\u2588\\u2551   \\u2588\\u2588\\u2551\\u2588\\u2588\\u2551\\u255a\\u2550\\u2550\\u2550\\u2550\\u2588\\u2588\\u2551   \\u2588\\u2588\\u2551   \\u2588\\u2588\\u2554\\u2550\\u2550\\u2588\\u2588\\u2557  \\u255a\\u2588\\u2588\\u2554\\u255d\\n *    \\u2588\\u2588\\u2551  \\u2588\\u2588\\u2551\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2557\\u255a\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2554\\u255d\\u2588\\u2588\\u2551\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2551   \\u2588\\u2588\\u2551   \\u2588\\u2588\\u2551  \\u2588\\u2588\\u2551   \\u2588\\u2588\\u2551\\n *    \\u255a\\u2550\\u255d  \\u255a\\u2550\\u255d\\u255a\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u255d \\u255a\\u2550\\u2550\\u2550\\u2550\\u2550\\u255d \\u255a\\u2550\\u255d\\u255a\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u255d   \\u255a\\u2550\\u255d   \\u255a\\u2550\\u255d  \\u255a\\u2550\\u255d   \\u255a\\u2550\\u255d\\n *\\n */\\npragma solidity 0.5.3;\\n// IV is value needed to have a vanity address starting with '0x1820'.\\n// IV: 53759\\n\\n/// @dev The interface a contract MUST implement if it is the implementer of\\n/// some (other) interface for any address other than itself.\\ninterface ERC1820ImplementerInterface {\\n    /// @notice Indicates whether the contract implements the interface 'interfaceHash' for the address 'addr' or not.\\n    /// @param interfaceHash keccak256 hash of the name of the interface\\n    /// @param addr Address for which the contract will implement the interface\\n    /// @return ERC1820_ACCEPT_MAGIC only if the contract implements 'interfaceHash' for the address 'addr'.\\n    function canImplementInterfaceForAddress(bytes32 interfaceHash, address addr) external view returns(bytes32);\\n}\\n\\n\\n/// @title ERC1820 Pseudo-introspection Registry Contract\\n/// @author Jordi Baylina and Jacques Dafflon\\n/// @notice This contract is the official implementation of the ERC1820 Registry.\\n/// @notice For more details, see https://eips.ethereum.org/EIPS/eip-1820\\ncontract ERC1820Registry {\\n    /// @notice ERC165 Invalid ID.\\n    bytes4 constant internal INVALID_ID = 0xffffffff;\\n    /// @notice Method ID for the ERC165 supportsInterface method (= `bytes4(keccak256('supportsInterface(bytes4)'))`).\\n    bytes4 constant internal ERC165ID = 0x01ffc9a7;\\n    /// @notice Magic value which is returned if a contract implements an interface on behalf of some other address.\\n    bytes32 constant internal ERC1820_ACCEPT_MAGIC = keccak256(abi.encodePacked(\\\"ERC1820_ACCEPT_MAGIC\\\"));\\n\\n    /// @notice mapping from addresses and interface hashes to their implementers.\\n    mapping(address => mapping(bytes32 => address)) internal interfaces;\\n    /// @notice mapping from addresses to their manager.\\n    mapping(address => address) internal managers;\\n    /// @notice flag for each address and erc165 interface to indicate if it is cached.\\n    mapping(address => mapping(bytes4 => bool)) internal erc165Cached;\\n\\n    /// @notice Indicates a contract is the 'implementer' of 'interfaceHash' for 'addr'.\\n    event InterfaceImplementerSet(address indexed addr, bytes32 indexed interfaceHash, address indexed implementer);\\n    /// @notice Indicates 'newManager' is the address of the new manager for 'addr'.\\n    event ManagerChanged(address indexed addr, address indexed newManager);\\n\\n    /// @notice Query if an address implements an interface and through which contract.\\n    /// @param _addr Address being queried for the implementer of an interface.\\n    /// (If '_addr' is the zero address then 'msg.sender' is assumed.)\\n    /// @param _interfaceHash Keccak256 hash of the name of the interface as a string.\\n    /// E.g., 'web3.utils.keccak256(\\\"ERC777TokensRecipient\\\")' for the 'ERC777TokensRecipient' interface.\\n    /// @return The address of the contract which implements the interface '_interfaceHash' for '_addr'\\n    /// or '0' if '_addr' did not register an implementer for this interface.\\n    function getInterfaceImplementer(address _addr, bytes32 _interfaceHash) external view returns (address) {\\n        address addr = _addr == address(0) ? msg.sender : _addr;\\n        if (isERC165Interface(_interfaceHash)) {\\n            bytes4 erc165InterfaceHash = bytes4(_interfaceHash);\\n            return implementsERC165Interface(addr, erc165InterfaceHash) ? addr : address(0);\\n        }\\n        return interfaces[addr][_interfaceHash];\\n    }\\n\\n    /// @notice Sets the contract which implements a specific interface for an address.\\n    /// Only the manager defined for that address can set it.\\n    /// (Each address is the manager for itself until it sets a new manager.)\\n    /// @param _addr Address for which to set the interface.\\n    /// (If '_addr' is the zero address then 'msg.sender' is assumed.)\\n    /// @param _interfaceHash Keccak256 hash of the name of the interface as a string.\\n    /// E.g., 'web3.utils.keccak256(\\\"ERC777TokensRecipient\\\")' for the 'ERC777TokensRecipient' interface.\\n    /// @param _implementer Contract address implementing '_interfaceHash' for '_addr'.\\n    function setInterfaceImplementer(address _addr, bytes32 _interfaceHash, address _implementer) external {\\n        address addr = _addr == address(0) ? msg.sender : _addr;\\n        require(getManager(addr) == msg.sender, \\\"Not the manager\\\");\\n\\n        require(!isERC165Interface(_interfaceHash), \\\"Must not be an ERC165 hash\\\");\\n        if (_implementer != address(0) && _implementer != msg.sender) {\\n            require(\\n                ERC1820ImplementerInterface(_implementer)\\n                    .canImplementInterfaceForAddress(_interfaceHash, addr) == ERC1820_ACCEPT_MAGIC,\\n                \\\"Does not implement the interface\\\"\\n            );\\n        }\\n        interfaces[addr][_interfaceHash] = _implementer;\\n        emit InterfaceImplementerSet(addr, _interfaceHash, _implementer);\\n    }\\n\\n    /// @notice Sets '_newManager' as manager for '_addr'.\\n    /// The new manager will be able to call 'setInterfaceImplementer' for '_addr'.\\n    /// @param _addr Address for which to set the new manager.\\n    /// @param _newManager Address of the new manager for 'addr'. (Pass '0x0' to reset the manager to '_addr'.)\\n    function setManager(address _addr, address _newManager) external {\\n        require(getManager(_addr) == msg.sender, \\\"Not the manager\\\");\\n        managers[_addr] = _newManager == _addr ? address(0) : _newManager;\\n        emit ManagerChanged(_addr, _newManager);\\n    }\\n\\n    /// @notice Get the manager of an address.\\n    /// @param _addr Address for which to return the manager.\\n    /// @return Address of the manager for a given address.\\n    function getManager(address _addr) public view returns(address) {\\n        // By default the manager of an address is the same address\\n        if (managers[_addr] == address(0)) {\\n            return _addr;\\n        } else {\\n            return managers[_addr];\\n        }\\n    }\\n\\n    /// @notice Compute the keccak256 hash of an interface given its name.\\n    /// @param _interfaceName Name of the interface.\\n    /// @return The keccak256 hash of an interface name.\\n    function interfaceHash(string calldata _interfaceName) external pure returns(bytes32) {\\n        return keccak256(abi.encodePacked(_interfaceName));\\n    }\\n\\n    /* --- ERC165 Related Functions --- */\\n    /* --- Developed in collaboration with William Entriken. --- */\\n\\n    /// @notice Updates the cache with whether the contract implements an ERC165 interface or not.\\n    /// @param _contract Address of the contract for which to update the cache.\\n    /// @param _interfaceId ERC165 interface for which to update the cache.\\n    function updateERC165Cache(address _contract, bytes4 _interfaceId) external {\\n        interfaces[_contract][_interfaceId] = implementsERC165InterfaceNoCache(\\n            _contract, _interfaceId) ? _contract : address(0);\\n        erc165Cached[_contract][_interfaceId] = true;\\n    }\\n\\n    /// @notice Checks whether a contract implements an ERC165 interface or not.\\n    //  If the result is not cached a direct lookup on the contract address is performed.\\n    //  If the result is not cached or the cached value is out-of-date, the cache MUST be updated manually by calling\\n    //  'updateERC165Cache' with the contract address.\\n    /// @param _contract Address of the contract to check.\\n    /// @param _interfaceId ERC165 interface to check.\\n    /// @return True if '_contract' implements '_interfaceId', false otherwise.\\n    function implementsERC165Interface(address _contract, bytes4 _interfaceId) public view returns (bool) {\\n        if (!erc165Cached[_contract][_interfaceId]) {\\n            return implementsERC165InterfaceNoCache(_contract, _interfaceId);\\n        }\\n        return interfaces[_contract][_interfaceId] == _contract;\\n    }\\n\\n    /// @notice Checks whether a contract implements an ERC165 interface or not without using nor updating the cache.\\n    /// @param _contract Address of the contract to check.\\n    /// @param _interfaceId ERC165 interface to check.\\n    /// @return True if '_contract' implements '_interfaceId', false otherwise.\\n    function implementsERC165InterfaceNoCache(address _contract, bytes4 _interfaceId) public view returns (bool) {\\n        uint256 success;\\n        uint256 result;\\n\\n        (success, result) = noThrowCall(_contract, ERC165ID);\\n        if (success == 0 || result == 0) {\\n            return false;\\n        }\\n\\n        (success, result) = noThrowCall(_contract, INVALID_ID);\\n        if (success == 0 || result != 0) {\\n            return false;\\n        }\\n\\n        (success, result) = noThrowCall(_contract, _interfaceId);\\n        if (success == 1 && result == 1) {\\n            return true;\\n        }\\n        return false;\\n    }\\n\\n    /// @notice Checks whether the hash is a ERC165 interface (ending with 28 zeroes) or not.\\n    /// @param _interfaceHash The hash to check.\\n    /// @return True if '_interfaceHash' is an ERC165 interface (ending with 28 zeroes), false otherwise.\\n    function isERC165Interface(bytes32 _interfaceHash) internal pure returns (bool) {\\n        return _interfaceHash & 0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF == 0;\\n    }\\n\\n    /// @dev Make a call on a contract without throwing if the function does not exist.\\n    function noThrowCall(address _contract, bytes4 _interfaceId)\\n        internal view returns (uint256 success, uint256 result)\\n    {\\n        bytes4 erc165ID = ERC165ID;\\n\\n        assembly {\\n            let x := mload(0x40)               // Find empty storage location using \\\"free memory pointer\\\"\\n            mstore(x, erc165ID)                // Place signature at beginning of empty storage\\n            mstore(add(x, 0x04), _interfaceId) // Place first argument directly next to signature\\n\\n            success := staticcall(\\n                30000,                         // 30k gas\\n                _contract,                     // To addr\\n                x,                             // Inputs are stored at location x\\n                0x24,                          // Inputs are 36 (4 + 32) bytes long\\n                x,                             // Store output over input (saves space)\\n                0x20                           // Outputs are 32 bytes long\\n            )\\n\\n            result := mload(x)                 // Load the result\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x64025ecebddb6e126a5075c1fd6c01de2840492668e2909cef7157040a9d1945\"}},\"version\":1}","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9C5 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 0xA5 JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV DUP1 PUSH4 0xA41E7D51 GT PUSH2 0x78 JUMPI DUP1 PUSH4 0xA41E7D51 EQ PUSH2 0x1D4 JUMPI DUP1 PUSH4 0xAABBB8CA EQ PUSH2 0x20A JUMPI DUP1 PUSH4 0xB7056765 EQ PUSH2 0x236 JUMPI DUP1 PUSH4 0xF712F3E8 EQ PUSH2 0x280 JUMPI PUSH2 0xA5 JUMP JUMPDEST DUP1 PUSH4 0x29965A1D EQ PUSH2 0xAA JUMPI DUP1 PUSH4 0x3D584063 EQ PUSH2 0xE2 JUMPI DUP1 PUSH4 0x5DF8122F EQ PUSH2 0x124 JUMPI DUP1 PUSH4 0x65BA36C1 EQ PUSH2 0x152 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0x2B6 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x108 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH2 0x570 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xE0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x13A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x5BC JUMP JUMPDEST PUSH2 0x1C2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x168 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x183 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x195 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x6B3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xE0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0xE0 PUSH1 0x2 EXP SUB NOT AND PUSH2 0x6EE JUMP JUMPDEST PUSH2 0x108 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x220 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x778 JUMP JUMPDEST PUSH2 0x26C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0xE0 PUSH1 0x2 EXP SUB NOT AND PUSH2 0x7EF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x26C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x296 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0xE0 PUSH1 0x2 EXP SUB NOT AND PUSH2 0x8AA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND ISZERO PUSH2 0x2CD JUMPI DUP4 PUSH2 0x2CF JUMP JUMPDEST CALLER JUMPDEST SWAP1 POP CALLER PUSH2 0x2DB DUP3 PUSH2 0x570 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND EQ PUSH2 0x339 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0xE5 PUSH1 0x2 EXP PUSH3 0x461BCD MUL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F7420746865206D616E616765720000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x342 DUP4 PUSH2 0x92A JUMP JUMPDEST ISZERO PUSH2 0x397 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0xE5 PUSH1 0x2 EXP PUSH3 0x461BCD MUL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D757374206E6F7420626520616E204552433136352068617368000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x3B8 JUMPI POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND CALLER EQ ISZERO JUMPDEST ISZERO PUSH2 0x4FF JUMPI PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x455243313832305F4143434550545F4D41474943000000000000000000000000 DUP2 MSTORE POP PUSH1 0x14 ADD SWAP1 POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH4 0x249CB3FA DUP6 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x47E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x492 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD EQ PUSH2 0x4FF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0xE5 PUSH1 0x2 EXP PUSH3 0x461BCD MUL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x446F6573206E6F7420696D706C656D656E742074686520696E74657266616365 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP5 DUP8 AND SWAP5 DUP6 OR SWAP1 SSTORE MLOAD DUP7 SWAP3 SWAP2 PUSH32 0x93BAA6EFBD2244243BFEE6CE4CFDD1D04FC4C0E9A786ABD3A41313BD352DB153 SWAP2 LOG4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP2 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 SWAP2 AND ISZERO ISZERO PUSH2 0x59A JUMPI POP DUP1 PUSH2 0x5B7 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST CALLER PUSH2 0x5C6 DUP4 PUSH2 0x570 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND EQ PUSH2 0x624 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0xE5 PUSH1 0x2 EXP PUSH3 0x461BCD MUL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F7420746865206D616E616765720000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND DUP2 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB AND EQ PUSH2 0x643 JUMPI DUP1 PUSH2 0x646 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP6 DUP6 AND SWAP6 SWAP1 SWAP6 OR SWAP1 SWAP5 SSTORE SWAP3 MLOAD SWAP2 DUP5 AND SWAP3 SWAP1 SWAP2 PUSH32 0x605C2DBF762E5F7D60A546D42E7205DCB1B011EBC62A61736A57C9089D3A4350 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x6F8 DUP3 DUP3 PUSH2 0x7EF JUMP JUMPDEST PUSH2 0x703 JUMPI PUSH1 0x0 PUSH2 0x705 JUMP JUMPDEST DUP2 JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP3 DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0xE0 PUSH1 0x2 EXP SUB NOT SWAP7 SWAP1 SWAP7 AND DUP1 DUP5 MSTORE SWAP6 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP6 SWAP1 SWAP8 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP6 SSTORE SWAP1 DUP2 MSTORE PUSH1 0x2 DUP5 MSTORE DUP2 DUP2 KECCAK256 SWAP3 DUP2 MSTORE SWAP2 SWAP1 SWAP3 MSTORE KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND ISZERO PUSH2 0x790 JUMPI DUP4 PUSH2 0x792 JUMP JUMPDEST CALLER JUMPDEST SWAP1 POP PUSH2 0x79D DUP4 PUSH2 0x92A JUMP JUMPDEST ISZERO PUSH2 0x7C3 JUMPI DUP3 PUSH2 0x7AD DUP3 DUP3 PUSH2 0x8AA JUMP JUMPDEST PUSH2 0x7B8 JUMPI PUSH1 0x0 PUSH2 0x7BA JUMP JUMPDEST DUP2 JUMPDEST SWAP3 POP POP POP PUSH2 0x6E8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x81D DUP6 PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH2 0x94C JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP DUP2 ISZERO DUP1 PUSH2 0x82D JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x83D JUMPI PUSH1 0x0 SWAP3 POP POP POP PUSH2 0x6E8 JUMP JUMPDEST PUSH2 0x84F DUP6 PUSH1 0x1 PUSH1 0xE0 PUSH1 0x2 EXP SUB NOT PUSH2 0x94C JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP DUP2 ISZERO DUP1 PUSH2 0x860 JUMPI POP DUP1 ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x870 JUMPI PUSH1 0x0 SWAP3 POP POP POP PUSH2 0x6E8 JUMP JUMPDEST PUSH2 0x87A DUP6 DUP6 PUSH2 0x94C JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x1 DUP3 EQ DUP1 ISZERO PUSH2 0x88F JUMPI POP DUP1 PUSH1 0x1 EQ JUMPDEST ISZERO PUSH2 0x89F JUMPI PUSH1 0x1 SWAP3 POP POP POP PUSH2 0x6E8 JUMP JUMPDEST POP PUSH1 0x0 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0xE0 PUSH1 0x2 EXP SUB NOT DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO ISZERO PUSH2 0x8F2 JUMPI PUSH2 0x8EB DUP4 DUP4 PUSH2 0x7EF JUMP JUMPDEST SWAP1 POP PUSH2 0x6E8 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP1 DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0xE0 PUSH1 0x2 EXP SUB NOT DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 AND EQ SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 DUP1 DUP3 MSTORE PUSH1 0x4 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP2 PUSH1 0x24 DUP2 DUP10 PUSH2 0x7530 STATICCALL SWAP1 MLOAD SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP INVALID LOG1 PUSH6 0x627A7A723058 KECCAK256 CALLDATACOPY PUSH32 0x4A2D4301EDE9949F163F319021A6E9C687C292A5E2B2C4734C126B524E6C0029 ","srcmap":"3705:9232:2:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3705:9232:2;;;;;;;","userdoc":"{\"methods\":{\"getInterfaceImplementer(address,bytes32)\":{\"notice\":\"Query if an address implements an interface and through which contract.\"},\"getManager(address)\":{\"notice\":\"Get the manager of an address.\"},\"implementsERC165InterfaceNoCache(address,bytes4)\":{\"notice\":\"Checks whether a contract implements an ERC165 interface or not without using nor updating the cache.\"},\"interfaceHash(string)\":{\"notice\":\"Compute the keccak256 hash of an interface given its name.\"},\"setInterfaceImplementer(address,bytes32,address)\":{\"notice\":\"Sets the contract which implements a specific interface for an address. Only the manager defined for that address can set it. (Each address is the manager for itself until it sets a new manager.)\"},\"setManager(address,address)\":{\"notice\":\"Sets '_newManager' as manager for '_addr'. The new manager will be able to call 'setInterfaceImplementer' for '_addr'.\"},\"updateERC165Cache(address,bytes4)\":{\"notice\":\"Updates the cache with whether the contract implements an ERC165 interface or not.\"}},\"notice\":\"This contract is the official implementation of the ERC1820 Registry.For more details, see https://eips.ethereum.org/EIPS/eip-1820\"}"},"./contracts/ExampleClient.sol:ExampleClient":{"abi":"[{\"constant\":false,\"inputs\":[],\"name\":\"delegateManager\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}]","asm":{".code":[{"begin":57,"end":401,"name":"PUSH","value":"80"},{"begin":57,"end":401,"name":"PUSH","value":"40"},{"begin":57,"end":401,"name":"MSTORE"},{"begin":132,"end":256,"name":"CALLVALUE"},{"begin":8,"end":17,"name":"DUP1"},{"begin":5,"end":7,"name":"ISZERO"},{"begin":5,"end":7,"name":"PUSH [tag]","value":"1"},{"begin":5,"end":7,"name":"JUMPI"},{"begin":30,"end":31,"name":"PUSH","value":"0"},{"begin":27,"end":28,"name":"DUP1"},{"begin":20,"end":32,"name":"REVERT"},{"begin":5,"end":7,"name":"tag","value":"1"},{"begin":5,"end":7,"name":"JUMPDEST"},{"begin":-1,"end":-1,"name":"POP"},{"begin":163,"end":221,"name":"PUSH","value":"40"},{"begin":163,"end":221,"name":"DUP1"},{"begin":163,"end":221,"name":"MLOAD"},{"begin":163,"end":221,"name":"DUP1"},{"begin":163,"end":221,"name":"DUP3"},{"begin":163,"end":221,"name":"ADD"},{"begin":163,"end":221,"name":"SWAP1"},{"begin":163,"end":221,"name":"SWAP2"},{"begin":163,"end":221,"name":"MSTORE"},{"begin":163,"end":221,"name":"PUSH","value":"D"},{"begin":163,"end":221,"name":"DUP2"},{"begin":163,"end":221,"name":"MSTORE"},{"begin":163,"end":221,"name":"PUSH","value":"4578616D706C65436C69656E7400000000000000000000000000000000000000"},{"begin":163,"end":221,"name":"PUSH","value":"20"},{"begin":163,"end":221,"name":"DUP3"},{"begin":163,"end":221,"name":"ADD"},{"begin":163,"end":221,"name":"MSTORE"},{"begin":163,"end":221,"name":"PUSH [tag]","value":"4"},{"begin":163,"end":221,"name":"SWAP1"},{"begin":215,"end":219,"name":"ADDRESS"},{"begin":163,"end":189,"name":"PUSH","value":"100000000"},{"begin":163,"end":189,"name":"PUSH [tag]","value":"5"},{"begin":163,"end":189,"name":"DUP2"},{"begin":163,"end":189,"name":"MUL"},{"begin":163,"end":221,"name":"DIV"},{"begin":163,"end":221,"name":"JUMP","value":"[in]"},{"begin":163,"end":221,"name":"tag","value":"4"},{"begin":163,"end":221,"name":"JUMPDEST"},{"begin":231,"end":236,"name":"PUSH","value":"0"},{"begin":231,"end":249,"name":"DUP1"},{"begin":231,"end":249,"name":"SLOAD"},{"begin":-1,"end":-1,"name":"PUSH","value":"1"},{"begin":-1,"end":-1,"name":"PUSH","value":"A0"},{"begin":-1,"end":-1,"name":"PUSH","value":"2"},{"begin":-1,"end":-1,"name":"EXP"},{"begin":-1,"end":-1,"name":"SUB"},{"begin":-1,"end":-1,"name":"NOT"},{"begin":231,"end":249,"name":"AND"},{"begin":239,"end":249,"name":"CALLER"},{"begin":231,"end":249,"name":"OR"},{"begin":231,"end":249,"name":"SWAP1"},{"begin":231,"end":249,"name":"SSTORE"},{"begin":57,"end":401,"name":"PUSH [tag]","value":"6"},{"begin":57,"end":401,"name":"JUMP"},{"begin":599,"end":881,"name":"tag","value":"5"},{"begin":599,"end":881,"name":"JUMPDEST"},{"begin":710,"end":731,"name":"PUSH","value":"0"},{"begin":761,"end":776,"name":"DUP3"},{"begin":744,"end":777,"name":"PUSH","value":"40"},{"begin":744,"end":777,"name":"MLOAD"},{"begin":744,"end":777,"name":"PUSH","value":"20"},{"begin":744,"end":777,"name":"ADD"},{"begin":744,"end":777,"name":"DUP1"},{"begin":744,"end":777,"name":"DUP3"},{"begin":744,"end":777,"name":"DUP1"},{"begin":744,"end":777,"name":"MLOAD"},{"begin":744,"end":777,"name":"SWAP1"},{"begin":744,"end":777,"name":"PUSH","value":"20"},{"begin":744,"end":777,"name":"ADD"},{"begin":744,"end":777,"name":"SWAP1"},{"begin":744,"end":777,"name":"DUP1"},{"begin":744,"end":777,"name":"DUP4"},{"begin":744,"end":777,"name":"DUP4"},{"begin":36,"end":189,"name":"tag","value":"8"},{"begin":36,"end":189,"name":"JUMPDEST"},{"begin":66,"end":68,"name":"PUSH","value":"20"},{"begin":58,"end":69,"name":"DUP4"},{"begin":58,"end":69,"name":"LT"},{"begin":36,"end":189,"name":"PUSH [tag]","value":"9"},{"begin":36,"end":189,"name":"JUMPI"},{"begin":176,"end":186,"name":"DUP1"},{"begin":176,"end":186,"name":"MLOAD"},{"begin":164,"end":187,"name":"DUP3"},{"begin":164,"end":187,"name":"MSTORE"},{"begin":-1,"end":-1,"name":"PUSH","value":"1F"},{"begin":-1,"end":-1,"name":"NOT"},{"begin":139,"end":151,"name":"SWAP1"},{"begin":139,"end":151,"name":"SWAP3"},{"begin":139,"end":151,"name":"ADD"},{"begin":139,"end":151,"name":"SWAP2"},{"begin":98,"end":100,"name":"PUSH","value":"20"},{"begin":89,"end":101,"name":"SWAP2"},{"begin":89,"end":101,"name":"DUP3"},{"begin":89,"end":101,"name":"ADD"},{"begin":89,"end":101,"name":"SWAP2"},{"begin":114,"end":126,"name":"ADD"},{"begin":36,"end":189,"name":"PUSH [tag]","value":"8"},{"begin":36,"end":189,"name":"JUMP"},{"begin":36,"end":189,"name":"tag","value":"9"},{"begin":36,"end":189,"name":"JUMPDEST"},{"begin":299,"end":309,"name":"MLOAD"},{"begin":344,"end":354,"name":"DUP2"},{"begin":344,"end":354,"name":"MLOAD"},{"begin":263,"end":265,"name":"PUSH","value":"20"},{"begin":259,"end":271,"name":"SWAP4"},{"begin":259,"end":271,"name":"DUP5"},{"begin":259,"end":271,"name":"SUB"},{"begin":254,"end":257,"name":"PUSH","value":"100"},{"begin":250,"end":272,"name":"EXP"},{"begin":-1,"end":-1,"name":"PUSH","value":"0"},{"begin":-1,"end":-1,"name":"NOT"},{"begin":246,"end":276,"name":"ADD"},{"begin":311,"end":320,"name":"DUP1"},{"begin":311,"end":320,"name":"NOT"},{"begin":295,"end":321,"name":"SWAP1"},{"begin":295,"end":321,"name":"SWAP3"},{"begin":295,"end":321,"name":"AND"},{"begin":340,"end":361,"name":"SWAP2"},{"begin":340,"end":361,"name":"AND"},{"begin":377,"end":397,"name":"OR"},{"begin":365,"end":398,"name":"SWAP1"},{"begin":365,"end":398,"name":"MSTORE"},{"begin":744,"end":777,"name":"PUSH","value":"40"},{"begin":744,"end":777,"name":"DUP1"},{"begin":744,"end":777,"name":"MLOAD"},{"begin":744,"end":777,"name":"SWAP3"},{"begin":744,"end":777,"name":"SWAP1"},{"begin":744,"end":777,"name":"SWAP5"},{"begin":744,"end":777,"name":"ADD"},{"begin":26,"end":47,"name":"DUP3"},{"begin":26,"end":47,"name":"DUP2"},{"begin":26,"end":47,"name":"SUB"},{"begin":-1,"end":-1,"name":"PUSH","value":"1F"},{"begin":-1,"end":-1,"name":"NOT"},{"begin":22,"end":54,"name":"ADD"},{"begin":6,"end":55,"name":"DUP4"},{"begin":6,"end":55,"name":"MSTORE"},{"begin":744,"end":777,"name":"DUP1"},{"begin":744,"end":777,"name":"DUP6"},{"begin":744,"end":777,"name":"MSTORE"},{"begin":734,"end":778,"name":"DUP3"},{"begin":734,"end":778,"name":"MLOAD"},{"begin":734,"end":778,"name":"SWAP3"},{"begin":734,"end":778,"name":"SWAP1"},{"begin":734,"end":778,"name":"SWAP2"},{"begin":734,"end":778,"name":"ADD"},{"begin":734,"end":778,"name":"SWAP2"},{"begin":734,"end":778,"name":"SWAP1"},{"begin":734,"end":778,"name":"SWAP2"},{"begin":734,"end":778,"name":"KECCAK256"},{"begin":788,"end":874,"name":"PUSH","value":"29965A1D00000000000000000000000000000000000000000000000000000000"},{"begin":788,"end":874,"name":"DUP3"},{"begin":788,"end":874,"name":"MSTORE"},{"begin":836,"end":840,"name":"ADDRESS"},{"begin":788,"end":874,"name":"PUSH","value":"4"},{"begin":788,"end":874,"name":"DUP4"},{"begin":788,"end":874,"name":"ADD"},{"begin":788,"end":874,"name":"MSTORE"},{"begin":788,"end":874,"name":"PUSH","value":"24"},{"begin":788,"end":874,"name":"DUP3"},{"begin":788,"end":874,"name":"ADD"},{"begin":788,"end":874,"name":"DUP2"},{"begin":788,"end":874,"name":"SWAP1"},{"begin":788,"end":874,"name":"MSTORE"},{"begin":-1,"end":-1,"name":"PUSH","value":"1"},{"begin":-1,"end":-1,"name":"PUSH","value":"A0"},{"begin":-1,"end":-1,"name":"PUSH","value":"2"},{"begin":-1,"end":-1,"name":"EXP"},{"begin":-1,"end":-1,"name":"SUB"},{"begin":788,"end":874,"name":"DUP9"},{"begin":788,"end":874,"name":"AND"},{"begin":788,"end":874,"name":"PUSH","value":"44"},{"begin":788,"end":874,"name":"DUP4"},{"begin":788,"end":874,"name":"ADD"},{"begin":788,"end":874,"name":"MSTORE"},{"begin":788,"end":874,"name":"SWAP3"},{"begin":788,"end":874,"name":"MLOAD"},{"begin":734,"end":778,"name":"SWAP3"},{"begin":734,"end":778,"name":"SWAP6"},{"begin":-1,"end":-1,"name":"POP"},{"begin":549,"end":591,"name":"PUSH","value":"1820A4B7618BDE71DCE8CDC73AAB6C95905FAD24"},{"begin":549,"end":591,"name":"SWAP5"},{"begin":-1,"end":-1,"name":"POP"},{"begin":788,"end":827,"name":"PUSH","value":"29965A1D"},{"begin":788,"end":827,"name":"SWAP4"},{"begin":-1,"end":-1,"name":"POP"},{"begin":788,"end":874,"name":"PUSH","value":"64"},{"begin":788,"end":874,"name":"DUP1"},{"begin":788,"end":874,"name":"DUP3"},{"begin":788,"end":874,"name":"ADD"},{"begin":788,"end":874,"name":"SWAP4"},{"begin":-1,"end":-1,"name":"PUSH","value":"0"},{"begin":-1,"end":-1,"name":"SWAP4"},{"begin":-1,"end":-1,"name":"POP"},{"begin":788,"end":874,"name":"SWAP2"},{"begin":788,"end":874,"name":"DUP3"},{"begin":788,"end":874,"name":"SWAP1"},{"begin":788,"end":874,"name":"SUB"},{"begin":788,"end":874,"name":"ADD"},{"begin":788,"end":874,"name":"DUP2"},{"begin":-1,"end":-1,"name":"DUP4"},{"begin":549,"end":591,"name":"DUP8"},{"begin":788,"end":874,"name":"DUP1"},{"begin":788,"end":874,"name":"EXTCODESIZE"},{"begin":788,"end":874,"name":"ISZERO"},{"begin":5,"end":7,"name":"DUP1"},{"begin":5,"end":7,"name":"ISZERO"},{"begin":5,"end":7,"name":"PUSH [tag]","value":"11"},{"begin":5,"end":7,"name":"JUMPI"},{"begin":30,"end":31,"name":"PUSH","value":"0"},{"begin":27,"end":28,"name":"DUP1"},{"begin":20,"end":32,"name":"REVERT"},{"begin":5,"end":7,"name":"tag","value":"11"},{"begin":5,"end":7,"name":"JUMPDEST"},{"begin":788,"end":874,"name":"POP"},{"begin":788,"end":874,"name":"GAS"},{"begin":788,"end":874,"name":"CALL"},{"begin":788,"end":874,"name":"ISZERO"},{"begin":8,"end":17,"name":"DUP1"},{"begin":5,"end":7,"name":"ISZERO"},{"begin":5,"end":7,"name":"PUSH [tag]","value":"12"},{"begin":5,"end":7,"name":"JUMPI"},{"begin":45,"end":61,"name":"RETURNDATASIZE"},{"begin":42,"end":43,"name":"PUSH","value":"0"},{"begin":39,"end":40,"name":"DUP1"},{"begin":24,"end":62,"name":"RETURNDATACOPY"},{"begin":77,"end":93,"name":"RETURNDATASIZE"},{"begin":74,"end":75,"name":"PUSH","value":"0"},{"begin":67,"end":94,"name":"REVERT"},{"begin":5,"end":7,"name":"tag","value":"12"},{"begin":5,"end":7,"name":"JUMPDEST"},{"begin":788,"end":874,"name":"POP"},{"begin":788,"end":874,"name":"POP"},{"begin":788,"end":874,"name":"POP"},{"begin":788,"end":874,"name":"POP"},{"begin":599,"end":881,"name":"POP"},{"begin":599,"end":881,"name":"POP"},{"begin":599,"end":881,"name":"POP"},{"begin":599,"end":881,"name":"JUMP","value":"[out]"},{"begin":57,"end":401,"name":"tag","value":"6"},{"begin":57,"end":401,"name":"JUMPDEST"},{"begin":57,"end":401,"name":"PUSH #[$]","value":"0000000000000000000000000000000000000000000000000000000000000000"},{"begin":57,"end":401,"name":"DUP1"},{"begin":57,"end":401,"name":"PUSH [$]","value":"0000000000000000000000000000000000000000000000000000000000000000"},{"begin":57,"end":401,"name":"PUSH","value":"0"},{"begin":57,"end":401,"name":"CODECOPY"},{"begin":57,"end":401,"name":"PUSH","value":"0"},{"begin":57,"end":401,"name":"RETURN"}],".data":{"0":{".auxdata":"a165627a7a72305820b031d8a60b245a9e73b7a1a98226a88c8743a52e9434a5e9fcd44b80e89ccb420029",".code":[{"begin":57,"end":401,"name":"PUSH","value":"80"},{"begin":57,"end":401,"name":"PUSH","value":"40"},{"begin":57,"end":401,"name":"MSTORE"},{"begin":57,"end":401,"name":"CALLVALUE"},{"begin":8,"end":17,"name":"DUP1"},{"begin":5,"end":7,"name":"ISZERO"},{"begin":5,"end":7,"name":"PUSH [tag]","value":"1"},{"begin":5,"end":7,"name":"JUMPI"},{"begin":30,"end":31,"name":"PUSH","value":"0"},{"begin":27,"end":28,"name":"DUP1"},{"begin":20,"end":32,"name":"REVERT"},{"begin":5,"end":7,"name":"tag","value":"1"},{"begin":5,"end":7,"name":"JUMPDEST"},{"begin":57,"end":401,"name":"POP"},{"begin":57,"end":401,"name":"PUSH","value":"4"},{"begin":57,"end":401,"name":"CALLDATASIZE"},{"begin":57,"end":401,"name":"LT"},{"begin":57,"end":401,"name":"PUSH [tag]","value":"2"},{"begin":57,"end":401,"name":"JUMPI"},{"begin":57,"end":401,"name":"PUSH","value":"100000000000000000000000000000000000000000000000000000000"},{"begin":57,"end":401,"name":"PUSH","value":"0"},{"begin":57,"end":401,"name":"CALLDATALOAD"},{"begin":57,"end":401,"name":"DIV"},{"begin":57,"end":401,"name":"PUSH","value":"388E9104"},{"begin":57,"end":401,"name":"DUP2"},{"begin":57,"end":401,"name":"EQ"},{"begin":57,"end":401,"name":"PUSH [tag]","value":"3"},{"begin":57,"end":401,"name":"JUMPI"},{"begin":57,"end":401,"name":"tag","value":"2"},{"begin":57,"end":401,"name":"JUMPDEST"},{"begin":57,"end":401,"name":"PUSH","value":"0"},{"begin":57,"end":401,"name":"DUP1"},{"begin":57,"end":401,"name":"REVERT"},{"begin":262,"end":398,"name":"tag","value":"3"},{"begin":262,"end":398,"name":"JUMPDEST"},{"begin":262,"end":398,"name":"PUSH [tag]","value":"4"},{"begin":262,"end":398,"name":"PUSH [tag]","value":"5"},{"begin":262,"end":398,"name":"JUMP","value":"[in]"},{"begin":262,"end":398,"name":"tag","value":"4"},{"begin":262,"end":398,"name":"JUMPDEST"},{"begin":262,"end":398,"name":"STOP"},{"begin":262,"end":398,"name":"tag","value":"5"},{"begin":262,"end":398,"name":"JUMPDEST"},{"begin":314,"end":319,"name":"PUSH","value":"0"},{"begin":314,"end":319,"name":"SLOAD"},{"begin":314,"end":333,"name":"PUSH","value":"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"},{"begin":314,"end":319,"name":"AND"},{"begin":323,"end":333,"name":"CALLER"},{"begin":314,"end":333,"name":"EQ"},{"begin":306,"end":351,"name":"PUSH [tag]","value":"7"},{"begin":306,"end":351,"name":"JUMPI"},{"begin":306,"end":351,"name":"PUSH","value":"40"},{"begin":306,"end":351,"name":"DUP1"},{"begin":306,"end":351,"name":"MLOAD"},{"begin":306,"end":351,"name":"PUSH","value":"8C379A000000000000000000000000000000000000000000000000000000000"},{"begin":306,"end":351,"name":"DUP2"},{"begin":306,"end":351,"name":"MSTORE"},{"begin":306,"end":351,"name":"PUSH","value":"20"},{"begin":306,"end":351,"name":"PUSH","value":"4"},{"begin":306,"end":351,"name":"DUP3"},{"begin":306,"end":351,"name":"ADD"},{"begin":306,"end":351,"name":"MSTORE"},{"begin":306,"end":351,"name":"PUSH","value":"D"},{"begin":306,"end":351,"name":"PUSH","value":"24"},{"begin":306,"end":351,"name":"DUP3"},{"begin":306,"end":351,"name":"ADD"},{"begin":306,"end":351,"name":"MSTORE"},{"begin":306,"end":351,"name":"PUSH","value":"4E6F7420746865206F776E657200000000000000000000000000000000000000"},{"begin":306,"end":351,"name":"PUSH","value":"44"},{"begin":306,"end":351,"name":"DUP3"},{"begin":306,"end":351,"name":"ADD"},{"begin":306,"end":351,"name":"MSTORE"},{"begin":306,"end":351,"name":"SWAP1"},{"begin":306,"end":351,"name":"MLOAD"},{"begin":306,"end":351,"name":"SWAP1"},{"begin":306,"end":351,"name":"DUP2"},{"begin":306,"end":351,"name":"SWAP1"},{"begin":306,"end":351,"name":"SUB"},{"begin":306,"end":351,"name":"PUSH","value":"64"},{"begin":306,"end":351,"name":"ADD"},{"begin":306,"end":351,"name":"SWAP1"},{"begin":306,"end":351,"name":"REVERT"},{"begin":306,"end":351,"name":"tag","value":"7"},{"begin":306,"end":351,"name":"JUMPDEST"},{"begin":361,"end":391,"name":"PUSH [tag]","value":"8"},{"begin":380,"end":390,"name":"CALLER"},{"begin":361,"end":379,"name":"PUSH [tag]","value":"9"},{"begin":361,"end":391,"name":"JUMP","value":"[in]"},{"begin":361,"end":391,"name":"tag","value":"8"},{"begin":361,"end":391,"name":"JUMPDEST"},{"begin":262,"end":398,"name":"JUMP","value":"[out]"},{"begin":1154,"end":1283,"name":"tag","value":"9"},{"begin":1154,"end":1283,"name":"JUMPDEST"},{"begin":1222,"end":1276,"name":"PUSH","value":"40"},{"begin":1222,"end":1276,"name":"DUP1"},{"begin":1222,"end":1276,"name":"MLOAD"},{"begin":1222,"end":1276,"name":"PUSH","value":"5DF8122F00000000000000000000000000000000000000000000000000000000"},{"begin":1222,"end":1276,"name":"DUP2"},{"begin":1222,"end":1276,"name":"MSTORE"},{"begin":1257,"end":1261,"name":"ADDRESS"},{"begin":1222,"end":1276,"name":"PUSH","value":"4"},{"begin":1222,"end":1276,"name":"DUP3"},{"begin":1222,"end":1276,"name":"ADD"},{"begin":1222,"end":1276,"name":"MSTORE"},{"begin":1222,"end":1248,"name":"PUSH","value":"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"},{"begin":1222,"end":1276,"name":"DUP4"},{"begin":1222,"end":1276,"name":"AND"},{"begin":1222,"end":1276,"name":"PUSH","value":"24"},{"begin":1222,"end":1276,"name":"DUP3"},{"begin":1222,"end":1276,"name":"ADD"},{"begin":1222,"end":1276,"name":"MSTORE"},{"begin":1222,"end":1276,"name":"SWAP1"},{"begin":1222,"end":1276,"name":"MLOAD"},{"begin":549,"end":591,"name":"PUSH","value":"1820A4B7618BDE71DCE8CDC73AAB6C95905FAD24"},{"begin":549,"end":591,"name":"SWAP2"},{"begin":1222,"end":1248,"name":"PUSH","value":"5DF8122F"},{"begin":1222,"end":1248,"name":"SWAP2"},{"begin":1222,"end":1276,"name":"PUSH","value":"44"},{"begin":1222,"end":1276,"name":"DUP1"},{"begin":1222,"end":1276,"name":"DUP4"},{"begin":1222,"end":1276,"name":"ADD"},{"begin":1222,"end":1276,"name":"SWAP3"},{"begin":-1,"end":-1,"name":"PUSH","value":"0"},{"begin":-1,"end":-1,"name":"SWAP3"},{"begin":1222,"end":1276,"name":"SWAP2"},{"begin":1222,"end":1276,"name":"SWAP1"},{"begin":1222,"end":1276,"name":"DUP3"},{"begin":1222,"end":1276,"name":"SWAP1"},{"begin":1222,"end":1276,"name":"SUB"},{"begin":1222,"end":1276,"name":"ADD"},{"begin":1222,"end":1276,"name":"DUP2"},{"begin":-1,"end":-1,"name":"DUP4"},{"begin":549,"end":591,"name":"DUP8"},{"begin":1222,"end":1276,"name":"DUP1"},{"begin":1222,"end":1276,"name":"EXTCODESIZE"},{"begin":1222,"end":1276,"name":"ISZERO"},{"begin":5,"end":7,"name":"DUP1"},{"begin":5,"end":7,"name":"ISZERO"},{"begin":5,"end":7,"name":"PUSH [tag]","value":"11"},{"begin":5,"end":7,"name":"JUMPI"},{"begin":30,"end":31,"name":"PUSH","value":"0"},{"begin":27,"end":28,"name":"DUP1"},{"begin":20,"end":32,"name":"REVERT"},{"begin":5,"end":7,"name":"tag","value":"11"},{"begin":5,"end":7,"name":"JUMPDEST"},{"begin":1222,"end":1276,"name":"POP"},{"begin":1222,"end":1276,"name":"GAS"},{"begin":1222,"end":1276,"name":"CALL"},{"begin":1222,"end":1276,"name":"ISZERO"},{"begin":8,"end":17,"name":"DUP1"},{"begin":5,"end":7,"name":"ISZERO"},{"begin":5,"end":7,"name":"PUSH [tag]","value":"12"},{"begin":5,"end":7,"name":"JUMPI"},{"begin":45,"end":61,"name":"RETURNDATASIZE"},{"begin":42,"end":43,"name":"PUSH","value":"0"},{"begin":39,"end":40,"name":"DUP1"},{"begin":24,"end":62,"name":"RETURNDATACOPY"},{"begin":77,"end":93,"name":"RETURNDATASIZE"},{"begin":74,"end":75,"name":"PUSH","value":"0"},{"begin":67,"end":94,"name":"REVERT"},{"begin":5,"end":7,"name":"tag","value":"12"},{"begin":5,"end":7,"name":"JUMPDEST"},{"begin":1222,"end":1276,"name":"POP"},{"begin":1222,"end":1276,"name":"POP"},{"begin":1222,"end":1276,"name":"POP"},{"begin":1222,"end":1276,"name":"POP"},{"begin":1154,"end":1283,"name":"POP"},{"begin":1154,"end":1283,"name":"JUMP","value":"[out]"}]}}},"bin":"608060405234801561001057600080fd5b5060408051808201909152600d81527f4578616d706c65436c69656e74000000000000000000000000000000000000006020820152610058903064010000000061006f810204565b60008054600160a060020a0319163317905561017b565b6000826040516020018082805190602001908083835b602083106100a45780518252601f199092019160209182019101610085565b51815160209384036101000a60001901801990921691161790526040805192909401828103601f19018352808552825192909101919091207f29965a1d00000000000000000000000000000000000000000000000000000000825230600483015260248201819052600160a060020a03881660448301529251929550731820a4b7618bde71dce8cdc73aab6c95905fad2494506329965a1d9350606480820193600093509182900301818387803b15801561015e57600080fd5b505af1158015610172573d6000803e3d6000fd5b50505050505050565b6101b58061018a6000396000f3fe608060405234801561001057600080fd5b5060043610610047577c01000000000000000000000000000000000000000000000000000000006000350463388e9104811461004c575b600080fd5b610054610056565b005b60005473ffffffffffffffffffffffffffffffffffffffff1633146100dc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4e6f7420746865206f776e657200000000000000000000000000000000000000604482015290519081900360640190fd5b6100e5336100e7565b565b604080517f5df8122f00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff831660248201529051731820a4b7618bde71dce8cdc73aab6c95905fad2491635df8122f91604480830192600092919082900301818387803b15801561016e57600080fd5b505af1158015610182573d6000803e3d6000fd5b505050505056fea165627a7a72305820b031d8a60b245a9e73b7a1a98226a88c8743a52e9434a5e9fcd44b80e89ccb420029","devdoc":"{\"methods\":{}}","hashes":{"delegateManager()":"388e9104"},"metadata":"{\"compiler\":{\"version\":\"0.5.3+commit.10d17f24\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"delegateManager\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"./contracts/ExampleClient.sol\":\"ExampleClient\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"./contracts/ERC1820Client.sol\":{\"content\":\"pragma solidity ^0.5.3;\\n\\n\\ncontract ERC1820Registry {\\n    function setInterfaceImplementer(address _addr, bytes32 _interfaceHash, address _implementer) external;\\n    function getInterfaceImplementer(address _addr, bytes32 _interfaceHash) external view returns (address);\\n    function setManager(address _addr, address _newManager) external;\\n    function getManager(address _addr) public view returns (address);\\n}\\n\\n\\n/// Base client to interact with the registry.\\ncontract ERC1820Client {\\n    ERC1820Registry constant ERC1820REGISTRY = ERC1820Registry(0x1820a4B7618BdE71Dce8cdc73aAB6C95905faD24);\\n\\n    function setInterfaceImplementation(string memory _interfaceLabel, address _implementation) internal {\\n        bytes32 interfaceHash = keccak256(abi.encodePacked(_interfaceLabel));\\n        ERC1820REGISTRY.setInterfaceImplementer(address(this), interfaceHash, _implementation);\\n    }\\n\\n    function interfaceAddr(address addr, string memory _interfaceLabel) internal view returns(address) {\\n        bytes32 interfaceHash = keccak256(abi.encodePacked(_interfaceLabel));\\n        return ERC1820REGISTRY.getInterfaceImplementer(addr, interfaceHash);\\n    }\\n\\n    function delegateManagement(address _newManager) internal {\\n        ERC1820REGISTRY.setManager(address(this), _newManager);\\n    }\\n}\\n\",\"keccak256\":\"0x69850e8790fc3db1f19370ce50f7fdbabadc41567c1a62361de42640de0612ec\"},\"./contracts/ExampleClient.sol\":{\"content\":\"pragma solidity ^0.5.3;\\n\\nimport \\\"./ERC1820Client.sol\\\";\\n\\n\\ncontract ExampleClient is ERC1820Client {\\n\\n    address private owner;\\n\\n    constructor() public {\\n        setInterfaceImplementation(\\\"ExampleClient\\\", address(this));\\n        owner = msg.sender;\\n    }\\n\\n    function delegateManager() public {\\n        require(owner == msg.sender, \\\"Not the owner\\\");\\n        delegateManagement(msg.sender);\\n    }\\n\\n}\\n\",\"keccak256\":\"0xce131ea89e8d2aba06599ba54093130a88a677d821b67a3e5067383979b5977c\"}},\"version\":1}","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0xD DUP2 MSTORE PUSH32 0x4578616D706C65436C69656E7400000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x58 SWAP1 ADDRESS PUSH5 0x100000000 PUSH2 0x6F DUP2 MUL DIV JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT AND CALLER OR SWAP1 SSTORE PUSH2 0x17B JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xA4 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x85 JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 DUP5 SUB PUSH2 0x100 EXP PUSH1 0x0 NOT ADD DUP1 NOT SWAP1 SWAP3 AND SWAP2 AND OR SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD SWAP3 SWAP1 SWAP5 ADD DUP3 DUP2 SUB PUSH1 0x1F NOT ADD DUP4 MSTORE DUP1 DUP6 MSTORE DUP3 MLOAD SWAP3 SWAP1 SWAP2 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH32 0x29965A1D00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE ADDRESS PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP9 AND PUSH1 0x44 DUP4 ADD MSTORE SWAP3 MLOAD SWAP3 SWAP6 POP PUSH20 0x1820A4B7618BDE71DCE8CDC73AAB6C95905FAD24 SWAP5 POP PUSH4 0x29965A1D SWAP4 POP PUSH1 0x64 DUP1 DUP3 ADD SWAP4 PUSH1 0x0 SWAP4 POP SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x15E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x172 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1B5 DUP1 PUSH2 0x18A 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 0x47 JUMPI PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 CALLDATALOAD DIV PUSH4 0x388E9104 DUP2 EQ PUSH2 0x4C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x54 PUSH2 0x56 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xDC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F7420746865206F776E657200000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xE5 CALLER PUSH2 0xE7 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x5DF8122F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0x1820A4B7618BDE71DCE8CDC73AAB6C95905FAD24 SWAP2 PUSH4 0x5DF8122F SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x16E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x182 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP INVALID LOG1 PUSH6 0x627A7A723058 KECCAK256 0xb0 BALANCE 0xd8 0xa6 SIGNEXTEND 0x24 GAS SWAP15 PUSH20 0xB7A1A98226A88C8743A52E9434A5E9FCD44B80E8 SWAP13 0xcb TIMESTAMP STOP 0x29 ","srcmap":"57:344:3:-;;;132:124;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;163:58:3;;;;;;;;;;;;;;;;;;;215:4;163:26;;;;:58;:::i;:::-;231:5;:18;;-1:-1:-1;;;;;;231:18:3;239:10;231:18;;;57:344;;599:282:0;710:21;761:15;744:33;;;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;744::0;;;;;;;26:21:-1;;;-1:-1;;22:32;6:49;;744:33:0;;;734:44;;;;;;;;;;788:86;;;836:4;788:86;;;;;;;;;;-1:-1:-1;;;;;788:86:0;;;;;;;;734:44;;-1:-1:-1;549:42:0;;-1:-1:-1;788:39:0;;-1:-1:-1;788:86:0;;;;;-1:-1:-1;;;788:86:0;;;;;;-1:-1:-1;549:42:0;788:86;;;5:2:-1;;;;30:1;27;20:12;5:2;788:86:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;788:86:0;;;;599:282;;;:::o;57:344:3:-;;;;;;;","userdoc":"{\"methods\":{}}"},"./contracts/ExampleImplementer.sol:ExampleImplementer":{"abi":"[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceHash\",\"type\":\"bytes32\"},{\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"canImplementInterfaceForAddress\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]","asm":{".code":[{"begin":71,"end":291,"name":"PUSH","value":"80"},{"begin":71,"end":291,"name":"PUSH","value":"40"},{"begin":71,"end":291,"name":"MSTORE"},{"begin":71,"end":291,"name":"CALLVALUE"},{"begin":8,"end":17,"name":"DUP1"},{"begin":5,"end":7,"name":"ISZERO"},{"begin":5,"end":7,"name":"PUSH [tag]","value":"1"},{"begin":5,"end":7,"name":"JUMPI"},{"begin":30,"end":31,"name":"PUSH","value":"0"},{"begin":27,"end":28,"name":"DUP1"},{"begin":20,"end":32,"name":"REVERT"},{"begin":5,"end":7,"name":"tag","value":"1"},{"begin":5,"end":7,"name":"JUMPDEST"},{"begin":71,"end":291,"name":"POP"},{"begin":71,"end":291,"name":"PUSH #[$]","value":"0000000000000000000000000000000000000000000000000000000000000000"},{"begin":71,"end":291,"name":"DUP1"},{"begin":71,"end":291,"name":"PUSH [$]","value":"0000000000000000000000000000000000000000000000000000000000000000"},{"begin":71,"end":291,"name":"PUSH","value":"0"},{"begin":71,"end":291,"name":"CODECOPY"},{"begin":71,"end":291,"name":"PUSH","value":"0"},{"begin":71,"end":291,"name":"RETURN"}],".data":{"0":{".auxdata":"a165627a7a7230582096ce88212a878e775e458745c4ff9fe9f41750ab3a5005d0be206161f4b859b70029",".code":[{"begin":71,"end":291,"name":"PUSH","value":"80"},{"begin":71,"end":291,"name":"PUSH","value":"40"},{"begin":71,"end":291,"name":"MSTORE"},{"begin":71,"end":291,"name":"CALLVALUE"},{"begin":8,"end":17,"name":"DUP1"},{"begin":5,"end":7,"name":"ISZERO"},{"begin":5,"end":7,"name":"PUSH [tag]","value":"1"},{"begin":5,"end":7,"name":"JUMPI"},{"begin":30,"end":31,"name":"PUSH","value":"0"},{"begin":27,"end":28,"name":"DUP1"},{"begin":20,"end":32,"name":"REVERT"},{"begin":5,"end":7,"name":"tag","value":"1"},{"begin":5,"end":7,"name":"JUMPDEST"},{"begin":71,"end":291,"name":"POP"},{"begin":71,"end":291,"name":"PUSH","value":"4"},{"begin":71,"end":291,"name":"CALLDATASIZE"},{"begin":71,"end":291,"name":"LT"},{"begin":71,"end":291,"name":"PUSH [tag]","value":"2"},{"begin":71,"end":291,"name":"JUMPI"},{"begin":71,"end":291,"name":"PUSH","value":"100000000000000000000000000000000000000000000000000000000"},{"begin":71,"end":291,"name":"PUSH","value":"0"},{"begin":71,"end":291,"name":"CALLDATALOAD"},{"begin":71,"end":291,"name":"DIV"},{"begin":71,"end":291,"name":"PUSH","value":"249CB3FA"},{"begin":71,"end":291,"name":"DUP2"},{"begin":71,"end":291,"name":"EQ"},{"begin":71,"end":291,"name":"PUSH [tag]","value":"3"},{"begin":71,"end":291,"name":"JUMPI"},{"begin":71,"end":291,"name":"tag","value":"2"},{"begin":71,"end":291,"name":"JUMPDEST"},{"begin":71,"end":291,"name":"PUSH","value":"0"},{"begin":71,"end":291,"name":"DUP1"},{"begin":71,"end":291,"name":"REVERT"},{"begin":136,"end":289,"name":"tag","value":"3"},{"begin":136,"end":289,"name":"JUMPDEST"},{"begin":136,"end":289,"name":"PUSH [tag]","value":"4"},{"begin":136,"end":289,"name":"PUSH","value":"4"},{"begin":136,"end":289,"name":"DUP1"},{"begin":136,"end":289,"name":"CALLDATASIZE"},{"begin":136,"end":289,"name":"SUB"},{"begin":13,"end":15,"name":"PUSH","value":"40"},{"begin":8,"end":11,"name":"DUP2"},{"begin":5,"end":16,"name":"LT"},{"begin":2,"end":4,"name":"ISZERO"},{"begin":2,"end":4,"name":"PUSH [tag]","value":"5"},{"begin":2,"end":4,"name":"JUMPI"},{"begin":29,"end":30,"name":"PUSH","value":"0"},{"begin":26,"end":27,"name":"DUP1"},{"begin":19,"end":31,"name":"REVERT"},{"begin":2,"end":4,"name":"tag","value":"5"},{"begin":2,"end":4,"name":"JUMPDEST"},{"begin":-1,"end":-1,"name":"POP"},{"begin":136,"end":289,"name":"DUP1"},{"begin":136,"end":289,"name":"CALLDATALOAD"},{"begin":136,"end":289,"name":"SWAP1"},{"begin":136,"end":289,"name":"PUSH","value":"20"},{"begin":136,"end":289,"name":"ADD"},{"begin":136,"end":289,"name":"CALLDATALOAD"},{"begin":136,"end":289,"name":"PUSH","value":"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"},{"begin":136,"end":289,"name":"AND"},{"begin":136,"end":289,"name":"PUSH [tag]","value":"6"},{"begin":136,"end":289,"name":"JUMP","value":"[in]"},{"begin":136,"end":289,"name":"tag","value":"4"},{"begin":136,"end":289,"name":"JUMPDEST"},{"begin":136,"end":289,"name":"PUSH","value":"40"},{"begin":136,"end":289,"name":"DUP1"},{"begin":136,"end":289,"name":"MLOAD"},{"begin":136,"end":289,"name":"SWAP2"},{"begin":136,"end":289,"name":"DUP3"},{"begin":136,"end":289,"name":"MSTORE"},{"begin":136,"end":289,"name":"MLOAD"},{"begin":136,"end":289,"name":"SWAP1"},{"begin":136,"end":289,"name":"DUP2"},{"begin":136,"end":289,"name":"SWAP1"},{"begin":136,"end":289,"name":"SUB"},{"begin":136,"end":289,"name":"PUSH","value":"20"},{"begin":136,"end":289,"name":"ADD"},{"begin":136,"end":289,"name":"SWAP1"},{"begin":136,"end":289,"name":"RETURN"},{"begin":136,"end":289,"name":"tag","value":"6"},{"begin":136,"end":289,"name":"JUMPDEST"},{"begin":-1,"end":-1,"name":"POP"},{"begin":-1,"end":-1,"name":"POP"},{"begin":119,"end":159,"name":"PUSH","value":"40"},{"begin":119,"end":159,"name":"DUP1"},{"begin":119,"end":159,"name":"MLOAD"},{"begin":119,"end":159,"name":"PUSH","value":"455243313832305F4143434550545F4D41474943000000000000000000000000"},{"begin":119,"end":159,"name":"PUSH","value":"20"},{"begin":119,"end":159,"name":"DUP1"},{"begin":119,"end":159,"name":"DUP4"},{"begin":119,"end":159,"name":"ADD"},{"begin":119,"end":159,"name":"SWAP2"},{"begin":119,"end":159,"name":"SWAP1"},{"begin":119,"end":159,"name":"SWAP2"},{"begin":119,"end":159,"name":"MSTORE"},{"begin":119,"end":159,"name":"DUP3"},{"begin":119,"end":159,"name":"MLOAD"},{"begin":119,"end":159,"name":"PUSH","value":"14"},{"begin":26,"end":47,"name":"DUP2"},{"begin":26,"end":47,"name":"DUP5"},{"begin":26,"end":47,"name":"SUB"},{"begin":22,"end":54,"name":"ADD"},{"begin":6,"end":55,"name":"DUP2"},{"begin":6,"end":55,"name":"MSTORE"},{"begin":119,"end":159,"name":"PUSH","value":"34"},{"begin":119,"end":159,"name":"SWAP1"},{"begin":119,"end":159,"name":"SWAP3"},{"begin":119,"end":159,"name":"ADD"},{"begin":119,"end":159,"name":"SWAP1"},{"begin":119,"end":159,"name":"SWAP3"},{"begin":119,"end":159,"name":"MSTORE"},{"begin":109,"end":160,"name":"DUP1"},{"begin":109,"end":160,"name":"MLOAD"},{"begin":109,"end":160,"name":"SWAP2"},{"begin":109,"end":160,"name":"ADD"},{"begin":109,"end":160,"name":"KECCAK256"},{"begin":109,"end":160,"name":"SWAP1"},{"begin":136,"end":289,"name":"JUMP","value":"[out]"}]}}},"bin":"608060405234801561001057600080fd5b50610107806100206000396000f3fe6080604052348015600f57600080fd5b50600436106044577c01000000000000000000000000000000000000000000000000000000006000350463249cb3fa81146049575b600080fd5b607f60048036036040811015605d57600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff166091565b60408051918252519081900360200190f35b5050604080517f455243313832305f4143434550545f4d4147494300000000000000000000000060208083019190915282516014818403018152603490920190925280519101209056fea165627a7a7230582096ce88212a878e775e458745c4ff9fe9f41750ab3a5005d0be206161f4b859b70029","devdoc":"{\"methods\":{}}","hashes":{"canImplementInterfaceForAddress(bytes32,address)":"249cb3fa"},"metadata":"{\"compiler\":{\"version\":\"0.5.3+commit.10d17f24\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceHash\",\"type\":\"bytes32\"},{\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"canImplementInterfaceForAddress\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"./contracts/ExampleImplementer.sol\":\"ExampleImplementer\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"./contracts/ERC1820ImplementerInterface.sol\":{\"content\":\"pragma solidity ^0.5.3;\\n\\n\\ncontract ERC1820ImplementerInterface {\\n    bytes32 constant ERC1820_ACCEPT_MAGIC = keccak256(abi.encodePacked(\\\"ERC1820_ACCEPT_MAGIC\\\"));\\n\\n    /// @notice Indicates whether the contract implements the interface `interfaceHash` for the address `addr`.\\n    /// @param interfaceHash keccak256 hash of the name of the interface\\n    /// @param addr Address for which the contract will implement the interface\\n    /// @return ERC1820_ACCEPT_MAGIC only if the contract implements `\\u00ecnterfaceHash` for the address `addr`.\\n    function canImplementInterfaceForAddress(bytes32 interfaceHash, address addr) external view returns(bytes32);\\n}\\n\",\"keccak256\":\"0x66475ca1d4ed6178af3182694b3f339edd518d362477799a32536a7944385787\"},\"./contracts/ExampleImplementer.sol\":{\"content\":\"pragma solidity ^0.5.3;\\n\\nimport \\\"./ERC1820ImplementerInterface.sol\\\";\\n\\n\\ncontract ExampleImplementer is ERC1820ImplementerInterface {\\n    function canImplementInterfaceForAddress(bytes32 interfaceHash, address addr) external view returns(bytes32) {\\n        return ERC1820_ACCEPT_MAGIC;\\n    }\\n}\\n\",\"keccak256\":\"0x4953718c70c16234dfb3fc08a0ef4441aa8406518d36cbb2d46dccb85bc4b582\"}},\"version\":1}","opcodes":"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 0x44 JUMPI PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 CALLDATALOAD DIV PUSH4 0x249CB3FA DUP2 EQ PUSH1 0x49 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x7F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH1 0x5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x91 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH32 0x455243313832305F4143434550545F4D41474943000000000000000000000000 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD PUSH1 0x14 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x34 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP INVALID LOG1 PUSH6 0x627A7A723058 KECCAK256 SWAP7 0xce DUP9 0x21 0x2a DUP8 DUP15 PUSH24 0x5E458745C4FF9FE9F41750AB3A5005D0BE206161F4B859B7 STOP 0x29 ","srcmap":"71:220:4:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;71:220:4;;;;;;;","userdoc":"{\"methods\":{}}"},"./contracts/TestERC165.sol:ERC165":{"abi":"[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]","asm":null,"bin":"","devdoc":"{\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Interface identification is specified in ERC-165. This function  uses less than 30,000 gas.\",\"params\":{\"interfaceID\":\"The interface identifier, as specified in ERC-165\"},\"return\":\"`true` if the contract implements `interfaceID` and  `interfaceID` is not 0xffffffff, `false` otherwise\"}}}","hashes":{"supportsInterface(bytes4)":"01ffc9a7"},"metadata":"","opcodes":"","srcmap":"","userdoc":"{\"methods\":{\"supportsInterface(bytes4)\":{\"notice\":\"Query if a contract implements an interface\"}}}"},"./contracts/TestERC165.sol:ERC165MappingImplementation":{"abi":"[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}]","asm":null,"bin":"","devdoc":"{\"methods\":{}}","hashes":{"supportsInterface(bytes4)":"01ffc9a7"},"metadata":"","opcodes":"","srcmap":"","userdoc":"{\"methods\":{}}"},"./contracts/TestERC165.sol:Homer":{"abi":"[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"skinColor\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"is2D\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]","asm":{".code":[{"begin":1827,"end":2310,"name":"PUSH","value":"80"},{"begin":1827,"end":2310,"name":"PUSH","value":"40"},{"begin":1827,"end":2310,"name":"MSTORE"},{"begin":1827,"end":2310,"name":"CALLVALUE"},{"begin":8,"end":17,"name":"DUP1"},{"begin":5,"end":7,"name":"ISZERO"},{"begin":5,"end":7,"name":"PUSH [tag]","value":"1"},{"begin":5,"end":7,"name":"JUMPI"},{"begin":30,"end":31,"name":"PUSH","value":"0"},{"begin":27,"end":28,"name":"DUP1"},{"begin":20,"end":32,"name":"REVERT"},{"begin":5,"end":7,"name":"tag","value":"1"},{"begin":5,"end":7,"name":"JUMPDEST"},{"begin":1827,"end":2310,"name":"POP"},{"begin":1827,"end":2310,"name":"PUSH #[$]","value":"0000000000000000000000000000000000000000000000000000000000000000"},{"begin":1827,"end":2310,"name":"DUP1"},{"begin":1827,"end":2310,"name":"PUSH [$]","value":"0000000000000000000000000000000000000000000000000000000000000000"},{"begin":1827,"end":2310,"name":"PUSH","value":"0"},{"begin":1827,"end":2310,"name":"CODECOPY"},{"begin":1827,"end":2310,"name":"PUSH","value":"0"},{"begin":1827,"end":2310,"name":"RETURN"}],".data":{"0":{".auxdata":"a165627a7a723058204f1055e3fe6cbf0e6a6dc3c30cdad4e152a4957d28dcd92b47e08dc0d72006e70029",".code":[{"begin":1827,"end":2310,"name":"PUSH","value":"80"},{"begin":1827,"end":2310,"name":"PUSH","value":"40"},{"begin":1827,"end":2310,"name":"MSTORE"},{"begin":1827,"end":2310,"name":"CALLVALUE"},{"begin":8,"end":17,"name":"DUP1"},{"begin":5,"end":7,"name":"ISZERO"},{"begin":5,"end":7,"name":"PUSH [tag]","value":"1"},{"begin":5,"end":7,"name":"JUMPI"},{"begin":30,"end":31,"name":"PUSH","value":"0"},{"begin":27,"end":28,"name":"DUP1"},{"begin":20,"end":32,"name":"REVERT"},{"begin":5,"end":7,"name":"tag","value":"1"},{"begin":5,"end":7,"name":"JUMPDEST"},{"begin":1827,"end":2310,"name":"POP"},{"begin":1827,"end":2310,"name":"PUSH","value":"4"},{"begin":1827,"end":2310,"name":"CALLDATASIZE"},{"begin":1827,"end":2310,"name":"LT"},{"begin":1827,"end":2310,"name":"PUSH [tag]","value":"2"},{"begin":1827,"end":2310,"name":"JUMPI"},{"begin":1827,"end":2310,"name":"PUSH","value":"100000000000000000000000000000000000000000000000000000000"},{"begin":1827,"end":2310,"name":"PUSH","value":"0"},{"begin":1827,"end":2310,"name":"CALLDATALOAD"},{"begin":1827,"end":2310,"name":"DIV"},{"begin":1827,"end":2310,"name":"PUSH","value":"1FFC9A7"},{"begin":1827,"end":2310,"name":"DUP2"},{"begin":1827,"end":2310,"name":"EQ"},{"begin":1827,"end":2310,"name":"PUSH [tag]","value":"3"},{"begin":1827,"end":2310,"name":"JUMPI"},{"begin":1827,"end":2310,"name":"DUP1"},{"begin":1827,"end":2310,"name":"PUSH","value":"137588F2"},{"begin":1827,"end":2310,"name":"EQ"},{"begin":1827,"end":2310,"name":"PUSH [tag]","value":"4"},{"begin":1827,"end":2310,"name":"JUMPI"},{"begin":1827,"end":2310,"name":"DUP1"},{"begin":1827,"end":2310,"name":"PUSH","value":"60C33C60"},{"begin":1827,"end":2310,"name":"EQ"},{"begin":1827,"end":2310,"name":"PUSH [tag]","value":"5"},{"begin":1827,"end":2310,"name":"JUMPI"},{"begin":1827,"end":2310,"name":"tag","value":"2"},{"begin":1827,"end":2310,"name":"JUMPDEST"},{"begin":1827,"end":2310,"name":"PUSH","value":"0"},{"begin":1827,"end":2310,"name":"DUP1"},{"begin":1827,"end":2310,"name":"REVERT"},{"begin":1867,"end":2121,"name":"tag","value":"3"},{"begin":1867,"end":2121,"name":"JUMPDEST"},{"begin":1867,"end":2121,"name":"PUSH [tag]","value":"6"},{"begin":1867,"end":2121,"name":"PUSH","value":"4"},{"begin":1867,"end":2121,"name":"DUP1"},{"begin":1867,"end":2121,"name":"CALLDATASIZE"},{"begin":1867,"end":2121,"name":"SUB"},{"begin":13,"end":15,"name":"PUSH","value":"20"},{"begin":8,"end":11,"name":"DUP2"},{"begin":5,"end":16,"name":"LT"},{"begin":2,"end":4,"name":"ISZERO"},{"begin":2,"end":4,"name":"PUSH [tag]","value":"7"},{"begin":2,"end":4,"name":"JUMPI"},{"begin":29,"end":30,"name":"PUSH","value":"0"},{"begin":26,"end":27,"name":"DUP1"},{"begin":19,"end":31,"name":"REVERT"},{"begin":2,"end":4,"name":"tag","value":"7"},{"begin":2,"end":4,"name":"JUMPDEST"},{"begin":-1,"end":-1,"name":"POP"},{"begin":1867,"end":2121,"name":"CALLDATALOAD"},{"begin":-1,"end":-1,"name":"PUSH","value":"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"},{"begin":-1,"end":-1,"name":"NOT"},{"begin":1867,"end":2121,"name":"AND"},{"begin":1867,"end":2121,"name":"PUSH [tag]","value":"8"},{"begin":1867,"end":2121,"name":"JUMP","value":"[in]"},{"begin":1867,"end":2121,"name":"tag","value":"6"},{"begin":1867,"end":2121,"name":"JUMPDEST"},{"begin":1867,"end":2121,"name":"PUSH","value":"40"},{"begin":1867,"end":2121,"name":"DUP1"},{"begin":1867,"end":2121,"name":"MLOAD"},{"begin":1867,"end":2121,"name":"SWAP2"},{"begin":1867,"end":2121,"name":"ISZERO"},{"begin":1867,"end":2121,"name":"ISZERO"},{"begin":1867,"end":2121,"name":"DUP3"},{"begin":1867,"end":2121,"name":"MSTORE"},{"begin":1867,"end":2121,"name":"MLOAD"},{"begin":1867,"end":2121,"name":"SWAP1"},{"begin":1867,"end":2121,"name":"DUP2"},{"begin":1867,"end":2121,"name":"SWAP1"},{"begin":1867,"end":2121,"name":"SUB"},{"begin":1867,"end":2121,"name":"PUSH","value":"20"},{"begin":1867,"end":2121,"name":"ADD"},{"begin":1867,"end":2121,"name":"SWAP1"},{"begin":1867,"end":2121,"name":"RETURN"},{"begin":2213,"end":2269,"name":"tag","value":"4"},{"begin":2213,"end":2269,"name":"JUMPDEST"},{"begin":2213,"end":2269,"name":"PUSH [tag]","value":"9"},{"begin":2213,"end":2269,"name":"PUSH [tag]","value":"10"},{"begin":2213,"end":2269,"name":"JUMP","value":"[in]"},{"begin":2213,"end":2269,"name":"tag","value":"9"},{"begin":2213,"end":2269,"name":"JUMPDEST"},{"begin":2213,"end":2269,"name":"PUSH","value":"40"},{"begin":2213,"end":2269,"name":"DUP1"},{"begin":2213,"end":2269,"name":"MLOAD"},{"begin":2213,"end":2269,"name":"PUSH","value":"20"},{"begin":2213,"end":2269,"name":"DUP1"},{"begin":2213,"end":2269,"name":"DUP3"},{"begin":2213,"end":2269,"name":"MSTORE"},{"begin":2213,"end":2269,"name":"DUP4"},{"begin":2213,"end":2269,"name":"MLOAD"},{"begin":2213,"end":2269,"name":"DUP2"},{"begin":2213,"end":2269,"name":"DUP4"},{"begin":2213,"end":2269,"name":"ADD"},{"begin":2213,"end":2269,"name":"MSTORE"},{"begin":2213,"end":2269,"name":"DUP4"},{"begin":2213,"end":2269,"name":"MLOAD"},{"begin":2213,"end":2269,"name":"SWAP2"},{"begin":2213,"end":2269,"name":"SWAP3"},{"begin":2213,"end":2269,"name":"DUP4"},{"begin":2213,"end":2269,"name":"SWAP3"},{"begin":2213,"end":2269,"name":"SWAP1"},{"begin":2213,"end":2269,"name":"DUP4"},{"begin":2213,"end":2269,"name":"ADD"},{"begin":2213,"end":2269,"name":"SWAP2"},{"begin":2213,"end":2269,"name":"DUP6"},{"begin":2213,"end":2269,"name":"ADD"},{"begin":2213,"end":2269,"name":"SWAP1"},{"begin":2213,"end":2269,"name":"DUP1"},{"begin":2213,"end":2269,"name":"DUP4"},{"begin":2213,"end":2269,"name":"DUP4"},{"begin":2213,"end":2269,"name":"PUSH","value":"0"},{"begin":8,"end":108,"name":"tag","value":"11"},{"begin":8,"end":108,"name":"JUMPDEST"},{"begin":33,"end":36,"name":"DUP4"},{"begin":30,"end":31,"name":"DUP2"},{"begin":27,"end":37,"name":"LT"},{"begin":8,"end":108,"name":"ISZERO"},{"begin":8,"end":108,"name":"PUSH [tag]","value":"12"},{"begin":8,"end":108,"name":"JUMPI"},{"begin":90,"end":101,"name":"DUP2"},{"begin":90,"end":101,"name":"DUP2"},{"begin":90,"end":101,"name":"ADD"},{"begin":84,"end":102,"name":"MLOAD"},{"begin":71,"end":82,"name":"DUP4"},{"begin":71,"end":82,"name":"DUP3"},{"begin":71,"end":82,"name":"ADD"},{"begin":64,"end":103,"name":"MSTORE"},{"begin":52,"end":54,"name":"PUSH","value":"20"},{"begin":45,"end":55,"name":"ADD"},{"begin":8,"end":108,"name":"PUSH [tag]","value":"11"},{"begin":8,"end":108,"name":"JUMP"},{"begin":8,"end":108,"name":"tag","value":"12"},{"begin":8,"end":108,"name":"JUMPDEST"},{"begin":12,"end":26,"name":"POP"},{"begin":2213,"end":2269,"name":"POP"},{"begin":2213,"end":2269,"name":"POP"},{"begin":2213,"end":2269,"name":"POP"},{"begin":2213,"end":2269,"name":"SWAP1"},{"begin":2213,"end":2269,"name":"POP"},{"begin":2213,"end":2269,"name":"SWAP1"},{"begin":2213,"end":2269,"name":"DUP2"},{"begin":2213,"end":2269,"name":"ADD"},{"begin":2213,"end":2269,"name":"SWAP1"},{"begin":2213,"end":2269,"name":"PUSH","value":"1F"},{"begin":2213,"end":2269,"name":"AND"},{"begin":2213,"end":2269,"name":"DUP1"},{"begin":2213,"end":2269,"name":"ISZERO"},{"begin":2213,"end":2269,"name":"PUSH [tag]","value":"14"},{"begin":2213,"end":2269,"name":"JUMPI"},{"begin":2213,"end":2269,"name":"DUP1"},{"begin":2213,"end":2269,"name":"DUP3"},{"begin":2213,"end":2269,"name":"SUB"},{"begin":2213,"end":2269,"name":"DUP1"},{"begin":2213,"end":2269,"name":"MLOAD"},{"begin":2213,"end":2269,"name":"PUSH","value":"1"},{"begin":2213,"end":2269,"name":"DUP4"},{"begin":2213,"end":2269,"name":"PUSH","value":"20"},{"begin":2213,"end":2269,"name":"SUB"},{"begin":2213,"end":2269,"name":"PUSH","value":"100"},{"begin":2213,"end":2269,"name":"EXP"},{"begin":2213,"end":2269,"name":"SUB"},{"begin":2213,"end":2269,"name":"NOT"},{"begin":2213,"end":2269,"name":"AND"},{"begin":2213,"end":2269,"name":"DUP2"},{"begin":2213,"end":2269,"name":"MSTORE"},{"begin":2213,"end":2269,"name":"PUSH","value":"20"},{"begin":2213,"end":2269,"name":"ADD"},{"begin":2213,"end":2269,"name":"SWAP2"},{"begin":2213,"end":2269,"name":"POP"},{"begin":2213,"end":2269,"name":"tag","value":"14"},{"begin":2213,"end":2269,"name":"JUMPDEST"},{"begin":2213,"end":2269,"name":"POP"},{"begin":2213,"end":2269,"name":"SWAP3"},{"begin":2213,"end":2269,"name":"POP"},{"begin":2213,"end":2269,"name":"POP"},{"begin":2213,"end":2269,"name":"POP"},{"begin":2213,"end":2269,"name":"PUSH","value":"40"},{"begin":2213,"end":2269,"name":"MLOAD"},{"begin":2213,"end":2269,"name":"DUP1"},{"begin":2213,"end":2269,"name":"SWAP2"},{"begin":2213,"end":2269,"name":"SUB"},{"begin":2213,"end":2269,"name":"SWAP1"},{"begin":2213,"end":2269,"name":"RETURN"},{"begin":2127,"end":2169,"name":"tag","value":"5"},{"begin":2127,"end":2169,"name":"JUMPDEST"},{"begin":2127,"end":2169,"name":"PUSH [tag]","value":"6"},{"begin":2127,"end":2169,"name":"PUSH [tag]","value":"16"},{"begin":2127,"end":2169,"name":"JUMP","value":"[in]"},{"begin":1867,"end":2121,"name":"tag","value":"8"},{"begin":1867,"end":2121,"name":"JUMPDEST"},{"begin":1937,"end":1941,"name":"PUSH","value":"0"},{"begin":-1,"end":-1,"name":"PUSH","value":"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"},{"begin":-1,"end":-1,"name":"NOT"},{"begin":1972,"end":2018,"name":"DUP3"},{"begin":1972,"end":2018,"name":"AND"},{"begin":1987,"end":2018,"name":"PUSH","value":"1FFC9A700000000000000000000000000000000000000000000000000000000"},{"begin":1972,"end":2018,"name":"EQ"},{"begin":1972,"end":2018,"name":"DUP1"},{"begin":1972,"end":2103,"name":"PUSH [tag]","value":"18"},{"begin":1972,"end":2103,"name":"JUMPI"},{"begin":-1,"end":-1,"name":"POP"},{"begin":-1,"end":-1,"name":"PUSH","value":"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"},{"begin":-1,"end":-1,"name":"NOT"},{"begin":2044,"end":2103,"name":"DUP3"},{"begin":2044,"end":2103,"name":"AND"},{"begin":2059,"end":2103,"name":"PUSH","value":"73B6B49200000000000000000000000000000000000000000000000000000000"},{"begin":2044,"end":2103,"name":"EQ"},{"begin":1972,"end":2103,"name":"tag","value":"18"},{"begin":1972,"end":2103,"name":"JUMPDEST"},{"begin":1953,"end":2103,"name":"SWAP3"},{"begin":1867,"end":2121,"name":"SWAP2"},{"begin":-1,"end":-1,"name":"POP"},{"begin":-1,"end":-1,"name":"POP"},{"begin":1867,"end":2121,"name":"JUMP","value":"[out]"},{"begin":2213,"end":2269,"name":"tag","value":"10"},{"begin":2213,"end":2269,"name":"JUMPDEST"},{"begin":2252,"end":2265,"name":"PUSH","value":"60"},{"begin":2213,"end":2269,"name":"SWAP1"},{"begin":2213,"end":2269,"name":"JUMP","value":"[out]"},{"begin":2127,"end":2169,"name":"tag","value":"16"},{"begin":2127,"end":2169,"name":"JUMPDEST"},{"begin":2161,"end":2165,"name":"PUSH","value":"0"},{"begin":2127,"end":2169,"name":"SWAP1"},{"begin":2127,"end":2169,"name":"JUMP","value":"[out]"}]}}},"bin":"608060405234801561001057600080fd5b50610200806100206000396000f3fe608060405234801561001057600080fd5b506004361061005d577c0100000000000000000000000000000000000000000000000000000000600035046301ffc9a78114610062578063137588f2146100b257806360c33c601461012f575b600080fd5b61009e6004803603602081101561007857600080fd5b50357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916610137565b604080519115158252519081900360200190f35b6100ba6101ca565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100f45781810151838201526020016100dc565b50505050905090810190601f1680156101215780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61009e6101cf565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1982167f01ffc9a70000000000000000000000000000000000000000000000000000000014806101c457507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1982167f73b6b49200000000000000000000000000000000000000000000000000000000145b92915050565b606090565b60009056fea165627a7a723058204f1055e3fe6cbf0e6a6dc3c30cdad4e152a4957d28dcd92b47e08dc0d72006e70029","devdoc":"{\"methods\":{}}","hashes":{"is2D()":"60c33c60","skinColor()":"137588f2","supportsInterface(bytes4)":"01ffc9a7"},"metadata":"{\"compiler\":{\"version\":\"0.5.3+commit.10d17f24\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"skinColor\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"is2D\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"./contracts/TestERC165.sol\":\"Homer\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"./contracts/TestERC165.sol\":{\"content\":\"pragma solidity ^0.5.3;\\n\\n\\ncontract LegacyNoCB {} // solium-disable-line no-empty-blocks\\n\\n\\ncontract LegacyCBNoReturn {\\n    function () external {\\n    }\\n}\\n\\n\\ncontract LegacyCBReturnTrue {\\n    function () external {\\n        assembly {\\n            mstore(0,1)\\n            return(0,32)\\n        }\\n    }\\n}\\n\\n\\ncontract LegacyCBReturnFalse {\\n    function () external {\\n        assembly {\\n            mstore(0,1)\\n            return(0,32)\\n        }\\n    }\\n}\\n\\ninterface ERC165 {\\n    /// @notice Query if a contract implements an interface\\n    /// @param interfaceID The interface identifier, as specified in ERC-165\\n    /// @dev Interface identification is specified in ERC-165. This function\\n    ///  uses less than 30,000 gas.\\n    /// @return `true` if the contract implements `interfaceID` and\\n    ///  `interfaceID` is not 0xffffffff, `false` otherwise\\n    function supportsInterface(bytes4 interfaceID) external view returns (bool);\\n}\\n\\n\\ncontract ERC165MappingImplementation is ERC165 {\\n    /// @dev You must not set element 0xffffffff to true\\n    mapping(bytes4 => bool) internal supportedInterfaces;\\n\\n    constructor() internal {\\n        supportedInterfaces[this.supportsInterface.selector] = true;\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID) external view returns (bool) {\\n        return supportedInterfaces[interfaceID];\\n    }\\n}\\n\\ninterface Simpson {\\n    function is2D() external returns (bool);\\n    function skinColor() external returns (string memory);\\n}\\n\\n\\ncontract Lisa is ERC165MappingImplementation, Simpson {\\n    constructor() public {\\n        supportedInterfaces[this.is2D.selector ^ this.skinColor.selector] = true;\\n    }\\n\\n    function is2D() external returns (bool) {} // solium-disable-line no-empty-blocks\\n    function skinColor() external returns (string memory) {} // solium-disable-line no-empty-blocks\\n}\\n\\n\\ncontract Homer is ERC165, Simpson {\\n    function supportsInterface(bytes4 interfaceID) external view returns (bool) {\\n        return\\n            interfaceID == this.supportsInterface.selector || // ERC165\\n            interfaceID == this.is2D.selector ^ this.skinColor.selector; // Simpson\\n    }\\n\\n    function is2D() external returns (bool) {} // solium-disable-line no-empty-blocks\\n    function skinColor() external returns (string memory) {} // solium-disable-line no-empty-blocks\\n}\\n\",\"keccak256\":\"0x142e3c515e964d7aa8987daf5f0067b42e815009e2a414ba5e0319702ebd31f5\"}},\"version\":1}","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x200 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 0x5D JUMPI PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 CALLDATALOAD DIV PUSH4 0x1FFC9A7 DUP2 EQ PUSH2 0x62 JUMPI DUP1 PUSH4 0x137588F2 EQ PUSH2 0xB2 JUMPI DUP1 PUSH4 0x60C33C60 EQ PUSH2 0x12F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH2 0x137 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xBA PUSH2 0x1CA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xDC JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x121 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x9E PUSH2 0x1CF JUMP JUMPDEST PUSH1 0x0 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x1C4 JUMPI POP PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT DUP3 AND PUSH32 0x73B6B49200000000000000000000000000000000000000000000000000000000 EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP INVALID LOG1 PUSH6 0x627A7A723058 KECCAK256 0x4f LT SSTORE 0xe3 INVALID PUSH13 0xBF0E6A6DC3C30CDAD4E152A495 PUSH30 0x28DCD92B47E08DC0D72006E7002900000000000000000000000000000000 ","srcmap":"1827:483:5:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1827:483:5;;;;;;;","userdoc":"{\"methods\":{}}"},"./contracts/TestERC165.sol:LegacyCBNoReturn":{"abi":"[{\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"fallback\"}]","asm":{".code":[{"begin":90,"end":152,"name":"PUSH","value":"80"},{"begin":90,"end":152,"name":"PUSH","value":"40"},{"begin":90,"end":152,"name":"MSTORE"},{"begin":90,"end":152,"name":"CALLVALUE"},{"begin":8,"end":17,"name":"DUP1"},{"begin":5,"end":7,"name":"ISZERO"},{"begin":5,"end":7,"name":"PUSH [tag]","value":"1"},{"begin":5,"end":7,"name":"JUMPI"},{"begin":30,"end":31,"name":"PUSH","value":"0"},{"begin":27,"end":28,"name":"DUP1"},{"begin":20,"end":32,"name":"REVERT"},{"begin":5,"end":7,"name":"tag","value":"1"},{"begin":5,"end":7,"name":"JUMPDEST"},{"begin":90,"end":152,"name":"POP"},{"begin":90,"end":152,"name":"PUSH #[$]","value":"0000000000000000000000000000000000000000000000000000000000000000"},{"begin":90,"end":152,"name":"DUP1"},{"begin":90,"end":152,"name":"PUSH [$]","value":"0000000000000000000000000000000000000000000000000000000000000000"},{"begin":90,"end":152,"name":"PUSH","value":"0"},{"begin":90,"end":152,"name":"CODECOPY"},{"begin":90,"end":152,"name":"PUSH","value":"0"},{"begin":90,"end":152,"name":"RETURN"}],".data":{"0":{".auxdata":"a165627a7a72305820076cc7ec51125c267def89ceb522b128c67aafcffecd1af823bf986e7a65ea310029",".code":[{"begin":90,"end":152,"name":"PUSH","value":"80"},{"begin":90,"end":152,"name":"PUSH","value":"40"},{"begin":90,"end":152,"name":"MSTORE"},{"begin":90,"end":152,"name":"CALLVALUE"},{"begin":8,"end":17,"name":"DUP1"},{"begin":5,"end":7,"name":"ISZERO"},{"begin":5,"end":7,"name":"PUSH [tag]","value":"2"},{"begin":5,"end":7,"name":"JUMPI"},{"begin":30,"end":31,"name":"PUSH","value":"0"},{"begin":27,"end":28,"name":"DUP1"},{"begin":20,"end":32,"name":"REVERT"},{"begin":5,"end":7,"name":"tag","value":"2"},{"begin":5,"end":7,"name":"JUMPDEST"},{"begin":90,"end":152,"name":"POP"},{"begin":90,"end":152,"name":"STOP"}]}}},"bin":"6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052348015600f57600080fd5b5000fea165627a7a72305820076cc7ec51125c267def89ceb522b128c67aafcffecd1af823bf986e7a65ea310029","devdoc":"{\"methods\":{}}","hashes":{},"metadata":"{\"compiler\":{\"version\":\"0.5.3+commit.10d17f24\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"fallback\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"./contracts/TestERC165.sol\":\"LegacyCBNoReturn\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"./contracts/TestERC165.sol\":{\"content\":\"pragma solidity ^0.5.3;\\n\\n\\ncontract LegacyNoCB {} // solium-disable-line no-empty-blocks\\n\\n\\ncontract LegacyCBNoReturn {\\n    function () external {\\n    }\\n}\\n\\n\\ncontract LegacyCBReturnTrue {\\n    function () external {\\n        assembly {\\n            mstore(0,1)\\n            return(0,32)\\n        }\\n    }\\n}\\n\\n\\ncontract LegacyCBReturnFalse {\\n    function () external {\\n        assembly {\\n            mstore(0,1)\\n            return(0,32)\\n        }\\n    }\\n}\\n\\ninterface ERC165 {\\n    /// @notice Query if a contract implements an interface\\n    /// @param interfaceID The interface identifier, as specified in ERC-165\\n    /// @dev Interface identification is specified in ERC-165. This function\\n    ///  uses less than 30,000 gas.\\n    /// @return `true` if the contract implements `interfaceID` and\\n    ///  `interfaceID` is not 0xffffffff, `false` otherwise\\n    function supportsInterface(bytes4 interfaceID) external view returns (bool);\\n}\\n\\n\\ncontract ERC165MappingImplementation is ERC165 {\\n    /// @dev You must not set element 0xffffffff to true\\n    mapping(bytes4 => bool) internal supportedInterfaces;\\n\\n    constructor() internal {\\n        supportedInterfaces[this.supportsInterface.selector] = true;\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID) external view returns (bool) {\\n        return supportedInterfaces[interfaceID];\\n    }\\n}\\n\\ninterface Simpson {\\n    function is2D() external returns (bool);\\n    function skinColor() external returns (string memory);\\n}\\n\\n\\ncontract Lisa is ERC165MappingImplementation, Simpson {\\n    constructor() public {\\n        supportedInterfaces[this.is2D.selector ^ this.skinColor.selector] = true;\\n    }\\n\\n    function is2D() external returns (bool) {} // solium-disable-line no-empty-blocks\\n    function skinColor() external returns (string memory) {} // solium-disable-line no-empty-blocks\\n}\\n\\n\\ncontract Homer is ERC165, Simpson {\\n    function supportsInterface(bytes4 interfaceID) external view returns (bool) {\\n        return\\n            interfaceID == this.supportsInterface.selector || // ERC165\\n            interfaceID == this.is2D.selector ^ this.skinColor.selector; // Simpson\\n    }\\n\\n    function is2D() external returns (bool) {} // solium-disable-line no-empty-blocks\\n    function skinColor() external returns (string memory) {} // solium-disable-line no-empty-blocks\\n}\\n\",\"keccak256\":\"0x142e3c515e964d7aa8987daf5f0067b42e815009e2a414ba5e0319702ebd31f5\"}},\"version\":1}","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3E DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP STOP INVALID LOG1 PUSH6 0x627A7A723058 KECCAK256 SMOD PUSH13 0xC7EC51125C267DEF89CEB522B1 0x28 0xc6 PUSH27 0xAFCFFECD1AF823BF986E7A65EA3100290000000000000000000000 ","srcmap":"90:62:5:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;90:62:5;;;;;;;","userdoc":"{\"methods\":{}}"},"./contracts/TestERC165.sol:LegacyCBReturnFalse":{"abi":"[{\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"fallback\"}]","asm":{".code":[{"begin":300,"end":443,"name":"PUSH","value":"80"},{"begin":300,"end":443,"name":"PUSH","value":"40"},{"begin":300,"end":443,"name":"MSTORE"},{"begin":300,"end":443,"name":"CALLVALUE"},{"begin":8,"end":17,"name":"DUP1"},{"begin":5,"end":7,"name":"ISZERO"},{"begin":5,"end":7,"name":"PUSH [tag]","value":"1"},{"begin":5,"end":7,"name":"JUMPI"},{"begin":30,"end":31,"name":"PUSH","value":"0"},{"begin":27,"end":28,"name":"DUP1"},{"begin":20,"end":32,"name":"REVERT"},{"begin":5,"end":7,"name":"tag","value":"1"},{"begin":5,"end":7,"name":"JUMPDEST"},{"begin":300,"end":443,"name":"POP"},{"begin":300,"end":443,"name":"PUSH #[$]","value":"0000000000000000000000000000000000000000000000000000000000000000"},{"begin":300,"end":443,"name":"DUP1"},{"begin":300,"end":443,"name":"PUSH [$]","value":"0000000000000000000000000000000000000000000000000000000000000000"},{"begin":300,"end":443,"name":"PUSH","value":"0"},{"begin":300,"end":443,"name":"CODECOPY"},{"begin":300,"end":443,"name":"PUSH","value":"0"},{"begin":300,"end":443,"name":"RETURN"}],".data":{"0":{".auxdata":"a165627a7a723058209cc4fc22fbadedc44edd6f00461500784b65fe876d96ef22b3ef1e82eca0f75e0029",".code":[{"begin":300,"end":443,"name":"PUSH","value":"80"},{"begin":300,"end":443,"name":"PUSH","value":"40"},{"begin":300,"end":443,"name":"MSTORE"},{"begin":300,"end":443,"name":"CALLVALUE"},{"begin":8,"end":17,"name":"DUP1"},{"begin":5,"end":7,"name":"ISZERO"},{"begin":5,"end":7,"name":"PUSH [tag]","value":"2"},{"begin":5,"end":7,"name":"JUMPI"},{"begin":30,"end":31,"name":"PUSH","value":"0"},{"begin":27,"end":28,"name":"DUP1"},{"begin":20,"end":32,"name":"REVERT"},{"begin":5,"end":7,"name":"tag","value":"2"},{"begin":5,"end":7,"name":"JUMPDEST"},{"begin":300,"end":443,"name":"POP"},{"begin":398,"end":399,"name":"PUSH","value":"1"},{"begin":396,"end":397,"name":"PUSH","value":"0"},{"begin":389,"end":400,"name":"MSTORE"},{"begin":422,"end":424,"name":"PUSH","value":"20"},{"begin":420,"end":421,"name":"PUSH","value":"0"},{"begin":413,"end":425,"name":"RETURN"}]}}},"bin":"6080604052348015600f57600080fd5b50604780601d6000396000f3fe6080604052348015600f57600080fd5b50600160005260206000f3fea165627a7a723058209cc4fc22fbadedc44edd6f00461500784b65fe876d96ef22b3ef1e82eca0f75e0029","devdoc":"{\"methods\":{}}","hashes":{},"metadata":"{\"compiler\":{\"version\":\"0.5.3+commit.10d17f24\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"fallback\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"./contracts/TestERC165.sol\":\"LegacyCBReturnFalse\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"./contracts/TestERC165.sol\":{\"content\":\"pragma solidity ^0.5.3;\\n\\n\\ncontract LegacyNoCB {} // solium-disable-line no-empty-blocks\\n\\n\\ncontract LegacyCBNoReturn {\\n    function () external {\\n    }\\n}\\n\\n\\ncontract LegacyCBReturnTrue {\\n    function () external {\\n        assembly {\\n            mstore(0,1)\\n            return(0,32)\\n        }\\n    }\\n}\\n\\n\\ncontract LegacyCBReturnFalse {\\n    function () external {\\n        assembly {\\n            mstore(0,1)\\n            return(0,32)\\n        }\\n    }\\n}\\n\\ninterface ERC165 {\\n    /// @notice Query if a contract implements an interface\\n    /// @param interfaceID The interface identifier, as specified in ERC-165\\n    /// @dev Interface identification is specified in ERC-165. This function\\n    ///  uses less than 30,000 gas.\\n    /// @return `true` if the contract implements `interfaceID` and\\n    ///  `interfaceID` is not 0xffffffff, `false` otherwise\\n    function supportsInterface(bytes4 interfaceID) external view returns (bool);\\n}\\n\\n\\ncontract ERC165MappingImplementation is ERC165 {\\n    /// @dev You must not set element 0xffffffff to true\\n    mapping(bytes4 => bool) internal supportedInterfaces;\\n\\n    constructor() internal {\\n        supportedInterfaces[this.supportsInterface.selector] = true;\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID) external view returns (bool) {\\n        return supportedInterfaces[interfaceID];\\n    }\\n}\\n\\ninterface Simpson {\\n    function is2D() external returns (bool);\\n    function skinColor() external returns (string memory);\\n}\\n\\n\\ncontract Lisa is ERC165MappingImplementation, Simpson {\\n    constructor() public {\\n        supportedInterfaces[this.is2D.selector ^ this.skinColor.selector] = true;\\n    }\\n\\n    function is2D() external returns (bool) {} // solium-disable-line no-empty-blocks\\n    function skinColor() external returns (string memory) {} // solium-disable-line no-empty-blocks\\n}\\n\\n\\ncontract Homer is ERC165, Simpson {\\n    function supportsInterface(bytes4 interfaceID) external view returns (bool) {\\n        return\\n            interfaceID == this.supportsInterface.selector || // ERC165\\n            interfaceID == this.is2D.selector ^ this.skinColor.selector; // Simpson\\n    }\\n\\n    function is2D() external returns (bool) {} // solium-disable-line no-empty-blocks\\n    function skinColor() external returns (string memory) {} // solium-disable-line no-empty-blocks\\n}\\n\",\"keccak256\":\"0x142e3c515e964d7aa8987daf5f0067b42e815009e2a414ba5e0319702ebd31f5\"}},\"version\":1}","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x47 DUP1 PUSH1 0x1D 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 0x1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 RETURN INVALID LOG1 PUSH6 0x627A7A723058 KECCAK256 SWAP13 0xc4 0xfc 0x22 0xfb 0xad 0xed 0xc4 0x4e 0xdd PUSH16 0x461500784B65FE876D96EF22B3EF1E DUP3 0xec LOG0 0xf7 0x5e STOP 0x29 ","srcmap":"300:143:5:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;300:143:5;;;;;;;","userdoc":"{\"methods\":{}}"},"./contracts/TestERC165.sol:LegacyCBReturnTrue":{"abi":"[{\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"fallback\"}]","asm":{".code":[{"begin":155,"end":297,"name":"PUSH","value":"80"},{"begin":155,"end":297,"name":"PUSH","value":"40"},{"begin":155,"end":297,"name":"MSTORE"},{"begin":155,"end":297,"name":"CALLVALUE"},{"begin":8,"end":17,"name":"DUP1"},{"begin":5,"end":7,"name":"ISZERO"},{"begin":5,"end":7,"name":"PUSH [tag]","value":"1"},{"begin":5,"end":7,"name":"JUMPI"},{"begin":30,"end":31,"name":"PUSH","value":"0"},{"begin":27,"end":28,"name":"DUP1"},{"begin":20,"end":32,"name":"REVERT"},{"begin":5,"end":7,"name":"tag","value":"1"},{"begin":5,"end":7,"name":"JUMPDEST"},{"begin":155,"end":297,"name":"POP"},{"begin":155,"end":297,"name":"PUSH #[$]","value":"0000000000000000000000000000000000000000000000000000000000000000"},{"begin":155,"end":297,"name":"DUP1"},{"begin":155,"end":297,"name":"PUSH [$]","value":"0000000000000000000000000000000000000000000000000000000000000000"},{"begin":155,"end":297,"name":"PUSH","value":"0"},{"begin":155,"end":297,"name":"CODECOPY"},{"begin":155,"end":297,"name":"PUSH","value":"0"},{"begin":155,"end":297,"name":"RETURN"}],".data":{"0":{".auxdata":"a165627a7a7230582092061c587aa782ac21c20306ce3963b535d505215c938032c30e453d0f8856dd0029",".code":[{"begin":155,"end":297,"name":"PUSH","value":"80"},{"begin":155,"end":297,"name":"PUSH","value":"40"},{"begin":155,"end":297,"name":"MSTORE"},{"begin":155,"end":297,"name":"CALLVALUE"},{"begin":8,"end":17,"name":"DUP1"},{"begin":5,"end":7,"name":"ISZERO"},{"begin":5,"end":7,"name":"PUSH [tag]","value":"2"},{"begin":5,"end":7,"name":"JUMPI"},{"begin":30,"end":31,"name":"PUSH","value":"0"},{"begin":27,"end":28,"name":"DUP1"},{"begin":20,"end":32,"name":"REVERT"},{"begin":5,"end":7,"name":"tag","value":"2"},{"begin":5,"end":7,"name":"JUMPDEST"},{"begin":155,"end":297,"name":"POP"},{"begin":252,"end":253,"name":"PUSH","value":"1"},{"begin":250,"end":251,"name":"PUSH","value":"0"},{"begin":243,"end":254,"name":"MSTORE"},{"begin":276,"end":278,"name":"PUSH","value":"20"},{"begin":274,"end":275,"name":"PUSH","value":"0"},{"begin":267,"end":279,"name":"RETURN"}]}}},"bin":"6080604052348015600f57600080fd5b50604780601d6000396000f3fe6080604052348015600f57600080fd5b50600160005260206000f3fea165627a7a7230582092061c587aa782ac21c20306ce3963b535d505215c938032c30e453d0f8856dd0029","devdoc":"{\"methods\":{}}","hashes":{},"metadata":"{\"compiler\":{\"version\":\"0.5.3+commit.10d17f24\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"fallback\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"./contracts/TestERC165.sol\":\"LegacyCBReturnTrue\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"./contracts/TestERC165.sol\":{\"content\":\"pragma solidity ^0.5.3;\\n\\n\\ncontract LegacyNoCB {} // solium-disable-line no-empty-blocks\\n\\n\\ncontract LegacyCBNoReturn {\\n    function () external {\\n    }\\n}\\n\\n\\ncontract LegacyCBReturnTrue {\\n    function () external {\\n        assembly {\\n            mstore(0,1)\\n            return(0,32)\\n        }\\n    }\\n}\\n\\n\\ncontract LegacyCBReturnFalse {\\n    function () external {\\n        assembly {\\n            mstore(0,1)\\n            return(0,32)\\n        }\\n    }\\n}\\n\\ninterface ERC165 {\\n    /// @notice Query if a contract implements an interface\\n    /// @param interfaceID The interface identifier, as specified in ERC-165\\n    /// @dev Interface identification is specified in ERC-165. This function\\n    ///  uses less than 30,000 gas.\\n    /// @return `true` if the contract implements `interfaceID` and\\n    ///  `interfaceID` is not 0xffffffff, `false` otherwise\\n    function supportsInterface(bytes4 interfaceID) external view returns (bool);\\n}\\n\\n\\ncontract ERC165MappingImplementation is ERC165 {\\n    /// @dev You must not set element 0xffffffff to true\\n    mapping(bytes4 => bool) internal supportedInterfaces;\\n\\n    constructor() internal {\\n        supportedInterfaces[this.supportsInterface.selector] = true;\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID) external view returns (bool) {\\n        return supportedInterfaces[interfaceID];\\n    }\\n}\\n\\ninterface Simpson {\\n    function is2D() external returns (bool);\\n    function skinColor() external returns (string memory);\\n}\\n\\n\\ncontract Lisa is ERC165MappingImplementation, Simpson {\\n    constructor() public {\\n        supportedInterfaces[this.is2D.selector ^ this.skinColor.selector] = true;\\n    }\\n\\n    function is2D() external returns (bool) {} // solium-disable-line no-empty-blocks\\n    function skinColor() external returns (string memory) {} // solium-disable-line no-empty-blocks\\n}\\n\\n\\ncontract Homer is ERC165, Simpson {\\n    function supportsInterface(bytes4 interfaceID) external view returns (bool) {\\n        return\\n            interfaceID == this.supportsInterface.selector || // ERC165\\n            interfaceID == this.is2D.selector ^ this.skinColor.selector; // Simpson\\n    }\\n\\n    function is2D() external returns (bool) {} // solium-disable-line no-empty-blocks\\n    function skinColor() external returns (string memory) {} // solium-disable-line no-empty-blocks\\n}\\n\",\"keccak256\":\"0x142e3c515e964d7aa8987daf5f0067b42e815009e2a414ba5e0319702ebd31f5\"}},\"version\":1}","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x47 DUP1 PUSH1 0x1D 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 0x1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 RETURN INVALID LOG1 PUSH6 0x627A7A723058 KECCAK256 SWAP3 MOD SHR PC PUSH27 0xA782AC21C20306CE3963B535D505215C938032C30E453D0F8856DD STOP 0x29 ","srcmap":"155:142:5:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;155:142:5;;;;;;;","userdoc":"{\"methods\":{}}"},"./contracts/TestERC165.sol:LegacyNoCB":{"abi":"[]","asm":{".code":[{"begin":26,"end":48,"name":"PUSH","value":"80"},{"begin":26,"end":48,"name":"PUSH","value":"40"},{"begin":26,"end":48,"name":"MSTORE"},{"begin":26,"end":48,"name":"CALLVALUE"},{"begin":8,"end":17,"name":"DUP1"},{"begin":5,"end":7,"name":"ISZERO"},{"begin":5,"end":7,"name":"PUSH [tag]","value":"1"},{"begin":5,"end":7,"name":"JUMPI"},{"begin":30,"end":31,"name":"PUSH","value":"0"},{"begin":27,"end":28,"name":"DUP1"},{"begin":20,"end":32,"name":"REVERT"},{"begin":5,"end":7,"name":"tag","value":"1"},{"begin":5,"end":7,"name":"JUMPDEST"},{"begin":26,"end":48,"name":"POP"},{"begin":26,"end":48,"name":"PUSH #[$]","value":"0000000000000000000000000000000000000000000000000000000000000000"},{"begin":26,"end":48,"name":"DUP1"},{"begin":26,"end":48,"name":"PUSH [$]","value":"0000000000000000000000000000000000000000000000000000000000000000"},{"begin":26,"end":48,"name":"PUSH","value":"0"},{"begin":26,"end":48,"name":"CODECOPY"},{"begin":26,"end":48,"name":"PUSH","value":"0"},{"begin":26,"end":48,"name":"RETURN"}],".data":{"0":{".auxdata":"a165627a7a723058202db2e214e91ddd10b3d195040fa69939a233692bffef03092c963000f2a6ba020029",".code":[{"begin":26,"end":48,"name":"PUSH","value":"80"},{"begin":26,"end":48,"name":"PUSH","value":"40"},{"begin":26,"end":48,"name":"MSTORE"},{"begin":26,"end":48,"name":"PUSH","value":"0"},{"begin":26,"end":48,"name":"DUP1"},{"begin":26,"end":48,"name":"REVERT"}]}}},"bin":"6080604052348015600f57600080fd5b50603580601d6000396000f3fe6080604052600080fdfea165627a7a723058202db2e214e91ddd10b3d195040fa69939a233692bffef03092c963000f2a6ba020029","devdoc":"{\"methods\":{}}","hashes":{},"metadata":"{\"compiler\":{\"version\":\"0.5.3+commit.10d17f24\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"./contracts/TestERC165.sol\":\"LegacyNoCB\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"./contracts/TestERC165.sol\":{\"content\":\"pragma solidity ^0.5.3;\\n\\n\\ncontract LegacyNoCB {} // solium-disable-line no-empty-blocks\\n\\n\\ncontract LegacyCBNoReturn {\\n    function () external {\\n    }\\n}\\n\\n\\ncontract LegacyCBReturnTrue {\\n    function () external {\\n        assembly {\\n            mstore(0,1)\\n            return(0,32)\\n        }\\n    }\\n}\\n\\n\\ncontract LegacyCBReturnFalse {\\n    function () external {\\n        assembly {\\n            mstore(0,1)\\n            return(0,32)\\n        }\\n    }\\n}\\n\\ninterface ERC165 {\\n    /// @notice Query if a contract implements an interface\\n    /// @param interfaceID The interface identifier, as specified in ERC-165\\n    /// @dev Interface identification is specified in ERC-165. This function\\n    ///  uses less than 30,000 gas.\\n    /// @return `true` if the contract implements `interfaceID` and\\n    ///  `interfaceID` is not 0xffffffff, `false` otherwise\\n    function supportsInterface(bytes4 interfaceID) external view returns (bool);\\n}\\n\\n\\ncontract ERC165MappingImplementation is ERC165 {\\n    /// @dev You must not set element 0xffffffff to true\\n    mapping(bytes4 => bool) internal supportedInterfaces;\\n\\n    constructor() internal {\\n        supportedInterfaces[this.supportsInterface.selector] = true;\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID) external view returns (bool) {\\n        return supportedInterfaces[interfaceID];\\n    }\\n}\\n\\ninterface Simpson {\\n    function is2D() external returns (bool);\\n    function skinColor() external returns (string memory);\\n}\\n\\n\\ncontract Lisa is ERC165MappingImplementation, Simpson {\\n    constructor() public {\\n        supportedInterfaces[this.is2D.selector ^ this.skinColor.selector] = true;\\n    }\\n\\n    function is2D() external returns (bool) {} // solium-disable-line no-empty-blocks\\n    function skinColor() external returns (string memory) {} // solium-disable-line no-empty-blocks\\n}\\n\\n\\ncontract Homer is ERC165, Simpson {\\n    function supportsInterface(bytes4 interfaceID) external view returns (bool) {\\n        return\\n            interfaceID == this.supportsInterface.selector || // ERC165\\n            interfaceID == this.is2D.selector ^ this.skinColor.selector; // Simpson\\n    }\\n\\n    function is2D() external returns (bool) {} // solium-disable-line no-empty-blocks\\n    function skinColor() external returns (string memory) {} // solium-disable-line no-empty-blocks\\n}\\n\",\"keccak256\":\"0x142e3c515e964d7aa8987daf5f0067b42e815009e2a414ba5e0319702ebd31f5\"}},\"version\":1}","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x35 DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH6 0x627A7A723058 KECCAK256 0x2d 0xb2 0xe2 EQ 0xe9 SAR 0xdd LT 0xb3 0xd1 SWAP6 DIV 0xf 0xa6 SWAP10 CODECOPY LOG2 CALLER PUSH10 0x2BFFEF03092C963000F2 0xa6 0xba MUL STOP 0x29 ","srcmap":"26:22:5:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26:22:5;;;;;;;","userdoc":"{\"methods\":{}}"},"./contracts/TestERC165.sol:Lisa":{"abi":"[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"skinColor\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"is2D\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}]","asm":{".code":[{"begin":1465,"end":1824,"name":"PUSH","value":"80"},{"begin":1465,"end":1824,"name":"PUSH","value":"40"},{"begin":1465,"end":1824,"name":"MSTORE"},{"begin":1525,"end":1635,"name":"CALLVALUE"},{"begin":8,"end":17,"name":"DUP1"},{"begin":5,"end":7,"name":"ISZERO"},{"begin":5,"end":7,"name":"PUSH [tag]","value":"1"},{"begin":5,"end":7,"name":"JUMPI"},{"begin":30,"end":31,"name":"PUSH","value":"0"},{"begin":27,"end":28,"name":"DUP1"},{"begin":20,"end":32,"name":"REVERT"},{"begin":5,"end":7,"name":"tag","value":"1"},{"begin":5,"end":7,"name":"JUMPDEST"},{"begin":-1,"end":-1,"name":"POP"},{"begin":1129,"end":1148,"name":"PUSH","value":"0"},{"begin":1129,"end":1181,"name":"PUSH","value":"20"},{"begin":1129,"end":1181,"name":"DUP2"},{"begin":1129,"end":1181,"name":"SWAP1"},{"begin":1129,"end":1181,"name":"MSTORE"},{"begin":1129,"end":1181,"name":"PUSH","value":"67BE87C3FF9960CA1E9CFAC5CAB2FF4747269CF9ED20C9B7306235AC35A491C5"},{"begin":1129,"end":1188,"name":"DUP1"},{"begin":1129,"end":1188,"name":"SLOAD"},{"begin":-1,"end":-1,"name":"PUSH","value":"FF"},{"begin":-1,"end":-1,"name":"NOT"},{"begin":1129,"end":1188,"name":"SWAP1"},{"begin":1129,"end":1188,"name":"DUP2"},{"begin":1129,"end":1188,"name":"AND"},{"begin":1184,"end":1188,"name":"PUSH","value":"1"},{"begin":1129,"end":1188,"name":"SWAP1"},{"begin":1129,"end":1188,"name":"DUP2"},{"begin":1129,"end":1188,"name":"OR"},{"begin":1129,"end":1188,"name":"SWAP1"},{"begin":1129,"end":1188,"name":"SWAP3"},{"begin":1129,"end":1188,"name":"SSTORE"},{"begin":1576,"end":1620,"name":"PUSH","value":"73B6B49200000000000000000000000000000000000000000000000000000000"},{"begin":1556,"end":1621,"name":"SWAP1"},{"begin":1556,"end":1621,"name":"SWAP3"},{"begin":1556,"end":1621,"name":"MSTORE"},{"begin":1556,"end":1621,"name":"PUSH","value":"2821411C1FD7B25BC2BF27B8A8AD7FBF30945588819643059FF580117E35C08B"},{"begin":1556,"end":1628,"name":"DUP1"},{"begin":1556,"end":1628,"name":"SLOAD"},{"begin":1556,"end":1628,"name":"SWAP1"},{"begin":1556,"end":1628,"name":"SWAP3"},{"begin":1556,"end":1628,"name":"AND"},{"begin":1556,"end":1628,"name":"OR"},{"begin":1556,"end":1628,"name":"SWAP1"},{"begin":1556,"end":1628,"name":"SSTORE"},{"begin":1465,"end":1824,"name":"PUSH #[$]","value":"0000000000000000000000000000000000000000000000000000000000000000"},{"begin":1465,"end":1824,"name":"DUP1"},{"begin":1465,"end":1824,"name":"PUSH [$]","value":"0000000000000000000000000000000000000000000000000000000000000000"},{"begin":1465,"end":1824,"name":"PUSH","value":"0"},{"begin":1465,"end":1824,"name":"CODECOPY"},{"begin":1465,"end":1824,"name":"PUSH","value":"0"},{"begin":1465,"end":1824,"name":"RETURN"}],".data":{"0":{".auxdata":"a165627a7a723058204aa6af8c98b594d121881ec04fe003e4f48be87925823e8f358d7453b58fc1da0029",".code":[{"begin":1465,"end":1824,"name":"PUSH","value":"80"},{"begin":1465,"end":1824,"name":"PUSH","value":"40"},{"begin":1465,"end":1824,"name":"MSTORE"},{"begin":1465,"end":1824,"name":"CALLVALUE"},{"begin":8,"end":17,"name":"DUP1"},{"begin":5,"end":7,"name":"ISZERO"},{"begin":5,"end":7,"name":"PUSH [tag]","value":"1"},{"begin":5,"end":7,"name":"JUMPI"},{"begin":30,"end":31,"name":"PUSH","value":"0"},{"begin":27,"end":28,"name":"DUP1"},{"begin":20,"end":32,"name":"REVERT"},{"begin":5,"end":7,"name":"tag","value":"1"},{"begin":5,"end":7,"name":"JUMPDEST"},{"begin":1465,"end":1824,"name":"POP"},{"begin":1465,"end":1824,"name":"PUSH","value":"4"},{"begin":1465,"end":1824,"name":"CALLDATASIZE"},{"begin":1465,"end":1824,"name":"LT"},{"begin":1465,"end":1824,"name":"PUSH [tag]","value":"2"},{"begin":1465,"end":1824,"name":"JUMPI"},{"begin":1465,"end":1824,"name":"PUSH","value":"100000000000000000000000000000000000000000000000000000000"},{"begin":1465,"end":1824,"name":"PUSH","value":"0"},{"begin":1465,"end":1824,"name":"CALLDATALOAD"},{"begin":1465,"end":1824,"name":"DIV"},{"begin":1465,"end":1824,"name":"PUSH","value":"1FFC9A7"},{"begin":1465,"end":1824,"name":"DUP2"},{"begin":1465,"end":1824,"name":"EQ"},{"begin":1465,"end":1824,"name":"PUSH [tag]","value":"3"},{"begin":1465,"end":1824,"name":"JUMPI"},{"begin":1465,"end":1824,"name":"DUP1"},{"begin":1465,"end":1824,"name":"PUSH","value":"137588F2"},{"begin":1465,"end":1824,"name":"EQ"},{"begin":1465,"end":1824,"name":"PUSH [tag]","value":"4"},{"begin":1465,"end":1824,"name":"JUMPI"},{"begin":1465,"end":1824,"name":"DUP1"},{"begin":1465,"end":1824,"name":"PUSH","value":"60C33C60"},{"begin":1465,"end":1824,"name":"EQ"},{"begin":1465,"end":1824,"name":"PUSH [tag]","value":"5"},{"begin":1465,"end":1824,"name":"JUMPI"},{"begin":1465,"end":1824,"name":"tag","value":"2"},{"begin":1465,"end":1824,"name":"JUMPDEST"},{"begin":1465,"end":1824,"name":"PUSH","value":"0"},{"begin":1465,"end":1824,"name":"DUP1"},{"begin":1465,"end":1824,"name":"REVERT"},{"begin":1201,"end":1333,"name":"tag","value":"3"},{"begin":1201,"end":1333,"name":"JUMPDEST"},{"begin":1201,"end":1333,"name":"PUSH [tag]","value":"6"},{"begin":1201,"end":1333,"name":"PUSH","value":"4"},{"begin":1201,"end":1333,"name":"DUP1"},{"begin":1201,"end":1333,"name":"CALLDATASIZE"},{"begin":1201,"end":1333,"name":"SUB"},{"begin":13,"end":15,"name":"PUSH","value":"20"},{"begin":8,"end":11,"name":"DUP2"},{"begin":5,"end":16,"name":"LT"},{"begin":2,"end":4,"name":"ISZERO"},{"begin":2,"end":4,"name":"PUSH [tag]","value":"7"},{"begin":2,"end":4,"name":"JUMPI"},{"begin":29,"end":30,"name":"PUSH","value":"0"},{"begin":26,"end":27,"name":"DUP1"},{"begin":19,"end":31,"name":"REVERT"},{"begin":2,"end":4,"name":"tag","value":"7"},{"begin":2,"end":4,"name":"JUMPDEST"},{"begin":-1,"end":-1,"name":"POP"},{"begin":1201,"end":1333,"name":"CALLDATALOAD"},{"begin":-1,"end":-1,"name":"PUSH","value":"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"},{"begin":-1,"end":-1,"name":"NOT"},{"begin":1201,"end":1333,"name":"AND"},{"begin":1201,"end":1333,"name":"PUSH [tag]","value":"8"},{"begin":1201,"end":1333,"name":"JUMP","value":"[in]"},{"begin":1201,"end":1333,"name":"tag","value":"6"},{"begin":1201,"end":1333,"name":"JUMPDEST"},{"begin":1201,"end":1333,"name":"PUSH","value":"40"},{"begin":1201,"end":1333,"name":"DUP1"},{"begin":1201,"end":1333,"name":"MLOAD"},{"begin":1201,"end":1333,"name":"SWAP2"},{"begin":1201,"end":1333,"name":"ISZERO"},{"begin":1201,"end":1333,"name":"ISZERO"},{"begin":1201,"end":1333,"name":"DUP3"},{"begin":1201,"end":1333,"name":"MSTORE"},{"begin":1201,"end":1333,"name":"MLOAD"},{"begin":1201,"end":1333,"name":"SWAP1"},{"begin":1201,"end":1333,"name":"DUP2"},{"begin":1201,"end":1333,"name":"SWAP1"},{"begin":1201,"end":1333,"name":"SUB"},{"begin":1201,"end":1333,"name":"PUSH","value":"20"},{"begin":1201,"end":1333,"name":"ADD"},{"begin":1201,"end":1333,"name":"SWAP1"},{"begin":1201,"end":1333,"name":"RETURN"},{"begin":1727,"end":1783,"name":"tag","value":"4"},{"begin":1727,"end":1783,"name":"JUMPDEST"},{"begin":1727,"end":1783,"name":"PUSH [tag]","value":"9"},{"begin":1727,"end":1783,"name":"PUSH [tag]","value":"10"},{"begin":1727,"end":1783,"name":"JUMP","value":"[in]"},{"begin":1727,"end":1783,"name":"tag","value":"9"},{"begin":1727,"end":1783,"name":"JUMPDEST"},{"begin":1727,"end":1783,"name":"PUSH","value":"40"},{"begin":1727,"end":1783,"name":"DUP1"},{"begin":1727,"end":1783,"name":"MLOAD"},{"begin":1727,"end":1783,"name":"PUSH","value":"20"},{"begin":1727,"end":1783,"name":"DUP1"},{"begin":1727,"end":1783,"name":"DUP3"},{"begin":1727,"end":1783,"name":"MSTORE"},{"begin":1727,"end":1783,"name":"DUP4"},{"begin":1727,"end":1783,"name":"MLOAD"},{"begin":1727,"end":1783,"name":"DUP2"},{"begin":1727,"end":1783,"name":"DUP4"},{"begin":1727,"end":1783,"name":"ADD"},{"begin":1727,"end":1783,"name":"MSTORE"},{"begin":1727,"end":1783,"name":"DUP4"},{"begin":1727,"end":1783,"name":"MLOAD"},{"begin":1727,"end":1783,"name":"SWAP2"},{"begin":1727,"end":1783,"name":"SWAP3"},{"begin":1727,"end":1783,"name":"DUP4"},{"begin":1727,"end":1783,"name":"SWAP3"},{"begin":1727,"end":1783,"name":"SWAP1"},{"begin":1727,"end":1783,"name":"DUP4"},{"begin":1727,"end":1783,"name":"ADD"},{"begin":1727,"end":1783,"name":"SWAP2"},{"begin":1727,"end":1783,"name":"DUP6"},{"begin":1727,"end":1783,"name":"ADD"},{"begin":1727,"end":1783,"name":"SWAP1"},{"begin":1727,"end":1783,"name":"DUP1"},{"begin":1727,"end":1783,"name":"DUP4"},{"begin":1727,"end":1783,"name":"DUP4"},{"begin":1727,"end":1783,"name":"PUSH","value":"0"},{"begin":8,"end":108,"name":"tag","value":"11"},{"begin":8,"end":108,"name":"JUMPDEST"},{"begin":33,"end":36,"name":"DUP4"},{"begin":30,"end":31,"name":"DUP2"},{"begin":27,"end":37,"name":"LT"},{"begin":8,"end":108,"name":"ISZERO"},{"begin":8,"end":108,"name":"PUSH [tag]","value":"12"},{"begin":8,"end":108,"name":"JUMPI"},{"begin":90,"end":101,"name":"DUP2"},{"begin":90,"end":101,"name":"DUP2"},{"begin":90,"end":101,"name":"ADD"},{"begin":84,"end":102,"name":"MLOAD"},{"begin":71,"end":82,"name":"DUP4"},{"begin":71,"end":82,"name":"DUP3"},{"begin":71,"end":82,"name":"ADD"},{"begin":64,"end":103,"name":"MSTORE"},{"begin":52,"end":54,"name":"PUSH","value":"20"},{"begin":45,"end":55,"name":"ADD"},{"begin":8,"end":108,"name":"PUSH [tag]","value":"11"},{"begin":8,"end":108,"name":"JUMP"},{"begin":8,"end":108,"name":"tag","value":"12"},{"begin":8,"end":108,"name":"JUMPDEST"},{"begin":12,"end":26,"name":"POP"},{"begin":1727,"end":1783,"name":"POP"},{"begin":1727,"end":1783,"name":"POP"},{"begin":1727,"end":1783,"name":"POP"},{"begin":1727,"end":1783,"name":"SWAP1"},{"begin":1727,"end":1783,"name":"POP"},{"begin":1727,"end":1783,"name":"SWAP1"},{"begin":1727,"end":1783,"name":"DUP2"},{"begin":1727,"end":1783,"name":"ADD"},{"begin":1727,"end":1783,"name":"SWAP1"},{"begin":1727,"end":1783,"name":"PUSH","value":"1F"},{"begin":1727,"end":1783,"name":"AND"},{"begin":1727,"end":1783,"name":"DUP1"},{"begin":1727,"end":1783,"name":"ISZERO"},{"begin":1727,"end":1783,"name":"PUSH [tag]","value":"14"},{"begin":1727,"end":1783,"name":"JUMPI"},{"begin":1727,"end":1783,"name":"DUP1"},{"begin":1727,"end":1783,"name":"DUP3"},{"begin":1727,"end":1783,"name":"SUB"},{"begin":1727,"end":1783,"name":"DUP1"},{"begin":1727,"end":1783,"name":"MLOAD"},{"begin":1727,"end":1783,"name":"PUSH","value":"1"},{"begin":1727,"end":1783,"name":"DUP4"},{"begin":1727,"end":1783,"name":"PUSH","value":"20"},{"begin":1727,"end":1783,"name":"SUB"},{"begin":1727,"end":1783,"name":"PUSH","value":"100"},{"begin":1727,"end":1783,"name":"EXP"},{"begin":1727,"end":1783,"name":"SUB"},{"begin":1727,"end":1783,"name":"NOT"},{"begin":1727,"end":1783,"name":"AND"},{"begin":1727,"end":1783,"name":"DUP2"},{"begin":1727,"end":1783,"name":"MSTORE"},{"begin":1727,"end":1783,"name":"PUSH","value":"20"},{"begin":1727,"end":1783,"name":"ADD"},{"begin":1727,"end":1783,"name":"SWAP2"},{"begin":1727,"end":1783,"name":"POP"},{"begin":1727,"end":1783,"name":"tag","value":"14"},{"begin":1727,"end":1783,"name":"JUMPDEST"},{"begin":1727,"end":1783,"name":"POP"},{"begin":1727,"end":1783,"name":"SWAP3"},{"begin":1727,"end":1783,"name":"POP"},{"begin":1727,"end":1783,"name":"POP"},{"begin":1727,"end":1783,"name":"POP"},{"begin":1727,"end":1783,"name":"PUSH","value":"40"},{"begin":1727,"end":1783,"name":"MLOAD"},{"begin":1727,"end":1783,"name":"DUP1"},{"begin":1727,"end":1783,"name":"SWAP2"},{"begin":1727,"end":1783,"name":"SUB"},{"begin":1727,"end":1783,"name":"SWAP1"},{"begin":1727,"end":1783,"name":"RETURN"},{"begin":1641,"end":1683,"name":"tag","value":"5"},{"begin":1641,"end":1683,"name":"JUMPDEST"},{"begin":1641,"end":1683,"name":"PUSH [tag]","value":"6"},{"begin":1641,"end":1683,"name":"PUSH [tag]","value":"16"},{"begin":1641,"end":1683,"name":"JUMP","value":"[in]"},{"begin":1201,"end":1333,"name":"tag","value":"8"},{"begin":1201,"end":1333,"name":"JUMPDEST"},{"begin":-1,"end":-1,"name":"PUSH","value":"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"},{"begin":-1,"end":-1,"name":"NOT"},{"begin":1294,"end":1326,"name":"AND"},{"begin":1271,"end":1275,"name":"PUSH","value":"0"},{"begin":1294,"end":1326,"name":"SWAP1"},{"begin":1294,"end":1326,"name":"DUP2"},{"begin":1294,"end":1326,"name":"MSTORE"},{"begin":1294,"end":1326,"name":"PUSH","value":"20"},{"begin":1294,"end":1326,"name":"DUP2"},{"begin":1294,"end":1326,"name":"SWAP1"},{"begin":1294,"end":1326,"name":"MSTORE"},{"begin":1294,"end":1326,"name":"PUSH","value":"40"},{"begin":1294,"end":1326,"name":"SWAP1"},{"begin":1294,"end":1326,"name":"KECCAK256"},{"begin":1294,"end":1326,"name":"SLOAD"},{"begin":1294,"end":1326,"name":"PUSH","value":"FF"},{"begin":1294,"end":1326,"name":"AND"},{"begin":1294,"end":1326,"name":"SWAP1"},{"begin":1201,"end":1333,"name":"JUMP","value":"[out]"},{"begin":1727,"end":1783,"name":"tag","value":"10"},{"begin":1727,"end":1783,"name":"JUMPDEST"},{"begin":1766,"end":1779,"name":"PUSH","value":"60"},{"begin":1727,"end":1783,"name":"SWAP1"},{"begin":1727,"end":1783,"name":"JUMP","value":"[out]"},{"begin":1641,"end":1683,"name":"tag","value":"16"},{"begin":1641,"end":1683,"name":"JUMPDEST"},{"begin":1675,"end":1679,"name":"PUSH","value":"0"},{"begin":1641,"end":1683,"name":"SWAP1"},{"begin":1641,"end":1683,"name":"JUMP","value":"[out]"}]}}},"bin":"608060405234801561001057600080fd5b50600060208190527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff1990811660019081179092557f73b6b492000000000000000000000000000000000000000000000000000000009092527f2821411c1fd7b25bc2bf27b8a8ad7fbf30945588819643059ff580117e35c08b80549092161790556101a1806100a56000396000f3fe608060405234801561001057600080fd5b506004361061005d577c0100000000000000000000000000000000000000000000000000000000600035046301ffc9a78114610062578063137588f2146100b257806360c33c601461012f575b600080fd5b61009e6004803603602081101561007857600080fd5b50357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916610137565b604080519115158252519081900360200190f35b6100ba61016b565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100f45781810151838201526020016100dc565b50505050905090810190601f1680156101215780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61009e610170565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191660009081526020819052604090205460ff1690565b606090565b60009056fea165627a7a723058204aa6af8c98b594d121881ec04fe003e4f48be87925823e8f358d7453b58fc1da0029","devdoc":"{\"methods\":{}}","hashes":{"is2D()":"60c33c60","skinColor()":"137588f2","supportsInterface(bytes4)":"01ffc9a7"},"metadata":"{\"compiler\":{\"version\":\"0.5.3+commit.10d17f24\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"skinColor\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"is2D\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"./contracts/TestERC165.sol\":\"Lisa\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"./contracts/TestERC165.sol\":{\"content\":\"pragma solidity ^0.5.3;\\n\\n\\ncontract LegacyNoCB {} // solium-disable-line no-empty-blocks\\n\\n\\ncontract LegacyCBNoReturn {\\n    function () external {\\n    }\\n}\\n\\n\\ncontract LegacyCBReturnTrue {\\n    function () external {\\n        assembly {\\n            mstore(0,1)\\n            return(0,32)\\n        }\\n    }\\n}\\n\\n\\ncontract LegacyCBReturnFalse {\\n    function () external {\\n        assembly {\\n            mstore(0,1)\\n            return(0,32)\\n        }\\n    }\\n}\\n\\ninterface ERC165 {\\n    /// @notice Query if a contract implements an interface\\n    /// @param interfaceID The interface identifier, as specified in ERC-165\\n    /// @dev Interface identification is specified in ERC-165. This function\\n    ///  uses less than 30,000 gas.\\n    /// @return `true` if the contract implements `interfaceID` and\\n    ///  `interfaceID` is not 0xffffffff, `false` otherwise\\n    function supportsInterface(bytes4 interfaceID) external view returns (bool);\\n}\\n\\n\\ncontract ERC165MappingImplementation is ERC165 {\\n    /// @dev You must not set element 0xffffffff to true\\n    mapping(bytes4 => bool) internal supportedInterfaces;\\n\\n    constructor() internal {\\n        supportedInterfaces[this.supportsInterface.selector] = true;\\n    }\\n\\n    function supportsInterface(bytes4 interfaceID) external view returns (bool) {\\n        return supportedInterfaces[interfaceID];\\n    }\\n}\\n\\ninterface Simpson {\\n    function is2D() external returns (bool);\\n    function skinColor() external returns (string memory);\\n}\\n\\n\\ncontract Lisa is ERC165MappingImplementation, Simpson {\\n    constructor() public {\\n        supportedInterfaces[this.is2D.selector ^ this.skinColor.selector] = true;\\n    }\\n\\n    function is2D() external returns (bool) {} // solium-disable-line no-empty-blocks\\n    function skinColor() external returns (string memory) {} // solium-disable-line no-empty-blocks\\n}\\n\\n\\ncontract Homer is ERC165, Simpson {\\n    function supportsInterface(bytes4 interfaceID) external view returns (bool) {\\n        return\\n            interfaceID == this.supportsInterface.selector || // ERC165\\n            interfaceID == this.is2D.selector ^ this.skinColor.selector; // Simpson\\n    }\\n\\n    function is2D() external returns (bool) {} // solium-disable-line no-empty-blocks\\n    function skinColor() external returns (string memory) {} // solium-disable-line no-empty-blocks\\n}\\n\",\"keccak256\":\"0x142e3c515e964d7aa8987daf5f0067b42e815009e2a414ba5e0319702ebd31f5\"}},\"version\":1}","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH32 0x67BE87C3FF9960CA1E9CFAC5CAB2FF4747269CF9ED20C9B7306235AC35A491C5 DUP1 SLOAD PUSH1 0xFF NOT SWAP1 DUP2 AND PUSH1 0x1 SWAP1 DUP2 OR SWAP1 SWAP3 SSTORE PUSH32 0x73B6B49200000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 MSTORE PUSH32 0x2821411C1FD7B25BC2BF27B8A8AD7FBF30945588819643059FF580117E35C08B DUP1 SLOAD SWAP1 SWAP3 AND OR SWAP1 SSTORE PUSH2 0x1A1 DUP1 PUSH2 0xA5 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 0x5D JUMPI PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 CALLDATALOAD DIV PUSH4 0x1FFC9A7 DUP2 EQ PUSH2 0x62 JUMPI DUP1 PUSH4 0x137588F2 EQ PUSH2 0xB2 JUMPI DUP1 PUSH4 0x60C33C60 EQ PUSH2 0x12F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH2 0x137 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xBA PUSH2 0x16B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xDC JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x121 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x9E PUSH2 0x170 JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP INVALID LOG1 PUSH6 0x627A7A723058 KECCAK256 0x4a 0xa6 0xaf DUP13 SWAP9 0xb5 SWAP5 0xd1 0x21 DUP9 0x1e 0xc0 0x4f 0xe0 SUB 0xe4 DELEGATECALL DUP12 0xe8 PUSH26 0x25823E8F358D7453B58FC1DA0029000000000000000000000000 ","srcmap":"1465:359:5:-;;;1525:110;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1129:19:5;:52;;;;;:59;;-1:-1:-1;;1129:59:5;;;1184:4;1129:59;;;;;;1576:44;1556:65;;;;:72;;;;;;;;1465:359;;;;;;","userdoc":"{\"methods\":{}}"},"./contracts/TestERC165.sol:Simpson":{"abi":"[{\"constant\":false,\"inputs\":[],\"name\":\"skinColor\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"is2D\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]","asm":null,"bin":"","devdoc":"{\"methods\":{}}","hashes":{"is2D()":"60c33c60","skinColor()":"137588f2"},"metadata":"","opcodes":"","srcmap":"","userdoc":"{\"methods\":{}}"}},"sourceList":["./contracts/ERC1820Client.sol","./contracts/ERC1820ImplementerInterface.sol","./contracts/ERC1820Registry.sol","./contracts/ExampleClient.sol","./contracts/ExampleImplementer.sol","./contracts/TestERC165.sol"],"version":"0.5.3+commit.10d17f24.Linux.g++"}