Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save iam-peekay/592d433c59348f863d5ee433091ca003 to your computer and use it in GitHub Desktop.
Save iam-peekay/592d433c59348f863d5ee433091ca003 to your computer and use it in GitHub Desktop.
Created using remix-ide: Realtime Ethereum Contract Compiler and Runtime. Load this file by pasting this gists URL or ID at https://remix.ethereum.org/#version=soljson-v0.8.13+commit.abaa5c0e.js&optimize=true&runs=200&gist=
// SPDX-License-Identifier: MIT
pragma solidity >= 0.4.22 <0.9.0;
library console {
address constant CONSOLE_ADDRESS = address(0x000000000000000000636F6e736F6c652e6c6f67);
function _sendLogPayload(bytes memory payload) private view {
uint256 payloadLength = payload.length;
address consoleAddress = CONSOLE_ADDRESS;
assembly {
let payloadStart := add(payload, 32)
let r := staticcall(gas(), consoleAddress, payloadStart, payloadLength, 0, 0)
}
}
function log() internal view {
_sendLogPayload(abi.encodeWithSignature("log()"));
}
function logInt(int p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(int)", p0));
}
function logUint(uint p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint)", p0));
}
function logString(string memory p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string)", p0));
}
function logBool(bool p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool)", p0));
}
function logAddress(address p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address)", p0));
}
function logBytes(bytes memory p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes)", p0));
}
function logBytes1(bytes1 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes1)", p0));
}
function logBytes2(bytes2 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes2)", p0));
}
function logBytes3(bytes3 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes3)", p0));
}
function logBytes4(bytes4 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes4)", p0));
}
function logBytes5(bytes5 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes5)", p0));
}
function logBytes6(bytes6 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes6)", p0));
}
function logBytes7(bytes7 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes7)", p0));
}
function logBytes8(bytes8 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes8)", p0));
}
function logBytes9(bytes9 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes9)", p0));
}
function logBytes10(bytes10 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes10)", p0));
}
function logBytes11(bytes11 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes11)", p0));
}
function logBytes12(bytes12 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes12)", p0));
}
function logBytes13(bytes13 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes13)", p0));
}
function logBytes14(bytes14 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes14)", p0));
}
function logBytes15(bytes15 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes15)", p0));
}
function logBytes16(bytes16 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes16)", p0));
}
function logBytes17(bytes17 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes17)", p0));
}
function logBytes18(bytes18 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes18)", p0));
}
function logBytes19(bytes19 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes19)", p0));
}
function logBytes20(bytes20 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes20)", p0));
}
function logBytes21(bytes21 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes21)", p0));
}
function logBytes22(bytes22 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes22)", p0));
}
function logBytes23(bytes23 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes23)", p0));
}
function logBytes24(bytes24 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes24)", p0));
}
function logBytes25(bytes25 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes25)", p0));
}
function logBytes26(bytes26 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes26)", p0));
}
function logBytes27(bytes27 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes27)", p0));
}
function logBytes28(bytes28 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes28)", p0));
}
function logBytes29(bytes29 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes29)", p0));
}
function logBytes30(bytes30 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes30)", p0));
}
function logBytes31(bytes31 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes31)", p0));
}
function logBytes32(bytes32 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes32)", p0));
}
function log(uint p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint)", p0));
}
function log(string memory p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string)", p0));
}
function log(bool p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool)", p0));
}
function log(address p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address)", p0));
}
function log(uint p0, uint p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint)", p0, p1));
}
function log(uint p0, string memory p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string)", p0, p1));
}
function log(uint p0, bool p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool)", p0, p1));
}
function log(uint p0, address p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address)", p0, p1));
}
function log(string memory p0, uint p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint)", p0, p1));
}
function log(string memory p0, string memory p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string)", p0, p1));
}
function log(string memory p0, bool p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool)", p0, p1));
}
function log(string memory p0, address p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address)", p0, p1));
}
function log(bool p0, uint p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint)", p0, p1));
}
function log(bool p0, string memory p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string)", p0, p1));
}
function log(bool p0, bool p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool)", p0, p1));
}
function log(bool p0, address p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address)", p0, p1));
}
function log(address p0, uint p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint)", p0, p1));
}
function log(address p0, string memory p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string)", p0, p1));
}
function log(address p0, bool p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool)", p0, p1));
}
function log(address p0, address p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address)", p0, p1));
}
function log(uint p0, uint p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint)", p0, p1, p2));
}
function log(uint p0, uint p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,string)", p0, p1, p2));
}
function log(uint p0, uint p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool)", p0, p1, p2));
}
function log(uint p0, uint p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,address)", p0, p1, p2));
}
function log(uint p0, string memory p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,uint)", p0, p1, p2));
}
function log(uint p0, string memory p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,string)", p0, p1, p2));
}
function log(uint p0, string memory p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,bool)", p0, p1, p2));
}
function log(uint p0, string memory p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,address)", p0, p1, p2));
}
function log(uint p0, bool p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint)", p0, p1, p2));
}
function log(uint p0, bool p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,string)", p0, p1, p2));
}
function log(uint p0, bool p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool)", p0, p1, p2));
}
function log(uint p0, bool p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,address)", p0, p1, p2));
}
function log(uint p0, address p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,uint)", p0, p1, p2));
}
function log(uint p0, address p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,string)", p0, p1, p2));
}
function log(uint p0, address p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,bool)", p0, p1, p2));
}
function log(uint p0, address p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,address)", p0, p1, p2));
}
function log(string memory p0, uint p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,uint)", p0, p1, p2));
}
function log(string memory p0, uint p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,string)", p0, p1, p2));
}
function log(string memory p0, uint p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,bool)", p0, p1, p2));
}
function log(string memory p0, uint p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,address)", p0, p1, p2));
}
function log(string memory p0, string memory p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint)", p0, p1, p2));
}
function log(string memory p0, string memory p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,string)", p0, p1, p2));
}
function log(string memory p0, string memory p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,bool)", p0, p1, p2));
}
function log(string memory p0, string memory p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,address)", p0, p1, p2));
}
function log(string memory p0, bool p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint)", p0, p1, p2));
}
function log(string memory p0, bool p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,string)", p0, p1, p2));
}
function log(string memory p0, bool p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool)", p0, p1, p2));
}
function log(string memory p0, bool p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,address)", p0, p1, p2));
}
function log(string memory p0, address p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint)", p0, p1, p2));
}
function log(string memory p0, address p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,string)", p0, p1, p2));
}
function log(string memory p0, address p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,bool)", p0, p1, p2));
}
function log(string memory p0, address p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,address)", p0, p1, p2));
}
function log(bool p0, uint p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint)", p0, p1, p2));
}
function log(bool p0, uint p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,string)", p0, p1, p2));
}
function log(bool p0, uint p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool)", p0, p1, p2));
}
function log(bool p0, uint p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,address)", p0, p1, p2));
}
function log(bool p0, string memory p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint)", p0, p1, p2));
}
function log(bool p0, string memory p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,string)", p0, p1, p2));
}
function log(bool p0, string memory p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool)", p0, p1, p2));
}
function log(bool p0, string memory p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,address)", p0, p1, p2));
}
function log(bool p0, bool p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint)", p0, p1, p2));
}
function log(bool p0, bool p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string)", p0, p1, p2));
}
function log(bool p0, bool p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool)", p0, p1, p2));
}
function log(bool p0, bool p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address)", p0, p1, p2));
}
function log(bool p0, address p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint)", p0, p1, p2));
}
function log(bool p0, address p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,string)", p0, p1, p2));
}
function log(bool p0, address p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool)", p0, p1, p2));
}
function log(bool p0, address p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,address)", p0, p1, p2));
}
function log(address p0, uint p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,uint)", p0, p1, p2));
}
function log(address p0, uint p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,string)", p0, p1, p2));
}
function log(address p0, uint p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,bool)", p0, p1, p2));
}
function log(address p0, uint p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,address)", p0, p1, p2));
}
function log(address p0, string memory p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint)", p0, p1, p2));
}
function log(address p0, string memory p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,string)", p0, p1, p2));
}
function log(address p0, string memory p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,bool)", p0, p1, p2));
}
function log(address p0, string memory p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,address)", p0, p1, p2));
}
function log(address p0, bool p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint)", p0, p1, p2));
}
function log(address p0, bool p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,string)", p0, p1, p2));
}
function log(address p0, bool p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool)", p0, p1, p2));
}
function log(address p0, bool p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,address)", p0, p1, p2));
}
function log(address p0, address p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint)", p0, p1, p2));
}
function log(address p0, address p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,string)", p0, p1, p2));
}
function log(address p0, address p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,bool)", p0, p1, p2));
}
function log(address p0, address p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,address)", p0, p1, p2));
}
function log(uint p0, uint p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,uint)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,string)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,bool)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,address)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,uint)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,string)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,bool)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,address)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,uint)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,string)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,bool)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,address)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,uint)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,string)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,bool)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,address)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,uint)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,string)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,bool)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,address)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,string,uint)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,string,string)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,string,bool)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,string,address)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,uint)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,string)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,bool)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,address)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,address,uint)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,address,string)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,address,bool)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,address,address)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,uint)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,string)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,bool)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,address)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,uint)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,string)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,bool)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,address)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,uint)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,string)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,bool)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,address)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,uint)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,string)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,bool)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,address)", p0, p1, p2, p3));
}
function log(uint p0, address p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,uint)", p0, p1, p2, p3));
}
function log(uint p0, address p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,string)", p0, p1, p2, p3));
}
function log(uint p0, address p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,bool)", p0, p1, p2, p3));
}
function log(uint p0, address p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,address)", p0, p1, p2, p3));
}
function log(uint p0, address p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,string,uint)", p0, p1, p2, p3));
}
function log(uint p0, address p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,string,string)", p0, p1, p2, p3));
}
function log(uint p0, address p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,string,bool)", p0, p1, p2, p3));
}
function log(uint p0, address p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,string,address)", p0, p1, p2, p3));
}
function log(uint p0, address p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,uint)", p0, p1, p2, p3));
}
function log(uint p0, address p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,string)", p0, p1, p2, p3));
}
function log(uint p0, address p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,bool)", p0, p1, p2, p3));
}
function log(uint p0, address p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,address)", p0, p1, p2, p3));
}
function log(uint p0, address p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,address,uint)", p0, p1, p2, p3));
}
function log(uint p0, address p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,address,string)", p0, p1, p2, p3));
}
function log(uint p0, address p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,address,bool)", p0, p1, p2, p3));
}
function log(uint p0, address p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,address,address)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,uint)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,string)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,bool)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,address)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,string,uint)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,string,string)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,string,bool)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,string,address)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,uint)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,string)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,bool)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,address)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,address,uint)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,address,string)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,address,bool)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,address,address)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint,uint)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint,string)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint,bool)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint,address)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,string,uint)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,string,string)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,string,bool)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,string,address)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,bool,uint)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,bool,string)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,bool,bool)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,bool,address)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,address,uint)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,address,string)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,address,bool)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,address,address)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,uint)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,string)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,bool)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,address)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,string,uint)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,string,string)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,string,bool)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,string,address)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,uint)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,string)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,bool)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,address)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,address,uint)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,address,string)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,address,bool)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,address,address)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint,uint)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint,string)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint,bool)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint,address)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,string,uint)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,string,string)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,string,bool)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,string,address)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,bool,uint)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,bool,string)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,bool,bool)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,bool,address)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,address,uint)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,address,string)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,address,bool)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,address,address)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,uint)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,string)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,bool)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,address)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,uint)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,string)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,bool)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,address)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,uint)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,string)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,bool)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,address)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,uint)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,string)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,bool)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,address)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,uint)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,string)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,bool)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,address)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,string,uint)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,string,string)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,string,bool)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,string,address)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,uint)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,string)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,bool)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,address)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,address,uint)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,address,string)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,address,bool)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,address,address)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,uint)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,string)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,bool)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,address)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,uint)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,string)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,bool)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,address)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,uint)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,string)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,bool)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,address)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,uint)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,string)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,bool)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,address)", p0, p1, p2, p3));
}
function log(bool p0, address p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,uint)", p0, p1, p2, p3));
}
function log(bool p0, address p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,string)", p0, p1, p2, p3));
}
function log(bool p0, address p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,bool)", p0, p1, p2, p3));
}
function log(bool p0, address p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,address)", p0, p1, p2, p3));
}
function log(bool p0, address p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,string,uint)", p0, p1, p2, p3));
}
function log(bool p0, address p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,string,string)", p0, p1, p2, p3));
}
function log(bool p0, address p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,string,bool)", p0, p1, p2, p3));
}
function log(bool p0, address p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,string,address)", p0, p1, p2, p3));
}
function log(bool p0, address p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,uint)", p0, p1, p2, p3));
}
function log(bool p0, address p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,string)", p0, p1, p2, p3));
}
function log(bool p0, address p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,bool)", p0, p1, p2, p3));
}
function log(bool p0, address p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,address)", p0, p1, p2, p3));
}
function log(bool p0, address p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,address,uint)", p0, p1, p2, p3));
}
function log(bool p0, address p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,address,string)", p0, p1, p2, p3));
}
function log(bool p0, address p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,address,bool)", p0, p1, p2, p3));
}
function log(bool p0, address p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,address,address)", p0, p1, p2, p3));
}
function log(address p0, uint p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,uint)", p0, p1, p2, p3));
}
function log(address p0, uint p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,string)", p0, p1, p2, p3));
}
function log(address p0, uint p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,bool)", p0, p1, p2, p3));
}
function log(address p0, uint p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,address)", p0, p1, p2, p3));
}
function log(address p0, uint p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,string,uint)", p0, p1, p2, p3));
}
function log(address p0, uint p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,string,string)", p0, p1, p2, p3));
}
function log(address p0, uint p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,string,bool)", p0, p1, p2, p3));
}
function log(address p0, uint p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,string,address)", p0, p1, p2, p3));
}
function log(address p0, uint p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,uint)", p0, p1, p2, p3));
}
function log(address p0, uint p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,string)", p0, p1, p2, p3));
}
function log(address p0, uint p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,bool)", p0, p1, p2, p3));
}
function log(address p0, uint p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,address)", p0, p1, p2, p3));
}
function log(address p0, uint p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,address,uint)", p0, p1, p2, p3));
}
function log(address p0, uint p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,address,string)", p0, p1, p2, p3));
}
function log(address p0, uint p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,address,bool)", p0, p1, p2, p3));
}
function log(address p0, uint p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,address,address)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint,uint)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint,string)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint,bool)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint,address)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,string,uint)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,string,string)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,string,bool)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,string,address)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,bool,uint)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,bool,string)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,bool,bool)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,bool,address)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,address,uint)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,address,string)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,address,bool)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,address,address)", p0, p1, p2, p3));
}
function log(address p0, bool p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,uint)", p0, p1, p2, p3));
}
function log(address p0, bool p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,string)", p0, p1, p2, p3));
}
function log(address p0, bool p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,bool)", p0, p1, p2, p3));
}
function log(address p0, bool p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,address)", p0, p1, p2, p3));
}
function log(address p0, bool p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,string,uint)", p0, p1, p2, p3));
}
function log(address p0, bool p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,string,string)", p0, p1, p2, p3));
}
function log(address p0, bool p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,string,bool)", p0, p1, p2, p3));
}
function log(address p0, bool p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,string,address)", p0, p1, p2, p3));
}
function log(address p0, bool p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,uint)", p0, p1, p2, p3));
}
function log(address p0, bool p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,string)", p0, p1, p2, p3));
}
function log(address p0, bool p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,bool)", p0, p1, p2, p3));
}
function log(address p0, bool p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,address)", p0, p1, p2, p3));
}
function log(address p0, bool p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,address,uint)", p0, p1, p2, p3));
}
function log(address p0, bool p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,address,string)", p0, p1, p2, p3));
}
function log(address p0, bool p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,address,bool)", p0, p1, p2, p3));
}
function log(address p0, bool p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,address,address)", p0, p1, p2, p3));
}
function log(address p0, address p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint,uint)", p0, p1, p2, p3));
}
function log(address p0, address p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint,string)", p0, p1, p2, p3));
}
function log(address p0, address p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint,bool)", p0, p1, p2, p3));
}
function log(address p0, address p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint,address)", p0, p1, p2, p3));
}
function log(address p0, address p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,string,uint)", p0, p1, p2, p3));
}
function log(address p0, address p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,string,string)", p0, p1, p2, p3));
}
function log(address p0, address p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,string,bool)", p0, p1, p2, p3));
}
function log(address p0, address p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,string,address)", p0, p1, p2, p3));
}
function log(address p0, address p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,bool,uint)", p0, p1, p2, p3));
}
function log(address p0, address p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,bool,string)", p0, p1, p2, p3));
}
function log(address p0, address p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,bool,bool)", p0, p1, p2, p3));
}
function log(address p0, address p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,bool,address)", p0, p1, p2, p3));
}
function log(address p0, address p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,address,uint)", p0, p1, p2, p3));
}
function log(address p0, address p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,address,string)", p0, p1, p2, p3));
}
function log(address p0, address p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,address,bool)", p0, p1, p2, p3));
}
function log(address p0, address p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,address,address)", p0, p1, p2, p3));
}
}
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.4.22 <0.9.0;
library TestsAccounts {
function getAccount(uint index) pure public returns (address) {
address[15] memory accounts;
accounts[0] = 0x5B38Da6a701c568545dCfcB03FcB875f56beddC4;
accounts[1] = 0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2;
accounts[2] = 0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db;
accounts[3] = 0x78731D3Ca6b7E34aC0F824c42a7cC18A495cabaB;
accounts[4] = 0x617F2E2fD72FD9D5503197092aC168c91465E7f2;
accounts[5] = 0x17F6AD8Ef982297579C203069C1DbfFE4348c372;
accounts[6] = 0x5c6B0f7Bf3E7ce046039Bd8FABdfD3f9F5021678;
accounts[7] = 0x03C6FcED478cBbC9a4FAB34eF9f40767739D1Ff7;
accounts[8] = 0x1aE0EA34a72D944a8C7603FfB3eC30a6669E454C;
accounts[9] = 0x0A098Eda01Ce92ff4A4CCb7A4fFFb5A43EBC70DC;
accounts[10] = 0xCA35b7d915458EF540aDe6068dFe2F44E8fa733c;
accounts[11] = 0x14723A09ACff6D2A60DcdF7aA4AFf308FDDC160C;
accounts[12] = 0x4B0897b0513fdC7C541B6d9D7E929C4e5364D2dB;
accounts[13] = 0x583031D1113aD414F02576BD6afaBfb302140225;
accounts[14] = 0xdD870fA1b7C4700F2BD7f44238821C26f7392148;
return accounts[index];
}
}
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.4.22 <0.9.0;
library Assert {
event AssertionEvent(
bool passed,
string message,
string methodName
);
event AssertionEventUint(
bool passed,
string message,
string methodName,
uint256 returned,
uint256 expected
);
event AssertionEventInt(
bool passed,
string message,
string methodName,
int256 returned,
int256 expected
);
event AssertionEventBool(
bool passed,
string message,
string methodName,
bool returned,
bool expected
);
event AssertionEventAddress(
bool passed,
string message,
string methodName,
address returned,
address expected
);
event AssertionEventBytes32(
bool passed,
string message,
string methodName,
bytes32 returned,
bytes32 expected
);
event AssertionEventString(
bool passed,
string message,
string methodName,
string returned,
string expected
);
event AssertionEventUintInt(
bool passed,
string message,
string methodName,
uint256 returned,
int256 expected
);
event AssertionEventIntUint(
bool passed,
string message,
string methodName,
int256 returned,
uint256 expected
);
function ok(bool a, string memory message) public returns (bool result) {
result = a;
emit AssertionEvent(result, message, "ok");
}
function equal(uint256 a, uint256 b, string memory message) public returns (bool result) {
result = (a == b);
emit AssertionEventUint(result, message, "equal", a, b);
}
function equal(int256 a, int256 b, string memory message) public returns (bool result) {
result = (a == b);
emit AssertionEventInt(result, message, "equal", a, b);
}
function equal(bool a, bool b, string memory message) public returns (bool result) {
result = (a == b);
emit AssertionEventBool(result, message, "equal", a, b);
}
// TODO: only for certain versions of solc
//function equal(fixed a, fixed b, string message) public returns (bool result) {
// result = (a == b);
// emit AssertionEvent(result, message);
//}
// TODO: only for certain versions of solc
//function equal(ufixed a, ufixed b, string message) public returns (bool result) {
// result = (a == b);
// emit AssertionEvent(result, message);
//}
function equal(address a, address b, string memory message) public returns (bool result) {
result = (a == b);
emit AssertionEventAddress(result, message, "equal", a, b);
}
function equal(bytes32 a, bytes32 b, string memory message) public returns (bool result) {
result = (a == b);
emit AssertionEventBytes32(result, message, "equal", a, b);
}
function equal(string memory a, string memory b, string memory message) public returns (bool result) {
result = (keccak256(abi.encodePacked(a)) == keccak256(abi.encodePacked(b)));
emit AssertionEventString(result, message, "equal", a, b);
}
function notEqual(uint256 a, uint256 b, string memory message) public returns (bool result) {
result = (a != b);
emit AssertionEventUint(result, message, "notEqual", a, b);
}
function notEqual(int256 a, int256 b, string memory message) public returns (bool result) {
result = (a != b);
emit AssertionEventInt(result, message, "notEqual", a, b);
}
function notEqual(bool a, bool b, string memory message) public returns (bool result) {
result = (a != b);
emit AssertionEventBool(result, message, "notEqual", a, b);
}
// TODO: only for certain versions of solc
//function notEqual(fixed a, fixed b, string message) public returns (bool result) {
// result = (a != b);
// emit AssertionEvent(result, message);
//}
// TODO: only for certain versions of solc
//function notEqual(ufixed a, ufixed b, string message) public returns (bool result) {
// result = (a != b);
// emit AssertionEvent(result, message);
//}
function notEqual(address a, address b, string memory message) public returns (bool result) {
result = (a != b);
emit AssertionEventAddress(result, message, "notEqual", a, b);
}
function notEqual(bytes32 a, bytes32 b, string memory message) public returns (bool result) {
result = (a != b);
emit AssertionEventBytes32(result, message, "notEqual", a, b);
}
function notEqual(string memory a, string memory b, string memory message) public returns (bool result) {
result = (keccak256(abi.encodePacked(a)) != keccak256(abi.encodePacked(b)));
emit AssertionEventString(result, message, "notEqual", a, b);
}
/*----------------- Greater than --------------------*/
function greaterThan(uint256 a, uint256 b, string memory message) public returns (bool result) {
result = (a > b);
emit AssertionEventUint(result, message, "greaterThan", a, b);
}
function greaterThan(int256 a, int256 b, string memory message) public returns (bool result) {
result = (a > b);
emit AssertionEventInt(result, message, "greaterThan", a, b);
}
// TODO: safely compare between uint and int
function greaterThan(uint256 a, int256 b, string memory message) public returns (bool result) {
if(b < int(0)) {
// int is negative uint "a" always greater
result = true;
} else {
result = (a > uint(b));
}
emit AssertionEventUintInt(result, message, "greaterThan", a, b);
}
function greaterThan(int256 a, uint256 b, string memory message) public returns (bool result) {
if(a < int(0)) {
// int is negative uint "b" always greater
result = false;
} else {
result = (uint(a) > b);
}
emit AssertionEventIntUint(result, message, "greaterThan", a, b);
}
/*----------------- Lesser than --------------------*/
function lesserThan(uint256 a, uint256 b, string memory message) public returns (bool result) {
result = (a < b);
emit AssertionEventUint(result, message, "lesserThan", a, b);
}
function lesserThan(int256 a, int256 b, string memory message) public returns (bool result) {
result = (a < b);
emit AssertionEventInt(result, message, "lesserThan", a, b);
}
// TODO: safely compare between uint and int
function lesserThan(uint256 a, int256 b, string memory message) public returns (bool result) {
if(b < int(0)) {
// int is negative int "b" always lesser
result = false;
} else {
result = (a < uint(b));
}
emit AssertionEventUintInt(result, message, "lesserThan", a, b);
}
function lesserThan(int256 a, uint256 b, string memory message) public returns (bool result) {
if(a < int(0)) {
// int is negative int "a" always lesser
result = true;
} else {
result = (uint(a) < b);
}
emit AssertionEventIntUint(result, message, "lesserThan", a, b);
}
}
REMIX DEFAULT WORKSPACE
Remix default workspace is present when:
i. Remix loads for the very first time
ii. A new workspace is created
iii. There are no files existing in the File Explorer
This workspace contains 3 directories:
1. 'contracts': Holds three contracts with different complexity level, denoted with number prefix in file name.
2. 'scripts': Holds two scripts to deploy a contract. It is explained below.
3. 'tests': Contains one Solidity test file for 'Ballot' contract & one JS test file for 'Storage' contract
SCRIPTS
The 'scripts' folder contains two example async/await scripts for deploying the 'Storage' contract.
For the deployment of any other contract, 'contractName' and 'constructorArgs' should be updated (along with other code if required).
Also, there is a script containing some unit tests for Storage contract inside tests directory.
To run a script, right click on file name in the file explorer and click 'Run'. Remember, Solidity file must already be compiled.
Output from script will appear in remix terminal.
Please note, 'require' statement is supported in a limited manner for Remix supported modules.
For now, modules supported by Remix are ethers, web3, swarmgw, chai, remix and hardhat only for hardhat.ethers object/plugin.
For unsupported modules, an error like this will be thrown: '<module_name> module require is not supported by Remix IDE will be shown.'
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
/*
- Initialize an array
- Operations - get, push, pop, length, delete
*/
contract Array {
// Several ways to initialize an array
uint[] public arr;
uint[] public arr2 = [1, 2, 3];
// Fixed sized array, all elements initialize to 0
uint[10] public myFixedSizeArr;
function get(uint i) public view returns (uint) {
return arr[i];
}
// Solidity can return the entire array.
// But this function should be avoided for
// arrays that can grow indefinitely in length.
function getArr() public view returns (uint[] memory) {
return arr;
}
function push(uint i) public {
// Append to array
// This will increase the array length by 1.
arr.push(i);
}
function pop() public {
// Remove last element from array
// This will decrease the array length by 1
arr.pop();
}
function getLength() public view returns (uint) {
return arr.length;
}
function remove(uint index) public {
// Delete does not change the array length.
// It resets the value at index to it's default value,
// in this case 0
delete arr[index];
}
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "608060405234801561001057600080fd5b5060df8061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b60408051808201825260018152604160f81b60208201529051604e91906057565b60405180910390f35b600060208083528351808285015260005b818110156082578581018301518582016040015282016068565b818111156093576000604083870101525b50601f01601f191692909201604001939250505056fea2646970667358221220b7b6b9a0b6c59b18bb3f91752876fc41bed7f8384ee298871baf1b4788a06c6364736f6c634300080d0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xDF DUP1 PUSH2 0x1F 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 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC2985578 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x41 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x4E SWAP2 SWAP1 PUSH1 0x57 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH1 0x82 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH1 0x68 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH1 0x93 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB7 0xB6 0xB9 LOG0 0xB6 0xC5 SWAP12 XOR 0xBB EXTCODEHASH SWAP2 PUSH22 0x2876FC41BED7F8384EE298871BAF1B4788A06C636473 PUSH16 0x6C634300080D00330000000000000000 ",
"sourceMap": "437:105:0:-:0;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@foo_9": {
"entryPoint": null,
"id": 9,
"parameterSlots": 0,
"returnSlots": 1
},
"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 87,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:613:1",
"statements": [
{
"nodeType": "YulBlock",
"src": "6:3:1",
"statements": []
},
{
"body": {
"nodeType": "YulBlock",
"src": "135:476:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "145:12:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "155:2:1",
"type": "",
"value": "32"
},
"variables": [
{
"name": "_1",
"nodeType": "YulTypedName",
"src": "149:2:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "173:9:1"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "184:2:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "166:6:1"
},
"nodeType": "YulFunctionCall",
"src": "166:21:1"
},
"nodeType": "YulExpressionStatement",
"src": "166:21:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "196:27:1",
"value": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "216:6:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "210:5:1"
},
"nodeType": "YulFunctionCall",
"src": "210:13:1"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "200:6:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "243:9:1"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "254:2:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "239:3:1"
},
"nodeType": "YulFunctionCall",
"src": "239:18:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "259:6:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "232:6:1"
},
"nodeType": "YulFunctionCall",
"src": "232:34:1"
},
"nodeType": "YulExpressionStatement",
"src": "232:34:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "275:10:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "284:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "279:1:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "344:90:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "373:9:1"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "384:1:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "369:3:1"
},
"nodeType": "YulFunctionCall",
"src": "369:17:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "388:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "365:3:1"
},
"nodeType": "YulFunctionCall",
"src": "365:26:1"
},
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "407:6:1"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "415:1:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "403:3:1"
},
"nodeType": "YulFunctionCall",
"src": "403:14:1"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "419:2:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "399:3:1"
},
"nodeType": "YulFunctionCall",
"src": "399:23:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "393:5:1"
},
"nodeType": "YulFunctionCall",
"src": "393:30:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "358:6:1"
},
"nodeType": "YulFunctionCall",
"src": "358:66:1"
},
"nodeType": "YulExpressionStatement",
"src": "358:66:1"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "305:1:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "308:6:1"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "302:2:1"
},
"nodeType": "YulFunctionCall",
"src": "302:13:1"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "316:19:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "318:15:1",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "327:1:1"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "330:2:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "323:3:1"
},
"nodeType": "YulFunctionCall",
"src": "323:10:1"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "318:1:1"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "298:3:1",
"statements": []
},
"src": "294:140:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "468:66:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "497:9:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "508:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "493:3:1"
},
"nodeType": "YulFunctionCall",
"src": "493:22:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "517:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "489:3:1"
},
"nodeType": "YulFunctionCall",
"src": "489:31:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "522:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "482:6:1"
},
"nodeType": "YulFunctionCall",
"src": "482:42:1"
},
"nodeType": "YulExpressionStatement",
"src": "482:42:1"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "449:1:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "452:6:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "446:2:1"
},
"nodeType": "YulFunctionCall",
"src": "446:13:1"
},
"nodeType": "YulIf",
"src": "443:91:1"
},
{
"nodeType": "YulAssignment",
"src": "543:62:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "559:9:1"
},
{
"arguments": [
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "578:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "586:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "574:3:1"
},
"nodeType": "YulFunctionCall",
"src": "574:15:1"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "595:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "591:3:1"
},
"nodeType": "YulFunctionCall",
"src": "591:7:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "570:3:1"
},
"nodeType": "YulFunctionCall",
"src": "570:29:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "555:3:1"
},
"nodeType": "YulFunctionCall",
"src": "555:45:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "602:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "551:3:1"
},
"nodeType": "YulFunctionCall",
"src": "551:54:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "543:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "104:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "115:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "126:4:1",
"type": ""
}
],
"src": "14:597:1"
}
]
},
"contents": "{\n { }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n mstore(headStart, _1)\n let length := mload(value0)\n mstore(add(headStart, _1), length)\n let i := 0\n for { } lt(i, length) { i := add(i, _1) }\n {\n mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n }\n if gt(i, length)\n {\n mstore(add(add(headStart, length), 64), 0)\n }\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n}",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b60408051808201825260018152604160f81b60208201529051604e91906057565b60405180910390f35b600060208083528351808285015260005b818110156082578581018301518582016040015282016068565b818111156093576000604083870101525b50601f01601f191692909201604001939250505056fea2646970667358221220b7b6b9a0b6c59b18bb3f91752876fc41bed7f8384ee298871baf1b4788a06c6364736f6c634300080d0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC2985578 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x41 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x4E SWAP2 SWAP1 PUSH1 0x57 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH1 0x82 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH1 0x68 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH1 0x93 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB7 0xB6 0xB9 LOG0 0xB6 0xC5 SWAP12 XOR 0xBB EXTCODEHASH SWAP2 PUSH22 0x2876FC41BED7F8384EE298871BAF1B4788A06C636473 PUSH16 0x6C634300080D00330000000000000000 ",
"sourceMap": "437:105:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;454:86;523:10;;;;;;;;;;;-1:-1:-1;;;523:10:0;;;;454:86;;;;523:10;454:86;:::i;:::-;;;;;;;;14:597:1;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "44600",
"executionCost": "93",
"totalCost": "44693"
},
"external": {
"foo()": "infinite"
}
},
"methodIdentifiers": {
"foo()": "c2985578"
}
},
"abi": [
{
"inputs": [],
"name": "foo",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "pure",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.13+commit.abaa5c0e"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [],
"name": "foo",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "pure",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/Inheritance.sol": "A"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/Inheritance.sol": {
"keccak256": "0x3ac07eb1f8f22b03dd0c7bf841e4bd44d01f1671337dbbefe1d73e08a79e4fdd",
"license": "MIT",
"urls": [
"bzz-raw://782849c13e7b356887aa845822d41e5cfeeb518709a7333a5626ce618094b26e",
"dweb:/ipfs/QmQTp3vawZnzXirtJajDnmtKVFMtbTCZXJWFSCnwbE7pKT"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "608060405234801561001057600080fd5b5060df8061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b60408051808201825260018152602160f91b60208201529051604e91906057565b60405180910390f35b600060208083528351808285015260005b818110156082578581018301518582016040015282016068565b818111156093576000604083870101525b50601f01601f191692909201604001939250505056fea264697066735822122054c72abc99057dbf0b5f87e87f4db891c514b8bb919e69f1e14f1c0dd6e940d264736f6c634300080d0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xDF DUP1 PUSH2 0x1F 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 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC2985578 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x21 PUSH1 0xF9 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x4E SWAP2 SWAP1 PUSH1 0x57 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH1 0x82 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH1 0x68 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH1 0x93 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SLOAD 0xC7 0x2A 0xBC SWAP10 SDIV PUSH30 0xBF0B5F87E87F4DB891C514B8BB919E69F1E14F1C0DD6E940D264736F6C63 NUMBER STOP ADDMOD 0xD STOP CALLER ",
"sourceMap": "608:143:0:-:0;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@foo_21": {
"entryPoint": null,
"id": 21,
"parameterSlots": 0,
"returnSlots": 1
},
"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 87,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:613:1",
"statements": [
{
"nodeType": "YulBlock",
"src": "6:3:1",
"statements": []
},
{
"body": {
"nodeType": "YulBlock",
"src": "135:476:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "145:12:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "155:2:1",
"type": "",
"value": "32"
},
"variables": [
{
"name": "_1",
"nodeType": "YulTypedName",
"src": "149:2:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "173:9:1"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "184:2:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "166:6:1"
},
"nodeType": "YulFunctionCall",
"src": "166:21:1"
},
"nodeType": "YulExpressionStatement",
"src": "166:21:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "196:27:1",
"value": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "216:6:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "210:5:1"
},
"nodeType": "YulFunctionCall",
"src": "210:13:1"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "200:6:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "243:9:1"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "254:2:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "239:3:1"
},
"nodeType": "YulFunctionCall",
"src": "239:18:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "259:6:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "232:6:1"
},
"nodeType": "YulFunctionCall",
"src": "232:34:1"
},
"nodeType": "YulExpressionStatement",
"src": "232:34:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "275:10:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "284:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "279:1:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "344:90:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "373:9:1"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "384:1:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "369:3:1"
},
"nodeType": "YulFunctionCall",
"src": "369:17:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "388:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "365:3:1"
},
"nodeType": "YulFunctionCall",
"src": "365:26:1"
},
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "407:6:1"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "415:1:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "403:3:1"
},
"nodeType": "YulFunctionCall",
"src": "403:14:1"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "419:2:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "399:3:1"
},
"nodeType": "YulFunctionCall",
"src": "399:23:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "393:5:1"
},
"nodeType": "YulFunctionCall",
"src": "393:30:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "358:6:1"
},
"nodeType": "YulFunctionCall",
"src": "358:66:1"
},
"nodeType": "YulExpressionStatement",
"src": "358:66:1"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "305:1:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "308:6:1"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "302:2:1"
},
"nodeType": "YulFunctionCall",
"src": "302:13:1"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "316:19:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "318:15:1",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "327:1:1"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "330:2:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "323:3:1"
},
"nodeType": "YulFunctionCall",
"src": "323:10:1"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "318:1:1"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "298:3:1",
"statements": []
},
"src": "294:140:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "468:66:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "497:9:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "508:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "493:3:1"
},
"nodeType": "YulFunctionCall",
"src": "493:22:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "517:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "489:3:1"
},
"nodeType": "YulFunctionCall",
"src": "489:31:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "522:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "482:6:1"
},
"nodeType": "YulFunctionCall",
"src": "482:42:1"
},
"nodeType": "YulExpressionStatement",
"src": "482:42:1"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "449:1:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "452:6:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "446:2:1"
},
"nodeType": "YulFunctionCall",
"src": "446:13:1"
},
"nodeType": "YulIf",
"src": "443:91:1"
},
{
"nodeType": "YulAssignment",
"src": "543:62:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "559:9:1"
},
{
"arguments": [
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "578:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "586:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "574:3:1"
},
"nodeType": "YulFunctionCall",
"src": "574:15:1"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "595:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "591:3:1"
},
"nodeType": "YulFunctionCall",
"src": "591:7:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "570:3:1"
},
"nodeType": "YulFunctionCall",
"src": "570:29:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "555:3:1"
},
"nodeType": "YulFunctionCall",
"src": "555:45:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "602:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "551:3:1"
},
"nodeType": "YulFunctionCall",
"src": "551:54:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "543:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "104:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "115:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "126:4:1",
"type": ""
}
],
"src": "14:597:1"
}
]
},
"contents": "{\n { }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n mstore(headStart, _1)\n let length := mload(value0)\n mstore(add(headStart, _1), length)\n let i := 0\n for { } lt(i, length) { i := add(i, _1) }\n {\n mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n }\n if gt(i, length)\n {\n mstore(add(add(headStart, length), 64), 0)\n }\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n}",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b60408051808201825260018152602160f91b60208201529051604e91906057565b60405180910390f35b600060208083528351808285015260005b818110156082578581018301518582016040015282016068565b818111156093576000604083870101525b50601f01601f191692909201604001939250505056fea264697066735822122054c72abc99057dbf0b5f87e87f4db891c514b8bb919e69f1e14f1c0dd6e940d264736f6c634300080d0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC2985578 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x21 PUSH1 0xF9 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x4E SWAP2 SWAP1 PUSH1 0x57 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH1 0x82 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH1 0x68 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH1 0x93 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SLOAD 0xC7 0x2A 0xBC SWAP10 SDIV PUSH30 0xBF0B5F87E87F4DB891C514B8BB919E69F1E14F1C0DD6E940D264736F6C63 NUMBER STOP ADDMOD 0xD STOP CALLER ",
"sourceMap": "608:143:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;654:95;732:10;;;;;;;;;;;-1:-1:-1;;;732:10:0;;;;654:95;;;;732:10;654:95;:::i;:::-;;;;;;;;14:597:1;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "44600",
"executionCost": "93",
"totalCost": "44693"
},
"external": {
"foo()": "infinite"
}
},
"methodIdentifiers": {
"foo()": "c2985578"
}
},
"abi": [
{
"inputs": [],
"name": "foo",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "pure",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.13+commit.abaa5c0e"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [],
"name": "foo",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "pure",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/Inheritance.sol": "B"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/Inheritance.sol": {
"keccak256": "0x3ac07eb1f8f22b03dd0c7bf841e4bd44d01f1671337dbbefe1d73e08a79e4fdd",
"license": "MIT",
"urls": [
"bzz-raw://782849c13e7b356887aa845822d41e5cfeeb518709a7333a5626ce618094b26e",
"dweb:/ipfs/QmQTp3vawZnzXirtJajDnmtKVFMtbTCZXJWFSCnwbE7pKT"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {
"@_24": {
"entryPoint": null,
"id": 24,
"parameterSlots": 1,
"returnSlots": 0
},
"abi_decode_tuple_t_uint256_fromMemory": {
"entryPoint": 70,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:200:1",
"statements": [
{
"nodeType": "YulBlock",
"src": "6:3:1",
"statements": []
},
{
"body": {
"nodeType": "YulBlock",
"src": "95:103:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "141:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "150:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "153:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "143:6:1"
},
"nodeType": "YulFunctionCall",
"src": "143:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "143:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "116:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "125:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "112:3:1"
},
"nodeType": "YulFunctionCall",
"src": "112:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "137:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "108:3:1"
},
"nodeType": "YulFunctionCall",
"src": "108:32:1"
},
"nodeType": "YulIf",
"src": "105:52:1"
},
{
"nodeType": "YulAssignment",
"src": "166:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "182:9:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "176:5:1"
},
"nodeType": "YulFunctionCall",
"src": "176:16:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "166:6:1"
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "61:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "72:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "84:6:1",
"type": ""
}
],
"src": "14:184:1"
}
]
},
"contents": "{\n { }\n function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := mload(headStart)\n }\n}",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"linkReferences": {},
"object": "608060405234801561001057600080fd5b5060405161029a38038061029a83398101604081905261002f91610046565b60008181553381526001602052604090205561005f565b60006020828403121561005857600080fd5b5051919050565b61022c8061006e6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806318160ddd1461004657806370a082311461005d578063a9059cbb14610086575b600080fd5b6000545b6040519081526020015b60405180910390f35b61004a61006b366004610165565b6001600160a01b031660009081526001602052604090205490565b610099610094366004610187565b6100a9565b6040519015158152602001610054565b60006001600160a01b0383166100be57600080fd5b336000908152600160205260409020548211156100da57600080fd5b33600090815260016020526040812080548492906100f99084906101c9565b90915550506001600160a01b0383166000908152600160205260409020546101229083906101b1565b6001600160a01b038416600090815260016020819052604090912091909155905092915050565b80356001600160a01b038116811461016057600080fd5b919050565b60006020828403121561017757600080fd5b61018082610149565b9392505050565b6000806040838503121561019a57600080fd5b6101a383610149565b946020939093013593505050565b600082198211156101c4576101c46101e0565b500190565b6000828210156101db576101db6101e0565b500390565b634e487b7160e01b600052601160045260246000fdfea2646970667358221220f83b07a1e5759d972a89a15a45b57ced92fb0b97d04453932b807d65e10c67cf64736f6c63430008070033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x29A CODESIZE SUB DUP1 PUSH2 0x29A DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x46 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 SSTORE CALLER DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x5F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x22C DUP1 PUSH2 0x6E 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 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x18160DDD EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x5D JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x86 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4A PUSH2 0x6B CALLDATASIZE PUSH1 0x4 PUSH2 0x165 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x99 PUSH2 0x94 CALLDATASIZE PUSH1 0x4 PUSH2 0x187 JUMP JUMPDEST PUSH2 0xA9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x54 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 GT ISZERO PUSH2 0xDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xF9 SWAP1 DUP5 SWAP1 PUSH2 0x1C9 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x122 SWAP1 DUP4 SWAP1 PUSH2 0x1B1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x160 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x180 DUP3 PUSH2 0x149 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x19A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A3 DUP4 PUSH2 0x149 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x1C4 JUMPI PUSH2 0x1C4 PUSH2 0x1E0 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x1DB JUMPI PUSH2 0x1DB PUSH2 0x1E0 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF8 EXTCODESIZE SMOD LOG1 0xE5 PUSH22 0x9D972A89A15A45B57CED92FB0B97D04453932B807D65 0xE1 0xC PUSH8 0xCF64736F6C634300 ADDMOD SMOD STOP CALLER ",
"sourceMap": "57:657:0:-:0;;;151:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;193:12;:29;;;237:10;228:20;;:8;:20;;;;;:37;57:657;;14:184:1;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;-1:-1:-1;176:16:1;;14:184;-1:-1:-1;14:184:1:o;:::-;57:657:0;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@balanceOf_91": {
"entryPoint": null,
"id": 91,
"parameterSlots": 1,
"returnSlots": 1
},
"@totalSupply_32": {
"entryPoint": null,
"id": 32,
"parameterSlots": 0,
"returnSlots": 1
},
"@transfer_79": {
"entryPoint": 169,
"id": 79,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_address": {
"entryPoint": 329,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_decode_tuple_t_address": {
"entryPoint": 357,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_addresst_uint256": {
"entryPoint": 391,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_add_t_uint256": {
"entryPoint": 433,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_sub_t_uint256": {
"entryPoint": 457,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"panic_error_0x11": {
"entryPoint": 480,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:1408:1",
"statements": [
{
"nodeType": "YulBlock",
"src": "6:3:1",
"statements": []
},
{
"body": {
"nodeType": "YulBlock",
"src": "63:124:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "73:29:1",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "95:6:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "82:12:1"
},
"nodeType": "YulFunctionCall",
"src": "82:20:1"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "73:5:1"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "165:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "174:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "177:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "167:6:1"
},
"nodeType": "YulFunctionCall",
"src": "167:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "167:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "124:5:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "135:5:1"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "150:3:1",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "155:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "146:3:1"
},
"nodeType": "YulFunctionCall",
"src": "146:11:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "159:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "142:3:1"
},
"nodeType": "YulFunctionCall",
"src": "142:19:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "131:3:1"
},
"nodeType": "YulFunctionCall",
"src": "131:31:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "121:2:1"
},
"nodeType": "YulFunctionCall",
"src": "121:42:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "114:6:1"
},
"nodeType": "YulFunctionCall",
"src": "114:50:1"
},
"nodeType": "YulIf",
"src": "111:70:1"
}
]
},
"name": "abi_decode_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "42:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "53:5:1",
"type": ""
}
],
"src": "14:173:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "262:116:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "308:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "317:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "320:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "310:6:1"
},
"nodeType": "YulFunctionCall",
"src": "310:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "310:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "283:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "292:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "279:3:1"
},
"nodeType": "YulFunctionCall",
"src": "279:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "304:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "275:3:1"
},
"nodeType": "YulFunctionCall",
"src": "275:32:1"
},
"nodeType": "YulIf",
"src": "272:52:1"
},
{
"nodeType": "YulAssignment",
"src": "333:39:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "362:9:1"
}
],
"functionName": {
"name": "abi_decode_address",
"nodeType": "YulIdentifier",
"src": "343:18:1"
},
"nodeType": "YulFunctionCall",
"src": "343:29:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "333:6:1"
}
]
}
]
},
"name": "abi_decode_tuple_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "228:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "239:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "251:6:1",
"type": ""
}
],
"src": "192:186:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "470:167:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "516:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "525:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "528:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "518:6:1"
},
"nodeType": "YulFunctionCall",
"src": "518:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "518:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "491:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "500:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "487:3:1"
},
"nodeType": "YulFunctionCall",
"src": "487:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "512:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "483:3:1"
},
"nodeType": "YulFunctionCall",
"src": "483:32:1"
},
"nodeType": "YulIf",
"src": "480:52:1"
},
{
"nodeType": "YulAssignment",
"src": "541:39:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "570:9:1"
}
],
"functionName": {
"name": "abi_decode_address",
"nodeType": "YulIdentifier",
"src": "551:18:1"
},
"nodeType": "YulFunctionCall",
"src": "551:29:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "541:6:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "589:42:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "616:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "627:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "612:3:1"
},
"nodeType": "YulFunctionCall",
"src": "612:18:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "599:12:1"
},
"nodeType": "YulFunctionCall",
"src": "599:32:1"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "589:6:1"
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "428:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "439:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "451:6:1",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "459:6:1",
"type": ""
}
],
"src": "383:254:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "737:92:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "747:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "759:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "770:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "755:3:1"
},
"nodeType": "YulFunctionCall",
"src": "755:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "747:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "789:9:1"
},
{
"arguments": [
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "814:6:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "807:6:1"
},
"nodeType": "YulFunctionCall",
"src": "807:14:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "800:6:1"
},
"nodeType": "YulFunctionCall",
"src": "800:22:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "782:6:1"
},
"nodeType": "YulFunctionCall",
"src": "782:41:1"
},
"nodeType": "YulExpressionStatement",
"src": "782:41:1"
}
]
},
"name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "706:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "717:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "728:4:1",
"type": ""
}
],
"src": "642:187:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "935:76:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "945:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "957:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "968:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "953:3:1"
},
"nodeType": "YulFunctionCall",
"src": "953:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "945:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "987:9:1"
},
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "998:6:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "980:6:1"
},
"nodeType": "YulFunctionCall",
"src": "980:25:1"
},
"nodeType": "YulExpressionStatement",
"src": "980:25:1"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "904:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "915:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "926:4:1",
"type": ""
}
],
"src": "834:177:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1064:80:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1091:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "1093:16:1"
},
"nodeType": "YulFunctionCall",
"src": "1093:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "1093:18:1"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "1080:1:1"
},
{
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "1087:1:1"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "1083:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1083:6:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "1077:2:1"
},
"nodeType": "YulFunctionCall",
"src": "1077:13:1"
},
"nodeType": "YulIf",
"src": "1074:39:1"
},
{
"nodeType": "YulAssignment",
"src": "1122:16:1",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "1133:1:1"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "1136:1:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1129:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1129:9:1"
},
"variableNames": [
{
"name": "sum",
"nodeType": "YulIdentifier",
"src": "1122:3:1"
}
]
}
]
},
"name": "checked_add_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "1047:1:1",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "1050:1:1",
"type": ""
}
],
"returnVariables": [
{
"name": "sum",
"nodeType": "YulTypedName",
"src": "1056:3:1",
"type": ""
}
],
"src": "1016:128:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1198:76:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1220:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "1222:16:1"
},
"nodeType": "YulFunctionCall",
"src": "1222:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "1222:18:1"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "1214:1:1"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "1217:1:1"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "1211:2:1"
},
"nodeType": "YulFunctionCall",
"src": "1211:8:1"
},
"nodeType": "YulIf",
"src": "1208:34:1"
},
{
"nodeType": "YulAssignment",
"src": "1251:17:1",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "1263:1:1"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "1266:1:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1259:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1259:9:1"
},
"variableNames": [
{
"name": "diff",
"nodeType": "YulIdentifier",
"src": "1251:4:1"
}
]
}
]
},
"name": "checked_sub_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "1180:1:1",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "1183:1:1",
"type": ""
}
],
"returnVariables": [
{
"name": "diff",
"nodeType": "YulTypedName",
"src": "1189:4:1",
"type": ""
}
],
"src": "1149:125:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1311:95:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1328:1:1",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1335:3:1",
"type": "",
"value": "224"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1340:10:1",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "1331:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1331:20:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1321:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1321:31:1"
},
"nodeType": "YulExpressionStatement",
"src": "1321:31:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1368:1:1",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1371:4:1",
"type": "",
"value": "0x11"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1361:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1361:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "1361:15:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1392:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1395:4:1",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1385:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1385:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "1385:15:1"
}
]
},
"name": "panic_error_0x11",
"nodeType": "YulFunctionDefinition",
"src": "1279:127:1"
}
]
},
"contents": "{\n { }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n if gt(x, not(y)) { panic_error_0x11() }\n sum := add(x, y)\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n if lt(x, y) { panic_error_0x11() }\n diff := sub(x, y)\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n}",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50600436106100415760003560e01c806318160ddd1461004657806370a082311461005d578063a9059cbb14610086575b600080fd5b6000545b6040519081526020015b60405180910390f35b61004a61006b366004610165565b6001600160a01b031660009081526001602052604090205490565b610099610094366004610187565b6100a9565b6040519015158152602001610054565b60006001600160a01b0383166100be57600080fd5b336000908152600160205260409020548211156100da57600080fd5b33600090815260016020526040812080548492906100f99084906101c9565b90915550506001600160a01b0383166000908152600160205260409020546101229083906101b1565b6001600160a01b038416600090815260016020819052604090912091909155905092915050565b80356001600160a01b038116811461016057600080fd5b919050565b60006020828403121561017757600080fd5b61018082610149565b9392505050565b6000806040838503121561019a57600080fd5b6101a383610149565b946020939093013593505050565b600082198211156101c4576101c46101e0565b500190565b6000828210156101db576101db6101e0565b500390565b634e487b7160e01b600052601160045260246000fdfea2646970667358221220f83b07a1e5759d972a89a15a45b57ced92fb0b97d04453932b807d65e10c67cf64736f6c63430008070033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x18160DDD EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x5D JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x86 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4A PUSH2 0x6B CALLDATASIZE PUSH1 0x4 PUSH2 0x165 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x99 PUSH2 0x94 CALLDATASIZE PUSH1 0x4 PUSH2 0x187 JUMP JUMPDEST PUSH2 0xA9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x54 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 GT ISZERO PUSH2 0xDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xF9 SWAP1 DUP5 SWAP1 PUSH2 0x1C9 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x122 SWAP1 DUP4 SWAP1 PUSH2 0x1B1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x160 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x180 DUP3 PUSH2 0x149 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x19A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A3 DUP4 PUSH2 0x149 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x1C4 JUMPI PUSH2 0x1C4 PUSH2 0x1E0 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x1DB JUMPI PUSH2 0x1DB PUSH2 0x1E0 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF8 EXTCODESIZE SMOD LOG1 0xE5 PUSH22 0x9D972A89A15A45B57CED92FB0B97D04453932B807D65 0xE1 0xC PUSH8 0xCF64736F6C634300 ADDMOD SMOD STOP CALLER ",
"sourceMap": "57:657:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;274:83;318:7;340:12;274:83;;;980:25:1;;;968:2;953:18;274:83:0;;;;;;;;613:99;;;;;;:::i;:::-;-1:-1:-1;;;;;691:16:0;669:7;691:16;;;:8;:16;;;;;;;613:99;361:248;;;;;;:::i;:::-;;:::i;:::-;;;807:14:1;;800:22;782:41;;770:2;755:18;361:248:0;642:187:1;361:248:0;424:4;-1:-1:-1;;;;;444:17:0;;436:26;;;;;;495:10;486:20;;;;:8;:20;;;;;;476:30;;;468:39;;;;;;522:10;513:20;;;;:8;:20;;;;;:30;;537:6;;513:20;:30;;537:6;;513:30;:::i;:::-;;;;-1:-1:-1;;;;;;;565:13:0;;;;;;:8;:13;;;;;;:22;;581:6;;565:22;:::i;:::-;-1:-1:-1;;;;;549:13:0;;;;;;:8;:13;;;;;;;;:38;;;;:8;-1:-1:-1;361:248:0;;;;:::o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:186::-;251:6;304:2;292:9;283:7;279:23;275:32;272:52;;;320:1;317;310:12;272:52;343:29;362:9;343:29;:::i;:::-;333:39;192:186;-1:-1:-1;;;192:186:1:o;383:254::-;451:6;459;512:2;500:9;491:7;487:23;483:32;480:52;;;528:1;525;518:12;480:52;551:29;570:9;551:29;:::i;:::-;541:39;627:2;612:18;;;;599:32;;-1:-1:-1;;;383:254:1:o;1016:128::-;1056:3;1087:1;1083:6;1080:1;1077:13;1074:39;;;1093:18;;:::i;:::-;-1:-1:-1;1129:9:1;;1016:128::o;1149:125::-;1189:4;1217:1;1214;1211:8;1208:34;;;1222:18;;:::i;:::-;-1:-1:-1;1259:9:1;;1149:125::o;1279:127::-;1340:10;1335:3;1331:20;1328:1;1321:31;1371:4;1368:1;1361:15;1395:4;1392:1;1385:15"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "111200",
"executionCost": "infinite",
"totalCost": "infinite"
},
"external": {
"balanceOf(address)": "2526",
"totalSupply()": "2248",
"transfer(address,uint256)": "51489"
}
},
"methodIdentifiers": {
"balanceOf(address)": "70a08231",
"totalSupply()": "18160ddd",
"transfer(address,uint256)": "a9059cbb"
}
},
"abi": [
{
"inputs": [
{
"internalType": "uint256",
"name": "_initialSupply",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"internalType": "uint256",
"name": "_value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.7+commit.e28d00a7"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "uint256",
"name": "_initialSupply",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"internalType": "uint256",
"name": "_value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/BasicToken.sol": "BasicToken"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/BasicToken.sol": {
"keccak256": "0x326f80dec7ebd559d4f5290d1f28fb490db1f6b4ec8a4b192df0bfd53704cba3",
"license": "MIT",
"urls": [
"bzz-raw://9aaa263521db784267098d30ae851f7482f136ba77e0cba96d1e0f8422a56c2d",
"dweb:/ipfs/QmPgVc5749UUTViF96BQaACrpuZPAbAFxvWqt8dU6vxK3U"
]
}
},
"version": 1
}
{
"id": "28f11cb86d5cc5b3717140c1e864fe3d",
"_format": "hh-sol-build-info-1",
"solcVersion": "0.8.13",
"solcLongVersion": "0.8.13+commit.abaa5c0e",
"input": {
"language": "Solidity",
"sources": {
"contracts/Payable.sol": {
"content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.13;\n\ncontract Payable {\n // Payable address can receive Ether\n address payable public owner;\n\n // Payable constructor -> Contract can receive Ether upon creation\n constructor() {\n owner = payable(msg.sender);\n }\n\n // Function to deposit Ether into this contract\n function deposit() public payable {}\n\n // The function will throw an error since this function is not payable\n function notPayable() public {}\n\n // Function to withdraw all Ether from this contract.\n function withdraw() public { \n uint amount = address(this).balance;\n\n // send all Ether in this contract to owner \n (bool success, ) = owner.call{value: amount}(\"\");\n require(success, \"Failed to send Ether\");\n }\n\n function getContractBalance() external view returns (uint) {\n return address(this).balance;\n }\n\n function getOwnerBalance() external view returns (uint) {\n return address(owner).balance;\n }\n}"
}
},
"settings": {
"optimizer": {
"enabled": true,
"runs": 200
},
"outputSelection": {
"*": {
"": [
"ast"
],
"*": [
"abi",
"metadata",
"devdoc",
"userdoc",
"storageLayout",
"evm.legacyAssembly",
"evm.bytecode",
"evm.deployedBytecode",
"evm.methodIdentifiers",
"evm.gasEstimates",
"evm.assembly"
]
}
}
}
},
"output": {
"contracts": {
"contracts/Payable.sol": {
"Payable": {
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "deposit",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [],
"name": "getContractBalance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getOwnerBalance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "notPayable",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address payable",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "withdraw",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"evm": {
"assembly": " /* \"contracts/Payable.sol\":58:1018 contract Payable {... */\n mstore(0x40, 0x80)\n /* \"contracts/Payable.sol\":228:286 constructor() {... */\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\ntag_1:\n pop\n /* \"contracts/Payable.sol\":252:257 owner */\n 0x00\n /* \"contracts/Payable.sol\":252:279 owner = payable(msg.sender) */\n dup1\n sload\n not(sub(shl(0xa0, 0x01), 0x01))\n and\n /* \"contracts/Payable.sol\":268:278 msg.sender */\n caller\n /* \"contracts/Payable.sol\":252:279 owner = payable(msg.sender) */\n or\n swap1\n sstore\n /* \"contracts/Payable.sol\":58:1018 contract Payable {... */\n dataSize(sub_0)\n dup1\n dataOffset(sub_0)\n 0x00\n codecopy\n 0x00\n return\nstop\n\nsub_0: assembly {\n /* \"contracts/Payable.sol\":58:1018 contract Payable {... */\n mstore(0x40, 0x80)\n jumpi(tag_1, lt(calldatasize, 0x04))\n shr(0xe0, calldataload(0x00))\n dup1\n 0x273884bd\n eq\n tag_2\n jumpi\n dup1\n 0x3ccfd60b\n eq\n tag_3\n jumpi\n dup1\n 0x590791f2\n eq\n tag_4\n jumpi\n dup1\n 0x6f9fb98a\n eq\n tag_5\n jumpi\n dup1\n 0x8da5cb5b\n eq\n tag_6\n jumpi\n dup1\n 0xd0e30db0\n eq\n tag_9\n jumpi\n tag_1:\n 0x00\n dup1\n revert\n /* \"contracts/Payable.sol\":461:492 function notPayable() public {} */\n tag_2:\n callvalue\n dup1\n iszero\n tag_8\n jumpi\n 0x00\n dup1\n revert\n tag_8:\n pop\n tag_9:\n stop\n /* \"contracts/Payable.sol\":556:798 function withdraw() public { ... */\n tag_3:\n callvalue\n dup1\n iszero\n tag_11\n jumpi\n 0x00\n dup1\n revert\n tag_11:\n pop\n tag_9\n tag_13\n jump\t// in\n /* \"contracts/Payable.sol\":914:1016 function getOwnerBalance() external view returns (uint) {... */\n tag_4:\n callvalue\n dup1\n iszero\n tag_14\n jumpi\n 0x00\n dup1\n revert\n tag_14:\n pop\n /* \"contracts/Payable.sol\":964:968 uint */\n 0x00\n /* \"contracts/Payable.sol\":995:1000 owner */\n sload\n sub(shl(0xa0, 0x01), 0x01)\n and\n /* \"contracts/Payable.sol\":987:1009 address(owner).balance */\n balance\n /* \"contracts/Payable.sol\":914:1016 function getOwnerBalance() external view returns (uint) {... */\n tag_15:\n mload(0x40)\n /* \"#utility.yul\":160:185 */\n swap1\n dup2\n mstore\n /* \"#utility.yul\":148:150 */\n 0x20\n /* \"#utility.yul\":133:151 */\n add\n /* \"contracts/Payable.sol\":914:1016 function getOwnerBalance() external view returns (uint) {... */\n tag_17:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"contracts/Payable.sol\":804:908 function getContractBalance() external view returns (uint) {... */\n tag_5:\n callvalue\n dup1\n iszero\n tag_19\n jumpi\n 0x00\n dup1\n revert\n tag_19:\n pop\n /* \"contracts/Payable.sol\":880:901 address(this).balance */\n selfbalance\n /* \"contracts/Payable.sol\":804:908 function getContractBalance() external view returns (uint) {... */\n jump(tag_15)\n /* \"contracts/Payable.sol\":122:150 address payable public owner */\n tag_6:\n callvalue\n dup1\n iszero\n tag_23\n jumpi\n 0x00\n dup1\n revert\n tag_23:\n pop\n sload(0x00)\n tag_24\n swap1\n sub(shl(0xa0, 0x01), 0x01)\n and\n dup2\n jump\n tag_24:\n mload(0x40)\n sub(shl(0xa0, 0x01), 0x01)\n /* \"#utility.yul\":376:408 */\n swap1\n swap2\n and\n /* \"#utility.yul\":358:409 */\n dup2\n mstore\n /* \"#utility.yul\":346:348 */\n 0x20\n /* \"#utility.yul\":331:349 */\n add\n /* \"contracts/Payable.sol\":122:150 address payable public owner */\n tag_17\n /* \"#utility.yul\":196:415 */\n jump\n /* \"contracts/Payable.sol\":556:798 function withdraw() public { ... */\n tag_13:\n /* \"contracts/Payable.sol\":594:605 uint amount */\n 0x00\n /* \"contracts/Payable.sol\":712:717 owner */\n dup1\n sload\n /* \"contracts/Payable.sol\":712:741 owner.call{value: amount}(\"\") */\n mload(0x40)\n /* \"contracts/Payable.sol\":608:629 address(this).balance */\n selfbalance\n swap3\n /* \"contracts/Payable.sol\":594:605 uint amount */\n swap2\n sub(shl(0xa0, 0x01), 0x01)\n /* \"contracts/Payable.sol\":712:717 owner */\n and\n swap1\n /* \"contracts/Payable.sol\":608:629 address(this).balance */\n dup4\n swap1\n /* \"contracts/Payable.sol\":594:605 uint amount */\n dup4\n /* \"contracts/Payable.sol\":712:741 owner.call{value: amount}(\"\") */\n dup2\n /* \"contracts/Payable.sol\":594:605 uint amount */\n dup2\n /* \"contracts/Payable.sol\":712:741 owner.call{value: amount}(\"\") */\n dup2\n /* \"contracts/Payable.sol\":608:629 address(this).balance */\n dup6\n /* \"contracts/Payable.sol\":712:717 owner */\n dup8\n /* \"contracts/Payable.sol\":712:741 owner.call{value: amount}(\"\") */\n gas\n call\n swap3\n pop\n pop\n pop\n returndatasize\n dup1\n 0x00\n dup2\n eq\n tag_36\n jumpi\n mload(0x40)\n swap2\n pop\n and(add(returndatasize, 0x3f), not(0x1f))\n dup3\n add\n 0x40\n mstore\n returndatasize\n dup3\n mstore\n returndatasize\n 0x00\n 0x20\n dup5\n add\n returndatacopy\n jump(tag_35)\n tag_36:\n 0x60\n swap2\n pop\n tag_35:\n pop\n /* \"contracts/Payable.sol\":693:741 (bool success, ) = owner.call{value: amount}(\"\") */\n pop\n swap1\n pop\n /* \"contracts/Payable.sol\":759:766 success */\n dup1\n /* \"contracts/Payable.sol\":751:791 require(success, \"Failed to send Ether\") */\n tag_37\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n /* \"#utility.yul\":832:834 */\n 0x20\n /* \"contracts/Payable.sol\":751:791 require(success, \"Failed to send Ether\") */\n 0x04\n dup3\n add\n /* \"#utility.yul\":814:835 */\n mstore\n /* \"#utility.yul\":871:873 */\n 0x14\n /* \"#utility.yul\":851:869 */\n 0x24\n dup3\n add\n /* \"#utility.yul\":844:874 */\n mstore\n shl(0x61, 0x2330b4b632b2103a379039b2b7321022ba3432b9)\n /* \"#utility.yul\":890:908 */\n 0x44\n dup3\n add\n /* \"#utility.yul\":883:933 */\n mstore\n /* \"#utility.yul\":950:968 */\n 0x64\n add\n /* \"contracts/Payable.sol\":751:791 require(success, \"Failed to send Ether\") */\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n tag_37:\n /* \"contracts/Payable.sol\":583:798 { ... */\n pop\n pop\n /* \"contracts/Payable.sol\":556:798 function withdraw() public { ... */\n jump\t// out\n\n auxdata: 0xa264697066735822122075947248064e3649a2927c1f18dc0adffd1d1b897e88447f20271c6fbec5d4c964736f6c634300080d0033\n}\n",
"bytecode": {
"functionDebugData": {
"@_15": {
"entryPoint": null,
"id": 15,
"parameterSlots": 0,
"returnSlots": 0
}
},
"generatedSources": [],
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50600080546001600160a01b031916331790556101d1806100326000396000f3fe6080604052600436106100555760003560e01c8063273884bd1461005a5780633ccfd60b1461006a578063590791f21461007f5780636f9fb98a146100ad5780638da5cb5b146100c0578063d0e30db014610068575b600080fd5b34801561006657600080fd5b505b005b34801561007657600080fd5b506100686100f8565b34801561008b57600080fd5b506000546001600160a01b0316315b6040519081526020015b60405180910390f35b3480156100b957600080fd5b504761009a565b3480156100cc57600080fd5b506000546100e0906001600160a01b031681565b6040516001600160a01b0390911681526020016100a4565b600080546040514792916001600160a01b03169083908381818185875af1925050503d8060008114610146576040519150601f19603f3d011682016040523d82523d6000602084013e61014b565b606091505b50509050806101975760405162461bcd60e51b81526020600482015260146024820152732330b4b632b2103a379039b2b7321022ba3432b960611b604482015260640160405180910390fd5b505056fea264697066735822122075947248064e3649a2927c1f18dc0adffd1d1b897e88447f20271c6fbec5d4c964736f6c634300080d0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER OR SWAP1 SSTORE PUSH2 0x1D1 DUP1 PUSH2 0x32 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x55 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x273884BD EQ PUSH2 0x5A JUMPI DUP1 PUSH4 0x3CCFD60B EQ PUSH2 0x6A JUMPI DUP1 PUSH4 0x590791F2 EQ PUSH2 0x7F JUMPI DUP1 PUSH4 0x6F9FB98A EQ PUSH2 0xAD JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xC0 JUMPI DUP1 PUSH4 0xD0E30DB0 EQ PUSH2 0x68 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x68 PUSH2 0xF8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND BALANCE JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SELFBALANCE PUSH2 0x9A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH2 0xE0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA4 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD SELFBALANCE SWAP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP4 SWAP1 DUP4 DUP2 DUP2 DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x146 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x14B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x197 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x2330B4B632B2103A379039B2B7321022BA3432B9 PUSH1 0x61 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH22 0x947248064E3649A2927C1F18DC0ADFFD1D1B897E8844 PUSH32 0x20271C6FBEC5D4C964736F6C634300080D003300000000000000000000000000 ",
"sourceMap": "58:960:0:-:0;;;228:58;;;;;;;;;-1:-1:-1;252:5:0;:27;;-1:-1:-1;;;;;;252:27:0;268:10;252:27;;;58:960;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@deposit_19": {
"entryPoint": null,
"id": 19,
"parameterSlots": 0,
"returnSlots": 0
},
"@getContractBalance_61": {
"entryPoint": null,
"id": 61,
"parameterSlots": 0,
"returnSlots": 1
},
"@getOwnerBalance_73": {
"entryPoint": null,
"id": 73,
"parameterSlots": 0,
"returnSlots": 1
},
"@notPayable_23": {
"entryPoint": null,
"id": 23,
"parameterSlots": 0,
"returnSlots": 0
},
"@owner_3": {
"entryPoint": null,
"id": 3,
"parameterSlots": 0,
"returnSlots": 0
},
"@withdraw_49": {
"entryPoint": 248,
"id": 49,
"parameterSlots": 0,
"returnSlots": 0
},
"abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_address_payable__to_t_address_payable__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_445140255c9d889994129d349e64078d6f76b4b37ec896948f7e858f9b8a0dcb__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:976:1",
"statements": [
{
"nodeType": "YulBlock",
"src": "6:3:1",
"statements": []
},
{
"body": {
"nodeType": "YulBlock",
"src": "115:76:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "125:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "137:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "148:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "133:3:1"
},
"nodeType": "YulFunctionCall",
"src": "133:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "125:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "167:9:1"
},
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "178:6:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "160:6:1"
},
"nodeType": "YulFunctionCall",
"src": "160:25:1"
},
"nodeType": "YulExpressionStatement",
"src": "160:25:1"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "84:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "95:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "106:4:1",
"type": ""
}
],
"src": "14:177:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "313:102:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "323:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "335:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "346:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "331:3:1"
},
"nodeType": "YulFunctionCall",
"src": "331:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "323:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "365:9:1"
},
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "380:6:1"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "396:3:1",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "401:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "392:3:1"
},
"nodeType": "YulFunctionCall",
"src": "392:11:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "405:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "388:3:1"
},
"nodeType": "YulFunctionCall",
"src": "388:19:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "376:3:1"
},
"nodeType": "YulFunctionCall",
"src": "376:32:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "358:6:1"
},
"nodeType": "YulFunctionCall",
"src": "358:51:1"
},
"nodeType": "YulExpressionStatement",
"src": "358:51:1"
}
]
},
"name": "abi_encode_tuple_t_address_payable__to_t_address_payable__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "282:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "293:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "304:4:1",
"type": ""
}
],
"src": "196:219:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "611:14:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "613:10:1",
"value": {
"name": "pos",
"nodeType": "YulIdentifier",
"src": "620:3:1"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "613:3:1"
}
]
}
]
},
"name": "abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "595:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "603:3:1",
"type": ""
}
],
"src": "420:205:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "804:170:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "821:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "832:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "814:6:1"
},
"nodeType": "YulFunctionCall",
"src": "814:21:1"
},
"nodeType": "YulExpressionStatement",
"src": "814:21:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "855:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "866:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "851:3:1"
},
"nodeType": "YulFunctionCall",
"src": "851:18:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "871:2:1",
"type": "",
"value": "20"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "844:6:1"
},
"nodeType": "YulFunctionCall",
"src": "844:30:1"
},
"nodeType": "YulExpressionStatement",
"src": "844:30:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "894:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "905:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "890:3:1"
},
"nodeType": "YulFunctionCall",
"src": "890:18:1"
},
{
"hexValue": "4661696c656420746f2073656e64204574686572",
"kind": "string",
"nodeType": "YulLiteral",
"src": "910:22:1",
"type": "",
"value": "Failed to send Ether"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "883:6:1"
},
"nodeType": "YulFunctionCall",
"src": "883:50:1"
},
"nodeType": "YulExpressionStatement",
"src": "883:50:1"
},
{
"nodeType": "YulAssignment",
"src": "942:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "954:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "965:2:1",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "950:3:1"
},
"nodeType": "YulFunctionCall",
"src": "950:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "942:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_445140255c9d889994129d349e64078d6f76b4b37ec896948f7e858f9b8a0dcb__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "781:9:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "795:4:1",
"type": ""
}
],
"src": "630:344:1"
}
]
},
"contents": "{\n { }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_address_payable__to_t_address_payable__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n { end := pos }\n function abi_encode_tuple_t_stringliteral_445140255c9d889994129d349e64078d6f76b4b37ec896948f7e858f9b8a0dcb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 20)\n mstore(add(headStart, 64), \"Failed to send Ether\")\n tail := add(headStart, 96)\n }\n}",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "6080604052600436106100555760003560e01c8063273884bd1461005a5780633ccfd60b1461006a578063590791f21461007f5780636f9fb98a146100ad5780638da5cb5b146100c0578063d0e30db014610068575b600080fd5b34801561006657600080fd5b505b005b34801561007657600080fd5b506100686100f8565b34801561008b57600080fd5b506000546001600160a01b0316315b6040519081526020015b60405180910390f35b3480156100b957600080fd5b504761009a565b3480156100cc57600080fd5b506000546100e0906001600160a01b031681565b6040516001600160a01b0390911681526020016100a4565b600080546040514792916001600160a01b03169083908381818185875af1925050503d8060008114610146576040519150601f19603f3d011682016040523d82523d6000602084013e61014b565b606091505b50509050806101975760405162461bcd60e51b81526020600482015260146024820152732330b4b632b2103a379039b2b7321022ba3432b960611b604482015260640160405180910390fd5b505056fea264697066735822122075947248064e3649a2927c1f18dc0adffd1d1b897e88447f20271c6fbec5d4c964736f6c634300080d0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x55 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x273884BD EQ PUSH2 0x5A JUMPI DUP1 PUSH4 0x3CCFD60B EQ PUSH2 0x6A JUMPI DUP1 PUSH4 0x590791F2 EQ PUSH2 0x7F JUMPI DUP1 PUSH4 0x6F9FB98A EQ PUSH2 0xAD JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xC0 JUMPI DUP1 PUSH4 0xD0E30DB0 EQ PUSH2 0x68 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x68 PUSH2 0xF8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND BALANCE JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SELFBALANCE PUSH2 0x9A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH2 0xE0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA4 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD SELFBALANCE SWAP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP4 SWAP1 DUP4 DUP2 DUP2 DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x146 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x14B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x197 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x2330B4B632B2103A379039B2B7321022BA3432B9 PUSH1 0x61 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH22 0x947248064E3649A2927C1F18DC0ADFFD1D1B897E8844 PUSH32 0x20271C6FBEC5D4C964736F6C634300080D003300000000000000000000000000 ",
"sourceMap": "58:960:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;461:31;;;;;;;;;;;;;556:242;;;;;;;;;;;;;:::i;914:102::-;;;;;;;;;;-1:-1:-1;964:4:0;995:5;-1:-1:-1;;;;;995:5:0;987:22;914:102;;;160:25:1;;;148:2;133:18;914:102:0;;;;;;;;804:104;;;;;;;;;;-1:-1:-1;880:21:0;804:104;;122:28;;;;;;;;;;-1:-1:-1;122:28:0;;;;-1:-1:-1;;;;;122:28:0;;;;;;-1:-1:-1;;;;;376:32:1;;;358:51;;346:2;331:18;122:28:0;196:219:1;556:242:0;594:11;712:5;;:29;;608:21;;594:11;-1:-1:-1;;;;;712:5:0;;608:21;;594:11;712:29;594:11;712:29;608:21;712:5;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;693:48;;;759:7;751:40;;;;-1:-1:-1;;;751:40:0;;832:2:1;751:40:0;;;814:21:1;871:2;851:18;;;844:30;-1:-1:-1;;;890:18:1;;;883:50;950:18;;751:40:0;;;;;;;;583:215;;556:242::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "93000",
"executionCost": "24376",
"totalCost": "117376"
},
"external": {
"deposit()": "184",
"getContractBalance()": "227",
"getOwnerBalance()": "4910",
"notPayable()": "101",
"owner()": "2403",
"withdraw()": "infinite"
}
},
"legacyAssembly": {
".code": [
{
"begin": 58,
"end": 1018,
"name": "PUSH",
"source": 0,
"value": "80"
},
{
"begin": 58,
"end": 1018,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 58,
"end": 1018,
"name": "MSTORE",
"source": 0
},
{
"begin": 228,
"end": 286,
"name": "CALLVALUE",
"source": 0
},
{
"begin": 228,
"end": 286,
"name": "DUP1",
"source": 0
},
{
"begin": 228,
"end": 286,
"name": "ISZERO",
"source": 0
},
{
"begin": 228,
"end": 286,
"name": "PUSH [tag]",
"source": 0,
"value": "1"
},
{
"begin": 228,
"end": 286,
"name": "JUMPI",
"source": 0
},
{
"begin": 228,
"end": 286,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 228,
"end": 286,
"name": "DUP1",
"source": 0
},
{
"begin": 228,
"end": 286,
"name": "REVERT",
"source": 0
},
{
"begin": 228,
"end": 286,
"name": "tag",
"source": 0,
"value": "1"
},
{
"begin": 228,
"end": 286,
"name": "JUMPDEST",
"source": 0
},
{
"begin": -1,
"end": -1,
"name": "POP",
"source": -1
},
{
"begin": 252,
"end": 257,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 252,
"end": 279,
"name": "DUP1",
"source": 0
},
{
"begin": 252,
"end": 279,
"name": "SLOAD",
"source": 0
},
{
"begin": -1,
"end": -1,
"name": "PUSH",
"source": -1,
"value": "1"
},
{
"begin": -1,
"end": -1,
"name": "PUSH",
"source": -1,
"value": "1"
},
{
"begin": -1,
"end": -1,
"name": "PUSH",
"source": -1,
"value": "A0"
},
{
"begin": -1,
"end": -1,
"name": "SHL",
"source": -1
},
{
"begin": -1,
"end": -1,
"name": "SUB",
"source": -1
},
{
"begin": -1,
"end": -1,
"name": "NOT",
"source": -1
},
{
"begin": 252,
"end": 279,
"name": "AND",
"source": 0
},
{
"begin": 268,
"end": 278,
"name": "CALLER",
"source": 0
},
{
"begin": 252,
"end": 279,
"name": "OR",
"source": 0
},
{
"begin": 252,
"end": 279,
"name": "SWAP1",
"source": 0
},
{
"begin": 252,
"end": 279,
"name": "SSTORE",
"source": 0
},
{
"begin": 58,
"end": 1018,
"name": "PUSH #[$]",
"source": 0,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 58,
"end": 1018,
"name": "DUP1",
"source": 0
},
{
"begin": 58,
"end": 1018,
"name": "PUSH [$]",
"source": 0,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 58,
"end": 1018,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 58,
"end": 1018,
"name": "CODECOPY",
"source": 0
},
{
"begin": 58,
"end": 1018,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 58,
"end": 1018,
"name": "RETURN",
"source": 0
}
],
".data": {
"0": {
".auxdata": "a264697066735822122075947248064e3649a2927c1f18dc0adffd1d1b897e88447f20271c6fbec5d4c964736f6c634300080d0033",
".code": [
{
"begin": 58,
"end": 1018,
"name": "PUSH",
"source": 0,
"value": "80"
},
{
"begin": 58,
"end": 1018,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 58,
"end": 1018,
"name": "MSTORE",
"source": 0
},
{
"begin": 58,
"end": 1018,
"name": "PUSH",
"source": 0,
"value": "4"
},
{
"begin": 58,
"end": 1018,
"name": "CALLDATASIZE",
"source": 0
},
{
"begin": 58,
"end": 1018,
"name": "LT",
"source": 0
},
{
"begin": 58,
"end": 1018,
"name": "PUSH [tag]",
"source": 0,
"value": "1"
},
{
"begin": 58,
"end": 1018,
"name": "JUMPI",
"source": 0
},
{
"begin": 58,
"end": 1018,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 58,
"end": 1018,
"name": "CALLDATALOAD",
"source": 0
},
{
"begin": 58,
"end": 1018,
"name": "PUSH",
"source": 0,
"value": "E0"
},
{
"begin": 58,
"end": 1018,
"name": "SHR",
"source": 0
},
{
"begin": 58,
"end": 1018,
"name": "DUP1",
"source": 0
},
{
"begin": 58,
"end": 1018,
"name": "PUSH",
"source": 0,
"value": "273884BD"
},
{
"begin": 58,
"end": 1018,
"name": "EQ",
"source": 0
},
{
"begin": 58,
"end": 1018,
"name": "PUSH [tag]",
"source": 0,
"value": "2"
},
{
"begin": 58,
"end": 1018,
"name": "JUMPI",
"source": 0
},
{
"begin": 58,
"end": 1018,
"name": "DUP1",
"source": 0
},
{
"begin": 58,
"end": 1018,
"name": "PUSH",
"source": 0,
"value": "3CCFD60B"
},
{
"begin": 58,
"end": 1018,
"name": "EQ",
"source": 0
},
{
"begin": 58,
"end": 1018,
"name": "PUSH [tag]",
"source": 0,
"value": "3"
},
{
"begin": 58,
"end": 1018,
"name": "JUMPI",
"source": 0
},
{
"begin": 58,
"end": 1018,
"name": "DUP1",
"source": 0
},
{
"begin": 58,
"end": 1018,
"name": "PUSH",
"source": 0,
"value": "590791F2"
},
{
"begin": 58,
"end": 1018,
"name": "EQ",
"source": 0
},
{
"begin": 58,
"end": 1018,
"name": "PUSH [tag]",
"source": 0,
"value": "4"
},
{
"begin": 58,
"end": 1018,
"name": "JUMPI",
"source": 0
},
{
"begin": 58,
"end": 1018,
"name": "DUP1",
"source": 0
},
{
"begin": 58,
"end": 1018,
"name": "PUSH",
"source": 0,
"value": "6F9FB98A"
},
{
"begin": 58,
"end": 1018,
"name": "EQ",
"source": 0
},
{
"begin": 58,
"end": 1018,
"name": "PUSH [tag]",
"source": 0,
"value": "5"
},
{
"begin": 58,
"end": 1018,
"name": "JUMPI",
"source": 0
},
{
"begin": 58,
"end": 1018,
"name": "DUP1",
"source": 0
},
{
"begin": 58,
"end": 1018,
"name": "PUSH",
"source": 0,
"value": "8DA5CB5B"
},
{
"begin": 58,
"end": 1018,
"name": "EQ",
"source": 0
},
{
"begin": 58,
"end": 1018,
"name": "PUSH [tag]",
"source": 0,
"value": "6"
},
{
"begin": 58,
"end": 1018,
"name": "JUMPI",
"source": 0
},
{
"begin": 58,
"end": 1018,
"name": "DUP1",
"source": 0
},
{
"begin": 58,
"end": 1018,
"name": "PUSH",
"source": 0,
"value": "D0E30DB0"
},
{
"begin": 58,
"end": 1018,
"name": "EQ",
"source": 0
},
{
"begin": 58,
"end": 1018,
"name": "PUSH [tag]",
"source": 0,
"value": "9"
},
{
"begin": 58,
"end": 1018,
"name": "JUMPI",
"source": 0
},
{
"begin": 58,
"end": 1018,
"name": "tag",
"source": 0,
"value": "1"
},
{
"begin": 58,
"end": 1018,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 58,
"end": 1018,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 58,
"end": 1018,
"name": "DUP1",
"source": 0
},
{
"begin": 58,
"end": 1018,
"name": "REVERT",
"source": 0
},
{
"begin": 461,
"end": 492,
"name": "tag",
"source": 0,
"value": "2"
},
{
"begin": 461,
"end": 492,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 461,
"end": 492,
"name": "CALLVALUE",
"source": 0
},
{
"begin": 461,
"end": 492,
"name": "DUP1",
"source": 0
},
{
"begin": 461,
"end": 492,
"name": "ISZERO",
"source": 0
},
{
"begin": 461,
"end": 492,
"name": "PUSH [tag]",
"source": 0,
"value": "8"
},
{
"begin": 461,
"end": 492,
"name": "JUMPI",
"source": 0
},
{
"begin": 461,
"end": 492,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 461,
"end": 492,
"name": "DUP1",
"source": 0
},
{
"begin": 461,
"end": 492,
"name": "REVERT",
"source": 0
},
{
"begin": 461,
"end": 492,
"name": "tag",
"source": 0,
"value": "8"
},
{
"begin": 461,
"end": 492,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 461,
"end": 492,
"name": "POP",
"source": 0
},
{
"begin": 461,
"end": 492,
"name": "tag",
"source": 0,
"value": "9"
},
{
"begin": 461,
"end": 492,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 461,
"end": 492,
"name": "STOP",
"source": 0
},
{
"begin": 556,
"end": 798,
"name": "tag",
"source": 0,
"value": "3"
},
{
"begin": 556,
"end": 798,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 556,
"end": 798,
"name": "CALLVALUE",
"source": 0
},
{
"begin": 556,
"end": 798,
"name": "DUP1",
"source": 0
},
{
"begin": 556,
"end": 798,
"name": "ISZERO",
"source": 0
},
{
"begin": 556,
"end": 798,
"name": "PUSH [tag]",
"source": 0,
"value": "11"
},
{
"begin": 556,
"end": 798,
"name": "JUMPI",
"source": 0
},
{
"begin": 556,
"end": 798,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 556,
"end": 798,
"name": "DUP1",
"source": 0
},
{
"begin": 556,
"end": 798,
"name": "REVERT",
"source": 0
},
{
"begin": 556,
"end": 798,
"name": "tag",
"source": 0,
"value": "11"
},
{
"begin": 556,
"end": 798,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 556,
"end": 798,
"name": "POP",
"source": 0
},
{
"begin": 556,
"end": 798,
"name": "PUSH [tag]",
"source": 0,
"value": "9"
},
{
"begin": 556,
"end": 798,
"name": "PUSH [tag]",
"source": 0,
"value": "13"
},
{
"begin": 556,
"end": 798,
"name": "JUMP",
"source": 0,
"value": "[in]"
},
{
"begin": 914,
"end": 1016,
"name": "tag",
"source": 0,
"value": "4"
},
{
"begin": 914,
"end": 1016,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 914,
"end": 1016,
"name": "CALLVALUE",
"source": 0
},
{
"begin": 914,
"end": 1016,
"name": "DUP1",
"source": 0
},
{
"begin": 914,
"end": 1016,
"name": "ISZERO",
"source": 0
},
{
"begin": 914,
"end": 1016,
"name": "PUSH [tag]",
"source": 0,
"value": "14"
},
{
"begin": 914,
"end": 1016,
"name": "JUMPI",
"source": 0
},
{
"begin": 914,
"end": 1016,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 914,
"end": 1016,
"name": "DUP1",
"source": 0
},
{
"begin": 914,
"end": 1016,
"name": "REVERT",
"source": 0
},
{
"begin": 914,
"end": 1016,
"name": "tag",
"source": 0,
"value": "14"
},
{
"begin": 914,
"end": 1016,
"name": "JUMPDEST",
"source": 0
},
{
"begin": -1,
"end": -1,
"name": "POP",
"source": -1
},
{
"begin": 964,
"end": 968,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 995,
"end": 1000,
"name": "SLOAD",
"source": 0
},
{
"begin": -1,
"end": -1,
"name": "PUSH",
"source": -1,
"value": "1"
},
{
"begin": -1,
"end": -1,
"name": "PUSH",
"source": -1,
"value": "1"
},
{
"begin": -1,
"end": -1,
"name": "PUSH",
"source": -1,
"value": "A0"
},
{
"begin": -1,
"end": -1,
"name": "SHL",
"source": -1
},
{
"begin": -1,
"end": -1,
"name": "SUB",
"source": -1
},
{
"begin": 995,
"end": 1000,
"name": "AND",
"source": 0
},
{
"begin": 987,
"end": 1009,
"name": "BALANCE",
"source": 0
},
{
"begin": 914,
"end": 1016,
"name": "tag",
"source": 0,
"value": "15"
},
{
"begin": 914,
"end": 1016,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 914,
"end": 1016,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 914,
"end": 1016,
"name": "MLOAD",
"source": 0
},
{
"begin": 160,
"end": 185,
"name": "SWAP1",
"source": 1
},
{
"begin": 160,
"end": 185,
"name": "DUP2",
"source": 1
},
{
"begin": 160,
"end": 185,
"name": "MSTORE",
"source": 1
},
{
"begin": 148,
"end": 150,
"name": "PUSH",
"source": 1,
"value": "20"
},
{
"begin": 133,
"end": 151,
"name": "ADD",
"source": 1
},
{
"begin": 914,
"end": 1016,
"name": "tag",
"source": 0,
"value": "17"
},
{
"begin": 914,
"end": 1016,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 914,
"end": 1016,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 914,
"end": 1016,
"name": "MLOAD",
"source": 0
},
{
"begin": 914,
"end": 1016,
"name": "DUP1",
"source": 0
},
{
"begin": 914,
"end": 1016,
"name": "SWAP2",
"source": 0
},
{
"begin": 914,
"end": 1016,
"name": "SUB",
"source": 0
},
{
"begin": 914,
"end": 1016,
"name": "SWAP1",
"source": 0
},
{
"begin": 914,
"end": 1016,
"name": "RETURN",
"source": 0
},
{
"begin": 804,
"end": 908,
"name": "tag",
"source": 0,
"value": "5"
},
{
"begin": 804,
"end": 908,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 804,
"end": 908,
"name": "CALLVALUE",
"source": 0
},
{
"begin": 804,
"end": 908,
"name": "DUP1",
"source": 0
},
{
"begin": 804,
"end": 908,
"name": "ISZERO",
"source": 0
},
{
"begin": 804,
"end": 908,
"name": "PUSH [tag]",
"source": 0,
"value": "19"
},
{
"begin": 804,
"end": 908,
"name": "JUMPI",
"source": 0
},
{
"begin": 804,
"end": 908,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 804,
"end": 908,
"name": "DUP1",
"source": 0
},
{
"begin": 804,
"end": 908,
"name": "REVERT",
"source": 0
},
{
"begin": 804,
"end": 908,
"name": "tag",
"source": 0,
"value": "19"
},
{
"begin": 804,
"end": 908,
"name": "JUMPDEST",
"source": 0
},
{
"begin": -1,
"end": -1,
"name": "POP",
"source": -1
},
{
"begin": 880,
"end": 901,
"name": "SELFBALANCE",
"source": 0
},
{
"begin": 804,
"end": 908,
"name": "PUSH [tag]",
"source": 0,
"value": "15"
},
{
"begin": 804,
"end": 908,
"name": "JUMP",
"source": 0
},
{
"begin": 122,
"end": 150,
"name": "tag",
"source": 0,
"value": "6"
},
{
"begin": 122,
"end": 150,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 122,
"end": 150,
"name": "CALLVALUE",
"source": 0
},
{
"begin": 122,
"end": 150,
"name": "DUP1",
"source": 0
},
{
"begin": 122,
"end": 150,
"name": "ISZERO",
"source": 0
},
{
"begin": 122,
"end": 150,
"name": "PUSH [tag]",
"source": 0,
"value": "23"
},
{
"begin": 122,
"end": 150,
"name": "JUMPI",
"source": 0
},
{
"begin": 122,
"end": 150,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 122,
"end": 150,
"name": "DUP1",
"source": 0
},
{
"begin": 122,
"end": 150,
"name": "REVERT",
"source": 0
},
{
"begin": 122,
"end": 150,
"name": "tag",
"source": 0,
"value": "23"
},
{
"begin": 122,
"end": 150,
"name": "JUMPDEST",
"source": 0
},
{
"begin": -1,
"end": -1,
"name": "POP",
"source": -1
},
{
"begin": 122,
"end": 150,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 122,
"end": 150,
"name": "SLOAD",
"source": 0
},
{
"begin": 122,
"end": 150,
"name": "PUSH [tag]",
"source": 0,
"value": "24"
},
{
"begin": 122,
"end": 150,
"name": "SWAP1",
"source": 0
},
{
"begin": -1,
"end": -1,
"name": "PUSH",
"source": -1,
"value": "1"
},
{
"begin": -1,
"end": -1,
"name": "PUSH",
"source": -1,
"value": "1"
},
{
"begin": -1,
"end": -1,
"name": "PUSH",
"source": -1,
"value": "A0"
},
{
"begin": -1,
"end": -1,
"name": "SHL",
"source": -1
},
{
"begin": -1,
"end": -1,
"name": "SUB",
"source": -1
},
{
"begin": 122,
"end": 150,
"name": "AND",
"source": 0
},
{
"begin": 122,
"end": 150,
"name": "DUP2",
"source": 0
},
{
"begin": 122,
"end": 150,
"name": "JUMP",
"source": 0
},
{
"begin": 122,
"end": 150,
"name": "tag",
"source": 0,
"value": "24"
},
{
"begin": 122,
"end": 150,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 122,
"end": 150,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 122,
"end": 150,
"name": "MLOAD",
"source": 0
},
{
"begin": -1,
"end": -1,
"name": "PUSH",
"source": -1,
"value": "1"
},
{
"begin": -1,
"end": -1,
"name": "PUSH",
"source": -1,
"value": "1"
},
{
"begin": -1,
"end": -1,
"name": "PUSH",
"source": -1,
"value": "A0"
},
{
"begin": -1,
"end": -1,
"name": "SHL",
"source": -1
},
{
"begin": -1,
"end": -1,
"name": "SUB",
"source": -1
},
{
"begin": 376,
"end": 408,
"name": "SWAP1",
"source": 1
},
{
"begin": 376,
"end": 408,
"name": "SWAP2",
"source": 1
},
{
"begin": 376,
"end": 408,
"name": "AND",
"source": 1
},
{
"begin": 358,
"end": 409,
"name": "DUP2",
"source": 1
},
{
"begin": 358,
"end": 409,
"name": "MSTORE",
"source": 1
},
{
"begin": 346,
"end": 348,
"name": "PUSH",
"source": 1,
"value": "20"
},
{
"begin": 331,
"end": 349,
"name": "ADD",
"source": 1
},
{
"begin": 122,
"end": 150,
"name": "PUSH [tag]",
"source": 0,
"value": "17"
},
{
"begin": 196,
"end": 415,
"name": "JUMP",
"source": 1
},
{
"begin": 556,
"end": 798,
"name": "tag",
"source": 0,
"value": "13"
},
{
"begin": 556,
"end": 798,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 594,
"end": 605,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 712,
"end": 717,
"name": "DUP1",
"source": 0
},
{
"begin": 712,
"end": 717,
"name": "SLOAD",
"source": 0
},
{
"begin": 712,
"end": 741,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 712,
"end": 741,
"name": "MLOAD",
"source": 0
},
{
"begin": 608,
"end": 629,
"name": "SELFBALANCE",
"source": 0
},
{
"begin": 608,
"end": 629,
"name": "SWAP3",
"source": 0
},
{
"begin": 594,
"end": 605,
"name": "SWAP2",
"source": 0
},
{
"begin": -1,
"end": -1,
"name": "PUSH",
"source": -1,
"value": "1"
},
{
"begin": -1,
"end": -1,
"name": "PUSH",
"source": -1,
"value": "1"
},
{
"begin": -1,
"end": -1,
"name": "PUSH",
"source": -1,
"value": "A0"
},
{
"begin": -1,
"end": -1,
"name": "SHL",
"source": -1
},
{
"begin": -1,
"end": -1,
"name": "SUB",
"source": -1
},
{
"begin": 712,
"end": 717,
"name": "AND",
"source": 0
},
{
"begin": 712,
"end": 717,
"name": "SWAP1",
"source": 0
},
{
"begin": 608,
"end": 629,
"name": "DUP4",
"source": 0
},
{
"begin": 608,
"end": 629,
"name": "SWAP1",
"source": 0
},
{
"begin": 594,
"end": 605,
"name": "DUP4",
"source": 0
},
{
"begin": 712,
"end": 741,
"name": "DUP2",
"source": 0
},
{
"begin": 594,
"end": 605,
"name": "DUP2",
"source": 0
},
{
"begin": 712,
"end": 741,
"name": "DUP2",
"source": 0
},
{
"begin": 608,
"end": 629,
"name": "DUP6",
"source": 0
},
{
"begin": 712,
"end": 717,
"name": "DUP8",
"source": 0
},
{
"begin": 712,
"end": 741,
"name": "GAS",
"source": 0
},
{
"begin": 712,
"end": 741,
"name": "CALL",
"source": 0
},
{
"begin": 712,
"end": 741,
"name": "SWAP3",
"source": 0
},
{
"begin": 712,
"end": 741,
"name": "POP",
"source": 0
},
{
"begin": 712,
"end": 741,
"name": "POP",
"source": 0
},
{
"begin": 712,
"end": 741,
"name": "POP",
"source": 0
},
{
"begin": 712,
"end": 741,
"name": "RETURNDATASIZE",
"source": 0
},
{
"begin": 712,
"end": 741,
"name": "DUP1",
"source": 0
},
{
"begin": 712,
"end": 741,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 712,
"end": 741,
"name": "DUP2",
"source": 0
},
{
"begin": 712,
"end": 741,
"name": "EQ",
"source": 0
},
{
"begin": 712,
"end": 741,
"name": "PUSH [tag]",
"source": 0,
"value": "36"
},
{
"begin": 712,
"end": 741,
"name": "JUMPI",
"source": 0
},
{
"begin": 712,
"end": 741,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 712,
"end": 741,
"name": "MLOAD",
"source": 0
},
{
"begin": 712,
"end": 741,
"name": "SWAP2",
"source": 0
},
{
"begin": 712,
"end": 741,
"name": "POP",
"source": 0
},
{
"begin": 712,
"end": 741,
"name": "PUSH",
"source": 0,
"value": "1F"
},
{
"begin": 712,
"end": 741,
"name": "NOT",
"source": 0
},
{
"begin": 712,
"end": 741,
"name": "PUSH",
"source": 0,
"value": "3F"
},
{
"begin": 712,
"end": 741,
"name": "RETURNDATASIZE",
"source": 0
},
{
"begin": 712,
"end": 741,
"name": "ADD",
"source": 0
},
{
"begin": 712,
"end": 741,
"name": "AND",
"source": 0
},
{
"begin": 712,
"end": 741,
"name": "DUP3",
"source": 0
},
{
"begin": 712,
"end": 741,
"name": "ADD",
"source": 0
},
{
"begin": 712,
"end": 741,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 712,
"end": 741,
"name": "MSTORE",
"source": 0
},
{
"begin": 712,
"end": 741,
"name": "RETURNDATASIZE",
"source": 0
},
{
"begin": 712,
"end": 741,
"name": "DUP3",
"source": 0
},
{
"begin": 712,
"end": 741,
"name": "MSTORE",
"source": 0
},
{
"begin": 712,
"end": 741,
"name": "RETURNDATASIZE",
"source": 0
},
{
"begin": 712,
"end": 741,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 712,
"end": 741,
"name": "PUSH",
"source": 0,
"value": "20"
},
{
"begin": 712,
"end": 741,
"name": "DUP5",
"source": 0
},
{
"begin": 712,
"end": 741,
"name": "ADD",
"source": 0
},
{
"begin": 712,
"end": 741,
"name": "RETURNDATACOPY",
"source": 0
},
{
"begin": 712,
"end": 741,
"name": "PUSH [tag]",
"source": 0,
"value": "35"
},
{
"begin": 712,
"end": 741,
"name": "JUMP",
"source": 0
},
{
"begin": 712,
"end": 741,
"name": "tag",
"source": 0,
"value": "36"
},
{
"begin": 712,
"end": 741,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 712,
"end": 741,
"name": "PUSH",
"source": 0,
"value": "60"
},
{
"begin": 712,
"end": 741,
"name": "SWAP2",
"source": 0
},
{
"begin": 712,
"end": 741,
"name": "POP",
"source": 0
},
{
"begin": 712,
"end": 741,
"name": "tag",
"source": 0,
"value": "35"
},
{
"begin": 712,
"end": 741,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 712,
"end": 741,
"name": "POP",
"source": 0
},
{
"begin": 693,
"end": 741,
"name": "POP",
"source": 0
},
{
"begin": 693,
"end": 741,
"name": "SWAP1",
"source": 0
},
{
"begin": 693,
"end": 741,
"name": "POP",
"source": 0
},
{
"begin": 759,
"end": 766,
"name": "DUP1",
"source": 0
},
{
"begin": 751,
"end": 791,
"name": "PUSH [tag]",
"source": 0,
"value": "37"
},
{
"begin": 751,
"end": 791,
"name": "JUMPI",
"source": 0
},
{
"begin": 751,
"end": 791,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 751,
"end": 791,
"name": "MLOAD",
"source": 0
},
{
"begin": -1,
"end": -1,
"name": "PUSH",
"source": -1,
"value": "461BCD"
},
{
"begin": -1,
"end": -1,
"name": "PUSH",
"source": -1,
"value": "E5"
},
{
"begin": -1,
"end": -1,
"name": "SHL",
"source": -1
},
{
"begin": 751,
"end": 791,
"name": "DUP2",
"source": 0
},
{
"begin": 751,
"end": 791,
"name": "MSTORE",
"source": 0
},
{
"begin": 832,
"end": 834,
"name": "PUSH",
"source": 1,
"value": "20"
},
{
"begin": 751,
"end": 791,
"name": "PUSH",
"source": 0,
"value": "4"
},
{
"begin": 751,
"end": 791,
"name": "DUP3",
"source": 0
},
{
"begin": 751,
"end": 791,
"name": "ADD",
"source": 0
},
{
"begin": 814,
"end": 835,
"name": "MSTORE",
"source": 1
},
{
"begin": 871,
"end": 873,
"name": "PUSH",
"source": 1,
"value": "14"
},
{
"begin": 851,
"end": 869,
"name": "PUSH",
"source": 1,
"value": "24"
},
{
"begin": 851,
"end": 869,
"name": "DUP3",
"source": 1
},
{
"begin": 851,
"end": 869,
"name": "ADD",
"source": 1
},
{
"begin": 844,
"end": 874,
"name": "MSTORE",
"source": 1
},
{
"begin": -1,
"end": -1,
"name": "PUSH",
"source": -1,
"value": "2330B4B632B2103A379039B2B7321022BA3432B9"
},
{
"begin": -1,
"end": -1,
"name": "PUSH",
"source": -1,
"value": "61"
},
{
"begin": -1,
"end": -1,
"name": "SHL",
"source": -1
},
{
"begin": 890,
"end": 908,
"name": "PUSH",
"source": 1,
"value": "44"
},
{
"begin": 890,
"end": 908,
"name": "DUP3",
"source": 1
},
{
"begin": 890,
"end": 908,
"name": "ADD",
"source": 1
},
{
"begin": 883,
"end": 933,
"name": "MSTORE",
"source": 1
},
{
"begin": 950,
"end": 968,
"name": "PUSH",
"source": 1,
"value": "64"
},
{
"begin": 950,
"end": 968,
"name": "ADD",
"source": 1
},
{
"begin": 751,
"end": 791,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 751,
"end": 791,
"name": "MLOAD",
"source": 0
},
{
"begin": 751,
"end": 791,
"name": "DUP1",
"source": 0
},
{
"begin": 751,
"end": 791,
"name": "SWAP2",
"source": 0
},
{
"begin": 751,
"end": 791,
"name": "SUB",
"source": 0
},
{
"begin": 751,
"end": 791,
"name": "SWAP1",
"source": 0
},
{
"begin": 751,
"end": 791,
"name": "REVERT",
"source": 0
},
{
"begin": 751,
"end": 791,
"name": "tag",
"source": 0,
"value": "37"
},
{
"begin": 751,
"end": 791,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 583,
"end": 798,
"name": "POP",
"source": 0
},
{
"begin": 583,
"end": 798,
"name": "POP",
"source": 0
},
{
"begin": 556,
"end": 798,
"name": "JUMP",
"source": 0,
"value": "[out]"
}
]
}
}
},
"methodIdentifiers": {
"deposit()": "d0e30db0",
"getContractBalance()": "6f9fb98a",
"getOwnerBalance()": "590791f2",
"notPayable()": "273884bd",
"owner()": "8da5cb5b",
"withdraw()": "3ccfd60b"
}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getContractBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOwnerBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"notPayable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Payable.sol\":\"Payable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Payable.sol\":{\"keccak256\":\"0xbd9e92a2a066fea866e4426a323ad767b11e52a0539ff47edb68c864fdbcdd01\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5bd07b83203dc7f394032369e460bd5a1d5ab76b3922d4907f02b97be9dcda68\",\"dweb:/ipfs/QmZyA1kBqARsYgWwtWB73MV6J8spdbND1BTMfudJacfRZN\"]}},\"version\":1}",
"storageLayout": {
"storage": [
{
"astId": 3,
"contract": "contracts/Payable.sol:Payable",
"label": "owner",
"offset": 0,
"slot": "0",
"type": "t_address_payable"
}
],
"types": {
"t_address_payable": {
"encoding": "inplace",
"label": "address payable",
"numberOfBytes": "20"
}
}
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}
}
},
"sources": {
"contracts/Payable.sol": {
"ast": {
"absolutePath": "contracts/Payable.sol",
"exportedSymbols": {
"Payable": [
74
]
},
"id": 75,
"license": "MIT",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 1,
"literals": [
"solidity",
"^",
"0.8",
".13"
],
"nodeType": "PragmaDirective",
"src": "32:24:0"
},
{
"abstract": false,
"baseContracts": [],
"canonicalName": "Payable",
"contractDependencies": [],
"contractKind": "contract",
"fullyImplemented": true,
"id": 74,
"linearizedBaseContracts": [
74
],
"name": "Payable",
"nameLocation": "67:7:0",
"nodeType": "ContractDefinition",
"nodes": [
{
"constant": false,
"functionSelector": "8da5cb5b",
"id": 3,
"mutability": "mutable",
"name": "owner",
"nameLocation": "145:5:0",
"nodeType": "VariableDeclaration",
"scope": 74,
"src": "122:28:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
},
"typeName": {
"id": 2,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "122:15:0",
"stateMutability": "payable",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"visibility": "public"
},
{
"body": {
"id": 14,
"nodeType": "Block",
"src": "242:44:0",
"statements": [
{
"expression": {
"id": 12,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 6,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3,
"src": "252:5:0",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"expression": {
"id": 9,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4294967281,
"src": "268:3:0",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 10,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"src": "268:10:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 8,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "260:8:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_payable_$",
"typeString": "type(address payable)"
},
"typeName": {
"id": 7,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "260:8:0",
"stateMutability": "payable",
"typeDescriptions": {}
}
},
"id": 11,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "260:19:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"src": "252:27:0",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"id": 13,
"nodeType": "ExpressionStatement",
"src": "252:27:0"
}
]
},
"id": 15,
"implemented": true,
"kind": "constructor",
"modifiers": [],
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 4,
"nodeType": "ParameterList",
"parameters": [],
"src": "239:2:0"
},
"returnParameters": {
"id": 5,
"nodeType": "ParameterList",
"parameters": [],
"src": "242:0:0"
},
"scope": 74,
"src": "228:58:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 18,
"nodeType": "Block",
"src": "378:2:0",
"statements": []
},
"functionSelector": "d0e30db0",
"id": 19,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "deposit",
"nameLocation": "353:7:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 16,
"nodeType": "ParameterList",
"parameters": [],
"src": "360:2:0"
},
"returnParameters": {
"id": 17,
"nodeType": "ParameterList",
"parameters": [],
"src": "378:0:0"
},
"scope": 74,
"src": "344:36:0",
"stateMutability": "payable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 22,
"nodeType": "Block",
"src": "490:2:0",
"statements": []
},
"functionSelector": "273884bd",
"id": 23,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "notPayable",
"nameLocation": "470:10:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 20,
"nodeType": "ParameterList",
"parameters": [],
"src": "480:2:0"
},
"returnParameters": {
"id": 21,
"nodeType": "ParameterList",
"parameters": [],
"src": "490:0:0"
},
"scope": 74,
"src": "461:31:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 48,
"nodeType": "Block",
"src": "583:215:0",
"statements": [
{
"assignments": [
27
],
"declarations": [
{
"constant": false,
"id": 27,
"mutability": "mutable",
"name": "amount",
"nameLocation": "599:6:0",
"nodeType": "VariableDeclaration",
"scope": 48,
"src": "594:11:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 26,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "594:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 33,
"initialValue": {
"expression": {
"arguments": [
{
"id": 30,
"name": "this",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4294967268,
"src": "616:4:0",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Payable_$74",
"typeString": "contract Payable"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_Payable_$74",
"typeString": "contract Payable"
}
],
"id": 29,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "608:7:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 28,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "608:7:0",
"typeDescriptions": {}
}
},
"id": 31,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "608:13:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 32,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "balance",
"nodeType": "MemberAccess",
"src": "608:21:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "594:35:0"
},
{
"assignments": [
35,
null
],
"declarations": [
{
"constant": false,
"id": 35,
"mutability": "mutable",
"name": "success",
"nameLocation": "699:7:0",
"nodeType": "VariableDeclaration",
"scope": 48,
"src": "694:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 34,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "694:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
},
null
],
"id": 42,
"initialValue": {
"arguments": [
{
"hexValue": "",
"id": 40,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "738:2:0",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"typeString": "literal_string \"\""
},
"value": ""
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"typeString": "literal_string \"\""
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"typeString": "literal_string \"\""
}
],
"expression": {
"id": 36,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3,
"src": "712:5:0",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"id": 37,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "call",
"nodeType": "MemberAccess",
"src": "712:10:0",
"typeDescriptions": {
"typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
"typeString": "function (bytes memory) payable returns (bool,bytes memory)"
}
},
"id": 39,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"names": [
"value"
],
"nodeType": "FunctionCallOptions",
"options": [
{
"id": 38,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 27,
"src": "730:6:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"src": "712:25:0",
"typeDescriptions": {
"typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value",
"typeString": "function (bytes memory) payable returns (bool,bytes memory)"
}
},
"id": 41,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "712:29:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
"typeString": "tuple(bool,bytes memory)"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "693:48:0"
},
{
"expression": {
"arguments": [
{
"id": 44,
"name": "success",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 35,
"src": "759:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4661696c656420746f2073656e64204574686572",
"id": 45,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "768:22:0",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_445140255c9d889994129d349e64078d6f76b4b37ec896948f7e858f9b8a0dcb",
"typeString": "literal_string \"Failed to send Ether\""
},
"value": "Failed to send Ether"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_445140255c9d889994129d349e64078d6f76b4b37ec896948f7e858f9b8a0dcb",
"typeString": "literal_string \"Failed to send Ether\""
}
],
"id": 43,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
4294967278,
4294967278
],
"referencedDeclaration": 4294967278,
"src": "751:7:0",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 46,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "751:40:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 47,
"nodeType": "ExpressionStatement",
"src": "751:40:0"
}
]
},
"functionSelector": "3ccfd60b",
"id": 49,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "withdraw",
"nameLocation": "565:8:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 24,
"nodeType": "ParameterList",
"parameters": [],
"src": "573:2:0"
},
"returnParameters": {
"id": 25,
"nodeType": "ParameterList",
"parameters": [],
"src": "583:0:0"
},
"scope": 74,
"src": "556:242:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 60,
"nodeType": "Block",
"src": "863:45:0",
"statements": [
{
"expression": {
"expression": {
"arguments": [
{
"id": 56,
"name": "this",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4294967268,
"src": "888:4:0",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Payable_$74",
"typeString": "contract Payable"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_Payable_$74",
"typeString": "contract Payable"
}
],
"id": 55,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "880:7:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 54,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "880:7:0",
"typeDescriptions": {}
}
},
"id": 57,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "880:13:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 58,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "balance",
"nodeType": "MemberAccess",
"src": "880:21:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 53,
"id": 59,
"nodeType": "Return",
"src": "873:28:0"
}
]
},
"functionSelector": "6f9fb98a",
"id": 61,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getContractBalance",
"nameLocation": "813:18:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 50,
"nodeType": "ParameterList",
"parameters": [],
"src": "831:2:0"
},
"returnParameters": {
"id": 53,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 52,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 61,
"src": "857:4:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 51,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "857:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "856:6:0"
},
"scope": 74,
"src": "804:104:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": {
"id": 72,
"nodeType": "Block",
"src": "970:46:0",
"statements": [
{
"expression": {
"expression": {
"arguments": [
{
"id": 68,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3,
"src": "995:5:0",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
],
"id": 67,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "987:7:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 66,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "987:7:0",
"typeDescriptions": {}
}
},
"id": 69,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "987:14:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 70,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "balance",
"nodeType": "MemberAccess",
"src": "987:22:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 65,
"id": 71,
"nodeType": "Return",
"src": "980:29:0"
}
]
},
"functionSelector": "590791f2",
"id": 73,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getOwnerBalance",
"nameLocation": "923:15:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 62,
"nodeType": "ParameterList",
"parameters": [],
"src": "938:2:0"
},
"returnParameters": {
"id": 65,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 64,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 73,
"src": "964:4:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 63,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "964:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "963:6:0"
},
"scope": 74,
"src": "914:102:0",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
}
],
"scope": 75,
"src": "58:960:0",
"usedErrors": []
}
],
"src": "32:986:0"
},
"id": 0
}
}
}
}
{
"id": "2afef28e0d35f83e408a2bc4d929c20d",
"_format": "hh-sol-build-info-1",
"solcVersion": "0.8.13",
"solcLongVersion": "0.8.13+commit.abaa5c0e",
"input": {
"language": "Solidity",
"sources": {
"contracts/Libraries.sol": {
"content": "\n// SPDX-License-Identifier: MIT\npragma solidity ^0.8.13;\n\nlibrary SafeMath {\n function add(uint x, uint y) internal pure returns (uint) {\n uint z = x + y;\n require(z >= x, \"uint overflow\");\n\n return z;\n }\n}\n\nlibrary Math {\n function sqrt(uint y) internal pure returns (uint z) {\n if (y > 3) {\n z = y;\n uint x = y / 2 + 1;\n while (x < z) {\n z = x;\n x = (y / x + x) / 2;\n }\n } else if (y != 0) {\n z = 1;\n }\n // else z = 0 (default value)\n }\n}\n\ncontract TestSafeMath {\n using SafeMath for uint;\n\n uint public MAX_UINT = 2**256 - 1;\n\n function testAdd(uint x, uint y) public pure returns (uint) {\n return x.add(y);\n }\n\n function testSquareRoot(uint x) public pure returns (uint) {\n return Math.sqrt(x);\n }\n}"
}
},
"settings": {
"optimizer": {
"enabled": true,
"runs": 200
},
"outputSelection": {
"*": {
"": [
"ast"
],
"*": [
"abi",
"metadata",
"devdoc",
"userdoc",
"storageLayout",
"evm.legacyAssembly",
"evm.bytecode",
"evm.deployedBytecode",
"evm.methodIdentifiers",
"evm.gasEstimates",
"evm.assembly"
]
}
}
}
},
"output": {
"contracts": {
"contracts/Libraries.sol": {
"Math": {
"abi": [],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"evm": {
"assembly": " /* \"contracts/Libraries.sol\":236:587 library Math {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, shl(0xe0, 0x4e487b71))\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"contracts/Libraries.sol\":236:587 library Math {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa26469706673582212201c61d9f40bb64900d422b82af3be779a06805da5733766dd5a79300be839990864736f6c634300080d0033\n}\n",
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201c61d9f40bb64900d422b82af3be779a06805da5733766dd5a79300be839990864736f6c634300080d0033",
"opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SHR PUSH2 0xD9F4 SIGNEXTEND 0xB6 0x49 STOP 0xD4 0x22 0xB8 0x2A RETURN 0xBE PUSH24 0x9A06805DA5733766DD5A79300BE839990864736F6C634300 ADDMOD 0xD STOP CALLER ",
"sourceMap": "236:351:0:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;236:351:0;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201c61d9f40bb64900d422b82af3be779a06805da5733766dd5a79300be839990864736f6c634300080d0033",
"opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SHR PUSH2 0xD9F4 SIGNEXTEND 0xB6 0x49 STOP 0xD4 0x22 0xB8 0x2A RETURN 0xBE PUSH24 0x9A06805DA5733766DD5A79300BE839990864736F6C634300 ADDMOD 0xD STOP CALLER ",
"sourceMap": "236:351:0:-:0;;;;;;;;"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "17200",
"executionCost": "103",
"totalCost": "17303"
},
"internal": {
"sqrt(uint256)": "infinite"
}
},
"legacyAssembly": {
".code": [
{
"begin": 236,
"end": 587,
"name": "PUSH #[$]",
"source": 0,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 236,
"end": 587,
"name": "PUSH [$]",
"source": 0,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 236,
"end": 587,
"name": "PUSH",
"source": 0,
"value": "B"
},
{
"begin": 236,
"end": 587,
"name": "DUP3",
"source": 0
},
{
"begin": 236,
"end": 587,
"name": "DUP3",
"source": 0
},
{
"begin": 236,
"end": 587,
"name": "DUP3",
"source": 0
},
{
"begin": 236,
"end": 587,
"name": "CODECOPY",
"source": 0
},
{
"begin": 236,
"end": 587,
"name": "DUP1",
"source": 0
},
{
"begin": 236,
"end": 587,
"name": "MLOAD",
"source": 0
},
{
"begin": 236,
"end": 587,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 236,
"end": 587,
"name": "BYTE",
"source": 0
},
{
"begin": 236,
"end": 587,
"name": "PUSH",
"source": 0,
"value": "73"
},
{
"begin": 236,
"end": 587,
"name": "EQ",
"source": 0
},
{
"begin": 236,
"end": 587,
"name": "PUSH [tag]",
"source": 0,
"value": "1"
},
{
"begin": 236,
"end": 587,
"name": "JUMPI",
"source": 0
},
{
"begin": -1,
"end": -1,
"name": "PUSH",
"source": -1,
"value": "4E487B71"
},
{
"begin": -1,
"end": -1,
"name": "PUSH",
"source": -1,
"value": "E0"
},
{
"begin": -1,
"end": -1,
"name": "SHL",
"source": -1
},
{
"begin": 236,
"end": 587,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 236,
"end": 587,
"name": "MSTORE",
"source": 0
},
{
"begin": 236,
"end": 587,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 236,
"end": 587,
"name": "PUSH",
"source": 0,
"value": "4"
},
{
"begin": 236,
"end": 587,
"name": "MSTORE",
"source": 0
},
{
"begin": 236,
"end": 587,
"name": "PUSH",
"source": 0,
"value": "24"
},
{
"begin": 236,
"end": 587,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 236,
"end": 587,
"name": "REVERT",
"source": 0
},
{
"begin": 236,
"end": 587,
"name": "tag",
"source": 0,
"value": "1"
},
{
"begin": 236,
"end": 587,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 236,
"end": 587,
"name": "ADDRESS",
"source": 0
},
{
"begin": 236,
"end": 587,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 236,
"end": 587,
"name": "MSTORE",
"source": 0
},
{
"begin": 236,
"end": 587,
"name": "PUSH",
"source": 0,
"value": "73"
},
{
"begin": 236,
"end": 587,
"name": "DUP2",
"source": 0
},
{
"begin": 236,
"end": 587,
"name": "MSTORE8",
"source": 0
},
{
"begin": 236,
"end": 587,
"name": "DUP3",
"source": 0
},
{
"begin": 236,
"end": 587,
"name": "DUP2",
"source": 0
},
{
"begin": 236,
"end": 587,
"name": "RETURN",
"source": 0
}
],
".data": {
"0": {
".auxdata": "a26469706673582212201c61d9f40bb64900d422b82af3be779a06805da5733766dd5a79300be839990864736f6c634300080d0033",
".code": [
{
"begin": 236,
"end": 587,
"name": "PUSHDEPLOYADDRESS",
"source": 0
},
{
"begin": 236,
"end": 587,
"name": "ADDRESS",
"source": 0
},
{
"begin": 236,
"end": 587,
"name": "EQ",
"source": 0
},
{
"begin": 236,
"end": 587,
"name": "PUSH",
"source": 0,
"value": "80"
},
{
"begin": 236,
"end": 587,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 236,
"end": 587,
"name": "MSTORE",
"source": 0
},
{
"begin": 236,
"end": 587,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 236,
"end": 587,
"name": "DUP1",
"source": 0
},
{
"begin": 236,
"end": 587,
"name": "REVERT",
"source": 0
}
]
}
}
},
"methodIdentifiers": {}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Libraries.sol\":\"Math\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Libraries.sol\":{\"keccak256\":\"0xe036441826cbb5aac07e00ca723f473b45569471f0a2dab0bd9f8b34972d7ca0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec65fd6a338c967ce54b45c2def9dac37f4018c3bff9d8eff755d528251a5f54\",\"dweb:/ipfs/QmPbP2jUCPzkc8MH6rKNJoaEZ96RrJSC1txfKKAPjvcQ3X\"]}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"SafeMath": {
"abi": [],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"evm": {
"assembly": " /* \"contracts/Libraries.sol\":59:234 library SafeMath {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, shl(0xe0, 0x4e487b71))\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"contracts/Libraries.sol\":59:234 library SafeMath {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa26469706673582212202c5e7bf5a73a4e1a74212cfe0cf70e0335ce39478f6e195c02622578a561f18364736f6c634300080d0033\n}\n",
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c5e7bf5a73a4e1a74212cfe0cf70e0335ce39478f6e195c02622578a561f18364736f6c634300080d0033",
"opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2C 0x5E PUSH28 0xF5A73A4E1A74212CFE0CF70E0335CE39478F6E195C02622578A561F1 DUP4 PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ",
"sourceMap": "59:175:0:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;59:175:0;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c5e7bf5a73a4e1a74212cfe0cf70e0335ce39478f6e195c02622578a561f18364736f6c634300080d0033",
"opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2C 0x5E PUSH28 0xF5A73A4E1A74212CFE0CF70E0335CE39478F6E195C02622578A561F1 DUP4 PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ",
"sourceMap": "59:175:0:-:0;;;;;;;;"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "17200",
"executionCost": "103",
"totalCost": "17303"
},
"internal": {
"add(uint256,uint256)": "infinite"
}
},
"legacyAssembly": {
".code": [
{
"begin": 59,
"end": 234,
"name": "PUSH #[$]",
"source": 0,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 59,
"end": 234,
"name": "PUSH [$]",
"source": 0,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 59,
"end": 234,
"name": "PUSH",
"source": 0,
"value": "B"
},
{
"begin": 59,
"end": 234,
"name": "DUP3",
"source": 0
},
{
"begin": 59,
"end": 234,
"name": "DUP3",
"source": 0
},
{
"begin": 59,
"end": 234,
"name": "DUP3",
"source": 0
},
{
"begin": 59,
"end": 234,
"name": "CODECOPY",
"source": 0
},
{
"begin": 59,
"end": 234,
"name": "DUP1",
"source": 0
},
{
"begin": 59,
"end": 234,
"name": "MLOAD",
"source": 0
},
{
"begin": 59,
"end": 234,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 59,
"end": 234,
"name": "BYTE",
"source": 0
},
{
"begin": 59,
"end": 234,
"name": "PUSH",
"source": 0,
"value": "73"
},
{
"begin": 59,
"end": 234,
"name": "EQ",
"source": 0
},
{
"begin": 59,
"end": 234,
"name": "PUSH [tag]",
"source": 0,
"value": "1"
},
{
"begin": 59,
"end": 234,
"name": "JUMPI",
"source": 0
},
{
"begin": -1,
"end": -1,
"name": "PUSH",
"source": -1,
"value": "4E487B71"
},
{
"begin": -1,
"end": -1,
"name": "PUSH",
"source": -1,
"value": "E0"
},
{
"begin": -1,
"end": -1,
"name": "SHL",
"source": -1
},
{
"begin": 59,
"end": 234,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 59,
"end": 234,
"name": "MSTORE",
"source": 0
},
{
"begin": 59,
"end": 234,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 59,
"end": 234,
"name": "PUSH",
"source": 0,
"value": "4"
},
{
"begin": 59,
"end": 234,
"name": "MSTORE",
"source": 0
},
{
"begin": 59,
"end": 234,
"name": "PUSH",
"source": 0,
"value": "24"
},
{
"begin": 59,
"end": 234,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 59,
"end": 234,
"name": "REVERT",
"source": 0
},
{
"begin": 59,
"end": 234,
"name": "tag",
"source": 0,
"value": "1"
},
{
"begin": 59,
"end": 234,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 59,
"end": 234,
"name": "ADDRESS",
"source": 0
},
{
"begin": 59,
"end": 234,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 59,
"end": 234,
"name": "MSTORE",
"source": 0
},
{
"begin": 59,
"end": 234,
"name": "PUSH",
"source": 0,
"value": "73"
},
{
"begin": 59,
"end": 234,
"name": "DUP2",
"source": 0
},
{
"begin": 59,
"end": 234,
"name": "MSTORE8",
"source": 0
},
{
"begin": 59,
"end": 234,
"name": "DUP3",
"source": 0
},
{
"begin": 59,
"end": 234,
"name": "DUP2",
"source": 0
},
{
"begin": 59,
"end": 234,
"name": "RETURN",
"source": 0
}
],
".data": {
"0": {
".auxdata": "a26469706673582212202c5e7bf5a73a4e1a74212cfe0cf70e0335ce39478f6e195c02622578a561f18364736f6c634300080d0033",
".code": [
{
"begin": 59,
"end": 234,
"name": "PUSHDEPLOYADDRESS",
"source": 0
},
{
"begin": 59,
"end": 234,
"name": "ADDRESS",
"source": 0
},
{
"begin": 59,
"end": 234,
"name": "EQ",
"source": 0
},
{
"begin": 59,
"end": 234,
"name": "PUSH",
"source": 0,
"value": "80"
},
{
"begin": 59,
"end": 234,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 59,
"end": 234,
"name": "MSTORE",
"source": 0
},
{
"begin": 59,
"end": 234,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 59,
"end": 234,
"name": "DUP1",
"source": 0
},
{
"begin": 59,
"end": 234,
"name": "REVERT",
"source": 0
}
]
}
}
},
"methodIdentifiers": {}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Libraries.sol\":\"SafeMath\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Libraries.sol\":{\"keccak256\":\"0xe036441826cbb5aac07e00ca723f473b45569471f0a2dab0bd9f8b34972d7ca0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec65fd6a338c967ce54b45c2def9dac37f4018c3bff9d8eff755d528251a5f54\",\"dweb:/ipfs/QmPbP2jUCPzkc8MH6rKNJoaEZ96RrJSC1txfKKAPjvcQ3X\"]}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"TestSafeMath": {
"abi": [
{
"inputs": [],
"name": "MAX_UINT",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "x",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "y",
"type": "uint256"
}
],
"name": "testAdd",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "x",
"type": "uint256"
}
],
"name": "testSquareRoot",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "pure",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"evm": {
"assembly": " /* \"contracts/Libraries.sol\":589:882 contract TestSafeMath {... */\n mstore(0x40, 0x80)\n not(0x00)\n /* \"contracts/Libraries.sol\":647:680 uint public MAX_UINT = 2**256 - 1 */\n 0x00\n sstore\n /* \"contracts/Libraries.sol\":589:882 contract TestSafeMath {... */\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\ntag_1:\n pop\n dataSize(sub_0)\n dup1\n dataOffset(sub_0)\n 0x00\n codecopy\n 0x00\n return\nstop\n\nsub_0: assembly {\n /* \"contracts/Libraries.sol\":589:882 contract TestSafeMath {... */\n mstore(0x40, 0x80)\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\n tag_1:\n pop\n jumpi(tag_2, lt(calldatasize, 0x04))\n shr(0xe0, calldataload(0x00))\n dup1\n 0x6039b0bd\n eq\n tag_3\n jumpi\n dup1\n 0x7c3ffef2\n eq\n tag_4\n jumpi\n dup1\n 0xe5b5019a\n eq\n tag_5\n jumpi\n tag_2:\n 0x00\n dup1\n revert\n /* \"contracts/Libraries.sol\":785:880 function testSquareRoot(uint x) public pure returns (uint) {... */\n tag_3:\n tag_6\n tag_7\n calldatasize\n 0x04\n tag_8\n jump\t// in\n tag_7:\n tag_9\n jump\t// in\n tag_6:\n mload(0x40)\n /* \"#utility.yul\":345:370 */\n swap1\n dup2\n mstore\n /* \"#utility.yul\":333:335 */\n 0x20\n /* \"#utility.yul\":318:336 */\n add\n /* \"contracts/Libraries.sol\":785:880 function testSquareRoot(uint x) public pure returns (uint) {... */\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"contracts/Libraries.sol\":687:779 function testAdd(uint x, uint y) public pure returns (uint) {... */\n tag_4:\n tag_6\n tag_13\n calldatasize\n 0x04\n tag_14\n jump\t// in\n tag_13:\n tag_15\n jump\t// in\n /* \"contracts/Libraries.sol\":647:680 uint public MAX_UINT = 2**256 - 1 */\n tag_5:\n tag_6\n sload(0x00)\n dup2\n jump\n /* \"contracts/Libraries.sol\":785:880 function testSquareRoot(uint x) public pure returns (uint) {... */\n tag_9:\n /* \"contracts/Libraries.sol\":838:842 uint */\n 0x00\n /* \"contracts/Libraries.sol\":861:873 Math.sqrt(x) */\n tag_21\n /* \"contracts/Libraries.sol\":871:872 x */\n dup3\n /* \"contracts/Libraries.sol\":861:870 Math.sqrt */\n tag_22\n /* \"contracts/Libraries.sol\":861:873 Math.sqrt(x) */\n jump\t// in\n tag_21:\n /* \"contracts/Libraries.sol\":854:873 return Math.sqrt(x) */\n swap3\n /* \"contracts/Libraries.sol\":785:880 function testSquareRoot(uint x) public pure returns (uint) {... */\n swap2\n pop\n pop\n jump\t// out\n /* \"contracts/Libraries.sol\":687:779 function testAdd(uint x, uint y) public pure returns (uint) {... */\n tag_15:\n /* \"contracts/Libraries.sol\":741:745 uint */\n 0x00\n /* \"contracts/Libraries.sol\":764:772 x.add(y) */\n tag_24\n /* \"contracts/Libraries.sol\":764:765 x */\n dup4\n /* \"contracts/Libraries.sol\":770:771 y */\n dup4\n /* \"contracts/Libraries.sol\":764:769 x.add */\n tag_25\n /* \"contracts/Libraries.sol\":764:772 x.add(y) */\n jump\t// in\n tag_24:\n /* \"contracts/Libraries.sol\":757:772 return x.add(y) */\n swap4\n /* \"contracts/Libraries.sol\":687:779 function testAdd(uint x, uint y) public pure returns (uint) {... */\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"contracts/Libraries.sol\":255:585 function sqrt(uint y) internal pure returns (uint z) {... */\n tag_22:\n /* \"contracts/Libraries.sol\":300:306 uint z */\n 0x00\n /* \"contracts/Libraries.sol\":326:327 3 */\n 0x03\n /* \"contracts/Libraries.sol\":322:323 y */\n dup3\n /* \"contracts/Libraries.sol\":322:327 y > 3 */\n gt\n /* \"contracts/Libraries.sol\":318:541 if (y > 3) {... */\n iszero\n tag_27\n jumpi\n pop\n /* \"contracts/Libraries.sol\":347:348 y */\n dup1\n /* \"contracts/Libraries.sol\":362:368 uint x */\n 0x00\n /* \"contracts/Libraries.sol\":371:376 y / 2 */\n tag_28\n /* \"contracts/Libraries.sol\":375:376 2 */\n 0x02\n /* \"contracts/Libraries.sol\":347:348 y */\n dup4\n /* \"contracts/Libraries.sol\":371:376 y / 2 */\n tag_29\n jump\t// in\n tag_28:\n /* \"contracts/Libraries.sol\":371:380 y / 2 + 1 */\n tag_30\n swap1\n /* \"contracts/Libraries.sol\":379:380 1 */\n 0x01\n /* \"contracts/Libraries.sol\":371:380 y / 2 + 1 */\n tag_31\n jump\t// in\n tag_30:\n /* \"contracts/Libraries.sol\":362:380 uint x = y / 2 + 1 */\n swap1\n pop\n /* \"contracts/Libraries.sol\":394:483 while (x < z) {... */\n tag_32:\n /* \"contracts/Libraries.sol\":405:406 z */\n dup2\n /* \"contracts/Libraries.sol\":401:402 x */\n dup2\n /* \"contracts/Libraries.sol\":401:406 x < z */\n lt\n /* \"contracts/Libraries.sol\":394:483 while (x < z) {... */\n iszero\n tag_33\n jumpi\n /* \"contracts/Libraries.sol\":430:431 x */\n swap1\n pop\n dup1\n /* \"contracts/Libraries.sol\":467:468 2 */\n 0x02\n /* \"contracts/Libraries.sol\":430:431 x */\n dup2\n /* \"contracts/Libraries.sol\":454:459 y / x */\n tag_34\n /* \"contracts/Libraries.sol\":430:431 x */\n dup2\n /* \"contracts/Libraries.sol\":454:455 y */\n dup7\n /* \"contracts/Libraries.sol\":454:459 y / x */\n tag_29\n jump\t// in\n tag_34:\n /* \"contracts/Libraries.sol\":454:463 y / x + x */\n tag_35\n swap2\n swap1\n tag_31\n jump\t// in\n tag_35:\n /* \"contracts/Libraries.sol\":453:468 (y / x + x) / 2 */\n tag_36\n swap2\n swap1\n tag_29\n jump\t// in\n tag_36:\n /* \"contracts/Libraries.sol\":449:468 x = (y / x + x) / 2 */\n swap1\n pop\n /* \"contracts/Libraries.sol\":394:483 while (x < z) {... */\n jump(tag_32)\n tag_33:\n /* \"contracts/Libraries.sol\":329:493 {... */\n pop\n /* \"contracts/Libraries.sol\":255:585 function sqrt(uint y) internal pure returns (uint z) {... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"contracts/Libraries.sol\":318:541 if (y > 3) {... */\n tag_27:\n /* \"contracts/Libraries.sol\":503:509 y != 0 */\n dup2\n iszero\n /* \"contracts/Libraries.sol\":499:541 if (y != 0) {... */\n tag_38\n jumpi\n pop\n /* \"contracts/Libraries.sol\":529:530 1 */\n 0x01\n /* \"contracts/Libraries.sol\":499:541 if (y != 0) {... */\n tag_38:\n /* \"contracts/Libraries.sol\":255:585 function sqrt(uint y) internal pure returns (uint z) {... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"contracts/Libraries.sol\":82:232 function add(uint x, uint y) internal pure returns (uint) {... */\n tag_25:\n /* \"contracts/Libraries.sol\":134:138 uint */\n 0x00\n dup1\n /* \"contracts/Libraries.sol\":159:164 x + y */\n tag_40\n /* \"contracts/Libraries.sol\":163:164 y */\n dup4\n /* \"contracts/Libraries.sol\":159:160 x */\n dup6\n /* \"contracts/Libraries.sol\":159:164 x + y */\n tag_31\n jump\t// in\n tag_40:\n /* \"contracts/Libraries.sol\":150:164 uint z = x + y */\n swap1\n pop\n /* \"contracts/Libraries.sol\":187:188 x */\n dup4\n /* \"contracts/Libraries.sol\":182:183 z */\n dup2\n /* \"contracts/Libraries.sol\":182:188 z >= x */\n lt\n iszero\n /* \"contracts/Libraries.sol\":174:206 require(z >= x, \"uint overflow\") */\n tag_24\n jumpi\n mload(0x40)\n shl(0xe5, 0x461bcd)\n dup2\n mstore\n /* \"#utility.yul\":1288:1290 */\n 0x20\n /* \"contracts/Libraries.sol\":174:206 require(z >= x, \"uint overflow\") */\n 0x04\n dup3\n add\n /* \"#utility.yul\":1270:1291 */\n mstore\n /* \"#utility.yul\":1327:1329 */\n 0x0d\n /* \"#utility.yul\":1307:1325 */\n 0x24\n dup3\n add\n /* \"#utility.yul\":1300:1330 */\n mstore\n shl(0x98, 0x75696e74206f766572666c6f77)\n /* \"#utility.yul\":1346:1364 */\n 0x44\n dup3\n add\n /* \"#utility.yul\":1339:1382 */\n mstore\n /* \"#utility.yul\":1399:1417 */\n 0x64\n add\n /* \"contracts/Libraries.sol\":174:206 require(z >= x, \"uint overflow\") */\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"#utility.yul\":14:194 */\n tag_8:\n /* \"#utility.yul\":73:79 */\n 0x00\n /* \"#utility.yul\":126:128 */\n 0x20\n /* \"#utility.yul\":114:123 */\n dup3\n /* \"#utility.yul\":105:112 */\n dup5\n /* \"#utility.yul\":101:124 */\n sub\n /* \"#utility.yul\":97:129 */\n slt\n /* \"#utility.yul\":94:146 */\n iszero\n tag_46\n jumpi\n /* \"#utility.yul\":142:143 */\n 0x00\n /* \"#utility.yul\":139:140 */\n dup1\n /* \"#utility.yul\":132:144 */\n revert\n /* \"#utility.yul\":94:146 */\n tag_46:\n pop\n /* \"#utility.yul\":165:188 */\n calldataload\n swap2\n /* \"#utility.yul\":14:194 */\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":381:629 */\n tag_14:\n /* \"#utility.yul\":449:455 */\n 0x00\n /* \"#utility.yul\":457:463 */\n dup1\n /* \"#utility.yul\":510:512 */\n 0x40\n /* \"#utility.yul\":498:507 */\n dup4\n /* \"#utility.yul\":489:496 */\n dup6\n /* \"#utility.yul\":485:508 */\n sub\n /* \"#utility.yul\":481:513 */\n slt\n /* \"#utility.yul\":478:530 */\n iszero\n tag_49\n jumpi\n /* \"#utility.yul\":526:527 */\n 0x00\n /* \"#utility.yul\":523:524 */\n dup1\n /* \"#utility.yul\":516:528 */\n revert\n /* \"#utility.yul\":478:530 */\n tag_49:\n pop\n pop\n /* \"#utility.yul\":549:572 */\n dup1\n calldataload\n swap3\n /* \"#utility.yul\":619:621 */\n 0x20\n /* \"#utility.yul\":604:622 */\n swap1\n swap2\n add\n /* \"#utility.yul\":591:623 */\n calldataload\n swap2\n pop\n /* \"#utility.yul\":381:629 */\n jump\t// out\n /* \"#utility.yul\":634:851 */\n tag_29:\n /* \"#utility.yul\":674:675 */\n 0x00\n /* \"#utility.yul\":700:701 */\n dup3\n /* \"#utility.yul\":690:822 */\n tag_51\n jumpi\n /* \"#utility.yul\":744:754 */\n 0x4e487b71\n /* \"#utility.yul\":739:742 */\n 0xe0\n /* \"#utility.yul\":735:755 */\n shl\n /* \"#utility.yul\":732:733 */\n 0x00\n /* \"#utility.yul\":725:756 */\n mstore\n /* \"#utility.yul\":779:783 */\n 0x12\n /* \"#utility.yul\":776:777 */\n 0x04\n /* \"#utility.yul\":769:784 */\n mstore\n /* \"#utility.yul\":807:811 */\n 0x24\n /* \"#utility.yul\":804:805 */\n 0x00\n /* \"#utility.yul\":797:812 */\n revert\n /* \"#utility.yul\":690:822 */\n tag_51:\n pop\n /* \"#utility.yul\":836:845 */\n div\n swap1\n /* \"#utility.yul\":634:851 */\n jump\t// out\n /* \"#utility.yul\":856:1081 */\n tag_31:\n /* \"#utility.yul\":896:899 */\n 0x00\n /* \"#utility.yul\":927:928 */\n dup3\n /* \"#utility.yul\":923:929 */\n not\n /* \"#utility.yul\":920:921 */\n dup3\n /* \"#utility.yul\":917:930 */\n gt\n /* \"#utility.yul\":914:1050 */\n iszero\n tag_53\n jumpi\n /* \"#utility.yul\":972:982 */\n 0x4e487b71\n /* \"#utility.yul\":967:970 */\n 0xe0\n /* \"#utility.yul\":963:983 */\n shl\n /* \"#utility.yul\":960:961 */\n 0x00\n /* \"#utility.yul\":953:984 */\n mstore\n /* \"#utility.yul\":1007:1011 */\n 0x11\n /* \"#utility.yul\":1004:1005 */\n 0x04\n /* \"#utility.yul\":997:1012 */\n mstore\n /* \"#utility.yul\":1035:1039 */\n 0x24\n /* \"#utility.yul\":1032:1033 */\n 0x00\n /* \"#utility.yul\":1025:1040 */\n revert\n /* \"#utility.yul\":914:1050 */\n tag_53:\n pop\n /* \"#utility.yul\":1066:1075 */\n add\n swap1\n /* \"#utility.yul\":856:1081 */\n jump\t// out\n\n auxdata: 0xa264697066735822122033b1cc5b868aa796fc3fa9fe073a51e8ae8805e1489a8d5ee9a5fc088652113064736f6c634300080d0033\n}\n",
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "608060405260001960005534801561001657600080fd5b50610227806100266000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80636039b0bd146100465780637c3ffef21461006b578063e5b5019a1461007e575b600080fd5b61005961005436600461016e565b610087565b60405190815260200160405180910390f35b610059610079366004610187565b610098565b61005960005481565b6000610092826100ab565b92915050565b60006100a4838361011b565b9392505050565b6000600382111561010c57508060006100c56002836101a9565b6100d09060016101cb565b90505b81811015610106579050806002816100eb81866101a9565b6100f591906101cb565b6100ff91906101a9565b90506100d3565b50919050565b8115610116575060015b919050565b60008061012883856101cb565b9050838110156100a45760405162461bcd60e51b815260206004820152600d60248201526c75696e74206f766572666c6f7760981b604482015260640160405180910390fd5b60006020828403121561018057600080fd5b5035919050565b6000806040838503121561019a57600080fd5b50508035926020909101359150565b6000826101c657634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156101ec57634e487b7160e01b600052601160045260246000fd5b50019056fea264697066735822122033b1cc5b868aa796fc3fa9fe073a51e8ae8805e1489a8d5ee9a5fc088652113064736f6c634300080d0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 NOT PUSH1 0x0 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 DUP1 PUSH2 0x26 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 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6039B0BD EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x7C3FFEF2 EQ PUSH2 0x6B JUMPI DUP1 PUSH4 0xE5B5019A EQ PUSH2 0x7E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0x54 CALLDATASIZE PUSH1 0x4 PUSH2 0x16E JUMP JUMPDEST PUSH2 0x87 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x59 PUSH2 0x79 CALLDATASIZE PUSH1 0x4 PUSH2 0x187 JUMP JUMPDEST PUSH2 0x98 JUMP JUMPDEST PUSH2 0x59 PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x92 DUP3 PUSH2 0xAB JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA4 DUP4 DUP4 PUSH2 0x11B JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 DUP3 GT ISZERO PUSH2 0x10C JUMPI POP DUP1 PUSH1 0x0 PUSH2 0xC5 PUSH1 0x2 DUP4 PUSH2 0x1A9 JUMP JUMPDEST PUSH2 0xD0 SWAP1 PUSH1 0x1 PUSH2 0x1CB JUMP JUMPDEST SWAP1 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x106 JUMPI SWAP1 POP DUP1 PUSH1 0x2 DUP2 PUSH2 0xEB DUP2 DUP7 PUSH2 0x1A9 JUMP JUMPDEST PUSH2 0xF5 SWAP2 SWAP1 PUSH2 0x1CB JUMP JUMPDEST PUSH2 0xFF SWAP2 SWAP1 PUSH2 0x1A9 JUMP JUMPDEST SWAP1 POP PUSH2 0xD3 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 ISZERO PUSH2 0x116 JUMPI POP PUSH1 0x1 JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x128 DUP4 DUP6 PUSH2 0x1CB JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0xA4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x75696E74206F766572666C6F77 PUSH1 0x98 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x180 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x19A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1C6 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x1EC JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLER 0xB1 0xCC JUMPDEST DUP7 DUP11 0xA7 SWAP7 0xFC EXTCODEHASH 0xA9 INVALID SMOD GASPRICE MLOAD 0xE8 0xAE DUP9 SDIV 0xE1 BASEFEE SWAP11 DUP14 0x5E 0xE9 0xA5 0xFC ADDMOD DUP7 MSTORE GT ADDRESS PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ",
"sourceMap": "589:293:0:-:0;;;-1:-1:-1;;647:33:0;;589:293;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@MAX_UINT_92": {
"entryPoint": null,
"id": 92,
"parameterSlots": 0,
"returnSlots": 0
},
"@add_26": {
"entryPoint": 283,
"id": 26,
"parameterSlots": 2,
"returnSlots": 1
},
"@sqrt_81": {
"entryPoint": 171,
"id": 81,
"parameterSlots": 1,
"returnSlots": 1
},
"@testAdd_107": {
"entryPoint": 152,
"id": 107,
"parameterSlots": 2,
"returnSlots": 1
},
"@testSquareRoot_120": {
"entryPoint": 135,
"id": 120,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_decode_tuple_t_uint256": {
"entryPoint": 366,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_uint256t_uint256": {
"entryPoint": 391,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_encode_tuple_t_stringliteral_d7619cf226aa1083efd1d1aceaadcc6f0915c69c3fbd27ef531e87c5ccbd257f__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_add_t_uint256": {
"entryPoint": 459,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_div_t_uint256": {
"entryPoint": 425,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:1425:1",
"statements": [
{
"nodeType": "YulBlock",
"src": "6:3:1",
"statements": []
},
{
"body": {
"nodeType": "YulBlock",
"src": "84:110:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "130:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "139:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "142:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "132:6:1"
},
"nodeType": "YulFunctionCall",
"src": "132:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "132:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "105:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "114:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "101:3:1"
},
"nodeType": "YulFunctionCall",
"src": "101:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "126:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "97:3:1"
},
"nodeType": "YulFunctionCall",
"src": "97:32:1"
},
"nodeType": "YulIf",
"src": "94:52:1"
},
{
"nodeType": "YulAssignment",
"src": "155:33:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "178:9:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "165:12:1"
},
"nodeType": "YulFunctionCall",
"src": "165:23:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "155:6:1"
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "50:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "61:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "73:6:1",
"type": ""
}
],
"src": "14:180:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "300:76:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "310:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "322:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "333:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "318:3:1"
},
"nodeType": "YulFunctionCall",
"src": "318:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "310:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "352:9:1"
},
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "363:6:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "345:6:1"
},
"nodeType": "YulFunctionCall",
"src": "345:25:1"
},
"nodeType": "YulExpressionStatement",
"src": "345:25:1"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "269:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "280:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "291:4:1",
"type": ""
}
],
"src": "199:177:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "468:161:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "514:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "523:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "526:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "516:6:1"
},
"nodeType": "YulFunctionCall",
"src": "516:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "516:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "489:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "498:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "485:3:1"
},
"nodeType": "YulFunctionCall",
"src": "485:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "510:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "481:3:1"
},
"nodeType": "YulFunctionCall",
"src": "481:32:1"
},
"nodeType": "YulIf",
"src": "478:52:1"
},
{
"nodeType": "YulAssignment",
"src": "539:33:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "562:9:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "549:12:1"
},
"nodeType": "YulFunctionCall",
"src": "549:23:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "539:6:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "581:42:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "608:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "619:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "604:3:1"
},
"nodeType": "YulFunctionCall",
"src": "604:18:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "591:12:1"
},
"nodeType": "YulFunctionCall",
"src": "591:32:1"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "581:6:1"
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "426:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "437:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "449:6:1",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "457:6:1",
"type": ""
}
],
"src": "381:248:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "680:171:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "711:111:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "732:1:1",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "739:3:1",
"type": "",
"value": "224"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "744:10:1",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "735:3:1"
},
"nodeType": "YulFunctionCall",
"src": "735:20:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "725:6:1"
},
"nodeType": "YulFunctionCall",
"src": "725:31:1"
},
"nodeType": "YulExpressionStatement",
"src": "725:31:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "776:1:1",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "779:4:1",
"type": "",
"value": "0x12"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "769:6:1"
},
"nodeType": "YulFunctionCall",
"src": "769:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "769:15:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "804:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "807:4:1",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "797:6:1"
},
"nodeType": "YulFunctionCall",
"src": "797:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "797:15:1"
}
]
},
"condition": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "700:1:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "693:6:1"
},
"nodeType": "YulFunctionCall",
"src": "693:9:1"
},
"nodeType": "YulIf",
"src": "690:132:1"
},
{
"nodeType": "YulAssignment",
"src": "831:14:1",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "840:1:1"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "843:1:1"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "836:3:1"
},
"nodeType": "YulFunctionCall",
"src": "836:9:1"
},
"variableNames": [
{
"name": "r",
"nodeType": "YulIdentifier",
"src": "831:1:1"
}
]
}
]
},
"name": "checked_div_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "665:1:1",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "668:1:1",
"type": ""
}
],
"returnVariables": [
{
"name": "r",
"nodeType": "YulTypedName",
"src": "674:1:1",
"type": ""
}
],
"src": "634:217:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "904:177:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "939:111:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "960:1:1",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "967:3:1",
"type": "",
"value": "224"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "972:10:1",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "963:3:1"
},
"nodeType": "YulFunctionCall",
"src": "963:20:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "953:6:1"
},
"nodeType": "YulFunctionCall",
"src": "953:31:1"
},
"nodeType": "YulExpressionStatement",
"src": "953:31:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1004:1:1",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1007:4:1",
"type": "",
"value": "0x11"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "997:6:1"
},
"nodeType": "YulFunctionCall",
"src": "997:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "997:15:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1032:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1035:4:1",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1025:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1025:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "1025:15:1"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "920:1:1"
},
{
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "927:1:1"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "923:3:1"
},
"nodeType": "YulFunctionCall",
"src": "923:6:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "917:2:1"
},
"nodeType": "YulFunctionCall",
"src": "917:13:1"
},
"nodeType": "YulIf",
"src": "914:136:1"
},
{
"nodeType": "YulAssignment",
"src": "1059:16:1",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "1070:1:1"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "1073:1:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1066:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1066:9:1"
},
"variableNames": [
{
"name": "sum",
"nodeType": "YulIdentifier",
"src": "1059:3:1"
}
]
}
]
},
"name": "checked_add_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "887:1:1",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "890:1:1",
"type": ""
}
],
"returnVariables": [
{
"name": "sum",
"nodeType": "YulTypedName",
"src": "896:3:1",
"type": ""
}
],
"src": "856:225:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1260:163:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1277:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1288:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1270:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1270:21:1"
},
"nodeType": "YulExpressionStatement",
"src": "1270:21:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1311:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1322:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1307:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1307:18:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1327:2:1",
"type": "",
"value": "13"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1300:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1300:30:1"
},
"nodeType": "YulExpressionStatement",
"src": "1300:30:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1350:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1361:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1346:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1346:18:1"
},
{
"hexValue": "75696e74206f766572666c6f77",
"kind": "string",
"nodeType": "YulLiteral",
"src": "1366:15:1",
"type": "",
"value": "uint overflow"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1339:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1339:43:1"
},
"nodeType": "YulExpressionStatement",
"src": "1339:43:1"
},
{
"nodeType": "YulAssignment",
"src": "1391:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1403:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1414:2:1",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1399:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1399:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1391:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_d7619cf226aa1083efd1d1aceaadcc6f0915c69c3fbd27ef531e87c5ccbd257f__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1237:9:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1251:4:1",
"type": ""
}
],
"src": "1086:337:1"
}
]
},
"contents": "{\n { }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_uint256t_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function checked_div_t_uint256(x, y) -> r\n {\n if iszero(y)\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n r := div(x, y)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n if gt(x, not(y))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n sum := add(x, y)\n }\n function abi_encode_tuple_t_stringliteral_d7619cf226aa1083efd1d1aceaadcc6f0915c69c3fbd27ef531e87c5ccbd257f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 13)\n mstore(add(headStart, 64), \"uint overflow\")\n tail := add(headStart, 96)\n }\n}",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50600436106100415760003560e01c80636039b0bd146100465780637c3ffef21461006b578063e5b5019a1461007e575b600080fd5b61005961005436600461016e565b610087565b60405190815260200160405180910390f35b610059610079366004610187565b610098565b61005960005481565b6000610092826100ab565b92915050565b60006100a4838361011b565b9392505050565b6000600382111561010c57508060006100c56002836101a9565b6100d09060016101cb565b90505b81811015610106579050806002816100eb81866101a9565b6100f591906101cb565b6100ff91906101a9565b90506100d3565b50919050565b8115610116575060015b919050565b60008061012883856101cb565b9050838110156100a45760405162461bcd60e51b815260206004820152600d60248201526c75696e74206f766572666c6f7760981b604482015260640160405180910390fd5b60006020828403121561018057600080fd5b5035919050565b6000806040838503121561019a57600080fd5b50508035926020909101359150565b6000826101c657634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156101ec57634e487b7160e01b600052601160045260246000fd5b50019056fea264697066735822122033b1cc5b868aa796fc3fa9fe073a51e8ae8805e1489a8d5ee9a5fc088652113064736f6c634300080d0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6039B0BD EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x7C3FFEF2 EQ PUSH2 0x6B JUMPI DUP1 PUSH4 0xE5B5019A EQ PUSH2 0x7E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0x54 CALLDATASIZE PUSH1 0x4 PUSH2 0x16E JUMP JUMPDEST PUSH2 0x87 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x59 PUSH2 0x79 CALLDATASIZE PUSH1 0x4 PUSH2 0x187 JUMP JUMPDEST PUSH2 0x98 JUMP JUMPDEST PUSH2 0x59 PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x92 DUP3 PUSH2 0xAB JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA4 DUP4 DUP4 PUSH2 0x11B JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 DUP3 GT ISZERO PUSH2 0x10C JUMPI POP DUP1 PUSH1 0x0 PUSH2 0xC5 PUSH1 0x2 DUP4 PUSH2 0x1A9 JUMP JUMPDEST PUSH2 0xD0 SWAP1 PUSH1 0x1 PUSH2 0x1CB JUMP JUMPDEST SWAP1 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x106 JUMPI SWAP1 POP DUP1 PUSH1 0x2 DUP2 PUSH2 0xEB DUP2 DUP7 PUSH2 0x1A9 JUMP JUMPDEST PUSH2 0xF5 SWAP2 SWAP1 PUSH2 0x1CB JUMP JUMPDEST PUSH2 0xFF SWAP2 SWAP1 PUSH2 0x1A9 JUMP JUMPDEST SWAP1 POP PUSH2 0xD3 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 ISZERO PUSH2 0x116 JUMPI POP PUSH1 0x1 JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x128 DUP4 DUP6 PUSH2 0x1CB JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0xA4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x75696E74206F766572666C6F77 PUSH1 0x98 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x180 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x19A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1C6 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x1EC JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLER 0xB1 0xCC JUMPDEST DUP7 DUP11 0xA7 SWAP7 0xFC EXTCODEHASH 0xA9 INVALID SMOD GASPRICE MLOAD 0xE8 0xAE DUP9 SDIV 0xE1 BASEFEE SWAP11 DUP14 0x5E 0xE9 0xA5 0xFC ADDMOD DUP7 MSTORE GT ADDRESS PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ",
"sourceMap": "589:293:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;785:95;;;;;;:::i;:::-;;:::i;:::-;;;345:25:1;;;333:2;318:18;785:95:0;;;;;;;687:92;;;;;;:::i;:::-;;:::i;647:33::-;;;;;;785:95;838:4;861:12;871:1;861:9;:12::i;:::-;854:19;785:95;-1:-1:-1;;785:95:0:o;687:92::-;741:4;764:8;:1;770;764:5;:8::i;:::-;757:15;687:92;-1:-1:-1;;;687:92:0:o;255:330::-;300:6;326:1;322;:5;318:223;;;-1:-1:-1;347:1:0;362:6;371:5;375:1;347;371:5;:::i;:::-;:9;;379:1;371:9;:::i;:::-;362:18;;394:89;405:1;401;:5;394:89;;;430:1;-1:-1:-1;430:1:0;467;430;454:5;430:1;454;:5;:::i;:::-;:9;;;;:::i;:::-;453:15;;;;:::i;:::-;449:19;;394:89;;;329:164;255:330;;;:::o;318:223::-;503:6;;499:42;;-1:-1:-1;529:1:0;499:42;255:330;;;:::o;82:150::-;134:4;;159:5;163:1;159;:5;:::i;:::-;150:14;;187:1;182;:6;;174:32;;;;-1:-1:-1;;;174:32:0;;1288:2:1;174:32:0;;;1270:21:1;1327:2;1307:18;;;1300:30;-1:-1:-1;;;1346:18:1;;;1339:43;1399:18;;174:32:0;;;;;;;14:180:1;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:1;;14:180;-1:-1:-1;14:180:1:o;381:248::-;449:6;457;510:2;498:9;489:7;485:23;481:32;478:52;;;526:1;523;516:12;478:52;-1:-1:-1;;549:23:1;;;619:2;604:18;;;591:32;;-1:-1:-1;381:248:1:o;634:217::-;674:1;700;690:132;;744:10;739:3;735:20;732:1;725:31;779:4;776:1;769:15;807:4;804:1;797:15;690:132;-1:-1:-1;836:9:1;;634:217::o;856:225::-;896:3;927:1;923:6;920:1;917:13;914:136;;;972:10;967:3;963:20;960:1;953:31;1007:4;1004:1;997:15;1035:4;1032:1;1025:15;914:136;-1:-1:-1;1066:9:1;;856:225::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "110200",
"executionCost": "22268",
"totalCost": "132468"
},
"external": {
"MAX_UINT()": "2305",
"testAdd(uint256,uint256)": "infinite",
"testSquareRoot(uint256)": "infinite"
}
},
"legacyAssembly": {
".code": [
{
"begin": 589,
"end": 882,
"name": "PUSH",
"source": 0,
"value": "80"
},
{
"begin": 589,
"end": 882,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 589,
"end": 882,
"name": "MSTORE",
"source": 0
},
{
"begin": -1,
"end": -1,
"name": "PUSH",
"source": -1,
"value": "0"
},
{
"begin": -1,
"end": -1,
"name": "NOT",
"source": -1
},
{
"begin": 647,
"end": 680,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 647,
"end": 680,
"name": "SSTORE",
"source": 0
},
{
"begin": 589,
"end": 882,
"name": "CALLVALUE",
"source": 0
},
{
"begin": 589,
"end": 882,
"name": "DUP1",
"source": 0
},
{
"begin": 589,
"end": 882,
"name": "ISZERO",
"source": 0
},
{
"begin": 589,
"end": 882,
"name": "PUSH [tag]",
"source": 0,
"value": "1"
},
{
"begin": 589,
"end": 882,
"name": "JUMPI",
"source": 0
},
{
"begin": 589,
"end": 882,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 589,
"end": 882,
"name": "DUP1",
"source": 0
},
{
"begin": 589,
"end": 882,
"name": "REVERT",
"source": 0
},
{
"begin": 589,
"end": 882,
"name": "tag",
"source": 0,
"value": "1"
},
{
"begin": 589,
"end": 882,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 589,
"end": 882,
"name": "POP",
"source": 0
},
{
"begin": 589,
"end": 882,
"name": "PUSH #[$]",
"source": 0,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 589,
"end": 882,
"name": "DUP1",
"source": 0
},
{
"begin": 589,
"end": 882,
"name": "PUSH [$]",
"source": 0,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 589,
"end": 882,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 589,
"end": 882,
"name": "CODECOPY",
"source": 0
},
{
"begin": 589,
"end": 882,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 589,
"end": 882,
"name": "RETURN",
"source": 0
}
],
".data": {
"0": {
".auxdata": "a264697066735822122033b1cc5b868aa796fc3fa9fe073a51e8ae8805e1489a8d5ee9a5fc088652113064736f6c634300080d0033",
".code": [
{
"begin": 589,
"end": 882,
"name": "PUSH",
"source": 0,
"value": "80"
},
{
"begin": 589,
"end": 882,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 589,
"end": 882,
"name": "MSTORE",
"source": 0
},
{
"begin": 589,
"end": 882,
"name": "CALLVALUE",
"source": 0
},
{
"begin": 589,
"end": 882,
"name": "DUP1",
"source": 0
},
{
"begin": 589,
"end": 882,
"name": "ISZERO",
"source": 0
},
{
"begin": 589,
"end": 882,
"name": "PUSH [tag]",
"source": 0,
"value": "1"
},
{
"begin": 589,
"end": 882,
"name": "JUMPI",
"source": 0
},
{
"begin": 589,
"end": 882,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 589,
"end": 882,
"name": "DUP1",
"source": 0
},
{
"begin": 589,
"end": 882,
"name": "REVERT",
"source": 0
},
{
"begin": 589,
"end": 882,
"name": "tag",
"source": 0,
"value": "1"
},
{
"begin": 589,
"end": 882,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 589,
"end": 882,
"name": "POP",
"source": 0
},
{
"begin": 589,
"end": 882,
"name": "PUSH",
"source": 0,
"value": "4"
},
{
"begin": 589,
"end": 882,
"name": "CALLDATASIZE",
"source": 0
},
{
"begin": 589,
"end": 882,
"name": "LT",
"source": 0
},
{
"begin": 589,
"end": 882,
"name": "PUSH [tag]",
"source": 0,
"value": "2"
},
{
"begin": 589,
"end": 882,
"name": "JUMPI",
"source": 0
},
{
"begin": 589,
"end": 882,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 589,
"end": 882,
"name": "CALLDATALOAD",
"source": 0
},
{
"begin": 589,
"end": 882,
"name": "PUSH",
"source": 0,
"value": "E0"
},
{
"begin": 589,
"end": 882,
"name": "SHR",
"source": 0
},
{
"begin": 589,
"end": 882,
"name": "DUP1",
"source": 0
},
{
"begin": 589,
"end": 882,
"name": "PUSH",
"source": 0,
"value": "6039B0BD"
},
{
"begin": 589,
"end": 882,
"name": "EQ",
"source": 0
},
{
"begin": 589,
"end": 882,
"name": "PUSH [tag]",
"source": 0,
"value": "3"
},
{
"begin": 589,
"end": 882,
"name": "JUMPI",
"source": 0
},
{
"begin": 589,
"end": 882,
"name": "DUP1",
"source": 0
},
{
"begin": 589,
"end": 882,
"name": "PUSH",
"source": 0,
"value": "7C3FFEF2"
},
{
"begin": 589,
"end": 882,
"name": "EQ",
"source": 0
},
{
"begin": 589,
"end": 882,
"name": "PUSH [tag]",
"source": 0,
"value": "4"
},
{
"begin": 589,
"end": 882,
"name": "JUMPI",
"source": 0
},
{
"begin": 589,
"end": 882,
"name": "DUP1",
"source": 0
},
{
"begin": 589,
"end": 882,
"name": "PUSH",
"source": 0,
"value": "E5B5019A"
},
{
"begin": 589,
"end": 882,
"name": "EQ",
"source": 0
},
{
"begin": 589,
"end": 882,
"name": "PUSH [tag]",
"source": 0,
"value": "5"
},
{
"begin": 589,
"end": 882,
"name": "JUMPI",
"source": 0
},
{
"begin": 589,
"end": 882,
"name": "tag",
"source": 0,
"value": "2"
},
{
"begin": 589,
"end": 882,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 589,
"end": 882,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 589,
"end": 882,
"name": "DUP1",
"source": 0
},
{
"begin": 589,
"end": 882,
"name": "REVERT",
"source": 0
},
{
"begin": 785,
"end": 880,
"name": "tag",
"source": 0,
"value": "3"
},
{
"begin": 785,
"end": 880,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 785,
"end": 880,
"name": "PUSH [tag]",
"source": 0,
"value": "6"
},
{
"begin": 785,
"end": 880,
"name": "PUSH [tag]",
"source": 0,
"value": "7"
},
{
"begin": 785,
"end": 880,
"name": "CALLDATASIZE",
"source": 0
},
{
"begin": 785,
"end": 880,
"name": "PUSH",
"source": 0,
"value": "4"
},
{
"begin": 785,
"end": 880,
"name": "PUSH [tag]",
"source": 0,
"value": "8"
},
{
"begin": 785,
"end": 880,
"name": "JUMP",
"source": 0,
"value": "[in]"
},
{
"begin": 785,
"end": 880,
"name": "tag",
"source": 0,
"value": "7"
},
{
"begin": 785,
"end": 880,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 785,
"end": 880,
"name": "PUSH [tag]",
"source": 0,
"value": "9"
},
{
"begin": 785,
"end": 880,
"name": "JUMP",
"source": 0,
"value": "[in]"
},
{
"begin": 785,
"end": 880,
"name": "tag",
"source": 0,
"value": "6"
},
{
"begin": 785,
"end": 880,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 785,
"end": 880,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 785,
"end": 880,
"name": "MLOAD",
"source": 0
},
{
"begin": 345,
"end": 370,
"name": "SWAP1",
"source": 1
},
{
"begin": 345,
"end": 370,
"name": "DUP2",
"source": 1
},
{
"begin": 345,
"end": 370,
"name": "MSTORE",
"source": 1
},
{
"begin": 333,
"end": 335,
"name": "PUSH",
"source": 1,
"value": "20"
},
{
"begin": 318,
"end": 336,
"name": "ADD",
"source": 1
},
{
"begin": 785,
"end": 880,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 785,
"end": 880,
"name": "MLOAD",
"source": 0
},
{
"begin": 785,
"end": 880,
"name": "DUP1",
"source": 0
},
{
"begin": 785,
"end": 880,
"name": "SWAP2",
"source": 0
},
{
"begin": 785,
"end": 880,
"name": "SUB",
"source": 0
},
{
"begin": 785,
"end": 880,
"name": "SWAP1",
"source": 0
},
{
"begin": 785,
"end": 880,
"name": "RETURN",
"source": 0
},
{
"begin": 687,
"end": 779,
"name": "tag",
"source": 0,
"value": "4"
},
{
"begin": 687,
"end": 779,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 687,
"end": 779,
"name": "PUSH [tag]",
"source": 0,
"value": "6"
},
{
"begin": 687,
"end": 779,
"name": "PUSH [tag]",
"source": 0,
"value": "13"
},
{
"begin": 687,
"end": 779,
"name": "CALLDATASIZE",
"source": 0
},
{
"begin": 687,
"end": 779,
"name": "PUSH",
"source": 0,
"value": "4"
},
{
"begin": 687,
"end": 779,
"name": "PUSH [tag]",
"source": 0,
"value": "14"
},
{
"begin": 687,
"end": 779,
"name": "JUMP",
"source": 0,
"value": "[in]"
},
{
"begin": 687,
"end": 779,
"name": "tag",
"source": 0,
"value": "13"
},
{
"begin": 687,
"end": 779,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 687,
"end": 779,
"name": "PUSH [tag]",
"source": 0,
"value": "15"
},
{
"begin": 687,
"end": 779,
"name": "JUMP",
"source": 0,
"value": "[in]"
},
{
"begin": 647,
"end": 680,
"name": "tag",
"source": 0,
"value": "5"
},
{
"begin": 647,
"end": 680,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 647,
"end": 680,
"name": "PUSH [tag]",
"source": 0,
"value": "6"
},
{
"begin": 647,
"end": 680,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 647,
"end": 680,
"name": "SLOAD",
"source": 0
},
{
"begin": 647,
"end": 680,
"name": "DUP2",
"source": 0
},
{
"begin": 647,
"end": 680,
"name": "JUMP",
"source": 0
},
{
"begin": 785,
"end": 880,
"name": "tag",
"source": 0,
"value": "9"
},
{
"begin": 785,
"end": 880,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 838,
"end": 842,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 861,
"end": 873,
"name": "PUSH [tag]",
"source": 0,
"value": "21"
},
{
"begin": 871,
"end": 872,
"name": "DUP3",
"source": 0
},
{
"begin": 861,
"end": 870,
"name": "PUSH [tag]",
"source": 0,
"value": "22"
},
{
"begin": 861,
"end": 873,
"name": "JUMP",
"source": 0,
"value": "[in]"
},
{
"begin": 861,
"end": 873,
"name": "tag",
"source": 0,
"value": "21"
},
{
"begin": 861,
"end": 873,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 854,
"end": 873,
"name": "SWAP3",
"source": 0
},
{
"begin": 785,
"end": 880,
"name": "SWAP2",
"source": 0
},
{
"begin": -1,
"end": -1,
"name": "POP",
"source": -1
},
{
"begin": -1,
"end": -1,
"name": "POP",
"source": -1
},
{
"begin": 785,
"end": 880,
"name": "JUMP",
"source": 0,
"value": "[out]"
},
{
"begin": 687,
"end": 779,
"name": "tag",
"source": 0,
"value": "15"
},
{
"begin": 687,
"end": 779,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 741,
"end": 745,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 764,
"end": 772,
"name": "PUSH [tag]",
"source": 0,
"value": "24"
},
{
"begin": 764,
"end": 765,
"name": "DUP4",
"source": 0
},
{
"begin": 770,
"end": 771,
"name": "DUP4",
"source": 0
},
{
"begin": 764,
"end": 769,
"name": "PUSH [tag]",
"source": 0,
"value": "25"
},
{
"begin": 764,
"end": 772,
"name": "JUMP",
"source": 0,
"value": "[in]"
},
{
"begin": 764,
"end": 772,
"name": "tag",
"source": 0,
"value": "24"
},
{
"begin": 764,
"end": 772,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 757,
"end": 772,
"name": "SWAP4",
"source": 0
},
{
"begin": 687,
"end": 779,
"name": "SWAP3",
"source": 0
},
{
"begin": -1,
"end": -1,
"name": "POP",
"source": -1
},
{
"begin": -1,
"end": -1,
"name": "POP",
"source": -1
},
{
"begin": -1,
"end": -1,
"name": "POP",
"source": -1
},
{
"begin": 687,
"end": 779,
"name": "JUMP",
"source": 0,
"value": "[out]"
},
{
"begin": 255,
"end": 585,
"name": "tag",
"source": 0,
"value": "22"
},
{
"begin": 255,
"end": 585,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 300,
"end": 306,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 326,
"end": 327,
"name": "PUSH",
"source": 0,
"value": "3"
},
{
"begin": 322,
"end": 323,
"name": "DUP3",
"source": 0
},
{
"begin": 322,
"end": 327,
"name": "GT",
"source": 0
},
{
"begin": 318,
"end": 541,
"name": "ISZERO",
"source": 0
},
{
"begin": 318,
"end": 541,
"name": "PUSH [tag]",
"source": 0,
"value": "27"
},
{
"begin": 318,
"end": 541,
"name": "JUMPI",
"source": 0
},
{
"begin": -1,
"end": -1,
"name": "POP",
"source": -1
},
{
"begin": 347,
"end": 348,
"name": "DUP1",
"source": 0
},
{
"begin": 362,
"end": 368,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 371,
"end": 376,
"name": "PUSH [tag]",
"source": 0,
"value": "28"
},
{
"begin": 375,
"end": 376,
"name": "PUSH",
"source": 0,
"value": "2"
},
{
"begin": 347,
"end": 348,
"name": "DUP4",
"source": 0
},
{
"begin": 371,
"end": 376,
"name": "PUSH [tag]",
"source": 0,
"value": "29"
},
{
"begin": 371,
"end": 376,
"name": "JUMP",
"source": 0,
"value": "[in]"
},
{
"begin": 371,
"end": 376,
"name": "tag",
"source": 0,
"value": "28"
},
{
"begin": 371,
"end": 376,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 371,
"end": 380,
"name": "PUSH [tag]",
"source": 0,
"value": "30"
},
{
"begin": 371,
"end": 380,
"name": "SWAP1",
"source": 0
},
{
"begin": 379,
"end": 380,
"name": "PUSH",
"source": 0,
"value": "1"
},
{
"begin": 371,
"end": 380,
"name": "PUSH [tag]",
"source": 0,
"value": "31"
},
{
"begin": 371,
"end": 380,
"name": "JUMP",
"source": 0,
"value": "[in]"
},
{
"begin": 371,
"end": 380,
"name": "tag",
"source": 0,
"value": "30"
},
{
"begin": 371,
"end": 380,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 362,
"end": 380,
"name": "SWAP1",
"source": 0
},
{
"begin": 362,
"end": 380,
"name": "POP",
"source": 0
},
{
"begin": 394,
"end": 483,
"name": "tag",
"source": 0,
"value": "32"
},
{
"begin": 394,
"end": 483,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 405,
"end": 406,
"name": "DUP2",
"source": 0
},
{
"begin": 401,
"end": 402,
"name": "DUP2",
"source": 0
},
{
"begin": 401,
"end": 406,
"name": "LT",
"source": 0
},
{
"begin": 394,
"end": 483,
"name": "ISZERO",
"source": 0
},
{
"begin": 394,
"end": 483,
"name": "PUSH [tag]",
"source": 0,
"value": "33"
},
{
"begin": 394,
"end": 483,
"name": "JUMPI",
"source": 0
},
{
"begin": 430,
"end": 431,
"name": "SWAP1",
"source": 0
},
{
"begin": -1,
"end": -1,
"name": "POP",
"source": -1
},
{
"begin": 430,
"end": 431,
"name": "DUP1",
"source": 0
},
{
"begin": 467,
"end": 468,
"name": "PUSH",
"source": 0,
"value": "2"
},
{
"begin": 430,
"end": 431,
"name": "DUP2",
"source": 0
},
{
"begin": 454,
"end": 459,
"name": "PUSH [tag]",
"source": 0,
"value": "34"
},
{
"begin": 430,
"end": 431,
"name": "DUP2",
"source": 0
},
{
"begin": 454,
"end": 455,
"name": "DUP7",
"source": 0
},
{
"begin": 454,
"end": 459,
"name": "PUSH [tag]",
"source": 0,
"value": "29"
},
{
"begin": 454,
"end": 459,
"name": "JUMP",
"source": 0,
"value": "[in]"
},
{
"begin": 454,
"end": 459,
"name": "tag",
"source": 0,
"value": "34"
},
{
"begin": 454,
"end": 459,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 454,
"end": 463,
"name": "PUSH [tag]",
"source": 0,
"value": "35"
},
{
"begin": 454,
"end": 463,
"name": "SWAP2",
"source": 0
},
{
"begin": 454,
"end": 463,
"name": "SWAP1",
"source": 0
},
{
"begin": 454,
"end": 463,
"name": "PUSH [tag]",
"source": 0,
"value": "31"
},
{
"begin": 454,
"end": 463,
"name": "JUMP",
"source": 0,
"value": "[in]"
},
{
"begin": 454,
"end": 463,
"name": "tag",
"source": 0,
"value": "35"
},
{
"begin": 454,
"end": 463,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 453,
"end": 468,
"name": "PUSH [tag]",
"source": 0,
"value": "36"
},
{
"begin": 453,
"end": 468,
"name": "SWAP2",
"source": 0
},
{
"begin": 453,
"end": 468,
"name": "SWAP1",
"source": 0
},
{
"begin": 453,
"end": 468,
"name": "PUSH [tag]",
"source": 0,
"value": "29"
},
{
"begin": 453,
"end": 468,
"name": "JUMP",
"source": 0,
"value": "[in]"
},
{
"begin": 453,
"end": 468,
"name": "tag",
"source": 0,
"value": "36"
},
{
"begin": 453,
"end": 468,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 449,
"end": 468,
"name": "SWAP1",
"source": 0
},
{
"begin": 449,
"end": 468,
"name": "POP",
"source": 0
},
{
"begin": 394,
"end": 483,
"name": "PUSH [tag]",
"source": 0,
"value": "32"
},
{
"begin": 394,
"end": 483,
"name": "JUMP",
"source": 0
},
{
"begin": 394,
"end": 483,
"name": "tag",
"source": 0,
"value": "33"
},
{
"begin": 394,
"end": 483,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 329,
"end": 493,
"name": "POP",
"source": 0
},
{
"begin": 255,
"end": 585,
"name": "SWAP2",
"source": 0
},
{
"begin": 255,
"end": 585,
"name": "SWAP1",
"source": 0
},
{
"begin": 255,
"end": 585,
"name": "POP",
"source": 0
},
{
"begin": 255,
"end": 585,
"name": "JUMP",
"source": 0,
"value": "[out]"
},
{
"begin": 318,
"end": 541,
"name": "tag",
"source": 0,
"value": "27"
},
{
"begin": 318,
"end": 541,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 503,
"end": 509,
"name": "DUP2",
"source": 0
},
{
"begin": 503,
"end": 509,
"name": "ISZERO",
"source": 0
},
{
"begin": 499,
"end": 541,
"name": "PUSH [tag]",
"source": 0,
"value": "38"
},
{
"begin": 499,
"end": 541,
"name": "JUMPI",
"source": 0
},
{
"begin": -1,
"end": -1,
"name": "POP",
"source": -1
},
{
"begin": 529,
"end": 530,
"name": "PUSH",
"source": 0,
"value": "1"
},
{
"begin": 499,
"end": 541,
"name": "tag",
"source": 0,
"value": "38"
},
{
"begin": 499,
"end": 541,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 255,
"end": 585,
"name": "SWAP2",
"source": 0
},
{
"begin": 255,
"end": 585,
"name": "SWAP1",
"source": 0
},
{
"begin": 255,
"end": 585,
"name": "POP",
"source": 0
},
{
"begin": 255,
"end": 585,
"name": "JUMP",
"source": 0,
"value": "[out]"
},
{
"begin": 82,
"end": 232,
"name": "tag",
"source": 0,
"value": "25"
},
{
"begin": 82,
"end": 232,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 134,
"end": 138,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 134,
"end": 138,
"name": "DUP1",
"source": 0
},
{
"begin": 159,
"end": 164,
"name": "PUSH [tag]",
"source": 0,
"value": "40"
},
{
"begin": 163,
"end": 164,
"name": "DUP4",
"source": 0
},
{
"begin": 159,
"end": 160,
"name": "DUP6",
"source": 0
},
{
"begin": 159,
"end": 164,
"name": "PUSH [tag]",
"source": 0,
"value": "31"
},
{
"begin": 159,
"end": 164,
"name": "JUMP",
"source": 0,
"value": "[in]"
},
{
"begin": 159,
"end": 164,
"name": "tag",
"source": 0,
"value": "40"
},
{
"begin": 159,
"end": 164,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 150,
"end": 164,
"name": "SWAP1",
"source": 0
},
{
"begin": 150,
"end": 164,
"name": "POP",
"source": 0
},
{
"begin": 187,
"end": 188,
"name": "DUP4",
"source": 0
},
{
"begin": 182,
"end": 183,
"name": "DUP2",
"source": 0
},
{
"begin": 182,
"end": 188,
"name": "LT",
"source": 0
},
{
"begin": 182,
"end": 188,
"name": "ISZERO",
"source": 0
},
{
"begin": 174,
"end": 206,
"name": "PUSH [tag]",
"source": 0,
"value": "24"
},
{
"begin": 174,
"end": 206,
"name": "JUMPI",
"source": 0
},
{
"begin": 174,
"end": 206,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 174,
"end": 206,
"name": "MLOAD",
"source": 0
},
{
"begin": -1,
"end": -1,
"name": "PUSH",
"source": -1,
"value": "461BCD"
},
{
"begin": -1,
"end": -1,
"name": "PUSH",
"source": -1,
"value": "E5"
},
{
"begin": -1,
"end": -1,
"name": "SHL",
"source": -1
},
{
"begin": 174,
"end": 206,
"name": "DUP2",
"source": 0
},
{
"begin": 174,
"end": 206,
"name": "MSTORE",
"source": 0
},
{
"begin": 1288,
"end": 1290,
"name": "PUSH",
"source": 1,
"value": "20"
},
{
"begin": 174,
"end": 206,
"name": "PUSH",
"source": 0,
"value": "4"
},
{
"begin": 174,
"end": 206,
"name": "DUP3",
"source": 0
},
{
"begin": 174,
"end": 206,
"name": "ADD",
"source": 0
},
{
"begin": 1270,
"end": 1291,
"name": "MSTORE",
"source": 1
},
{
"begin": 1327,
"end": 1329,
"name": "PUSH",
"source": 1,
"value": "D"
},
{
"begin": 1307,
"end": 1325,
"name": "PUSH",
"source": 1,
"value": "24"
},
{
"begin": 1307,
"end": 1325,
"name": "DUP3",
"source": 1
},
{
"begin": 1307,
"end": 1325,
"name": "ADD",
"source": 1
},
{
"begin": 1300,
"end": 1330,
"name": "MSTORE",
"source": 1
},
{
"begin": -1,
"end": -1,
"name": "PUSH",
"source": -1,
"value": "75696E74206F766572666C6F77"
},
{
"begin": -1,
"end": -1,
"name": "PUSH",
"source": -1,
"value": "98"
},
{
"begin": -1,
"end": -1,
"name": "SHL",
"source": -1
},
{
"begin": 1346,
"end": 1364,
"name": "PUSH",
"source": 1,
"value": "44"
},
{
"begin": 1346,
"end": 1364,
"name": "DUP3",
"source": 1
},
{
"begin": 1346,
"end": 1364,
"name": "ADD",
"source": 1
},
{
"begin": 1339,
"end": 1382,
"name": "MSTORE",
"source": 1
},
{
"begin": 1399,
"end": 1417,
"name": "PUSH",
"source": 1,
"value": "64"
},
{
"begin": 1399,
"end": 1417,
"name": "ADD",
"source": 1
},
{
"begin": 174,
"end": 206,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 174,
"end": 206,
"name": "MLOAD",
"source": 0
},
{
"begin": 174,
"end": 206,
"name": "DUP1",
"source": 0
},
{
"begin": 174,
"end": 206,
"name": "SWAP2",
"source": 0
},
{
"begin": 174,
"end": 206,
"name": "SUB",
"source": 0
},
{
"begin": 174,
"end": 206,
"name": "SWAP1",
"source": 0
},
{
"begin": 174,
"end": 206,
"name": "REVERT",
"source": 0
},
{
"begin": 14,
"end": 194,
"name": "tag",
"source": 1,
"value": "8"
},
{
"begin": 14,
"end": 194,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 73,
"end": 79,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 126,
"end": 128,
"name": "PUSH",
"source": 1,
"value": "20"
},
{
"begin": 114,
"end": 123,
"name": "DUP3",
"source": 1
},
{
"begin": 105,
"end": 112,
"name": "DUP5",
"source": 1
},
{
"begin": 101,
"end": 124,
"name": "SUB",
"source": 1
},
{
"begin": 97,
"end": 129,
"name": "SLT",
"source": 1
},
{
"begin": 94,
"end": 146,
"name": "ISZERO",
"source": 1
},
{
"begin": 94,
"end": 146,
"name": "PUSH [tag]",
"source": 1,
"value": "46"
},
{
"begin": 94,
"end": 146,
"name": "JUMPI",
"source": 1
},
{
"begin": 142,
"end": 143,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 139,
"end": 140,
"name": "DUP1",
"source": 1
},
{
"begin": 132,
"end": 144,
"name": "REVERT",
"source": 1
},
{
"begin": 94,
"end": 146,
"name": "tag",
"source": 1,
"value": "46"
},
{
"begin": 94,
"end": 146,
"name": "JUMPDEST",
"source": 1
},
{
"begin": -1,
"end": -1,
"name": "POP",
"source": -1
},
{
"begin": 165,
"end": 188,
"name": "CALLDATALOAD",
"source": 1
},
{
"begin": 165,
"end": 188,
"name": "SWAP2",
"source": 1
},
{
"begin": 14,
"end": 194,
"name": "SWAP1",
"source": 1
},
{
"begin": -1,
"end": -1,
"name": "POP",
"source": -1
},
{
"begin": 14,
"end": 194,
"name": "JUMP",
"source": 1,
"value": "[out]"
},
{
"begin": 381,
"end": 629,
"name": "tag",
"source": 1,
"value": "14"
},
{
"begin": 381,
"end": 629,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 449,
"end": 455,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 457,
"end": 463,
"name": "DUP1",
"source": 1
},
{
"begin": 510,
"end": 512,
"name": "PUSH",
"source": 1,
"value": "40"
},
{
"begin": 498,
"end": 507,
"name": "DUP4",
"source": 1
},
{
"begin": 489,
"end": 496,
"name": "DUP6",
"source": 1
},
{
"begin": 485,
"end": 508,
"name": "SUB",
"source": 1
},
{
"begin": 481,
"end": 513,
"name": "SLT",
"source": 1
},
{
"begin": 478,
"end": 530,
"name": "ISZERO",
"source": 1
},
{
"begin": 478,
"end": 530,
"name": "PUSH [tag]",
"source": 1,
"value": "49"
},
{
"begin": 478,
"end": 530,
"name": "JUMPI",
"source": 1
},
{
"begin": 526,
"end": 527,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 523,
"end": 524,
"name": "DUP1",
"source": 1
},
{
"begin": 516,
"end": 528,
"name": "REVERT",
"source": 1
},
{
"begin": 478,
"end": 530,
"name": "tag",
"source": 1,
"value": "49"
},
{
"begin": 478,
"end": 530,
"name": "JUMPDEST",
"source": 1
},
{
"begin": -1,
"end": -1,
"name": "POP",
"source": -1
},
{
"begin": -1,
"end": -1,
"name": "POP",
"source": -1
},
{
"begin": 549,
"end": 572,
"name": "DUP1",
"source": 1
},
{
"begin": 549,
"end": 572,
"name": "CALLDATALOAD",
"source": 1
},
{
"begin": 549,
"end": 572,
"name": "SWAP3",
"source": 1
},
{
"begin": 619,
"end": 621,
"name": "PUSH",
"source": 1,
"value": "20"
},
{
"begin": 604,
"end": 622,
"name": "SWAP1",
"source": 1
},
{
"begin": 604,
"end": 622,
"name": "SWAP2",
"source": 1
},
{
"begin": 604,
"end": 622,
"name": "ADD",
"source": 1
},
{
"begin": 591,
"end": 623,
"name": "CALLDATALOAD",
"source": 1
},
{
"begin": 591,
"end": 623,
"name": "SWAP2",
"source": 1
},
{
"begin": -1,
"end": -1,
"name": "POP",
"source": -1
},
{
"begin": 381,
"end": 629,
"name": "JUMP",
"source": 1,
"value": "[out]"
},
{
"begin": 634,
"end": 851,
"name": "tag",
"source": 1,
"value": "29"
},
{
"begin": 634,
"end": 851,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 674,
"end": 675,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 700,
"end": 701,
"name": "DUP3",
"source": 1
},
{
"begin": 690,
"end": 822,
"name": "PUSH [tag]",
"source": 1,
"value": "51"
},
{
"begin": 690,
"end": 822,
"name": "JUMPI",
"source": 1
},
{
"begin": 744,
"end": 754,
"name": "PUSH",
"source": 1,
"value": "4E487B71"
},
{
"begin": 739,
"end": 742,
"name": "PUSH",
"source": 1,
"value": "E0"
},
{
"begin": 735,
"end": 755,
"name": "SHL",
"source": 1
},
{
"begin": 732,
"end": 733,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 725,
"end": 756,
"name": "MSTORE",
"source": 1
},
{
"begin": 779,
"end": 783,
"name": "PUSH",
"source": 1,
"value": "12"
},
{
"begin": 776,
"end": 777,
"name": "PUSH",
"source": 1,
"value": "4"
},
{
"begin": 769,
"end": 784,
"name": "MSTORE",
"source": 1
},
{
"begin": 807,
"end": 811,
"name": "PUSH",
"source": 1,
"value": "24"
},
{
"begin": 804,
"end": 805,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 797,
"end": 812,
"name": "REVERT",
"source": 1
},
{
"begin": 690,
"end": 822,
"name": "tag",
"source": 1,
"value": "51"
},
{
"begin": 690,
"end": 822,
"name": "JUMPDEST",
"source": 1
},
{
"begin": -1,
"end": -1,
"name": "POP",
"source": -1
},
{
"begin": 836,
"end": 845,
"name": "DIV",
"source": 1
},
{
"begin": 836,
"end": 845,
"name": "SWAP1",
"source": 1
},
{
"begin": 634,
"end": 851,
"name": "JUMP",
"source": 1,
"value": "[out]"
},
{
"begin": 856,
"end": 1081,
"name": "tag",
"source": 1,
"value": "31"
},
{
"begin": 856,
"end": 1081,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 896,
"end": 899,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 927,
"end": 928,
"name": "DUP3",
"source": 1
},
{
"begin": 923,
"end": 929,
"name": "NOT",
"source": 1
},
{
"begin": 920,
"end": 921,
"name": "DUP3",
"source": 1
},
{
"begin": 917,
"end": 930,
"name": "GT",
"source": 1
},
{
"begin": 914,
"end": 1050,
"name": "ISZERO",
"source": 1
},
{
"begin": 914,
"end": 1050,
"name": "PUSH [tag]",
"source": 1,
"value": "53"
},
{
"begin": 914,
"end": 1050,
"name": "JUMPI",
"source": 1
},
{
"begin": 972,
"end": 982,
"name": "PUSH",
"source": 1,
"value": "4E487B71"
},
{
"begin": 967,
"end": 970,
"name": "PUSH",
"source": 1,
"value": "E0"
},
{
"begin": 963,
"end": 983,
"name": "SHL",
"source": 1
},
{
"begin": 960,
"end": 961,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 953,
"end": 984,
"name": "MSTORE",
"source": 1
},
{
"begin": 1007,
"end": 1011,
"name": "PUSH",
"source": 1,
"value": "11"
},
{
"begin": 1004,
"end": 1005,
"name": "PUSH",
"source": 1,
"value": "4"
},
{
"begin": 997,
"end": 1012,
"name": "MSTORE",
"source": 1
},
{
"begin": 1035,
"end": 1039,
"name": "PUSH",
"source": 1,
"value": "24"
},
{
"begin": 1032,
"end": 1033,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 1025,
"end": 1040,
"name": "REVERT",
"source": 1
},
{
"begin": 914,
"end": 1050,
"name": "tag",
"source": 1,
"value": "53"
},
{
"begin": 914,
"end": 1050,
"name": "JUMPDEST",
"source": 1
},
{
"begin": -1,
"end": -1,
"name": "POP",
"source": -1
},
{
"begin": 1066,
"end": 1075,
"name": "ADD",
"source": 1
},
{
"begin": 1066,
"end": 1075,
"name": "SWAP1",
"source": 1
},
{
"begin": 856,
"end": 1081,
"name": "JUMP",
"source": 1,
"value": "[out]"
}
]
}
}
},
"methodIdentifiers": {
"MAX_UINT()": "e5b5019a",
"testAdd(uint256,uint256)": "7c3ffef2",
"testSquareRoot(uint256)": "6039b0bd"
}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"MAX_UINT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"}],\"name\":\"testAdd\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSquareRoot\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Libraries.sol\":\"TestSafeMath\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Libraries.sol\":{\"keccak256\":\"0xe036441826cbb5aac07e00ca723f473b45569471f0a2dab0bd9f8b34972d7ca0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec65fd6a338c967ce54b45c2def9dac37f4018c3bff9d8eff755d528251a5f54\",\"dweb:/ipfs/QmPbP2jUCPzkc8MH6rKNJoaEZ96RrJSC1txfKKAPjvcQ3X\"]}},\"version\":1}",
"storageLayout": {
"storage": [
{
"astId": 92,
"contract": "contracts/Libraries.sol:TestSafeMath",
"label": "MAX_UINT",
"offset": 0,
"slot": "0",
"type": "t_uint256"
}
],
"types": {
"t_uint256": {
"encoding": "inplace",
"label": "uint256",
"numberOfBytes": "32"
}
}
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}
}
},
"sources": {
"contracts/Libraries.sol": {
"ast": {
"absolutePath": "contracts/Libraries.sol",
"exportedSymbols": {
"Math": [
82
],
"SafeMath": [
27
],
"TestSafeMath": [
121
]
},
"id": 122,
"license": "MIT",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 1,
"literals": [
"solidity",
"^",
"0.8",
".13"
],
"nodeType": "PragmaDirective",
"src": "33:24:0"
},
{
"abstract": false,
"baseContracts": [],
"canonicalName": "SafeMath",
"contractDependencies": [],
"contractKind": "library",
"fullyImplemented": true,
"id": 27,
"linearizedBaseContracts": [
27
],
"name": "SafeMath",
"nameLocation": "67:8:0",
"nodeType": "ContractDefinition",
"nodes": [
{
"body": {
"id": 25,
"nodeType": "Block",
"src": "140:92:0",
"statements": [
{
"assignments": [
11
],
"declarations": [
{
"constant": false,
"id": 11,
"mutability": "mutable",
"name": "z",
"nameLocation": "155:1:0",
"nodeType": "VariableDeclaration",
"scope": 25,
"src": "150:6:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 10,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "150:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 15,
"initialValue": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 14,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 12,
"name": "x",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3,
"src": "159:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"id": 13,
"name": "y",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 5,
"src": "163:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "159:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "150:14:0"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 19,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 17,
"name": "z",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11,
"src": "182:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">=",
"rightExpression": {
"id": 18,
"name": "x",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3,
"src": "187:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "182:6:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "75696e74206f766572666c6f77",
"id": 20,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "190:15:0",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_d7619cf226aa1083efd1d1aceaadcc6f0915c69c3fbd27ef531e87c5ccbd257f",
"typeString": "literal_string \"uint overflow\""
},
"value": "uint overflow"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_d7619cf226aa1083efd1d1aceaadcc6f0915c69c3fbd27ef531e87c5ccbd257f",
"typeString": "literal_string \"uint overflow\""
}
],
"id": 16,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
4294967278,
4294967278
],
"referencedDeclaration": 4294967278,
"src": "174:7:0",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 21,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "174:32:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 22,
"nodeType": "ExpressionStatement",
"src": "174:32:0"
},
{
"expression": {
"id": 23,
"name": "z",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11,
"src": "224:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 9,
"id": 24,
"nodeType": "Return",
"src": "217:8:0"
}
]
},
"id": 26,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "add",
"nameLocation": "91:3:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 6,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 3,
"mutability": "mutable",
"name": "x",
"nameLocation": "100:1:0",
"nodeType": "VariableDeclaration",
"scope": 26,
"src": "95:6:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 2,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "95:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 5,
"mutability": "mutable",
"name": "y",
"nameLocation": "108:1:0",
"nodeType": "VariableDeclaration",
"scope": 26,
"src": "103:6:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 4,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "103:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "94:16:0"
},
"returnParameters": {
"id": 9,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 8,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 26,
"src": "134:4:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 7,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "134:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "133:6:0"
},
"scope": 27,
"src": "82:150:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
}
],
"scope": 122,
"src": "59:175:0",
"usedErrors": []
},
{
"abstract": false,
"baseContracts": [],
"canonicalName": "Math",
"contractDependencies": [],
"contractKind": "library",
"fullyImplemented": true,
"id": 82,
"linearizedBaseContracts": [
82
],
"name": "Math",
"nameLocation": "244:4:0",
"nodeType": "ContractDefinition",
"nodes": [
{
"body": {
"id": 80,
"nodeType": "Block",
"src": "308:277:0",
"statements": [
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 36,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 34,
"name": "y",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 29,
"src": "322:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"hexValue": "33",
"id": 35,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "326:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_3_by_1",
"typeString": "int_const 3"
},
"value": "3"
},
"src": "322:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 72,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 70,
"name": "y",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 29,
"src": "503:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"hexValue": "30",
"id": 71,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "508:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "503:6:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 78,
"nodeType": "IfStatement",
"src": "499:42:0",
"trueBody": {
"id": 77,
"nodeType": "Block",
"src": "511:30:0",
"statements": [
{
"expression": {
"id": 75,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 73,
"name": "z",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32,
"src": "525:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"hexValue": "31",
"id": 74,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "529:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "525:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 76,
"nodeType": "ExpressionStatement",
"src": "525:5:0"
}
]
}
},
"id": 79,
"nodeType": "IfStatement",
"src": "318:223:0",
"trueBody": {
"id": 69,
"nodeType": "Block",
"src": "329:164:0",
"statements": [
{
"expression": {
"id": 39,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 37,
"name": "z",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32,
"src": "343:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 38,
"name": "y",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 29,
"src": "347:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "343:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 40,
"nodeType": "ExpressionStatement",
"src": "343:5:0"
},
{
"assignments": [
42
],
"declarations": [
{
"constant": false,
"id": 42,
"mutability": "mutable",
"name": "x",
"nameLocation": "367:1:0",
"nodeType": "VariableDeclaration",
"scope": 69,
"src": "362:6:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 41,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "362:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 48,
"initialValue": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 47,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 45,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 43,
"name": "y",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 29,
"src": "371:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "/",
"rightExpression": {
"hexValue": "32",
"id": 44,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "375:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_2_by_1",
"typeString": "int_const 2"
},
"value": "2"
},
"src": "371:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"hexValue": "31",
"id": 46,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "379:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "371:9:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "362:18:0"
},
{
"body": {
"id": 67,
"nodeType": "Block",
"src": "408:75:0",
"statements": [
{
"expression": {
"id": 54,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 52,
"name": "z",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32,
"src": "426:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 53,
"name": "x",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 42,
"src": "430:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "426:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 55,
"nodeType": "ExpressionStatement",
"src": "426:5:0"
},
{
"expression": {
"id": 65,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 56,
"name": "x",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 42,
"src": "449:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 64,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"components": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 61,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 59,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 57,
"name": "y",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 29,
"src": "454:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "/",
"rightExpression": {
"id": 58,
"name": "x",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 42,
"src": "458:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "454:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"id": 60,
"name": "x",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 42,
"src": "462:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "454:9:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 62,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "453:11:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "/",
"rightExpression": {
"hexValue": "32",
"id": 63,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "467:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_2_by_1",
"typeString": "int_const 2"
},
"value": "2"
},
"src": "453:15:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "449:19:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 66,
"nodeType": "ExpressionStatement",
"src": "449:19:0"
}
]
},
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 51,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 49,
"name": "x",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 42,
"src": "401:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"id": 50,
"name": "z",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32,
"src": "405:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "401:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 68,
"nodeType": "WhileStatement",
"src": "394:89:0"
}
]
}
}
]
},
"id": 81,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "sqrt",
"nameLocation": "264:4:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 30,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 29,
"mutability": "mutable",
"name": "y",
"nameLocation": "274:1:0",
"nodeType": "VariableDeclaration",
"scope": 81,
"src": "269:6:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 28,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "269:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "268:8:0"
},
"returnParameters": {
"id": 33,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 32,
"mutability": "mutable",
"name": "z",
"nameLocation": "305:1:0",
"nodeType": "VariableDeclaration",
"scope": 81,
"src": "300:6:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 31,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "300:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "299:8:0"
},
"scope": 82,
"src": "255:330:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
}
],
"scope": 122,
"src": "236:351:0",
"usedErrors": []
},
{
"abstract": false,
"baseContracts": [],
"canonicalName": "TestSafeMath",
"contractDependencies": [],
"contractKind": "contract",
"fullyImplemented": true,
"id": 121,
"linearizedBaseContracts": [
121
],
"name": "TestSafeMath",
"nameLocation": "598:12:0",
"nodeType": "ContractDefinition",
"nodes": [
{
"global": false,
"id": 85,
"libraryName": {
"id": 83,
"name": "SafeMath",
"nodeType": "IdentifierPath",
"referencedDeclaration": 27,
"src": "623:8:0"
},
"nodeType": "UsingForDirective",
"src": "617:24:0",
"typeName": {
"id": 84,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "636:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
},
{
"constant": false,
"functionSelector": "e5b5019a",
"id": 92,
"mutability": "mutable",
"name": "MAX_UINT",
"nameLocation": "659:8:0",
"nodeType": "VariableDeclaration",
"scope": 121,
"src": "647:33:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 86,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "647:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": {
"commonType": {
"typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639935_by_1",
"typeString": "int_const 1157...(70 digits omitted)...9935"
},
"id": 91,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"leftExpression": {
"commonType": {
"typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639936_by_1",
"typeString": "int_const 1157...(70 digits omitted)...9936"
},
"id": 89,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"leftExpression": {
"hexValue": "32",
"id": 87,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "670:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_2_by_1",
"typeString": "int_const 2"
},
"value": "2"
},
"nodeType": "BinaryOperation",
"operator": "**",
"rightExpression": {
"hexValue": "323536",
"id": 88,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "673:3:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_256_by_1",
"typeString": "int_const 256"
},
"value": "256"
},
"src": "670:6:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639936_by_1",
"typeString": "int_const 1157...(70 digits omitted)...9936"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"hexValue": "31",
"id": 90,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "679:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "670:10:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639935_by_1",
"typeString": "int_const 1157...(70 digits omitted)...9935"
}
},
"visibility": "public"
},
{
"body": {
"id": 106,
"nodeType": "Block",
"src": "747:32:0",
"statements": [
{
"expression": {
"arguments": [
{
"id": 103,
"name": "y",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 96,
"src": "770:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 101,
"name": "x",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 94,
"src": "764:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 102,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "add",
"nodeType": "MemberAccess",
"referencedDeclaration": 26,
"src": "764:5:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256) pure returns (uint256)"
}
},
"id": 104,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "764:8:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 100,
"id": 105,
"nodeType": "Return",
"src": "757:15:0"
}
]
},
"functionSelector": "7c3ffef2",
"id": 107,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "testAdd",
"nameLocation": "696:7:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 97,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 94,
"mutability": "mutable",
"name": "x",
"nameLocation": "709:1:0",
"nodeType": "VariableDeclaration",
"scope": 107,
"src": "704:6:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 93,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "704:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 96,
"mutability": "mutable",
"name": "y",
"nameLocation": "717:1:0",
"nodeType": "VariableDeclaration",
"scope": 107,
"src": "712:6:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 95,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "712:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "703:16:0"
},
"returnParameters": {
"id": 100,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 99,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 107,
"src": "741:4:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 98,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "741:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "740:6:0"
},
"scope": 121,
"src": "687:92:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 119,
"nodeType": "Block",
"src": "844:36:0",
"statements": [
{
"expression": {
"arguments": [
{
"id": 116,
"name": "x",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 109,
"src": "871:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 114,
"name": "Math",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 82,
"src": "861:4:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_Math_$82_$",
"typeString": "type(library Math)"
}
},
"id": 115,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sqrt",
"nodeType": "MemberAccess",
"referencedDeclaration": 81,
"src": "861:9:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
"typeString": "function (uint256) pure returns (uint256)"
}
},
"id": 117,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "861:12:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 113,
"id": 118,
"nodeType": "Return",
"src": "854:19:0"
}
]
},
"functionSelector": "6039b0bd",
"id": 120,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "testSquareRoot",
"nameLocation": "794:14:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 110,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 109,
"mutability": "mutable",
"name": "x",
"nameLocation": "814:1:0",
"nodeType": "VariableDeclaration",
"scope": 120,
"src": "809:6:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 108,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "809:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "808:8:0"
},
"returnParameters": {
"id": 113,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 112,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 120,
"src": "838:4:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 111,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "838:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "837:6:0"
},
"scope": 121,
"src": "785:95:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "public"
}
],
"scope": 122,
"src": "589:293:0",
"usedErrors": []
}
],
"src": "33:849:0"
},
"id": 0
}
}
}
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "608060405234801561001057600080fd5b5060df8061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b60408051808201825260018152604360f81b60208201529051604e91906057565b60405180910390f35b600060208083528351808285015260005b818110156082578581018301518582016040015282016068565b818111156093576000604083870101525b50601f01601f191692909201604001939250505056fea264697066735822122018c883ad036c50dc045a4117b024099724ee1ee2658c5e31027cdb956ba919c664736f6c634300080d0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xDF DUP1 PUSH2 0x1F 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 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC2985578 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x43 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x4E SWAP2 SWAP1 PUSH1 0x57 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH1 0x82 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH1 0x68 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH1 0x93 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 XOR 0xC8 DUP4 0xAD SUB PUSH13 0x50DC045A4117B024099724EE1E 0xE2 PUSH6 0x8C5E31027CDB SWAP6 PUSH12 0xA919C664736F6C634300080D STOP CALLER ",
"sourceMap": "753:143:0:-:0;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@foo_33": {
"entryPoint": null,
"id": 33,
"parameterSlots": 0,
"returnSlots": 1
},
"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 87,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:613:1",
"statements": [
{
"nodeType": "YulBlock",
"src": "6:3:1",
"statements": []
},
{
"body": {
"nodeType": "YulBlock",
"src": "135:476:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "145:12:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "155:2:1",
"type": "",
"value": "32"
},
"variables": [
{
"name": "_1",
"nodeType": "YulTypedName",
"src": "149:2:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "173:9:1"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "184:2:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "166:6:1"
},
"nodeType": "YulFunctionCall",
"src": "166:21:1"
},
"nodeType": "YulExpressionStatement",
"src": "166:21:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "196:27:1",
"value": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "216:6:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "210:5:1"
},
"nodeType": "YulFunctionCall",
"src": "210:13:1"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "200:6:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "243:9:1"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "254:2:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "239:3:1"
},
"nodeType": "YulFunctionCall",
"src": "239:18:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "259:6:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "232:6:1"
},
"nodeType": "YulFunctionCall",
"src": "232:34:1"
},
"nodeType": "YulExpressionStatement",
"src": "232:34:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "275:10:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "284:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "279:1:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "344:90:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "373:9:1"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "384:1:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "369:3:1"
},
"nodeType": "YulFunctionCall",
"src": "369:17:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "388:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "365:3:1"
},
"nodeType": "YulFunctionCall",
"src": "365:26:1"
},
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "407:6:1"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "415:1:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "403:3:1"
},
"nodeType": "YulFunctionCall",
"src": "403:14:1"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "419:2:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "399:3:1"
},
"nodeType": "YulFunctionCall",
"src": "399:23:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "393:5:1"
},
"nodeType": "YulFunctionCall",
"src": "393:30:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "358:6:1"
},
"nodeType": "YulFunctionCall",
"src": "358:66:1"
},
"nodeType": "YulExpressionStatement",
"src": "358:66:1"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "305:1:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "308:6:1"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "302:2:1"
},
"nodeType": "YulFunctionCall",
"src": "302:13:1"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "316:19:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "318:15:1",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "327:1:1"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "330:2:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "323:3:1"
},
"nodeType": "YulFunctionCall",
"src": "323:10:1"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "318:1:1"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "298:3:1",
"statements": []
},
"src": "294:140:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "468:66:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "497:9:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "508:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "493:3:1"
},
"nodeType": "YulFunctionCall",
"src": "493:22:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "517:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "489:3:1"
},
"nodeType": "YulFunctionCall",
"src": "489:31:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "522:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "482:6:1"
},
"nodeType": "YulFunctionCall",
"src": "482:42:1"
},
"nodeType": "YulExpressionStatement",
"src": "482:42:1"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "449:1:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "452:6:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "446:2:1"
},
"nodeType": "YulFunctionCall",
"src": "446:13:1"
},
"nodeType": "YulIf",
"src": "443:91:1"
},
{
"nodeType": "YulAssignment",
"src": "543:62:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "559:9:1"
},
{
"arguments": [
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "578:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "586:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "574:3:1"
},
"nodeType": "YulFunctionCall",
"src": "574:15:1"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "595:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "591:3:1"
},
"nodeType": "YulFunctionCall",
"src": "591:7:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "570:3:1"
},
"nodeType": "YulFunctionCall",
"src": "570:29:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "555:3:1"
},
"nodeType": "YulFunctionCall",
"src": "555:45:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "602:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "551:3:1"
},
"nodeType": "YulFunctionCall",
"src": "551:54:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "543:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "104:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "115:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "126:4:1",
"type": ""
}
],
"src": "14:597:1"
}
]
},
"contents": "{\n { }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n mstore(headStart, _1)\n let length := mload(value0)\n mstore(add(headStart, _1), length)\n let i := 0\n for { } lt(i, length) { i := add(i, _1) }\n {\n mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n }\n if gt(i, length)\n {\n mstore(add(add(headStart, length), 64), 0)\n }\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n}",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b60408051808201825260018152604360f81b60208201529051604e91906057565b60405180910390f35b600060208083528351808285015260005b818110156082578581018301518582016040015282016068565b818111156093576000604083870101525b50601f01601f191692909201604001939250505056fea264697066735822122018c883ad036c50dc045a4117b024099724ee1ee2658c5e31027cdb956ba919c664736f6c634300080d0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC2985578 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x43 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x4E SWAP2 SWAP1 PUSH1 0x57 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH1 0x82 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH1 0x68 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH1 0x93 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 XOR 0xC8 DUP4 0xAD SUB PUSH13 0x50DC045A4117B024099724EE1E 0xE2 PUSH6 0x8C5E31027CDB SWAP6 PUSH12 0xA919C664736F6C634300080D STOP CALLER ",
"sourceMap": "753:143:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;799:95;877:10;;;;;;;;;;;-1:-1:-1;;;877:10:0;;;;799:95;;;;877:10;799:95;:::i;:::-;;;;;;;;14:597:1;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "44600",
"executionCost": "93",
"totalCost": "44693"
},
"external": {
"foo()": "infinite"
}
},
"methodIdentifiers": {
"foo()": "c2985578"
}
},
"abi": [
{
"inputs": [],
"name": "foo",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "pure",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.13+commit.abaa5c0e"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [],
"name": "foo",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "pure",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/Inheritance.sol": "C"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/Inheritance.sol": {
"keccak256": "0x3ac07eb1f8f22b03dd0c7bf841e4bd44d01f1671337dbbefe1d73e08a79e4fdd",
"license": "MIT",
"urls": [
"bzz-raw://782849c13e7b356887aa845822d41e5cfeeb518709a7333a5626ce618094b26e",
"dweb:/ipfs/QmQTp3vawZnzXirtJajDnmtKVFMtbTCZXJWFSCnwbE7pKT"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50610115806100206000396000f3fe608060405260043610603a5760003560e01c80630c55699c14603f5780633fa4f2451460665780634018d9aa14607a578063cdc23076146099575b600080fd5b348015604a57600080fd5b50605360005481565b6040519081526020015b60405180910390f35b348015607157600080fd5b50605360015481565b348015608557600080fd5b506053609136600460c7565b600081905590565b60b360a436600460c7565b60008190553460018190559091565b60408051928352602083019190915201605d565b60006020828403121560d857600080fd5b503591905056fea2646970667358221220b04f4f64572ebc2546ed266cc2a74b5cab6b8ee1258bc948f12547ec1976d8db64736f6c634300080d0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x115 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x3A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC55699C EQ PUSH1 0x3F JUMPI DUP1 PUSH4 0x3FA4F245 EQ PUSH1 0x66 JUMPI DUP1 PUSH4 0x4018D9AA EQ PUSH1 0x7A JUMPI DUP1 PUSH4 0xCDC23076 EQ PUSH1 0x99 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH1 0x4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x53 PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH1 0x71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x53 PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH1 0x85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x53 PUSH1 0x91 CALLDATASIZE PUSH1 0x4 PUSH1 0xC7 JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 SSTORE SWAP1 JUMP JUMPDEST PUSH1 0xB3 PUSH1 0xA4 CALLDATASIZE PUSH1 0x4 PUSH1 0xC7 JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 SSTORE CALLVALUE PUSH1 0x1 DUP2 SWAP1 SSTORE SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH1 0x5D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH1 0xD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB0 0x4F 0x4F PUSH5 0x572EBC2546 0xED 0x26 PUSH13 0xC2A74B5CAB6B8EE1258BC948F1 0x25 SELFBALANCE 0xEC NOT PUSH23 0xD8DB64736F6C634300080D003300000000000000000000 ",
"sourceMap": "59:316:0:-:0;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@setX_19": {
"entryPoint": null,
"id": 19,
"parameterSlots": 1,
"returnSlots": 1
},
"@setXandSendEther_42": {
"entryPoint": null,
"id": 42,
"parameterSlots": 1,
"returnSlots": 2
},
"@value_5": {
"entryPoint": null,
"id": 5,
"parameterSlots": 0,
"returnSlots": 0
},
"@x_3": {
"entryPoint": null,
"id": 3,
"parameterSlots": 0,
"returnSlots": 0
},
"abi_decode_tuple_t_uint256": {
"entryPoint": 199,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:631:1",
"statements": [
{
"nodeType": "YulBlock",
"src": "6:3:1",
"statements": []
},
{
"body": {
"nodeType": "YulBlock",
"src": "115:76:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "125:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "137:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "148:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "133:3:1"
},
"nodeType": "YulFunctionCall",
"src": "133:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "125:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "167:9:1"
},
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "178:6:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "160:6:1"
},
"nodeType": "YulFunctionCall",
"src": "160:25:1"
},
"nodeType": "YulExpressionStatement",
"src": "160:25:1"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "84:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "95:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "106:4:1",
"type": ""
}
],
"src": "14:177:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "266:110:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "312:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "321:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "324:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "314:6:1"
},
"nodeType": "YulFunctionCall",
"src": "314:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "314:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "287:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "296:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "283:3:1"
},
"nodeType": "YulFunctionCall",
"src": "283:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "308:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "279:3:1"
},
"nodeType": "YulFunctionCall",
"src": "279:32:1"
},
"nodeType": "YulIf",
"src": "276:52:1"
},
{
"nodeType": "YulAssignment",
"src": "337:33:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "360:9:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "347:12:1"
},
"nodeType": "YulFunctionCall",
"src": "347:23:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "337:6:1"
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "232:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "243:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "255:6:1",
"type": ""
}
],
"src": "196:180:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "510:119:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "520:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "532:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "543:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "528:3:1"
},
"nodeType": "YulFunctionCall",
"src": "528:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "520:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "562:9:1"
},
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "573:6:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "555:6:1"
},
"nodeType": "YulFunctionCall",
"src": "555:25:1"
},
"nodeType": "YulExpressionStatement",
"src": "555:25:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "600:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "611:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "596:3:1"
},
"nodeType": "YulFunctionCall",
"src": "596:18:1"
},
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "616:6:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "589:6:1"
},
"nodeType": "YulFunctionCall",
"src": "589:34:1"
},
"nodeType": "YulExpressionStatement",
"src": "589:34:1"
}
]
},
"name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "471:9:1",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "482:6:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "490:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "501:4:1",
"type": ""
}
],
"src": "381:248:1"
}
]
},
"contents": "{\n { }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n }\n}",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "608060405260043610603a5760003560e01c80630c55699c14603f5780633fa4f2451460665780634018d9aa14607a578063cdc23076146099575b600080fd5b348015604a57600080fd5b50605360005481565b6040519081526020015b60405180910390f35b348015607157600080fd5b50605360015481565b348015608557600080fd5b506053609136600460c7565b600081905590565b60b360a436600460c7565b60008190553460018190559091565b60408051928352602083019190915201605d565b60006020828403121560d857600080fd5b503591905056fea2646970667358221220b04f4f64572ebc2546ed266cc2a74b5cab6b8ee1258bc948f12547ec1976d8db64736f6c634300080d0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x3A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC55699C EQ PUSH1 0x3F JUMPI DUP1 PUSH4 0x3FA4F245 EQ PUSH1 0x66 JUMPI DUP1 PUSH4 0x4018D9AA EQ PUSH1 0x7A JUMPI DUP1 PUSH4 0xCDC23076 EQ PUSH1 0x99 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH1 0x4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x53 PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH1 0x71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x53 PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH1 0x85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x53 PUSH1 0x91 CALLDATASIZE PUSH1 0x4 PUSH1 0xC7 JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 SSTORE SWAP1 JUMP JUMPDEST PUSH1 0xB3 PUSH1 0xA4 CALLDATASIZE PUSH1 0x4 PUSH1 0xC7 JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 SSTORE CALLVALUE PUSH1 0x1 DUP2 SWAP1 SSTORE SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH1 0x5D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH1 0xD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB0 0x4F 0x4F PUSH5 0x572EBC2546 0xED 0x26 PUSH13 0xC2A74B5CAB6B8EE1258BC948F1 0x25 SELFBALANCE 0xEC NOT PUSH23 0xD8DB64736F6C634300080D003300000000000000000000 ",
"sourceMap": "59:316:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;89:13;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;89:13:0;;;;;;;;108:17;;;;;;;;;;;;;;;;132:86;;;;;;;;;;-1:-1:-1;132:86:0;;;;;:::i;:::-;171:4;187:6;;;191:2;132:86;224:149;;;;;;:::i;:::-;283:4;305:6;;;329:9;321:5;:17;;;309:2;;224:149;;;;;555:25:1;;;611:2;596:18;;589:34;;;;528:18;224:149:0;381:248:1;196:180;255:6;308:2;296:9;287:7;283:23;279:32;276:52;;;324:1;321;314:12;276:52;-1:-1:-1;347:23:1;;196:180;-1:-1:-1;196:180:1:o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "55400",
"executionCost": "105",
"totalCost": "55505"
},
"external": {
"setX(uint256)": "22389",
"setXandSendEther(uint256)": "44536",
"value()": "2284",
"x()": "2262"
}
},
"methodIdentifiers": {
"setX(uint256)": "4018d9aa",
"setXandSendEther(uint256)": "cdc23076",
"value()": "3fa4f245",
"x()": "0c55699c"
}
},
"abi": [
{
"inputs": [
{
"internalType": "uint256",
"name": "_x",
"type": "uint256"
}
],
"name": "setX",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_x",
"type": "uint256"
}
],
"name": "setXandSendEther",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [],
"name": "value",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "x",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.13+commit.abaa5c0e"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "uint256",
"name": "_x",
"type": "uint256"
}
],
"name": "setX",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_x",
"type": "uint256"
}
],
"name": "setXandSendEther",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [],
"name": "value",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "x",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/CallContract.sol": "CalledContract"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/CallContract.sol": {
"keccak256": "0x7c1d57c9d79e52d1560e1f8acb03f41490f89991da3b00a5e3478479e0bf0c09",
"license": "MIT",
"urls": [
"bzz-raw://07f3136447650e6a1c95f423fa1cc79983b6aac8f395a6e92e4f12e784b33b5e",
"dweb:/ipfs/Qme7XcvvT76bviBNHXAAEutUd1HLXhHaFxtjaxfJRxdPGW"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50610265806100206000396000f3fe6080604052600436106100345760003560e01c80634a2ad99f14610039578063cb5870391461005b578063d44abc421461007b575b600080fd5b34801561004557600080fd5b506100596100543660046101c6565b61008e565b005b34801561006757600080fd5b506100596100763660046101c6565b610103565b6100596100893660046101c6565b610132565b60405163200c6cd560e11b8152600481018290526000906001600160a01b03841690634018d9aa906024015b6020604051808303816000875af11580156100d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fd91906101f2565b50505050565b60405163200c6cd560e11b81526004810182905282906001600160a01b03821690634018d9aa906024016100ba565b600080836001600160a01b031663cdc2307634856040518363ffffffff1660e01b815260040161016491815260200190565b604080518083038185885af1158015610181573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906101a6919061020b565b505050505050565b6001600160a01b03811681146101c357600080fd5b50565b600080604083850312156101d957600080fd5b82356101e4816101ae565b946020939093013593505050565b60006020828403121561020457600080fd5b5051919050565b6000806040838503121561021e57600080fd5b50508051602090910151909290915056fea2646970667358221220d9841be0bef8b8836a23e77eb0ebd47c0445fba589c19d4e362cebbec2405b6a64736f6c634300080d0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x265 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x34 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4A2AD99F EQ PUSH2 0x39 JUMPI DUP1 PUSH4 0xCB587039 EQ PUSH2 0x5B JUMPI DUP1 PUSH4 0xD44ABC42 EQ PUSH2 0x7B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x59 PUSH2 0x54 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C6 JUMP JUMPDEST PUSH2 0x8E JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x59 PUSH2 0x76 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C6 JUMP JUMPDEST PUSH2 0x103 JUMP JUMPDEST PUSH2 0x59 PUSH2 0x89 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C6 JUMP JUMPDEST PUSH2 0x132 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x200C6CD5 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x4018D9AA SWAP1 PUSH1 0x24 ADD JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xFD SWAP2 SWAP1 PUSH2 0x1F2 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x200C6CD5 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE DUP3 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x4018D9AA SWAP1 PUSH1 0x24 ADD PUSH2 0xBA JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xCDC23076 CALLVALUE DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x164 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x181 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A6 SWAP2 SWAP1 PUSH2 0x20B JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1E4 DUP2 PUSH2 0x1AE JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x204 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x21E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD9 DUP5 SHL 0xE0 0xBE 0xF8 0xB8 DUP4 PUSH11 0x23E77EB0EBD47C0445FBA5 DUP10 0xC1 SWAP14 0x4E CALLDATASIZE 0x2C 0xEB 0xBE 0xC2 BLOCKHASH JUMPDEST PUSH11 0x64736F6C634300080D0033 ",
"sourceMap": "377:492:0:-:0;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@setXFromAddress_80": {
"entryPoint": 259,
"id": 80,
"parameterSlots": 2,
"returnSlots": 0
},
"@setX_59": {
"entryPoint": 142,
"id": 59,
"parameterSlots": 2,
"returnSlots": 0
},
"@setXandSendEther_101": {
"entryPoint": 306,
"id": 101,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_decode_tuple_t_addresst_uint256": {
"entryPoint": null,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_decode_tuple_t_contract$_CalledContract_$43t_uint256": {
"entryPoint": 454,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_decode_tuple_t_uint256_fromMemory": {
"entryPoint": 498,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_uint256t_uint256_fromMemory": {
"entryPoint": 523,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"validator_revert_contract_CalledContract": {
"entryPoint": 430,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:1477:1",
"statements": [
{
"nodeType": "YulBlock",
"src": "6:3:1",
"statements": []
},
{
"body": {
"nodeType": "YulBlock",
"src": "75:86:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "139:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "148:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "151:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "141:6:1"
},
"nodeType": "YulFunctionCall",
"src": "141:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "141:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "98:5:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "109:5:1"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "124:3:1",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "129:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "120:3:1"
},
"nodeType": "YulFunctionCall",
"src": "120:11:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "133:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "116:3:1"
},
"nodeType": "YulFunctionCall",
"src": "116:19:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "105:3:1"
},
"nodeType": "YulFunctionCall",
"src": "105:31:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "95:2:1"
},
"nodeType": "YulFunctionCall",
"src": "95:42:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "88:6:1"
},
"nodeType": "YulFunctionCall",
"src": "88:50:1"
},
"nodeType": "YulIf",
"src": "85:70:1"
}
]
},
"name": "validator_revert_contract_CalledContract",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "64:5:1",
"type": ""
}
],
"src": "14:147:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "274:244:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "320:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "329:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "332:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "322:6:1"
},
"nodeType": "YulFunctionCall",
"src": "322:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "322:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "295:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "304:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "291:3:1"
},
"nodeType": "YulFunctionCall",
"src": "291:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "316:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "287:3:1"
},
"nodeType": "YulFunctionCall",
"src": "287:32:1"
},
"nodeType": "YulIf",
"src": "284:52:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "345:36:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "371:9:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "358:12:1"
},
"nodeType": "YulFunctionCall",
"src": "358:23:1"
},
"variables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "349:5:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "431:5:1"
}
],
"functionName": {
"name": "validator_revert_contract_CalledContract",
"nodeType": "YulIdentifier",
"src": "390:40:1"
},
"nodeType": "YulFunctionCall",
"src": "390:47:1"
},
"nodeType": "YulExpressionStatement",
"src": "390:47:1"
},
{
"nodeType": "YulAssignment",
"src": "446:15:1",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "456:5:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "446:6:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "470:42:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "497:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "508:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "493:3:1"
},
"nodeType": "YulFunctionCall",
"src": "493:18:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "480:12:1"
},
"nodeType": "YulFunctionCall",
"src": "480:32:1"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "470:6:1"
}
]
}
]
},
"name": "abi_decode_tuple_t_contract$_CalledContract_$43t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "232:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "243:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "255:6:1",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "263:6:1",
"type": ""
}
],
"src": "166:352:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "610:244:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "656:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "665:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "668:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "658:6:1"
},
"nodeType": "YulFunctionCall",
"src": "658:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "658:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "631:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "640:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "627:3:1"
},
"nodeType": "YulFunctionCall",
"src": "627:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "652:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "623:3:1"
},
"nodeType": "YulFunctionCall",
"src": "623:32:1"
},
"nodeType": "YulIf",
"src": "620:52:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "681:36:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "707:9:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "694:12:1"
},
"nodeType": "YulFunctionCall",
"src": "694:23:1"
},
"variables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "685:5:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "767:5:1"
}
],
"functionName": {
"name": "validator_revert_contract_CalledContract",
"nodeType": "YulIdentifier",
"src": "726:40:1"
},
"nodeType": "YulFunctionCall",
"src": "726:47:1"
},
"nodeType": "YulExpressionStatement",
"src": "726:47:1"
},
{
"nodeType": "YulAssignment",
"src": "782:15:1",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "792:5:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "782:6:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "806:42:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "833:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "844:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "829:3:1"
},
"nodeType": "YulFunctionCall",
"src": "829:18:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "816:12:1"
},
"nodeType": "YulFunctionCall",
"src": "816:32:1"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "806:6:1"
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "568:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "579:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "591:6:1",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "599:6:1",
"type": ""
}
],
"src": "523:331:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "960:76:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "970:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "982:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "993:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "978:3:1"
},
"nodeType": "YulFunctionCall",
"src": "978:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "970:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1012:9:1"
},
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1023:6:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1005:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1005:25:1"
},
"nodeType": "YulExpressionStatement",
"src": "1005:25:1"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "929:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "940:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "951:4:1",
"type": ""
}
],
"src": "859:177:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1122:103:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1168:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1177:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1180:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1170:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1170:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "1170:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1143:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1152:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1139:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1139:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1164:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "1135:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1135:32:1"
},
"nodeType": "YulIf",
"src": "1132:52:1"
},
{
"nodeType": "YulAssignment",
"src": "1193:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1209:9:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1203:5:1"
},
"nodeType": "YulFunctionCall",
"src": "1203:16:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1193:6:1"
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1088:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "1099:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1111:6:1",
"type": ""
}
],
"src": "1041:184:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1328:147:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1374:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1383:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1386:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1376:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1376:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "1376:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1349:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1358:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1345:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1345:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1370:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "1341:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1341:32:1"
},
"nodeType": "YulIf",
"src": "1338:52:1"
},
{
"nodeType": "YulAssignment",
"src": "1399:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1415:9:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1409:5:1"
},
"nodeType": "YulFunctionCall",
"src": "1409:16:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1399:6:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "1434:35:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1454:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1465:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1450:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1450:18:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1444:5:1"
},
"nodeType": "YulFunctionCall",
"src": "1444:25:1"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "1434:6:1"
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256t_uint256_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1286:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "1297:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1309:6:1",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "1317:6:1",
"type": ""
}
],
"src": "1230:245:1"
}
]
},
"contents": "{\n { }\n function validator_revert_contract_CalledContract(value)\n {\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_contract$_CalledContract_$43t_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_contract_CalledContract(value)\n value0 := value\n value1 := calldataload(add(headStart, 32))\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_contract_CalledContract(value)\n value0 := value\n value1 := calldataload(add(headStart, 32))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := mload(headStart)\n }\n function abi_decode_tuple_t_uint256t_uint256_fromMemory(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := mload(headStart)\n value1 := mload(add(headStart, 32))\n }\n}",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "6080604052600436106100345760003560e01c80634a2ad99f14610039578063cb5870391461005b578063d44abc421461007b575b600080fd5b34801561004557600080fd5b506100596100543660046101c6565b61008e565b005b34801561006757600080fd5b506100596100763660046101c6565b610103565b6100596100893660046101c6565b610132565b60405163200c6cd560e11b8152600481018290526000906001600160a01b03841690634018d9aa906024015b6020604051808303816000875af11580156100d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fd91906101f2565b50505050565b60405163200c6cd560e11b81526004810182905282906001600160a01b03821690634018d9aa906024016100ba565b600080836001600160a01b031663cdc2307634856040518363ffffffff1660e01b815260040161016491815260200190565b604080518083038185885af1158015610181573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906101a6919061020b565b505050505050565b6001600160a01b03811681146101c357600080fd5b50565b600080604083850312156101d957600080fd5b82356101e4816101ae565b946020939093013593505050565b60006020828403121561020457600080fd5b5051919050565b6000806040838503121561021e57600080fd5b50508051602090910151909290915056fea2646970667358221220d9841be0bef8b8836a23e77eb0ebd47c0445fba589c19d4e362cebbec2405b6a64736f6c634300080d0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x34 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4A2AD99F EQ PUSH2 0x39 JUMPI DUP1 PUSH4 0xCB587039 EQ PUSH2 0x5B JUMPI DUP1 PUSH4 0xD44ABC42 EQ PUSH2 0x7B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x59 PUSH2 0x54 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C6 JUMP JUMPDEST PUSH2 0x8E JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x59 PUSH2 0x76 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C6 JUMP JUMPDEST PUSH2 0x103 JUMP JUMPDEST PUSH2 0x59 PUSH2 0x89 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C6 JUMP JUMPDEST PUSH2 0x132 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x200C6CD5 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x4018D9AA SWAP1 PUSH1 0x24 ADD JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xFD SWAP2 SWAP1 PUSH2 0x1F2 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x200C6CD5 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE DUP3 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x4018D9AA SWAP1 PUSH1 0x24 ADD PUSH2 0xBA JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xCDC23076 CALLVALUE DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x164 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x181 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A6 SWAP2 SWAP1 PUSH2 0x20B JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1E4 DUP2 PUSH2 0x1AE JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x204 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x21E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD9 DUP5 SHL 0xE0 0xBE 0xF8 0xB8 DUP4 PUSH11 0x23E77EB0EBD47C0445FBA5 DUP10 0xC1 SWAP14 0x4E CALLDATASIZE 0x2C 0xEB 0xBE 0xC2 BLOCKHASH JUMPDEST PUSH11 0x64736F6C634300080D0033 ",
"sourceMap": "377:492:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;408:112;;;;;;;;;;-1:-1:-1;408:112:0;;;;;:::i;:::-;;:::i;:::-;;526:159;;;;;;;;;;-1:-1:-1;526:159:0;;;;;:::i;:::-;;:::i;691:176::-;;;;;;:::i;:::-;;:::i;408:112::-;489:24;;-1:-1:-1;;;489:24:0;;;;;1005:25:1;;;480:6:0;;-1:-1:-1;;;;;489:20:0;;;;;978:18:1;;489:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;408:112:0:o;526:159::-;655:23;;-1:-1:-1;;;655:23:0;;;;;1005:25:1;;;639:5:0;;-1:-1:-1;;;;;655:19:0;;;;;978:18:1;;655:23:0;859:177:1;691:176:0;784:6;792:10;806:15;-1:-1:-1;;;;;806:32:0;;846:9;857:2;806:54;;;;;;;;;;;;;1005:25:1;;993:2;978:18;;859:177;806:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;691:176:0:o;14:147:1:-;-1:-1:-1;;;;;105:31:1;;95:42;;85:70;;151:1;148;141:12;85:70;14:147;:::o;166:352::-;255:6;263;316:2;304:9;295:7;291:23;287:32;284:52;;;332:1;329;322:12;284:52;371:9;358:23;390:47;431:5;390:47;:::i;:::-;456:5;508:2;493:18;;;;480:32;;-1:-1:-1;;;166:352:1:o;1041:184::-;1111:6;1164:2;1152:9;1143:7;1139:23;1135:32;1132:52;;;1180:1;1177;1170:12;1132:52;-1:-1:-1;1203:16:1;;1041:184;-1:-1:-1;1041:184:1:o;1230:245::-;1309:6;1317;1370:2;1358:9;1349:7;1345:23;1341:32;1338:52;;;1386:1;1383;1376:12;1338:52;-1:-1:-1;;1409:16:1;;1465:2;1450:18;;;1444:25;1409:16;;1444:25;;-1:-1:-1;1230:245:1:o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "122600",
"executionCost": "171",
"totalCost": "122771"
},
"external": {
"setX(address,uint256)": "infinite",
"setXFromAddress(address,uint256)": "infinite",
"setXandSendEther(address,uint256)": "infinite"
}
},
"methodIdentifiers": {
"setX(address,uint256)": "4a2ad99f",
"setXFromAddress(address,uint256)": "cb587039",
"setXandSendEther(address,uint256)": "d44abc42"
}
},
"abi": [
{
"inputs": [
{
"internalType": "contract CalledContract",
"name": "_calledContract",
"type": "address"
},
{
"internalType": "uint256",
"name": "_x",
"type": "uint256"
}
],
"name": "setX",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_addr",
"type": "address"
},
{
"internalType": "uint256",
"name": "_x",
"type": "uint256"
}
],
"name": "setXFromAddress",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract CalledContract",
"name": "_calledContract",
"type": "address"
},
{
"internalType": "uint256",
"name": "_x",
"type": "uint256"
}
],
"name": "setXandSendEther",
"outputs": [],
"stateMutability": "payable",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.13+commit.abaa5c0e"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "contract CalledContract",
"name": "_calledContract",
"type": "address"
},
{
"internalType": "uint256",
"name": "_x",
"type": "uint256"
}
],
"name": "setX",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_addr",
"type": "address"
},
{
"internalType": "uint256",
"name": "_x",
"type": "uint256"
}
],
"name": "setXFromAddress",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract CalledContract",
"name": "_calledContract",
"type": "address"
},
{
"internalType": "uint256",
"name": "_x",
"type": "uint256"
}
],
"name": "setXandSendEther",
"outputs": [],
"stateMutability": "payable",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/CallContract.sol": "CallingContract"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/CallContract.sol": {
"keccak256": "0x7c1d57c9d79e52d1560e1f8acb03f41490f89991da3b00a5e3478479e0bf0c09",
"license": "MIT",
"urls": [
"bzz-raw://07f3136447650e6a1c95f423fa1cc79983b6aac8f395a6e92e4f12e784b33b5e",
"dweb:/ipfs/Qme7XcvvT76bviBNHXAAEutUd1HLXhHaFxtjaxfJRxdPGW"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "608060405234801561001057600080fd5b5060f38061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b60336047565b604051603e9190606b565b60405180910390f35b606060666040805180820190915260018152604360f81b602082015290565b905090565b600060208083528351808285015260005b81811015609657858101830151858201604001528201607c565b8181111560a7576000604083870101525b50601f01601f191692909201604001939250505056fea2646970667358221220bbb77db611505e8e5787bd43d465ca74c449dc7526518e1b8ed9923cd67029f964736f6c634300080d0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xF3 DUP1 PUSH2 0x1F 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 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC2985578 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x33 PUSH1 0x47 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x3E SWAP2 SWAP1 PUSH1 0x6B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x66 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x43 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH1 0x96 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH1 0x7C JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH1 0xA7 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBB 0xB7 PUSH30 0xB611505E8E5787BD43D465CA74C449DC7526518E1B8ED9923CD67029F964 PUSH20 0x6F6C634300080D00330000000000000000000000 ",
"sourceMap": "1123:155:0:-:0;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@foo_33": {
"entryPoint": null,
"id": 33,
"parameterSlots": 0,
"returnSlots": 1
},
"@foo_51": {
"entryPoint": 71,
"id": 51,
"parameterSlots": 0,
"returnSlots": 1
},
"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 107,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:613:1",
"statements": [
{
"nodeType": "YulBlock",
"src": "6:3:1",
"statements": []
},
{
"body": {
"nodeType": "YulBlock",
"src": "135:476:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "145:12:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "155:2:1",
"type": "",
"value": "32"
},
"variables": [
{
"name": "_1",
"nodeType": "YulTypedName",
"src": "149:2:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "173:9:1"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "184:2:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "166:6:1"
},
"nodeType": "YulFunctionCall",
"src": "166:21:1"
},
"nodeType": "YulExpressionStatement",
"src": "166:21:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "196:27:1",
"value": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "216:6:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "210:5:1"
},
"nodeType": "YulFunctionCall",
"src": "210:13:1"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "200:6:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "243:9:1"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "254:2:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "239:3:1"
},
"nodeType": "YulFunctionCall",
"src": "239:18:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "259:6:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "232:6:1"
},
"nodeType": "YulFunctionCall",
"src": "232:34:1"
},
"nodeType": "YulExpressionStatement",
"src": "232:34:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "275:10:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "284:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "279:1:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "344:90:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "373:9:1"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "384:1:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "369:3:1"
},
"nodeType": "YulFunctionCall",
"src": "369:17:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "388:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "365:3:1"
},
"nodeType": "YulFunctionCall",
"src": "365:26:1"
},
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "407:6:1"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "415:1:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "403:3:1"
},
"nodeType": "YulFunctionCall",
"src": "403:14:1"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "419:2:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "399:3:1"
},
"nodeType": "YulFunctionCall",
"src": "399:23:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "393:5:1"
},
"nodeType": "YulFunctionCall",
"src": "393:30:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "358:6:1"
},
"nodeType": "YulFunctionCall",
"src": "358:66:1"
},
"nodeType": "YulExpressionStatement",
"src": "358:66:1"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "305:1:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "308:6:1"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "302:2:1"
},
"nodeType": "YulFunctionCall",
"src": "302:13:1"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "316:19:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "318:15:1",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "327:1:1"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "330:2:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "323:3:1"
},
"nodeType": "YulFunctionCall",
"src": "323:10:1"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "318:1:1"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "298:3:1",
"statements": []
},
"src": "294:140:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "468:66:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "497:9:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "508:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "493:3:1"
},
"nodeType": "YulFunctionCall",
"src": "493:22:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "517:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "489:3:1"
},
"nodeType": "YulFunctionCall",
"src": "489:31:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "522:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "482:6:1"
},
"nodeType": "YulFunctionCall",
"src": "482:42:1"
},
"nodeType": "YulExpressionStatement",
"src": "482:42:1"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "449:1:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "452:6:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "446:2:1"
},
"nodeType": "YulFunctionCall",
"src": "446:13:1"
},
"nodeType": "YulIf",
"src": "443:91:1"
},
{
"nodeType": "YulAssignment",
"src": "543:62:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "559:9:1"
},
{
"arguments": [
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "578:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "586:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "574:3:1"
},
"nodeType": "YulFunctionCall",
"src": "574:15:1"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "595:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "591:3:1"
},
"nodeType": "YulFunctionCall",
"src": "591:7:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "570:3:1"
},
"nodeType": "YulFunctionCall",
"src": "570:29:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "555:3:1"
},
"nodeType": "YulFunctionCall",
"src": "555:45:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "602:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "551:3:1"
},
"nodeType": "YulFunctionCall",
"src": "551:54:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "543:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "104:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "115:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "126:4:1",
"type": ""
}
],
"src": "14:597:1"
}
]
},
"contents": "{\n { }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n mstore(headStart, _1)\n let length := mload(value0)\n mstore(add(headStart, _1), length)\n let i := 0\n for { } lt(i, length) { i := add(i, _1) }\n {\n mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n }\n if gt(i, length)\n {\n mstore(add(add(headStart, length), 64), 0)\n }\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n}",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b60336047565b604051603e9190606b565b60405180910390f35b606060666040805180820190915260018152604360f81b602082015290565b905090565b600060208083528351808285015260005b81811015609657858101830151858201604001528201607c565b8181111560a7576000604083870101525b50601f01601f191692909201604001939250505056fea2646970667358221220bbb77db611505e8e5787bd43d465ca74c449dc7526518e1b8ed9923cd67029f964736f6c634300080d0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC2985578 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x33 PUSH1 0x47 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x3E SWAP2 SWAP1 PUSH1 0x6B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x66 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x43 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH1 0x96 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH1 0x7C JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH1 0xA7 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBB 0xB7 PUSH30 0xB611505E8E5787BD43D465CA74C449DC7526518E1B8ED9923CD67029F964 PUSH20 0x6F6C634300080D00330000000000000000000000 ",
"sourceMap": "1123:155:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1175:101;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;1226:13;1258:11;877:10;;;;;;;;;;;;-1:-1:-1;;;877:10:0;;;;;799:95;1258:11;1251:18;;1175:101;:::o;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "48600",
"executionCost": "99",
"totalCost": "48699"
},
"external": {
"foo()": "infinite"
}
},
"methodIdentifiers": {
"foo()": "c2985578"
}
},
"abi": [
{
"inputs": [],
"name": "foo",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "pure",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.13+commit.abaa5c0e"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [],
"name": "foo",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "pure",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/Inheritance.sol": "D"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/Inheritance.sol": {
"keccak256": "0x3ac07eb1f8f22b03dd0c7bf841e4bd44d01f1671337dbbefe1d73e08a79e4fdd",
"license": "MIT",
"urls": [
"bzz-raw://782849c13e7b356887aa845822d41e5cfeeb518709a7333a5626ce618094b26e",
"dweb:/ipfs/QmQTp3vawZnzXirtJajDnmtKVFMtbTCZXJWFSCnwbE7pKT"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "608060405234801561001057600080fd5b5060f38061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b60336047565b604051603e9190606b565b60405180910390f35b606060666040805180820190915260018152602160f91b602082015290565b905090565b600060208083528351808285015260005b81811015609657858101830151858201604001528201607c565b8181111560a7576000604083870101525b50601f01601f191692909201604001939250505056fea2646970667358221220b668d1af5da48db52aadaf28686c130a63df607dc250985e0f09ec3c6e5f0a9964736f6c634300080d0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xF3 DUP1 PUSH2 0x1F 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 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC2985578 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x33 PUSH1 0x47 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x3E SWAP2 SWAP1 PUSH1 0x6B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x66 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x21 PUSH1 0xF9 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH1 0x96 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH1 0x7C JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH1 0xA7 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB6 PUSH9 0xD1AF5DA48DB52AADAF 0x28 PUSH9 0x6C130A63DF607DC250 SWAP9 0x5E 0xF MULMOD 0xEC EXTCODECOPY PUSH15 0x5F0A9964736F6C634300080D003300 ",
"sourceMap": "1280:155:0:-:0;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@foo_21": {
"entryPoint": null,
"id": 21,
"parameterSlots": 0,
"returnSlots": 1
},
"@foo_69": {
"entryPoint": 71,
"id": 69,
"parameterSlots": 0,
"returnSlots": 1
},
"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 107,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:613:1",
"statements": [
{
"nodeType": "YulBlock",
"src": "6:3:1",
"statements": []
},
{
"body": {
"nodeType": "YulBlock",
"src": "135:476:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "145:12:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "155:2:1",
"type": "",
"value": "32"
},
"variables": [
{
"name": "_1",
"nodeType": "YulTypedName",
"src": "149:2:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "173:9:1"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "184:2:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "166:6:1"
},
"nodeType": "YulFunctionCall",
"src": "166:21:1"
},
"nodeType": "YulExpressionStatement",
"src": "166:21:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "196:27:1",
"value": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "216:6:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "210:5:1"
},
"nodeType": "YulFunctionCall",
"src": "210:13:1"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "200:6:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "243:9:1"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "254:2:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "239:3:1"
},
"nodeType": "YulFunctionCall",
"src": "239:18:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "259:6:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "232:6:1"
},
"nodeType": "YulFunctionCall",
"src": "232:34:1"
},
"nodeType": "YulExpressionStatement",
"src": "232:34:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "275:10:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "284:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "279:1:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "344:90:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "373:9:1"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "384:1:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "369:3:1"
},
"nodeType": "YulFunctionCall",
"src": "369:17:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "388:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "365:3:1"
},
"nodeType": "YulFunctionCall",
"src": "365:26:1"
},
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "407:6:1"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "415:1:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "403:3:1"
},
"nodeType": "YulFunctionCall",
"src": "403:14:1"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "419:2:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "399:3:1"
},
"nodeType": "YulFunctionCall",
"src": "399:23:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "393:5:1"
},
"nodeType": "YulFunctionCall",
"src": "393:30:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "358:6:1"
},
"nodeType": "YulFunctionCall",
"src": "358:66:1"
},
"nodeType": "YulExpressionStatement",
"src": "358:66:1"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "305:1:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "308:6:1"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "302:2:1"
},
"nodeType": "YulFunctionCall",
"src": "302:13:1"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "316:19:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "318:15:1",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "327:1:1"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "330:2:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "323:3:1"
},
"nodeType": "YulFunctionCall",
"src": "323:10:1"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "318:1:1"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "298:3:1",
"statements": []
},
"src": "294:140:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "468:66:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "497:9:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "508:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "493:3:1"
},
"nodeType": "YulFunctionCall",
"src": "493:22:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "517:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "489:3:1"
},
"nodeType": "YulFunctionCall",
"src": "489:31:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "522:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "482:6:1"
},
"nodeType": "YulFunctionCall",
"src": "482:42:1"
},
"nodeType": "YulExpressionStatement",
"src": "482:42:1"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "449:1:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "452:6:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "446:2:1"
},
"nodeType": "YulFunctionCall",
"src": "446:13:1"
},
"nodeType": "YulIf",
"src": "443:91:1"
},
{
"nodeType": "YulAssignment",
"src": "543:62:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "559:9:1"
},
{
"arguments": [
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "578:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "586:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "574:3:1"
},
"nodeType": "YulFunctionCall",
"src": "574:15:1"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "595:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "591:3:1"
},
"nodeType": "YulFunctionCall",
"src": "591:7:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "570:3:1"
},
"nodeType": "YulFunctionCall",
"src": "570:29:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "555:3:1"
},
"nodeType": "YulFunctionCall",
"src": "555:45:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "602:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "551:3:1"
},
"nodeType": "YulFunctionCall",
"src": "551:54:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "543:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "104:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "115:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "126:4:1",
"type": ""
}
],
"src": "14:597:1"
}
]
},
"contents": "{\n { }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n mstore(headStart, _1)\n let length := mload(value0)\n mstore(add(headStart, _1), length)\n let i := 0\n for { } lt(i, length) { i := add(i, _1) }\n {\n mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n }\n if gt(i, length)\n {\n mstore(add(add(headStart, length), 64), 0)\n }\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n}",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b60336047565b604051603e9190606b565b60405180910390f35b606060666040805180820190915260018152602160f91b602082015290565b905090565b600060208083528351808285015260005b81811015609657858101830151858201604001528201607c565b8181111560a7576000604083870101525b50601f01601f191692909201604001939250505056fea2646970667358221220b668d1af5da48db52aadaf28686c130a63df607dc250985e0f09ec3c6e5f0a9964736f6c634300080d0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC2985578 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x33 PUSH1 0x47 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x3E SWAP2 SWAP1 PUSH1 0x6B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x66 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x21 PUSH1 0xF9 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH1 0x96 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH1 0x7C JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH1 0xA7 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB6 PUSH9 0xD1AF5DA48DB52AADAF 0x28 PUSH9 0x6C130A63DF607DC250 SWAP9 0x5E 0xF MULMOD 0xEC EXTCODECOPY PUSH15 0x5F0A9964736F6C634300080D003300 ",
"sourceMap": "1280:155:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1332:101;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;1383:13;1415:11;732:10;;;;;;;;;;;;-1:-1:-1;;;732:10:0;;;;;654:95;1415:11;1408:18;;1332:101;:::o;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "48600",
"executionCost": "99",
"totalCost": "48699"
},
"external": {
"foo()": "infinite"
}
},
"methodIdentifiers": {
"foo()": "c2985578"
}
},
"abi": [
{
"inputs": [],
"name": "foo",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "pure",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.13+commit.abaa5c0e"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [],
"name": "foo",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "pure",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/Inheritance.sol": "E"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/Inheritance.sol": {
"keccak256": "0x3ac07eb1f8f22b03dd0c7bf841e4bd44d01f1671337dbbefe1d73e08a79e4fdd",
"license": "MIT",
"urls": [
"bzz-raw://782849c13e7b356887aa845822d41e5cfeeb518709a7333a5626ce618094b26e",
"dweb:/ipfs/QmQTp3vawZnzXirtJajDnmtKVFMtbTCZXJWFSCnwbE7pKT"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "608060405234801561001057600080fd5b5060f38061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b60336047565b604051603e9190606b565b60405180910390f35b606060666040805180820190915260018152602160f91b602082015290565b905090565b600060208083528351808285015260005b81811015609657858101830151858201604001528201607c565b8181111560a7576000604083870101525b50601f01601f191692909201604001939250505056fea264697066735822122060e70e2c1a1f990a5a4eee875d88589e58cf90c3df05bd99c98d2848bc6d208b64736f6c634300080d0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xF3 DUP1 PUSH2 0x1F 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 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC2985578 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x33 PUSH1 0x47 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x3E SWAP2 SWAP1 PUSH1 0x6B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x66 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x21 PUSH1 0xF9 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH1 0x96 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH1 0x7C JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH1 0xA7 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH1 0xE7 0xE 0x2C BYTE 0x1F SWAP10 EXP GAS 0x4E 0xEE DUP8 0x5D DUP9 PC SWAP15 PC 0xCF SWAP1 0xC3 0xDF SDIV 0xBD SWAP10 0xC9 DUP14 0x28 BASEFEE 0xBC PUSH14 0x208B64736F6C634300080D003300 ",
"sourceMap": "1582:128:0:-:0;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@foo_21": {
"entryPoint": null,
"id": 21,
"parameterSlots": 0,
"returnSlots": 1
},
"@foo_87": {
"entryPoint": 71,
"id": 87,
"parameterSlots": 0,
"returnSlots": 1
},
"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 107,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:613:1",
"statements": [
{
"nodeType": "YulBlock",
"src": "6:3:1",
"statements": []
},
{
"body": {
"nodeType": "YulBlock",
"src": "135:476:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "145:12:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "155:2:1",
"type": "",
"value": "32"
},
"variables": [
{
"name": "_1",
"nodeType": "YulTypedName",
"src": "149:2:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "173:9:1"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "184:2:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "166:6:1"
},
"nodeType": "YulFunctionCall",
"src": "166:21:1"
},
"nodeType": "YulExpressionStatement",
"src": "166:21:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "196:27:1",
"value": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "216:6:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "210:5:1"
},
"nodeType": "YulFunctionCall",
"src": "210:13:1"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "200:6:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "243:9:1"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "254:2:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "239:3:1"
},
"nodeType": "YulFunctionCall",
"src": "239:18:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "259:6:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "232:6:1"
},
"nodeType": "YulFunctionCall",
"src": "232:34:1"
},
"nodeType": "YulExpressionStatement",
"src": "232:34:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "275:10:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "284:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "279:1:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "344:90:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "373:9:1"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "384:1:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "369:3:1"
},
"nodeType": "YulFunctionCall",
"src": "369:17:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "388:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "365:3:1"
},
"nodeType": "YulFunctionCall",
"src": "365:26:1"
},
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "407:6:1"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "415:1:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "403:3:1"
},
"nodeType": "YulFunctionCall",
"src": "403:14:1"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "419:2:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "399:3:1"
},
"nodeType": "YulFunctionCall",
"src": "399:23:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "393:5:1"
},
"nodeType": "YulFunctionCall",
"src": "393:30:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "358:6:1"
},
"nodeType": "YulFunctionCall",
"src": "358:66:1"
},
"nodeType": "YulExpressionStatement",
"src": "358:66:1"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "305:1:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "308:6:1"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "302:2:1"
},
"nodeType": "YulFunctionCall",
"src": "302:13:1"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "316:19:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "318:15:1",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "327:1:1"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "330:2:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "323:3:1"
},
"nodeType": "YulFunctionCall",
"src": "323:10:1"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "318:1:1"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "298:3:1",
"statements": []
},
"src": "294:140:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "468:66:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "497:9:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "508:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "493:3:1"
},
"nodeType": "YulFunctionCall",
"src": "493:22:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "517:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "489:3:1"
},
"nodeType": "YulFunctionCall",
"src": "489:31:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "522:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "482:6:1"
},
"nodeType": "YulFunctionCall",
"src": "482:42:1"
},
"nodeType": "YulExpressionStatement",
"src": "482:42:1"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "449:1:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "452:6:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "446:2:1"
},
"nodeType": "YulFunctionCall",
"src": "446:13:1"
},
"nodeType": "YulIf",
"src": "443:91:1"
},
{
"nodeType": "YulAssignment",
"src": "543:62:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "559:9:1"
},
{
"arguments": [
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "578:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "586:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "574:3:1"
},
"nodeType": "YulFunctionCall",
"src": "574:15:1"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "595:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "591:3:1"
},
"nodeType": "YulFunctionCall",
"src": "591:7:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "570:3:1"
},
"nodeType": "YulFunctionCall",
"src": "570:29:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "555:3:1"
},
"nodeType": "YulFunctionCall",
"src": "555:45:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "602:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "551:3:1"
},
"nodeType": "YulFunctionCall",
"src": "551:54:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "543:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "104:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "115:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "126:4:1",
"type": ""
}
],
"src": "14:597:1"
}
]
},
"contents": "{\n { }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n mstore(headStart, _1)\n let length := mload(value0)\n mstore(add(headStart, _1), length)\n let i := 0\n for { } lt(i, length) { i := add(i, _1) }\n {\n mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n }\n if gt(i, length)\n {\n mstore(add(add(headStart, length), 64), 0)\n }\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n}",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b60336047565b604051603e9190606b565b60405180910390f35b606060666040805180820190915260018152602160f91b602082015290565b905090565b600060208083528351808285015260005b81811015609657858101830151858201604001528201607c565b8181111560a7576000604083870101525b50601f01601f191692909201604001939250505056fea264697066735822122060e70e2c1a1f990a5a4eee875d88589e58cf90c3df05bd99c98d2848bc6d208b64736f6c634300080d0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC2985578 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x33 PUSH1 0x47 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x3E SWAP2 SWAP1 PUSH1 0x6B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x66 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x21 PUSH1 0xF9 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH1 0x96 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH1 0x7C JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH1 0xA7 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH1 0xE7 0xE 0x2C BYTE 0x1F SWAP10 EXP GAS 0x4E 0xEE DUP8 0x5D DUP9 PC SWAP15 PC 0xCF SWAP1 0xC3 0xDF SDIV 0xBD SWAP10 0xC9 DUP14 0x28 BASEFEE 0xBC PUSH14 0x208B64736F6C634300080D003300 ",
"sourceMap": "1582:128:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1607:101;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;1658:13;1690:11;732:10;;;;;;;;;;;;-1:-1:-1;;;732:10:0;;;;;654:95;1690:11;1683:18;;1607:101;:::o;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "48600",
"executionCost": "99",
"totalCost": "48699"
},
"external": {
"foo()": "infinite"
}
},
"methodIdentifiers": {
"foo()": "c2985578"
}
},
"abi": [
{
"inputs": [],
"name": "foo",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "pure",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.13+commit.abaa5c0e"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [],
"name": "foo",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "pure",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/Inheritance.sol": "F"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/Inheritance.sol": {
"keccak256": "0x3ac07eb1f8f22b03dd0c7bf841e4bd44d01f1671337dbbefe1d73e08a79e4fdd",
"license": "MIT",
"urls": [
"bzz-raw://782849c13e7b356887aa845822d41e5cfeeb518709a7333a5626ce618094b26e",
"dweb:/ipfs/QmQTp3vawZnzXirtJajDnmtKVFMtbTCZXJWFSCnwbE7pKT"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {
"@_9": {
"entryPoint": null,
"id": 9,
"parameterSlots": 0,
"returnSlots": 0
}
},
"generatedSources": [],
"linkReferences": {},
"object": "608060405260a6806100126000396000f3fe608060405260043610601c5760003560e01c806312065fe0146051575b7f909c57d5c6ac08245cf2a6de3900e2b868513fa59099b92b27d8db823d92df9c5a60405190815260200160405180910390a1005b348015605c57600080fd5b504760405190815260200160405180910390f3fea2646970667358221220f412f0438fe92e750abbf190b6619c12902b30d04269c5ce4f927b630445fbc964736f6c634300080d0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0xA6 DUP1 PUSH2 0x12 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x1C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x12065FE0 EQ PUSH1 0x51 JUMPI JUMPDEST PUSH32 0x909C57D5C6AC08245CF2A6DE3900E2B868513FA59099B92B27D8DB823D92DF9C GAS PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH1 0x5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SELFBALANCE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DELEGATECALL SLT CREATE NUMBER DUP16 0xE9 0x2E PUSH22 0xABBF190B6619C12902B30D04269C5CE4F927B630445 0xFB 0xC9 PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ",
"sourceMap": "316:476:0:-:0;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@_18": {
"entryPoint": null,
"id": 18,
"parameterSlots": 0,
"returnSlots": 0
},
"@getBalance_30": {
"entryPoint": null,
"id": 30,
"parameterSlots": 0,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:193:1",
"statements": [
{
"nodeType": "YulBlock",
"src": "6:3:1",
"statements": []
},
{
"body": {
"nodeType": "YulBlock",
"src": "115:76:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "125:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "137:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "148:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "133:3:1"
},
"nodeType": "YulFunctionCall",
"src": "133:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "125:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "167:9:1"
},
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "178:6:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "160:6:1"
},
"nodeType": "YulFunctionCall",
"src": "160:25:1"
},
"nodeType": "YulExpressionStatement",
"src": "160:25:1"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "84:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "95:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "106:4:1",
"type": ""
}
],
"src": "14:177:1"
}
]
},
"contents": "{\n { }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n}",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "608060405260043610601c5760003560e01c806312065fe0146051575b7f909c57d5c6ac08245cf2a6de3900e2b868513fa59099b92b27d8db823d92df9c5a60405190815260200160405180910390a1005b348015605c57600080fd5b504760405190815260200160405180910390f3fea2646970667358221220f412f0438fe92e750abbf190b6619c12902b30d04269c5ce4f927b630445fbc964736f6c634300080d0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x1C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x12065FE0 EQ PUSH1 0x51 JUMPI JUMPDEST PUSH32 0x909C57D5C6AC08245CF2A6DE3900E2B868513FA59099B92B27D8DB823D92DF9C GAS PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH1 0x5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SELFBALANCE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DELEGATECALL SLT CREATE NUMBER DUP16 0xE9 0x2E PUSH22 0xABBF190B6619C12902B30D04269C5CE4F927B630445 0xFB 0xC9 PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ",
"sourceMap": "316:476:0:-:0;;;;;;;;;;;;;;;;;;608:14;612:9;608:14;;160:25:1;;;148:2;133:18;608:14:0;;;;;;;316:476;696:94;;;;;;;;;;-1:-1:-1;762:21:0;696:94;;160:25:1;;;148:2;133:18;696:94:0;;;;;;"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "33200",
"executionCost": "63",
"totalCost": "33263"
},
"external": {
"": "1130",
"getBalance()": "148"
}
},
"methodIdentifiers": {
"getBalance()": "12065fe0"
}
},
"abi": [
{
"inputs": [],
"stateMutability": "payable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "gas",
"type": "uint256"
}
],
"name": "Log",
"type": "event"
},
{
"stateMutability": "payable",
"type": "fallback"
},
{
"inputs": [],
"name": "getBalance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.13+commit.abaa5c0e"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [],
"stateMutability": "payable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "gas",
"type": "uint256"
}
],
"name": "Log",
"type": "event"
},
{
"stateMutability": "payable",
"type": "fallback"
},
{
"inputs": [],
"name": "getBalance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/Fallback.sol": "Fallback"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/Fallback.sol": {
"keccak256": "0x760b7fdb2677f3a68235c78afdd23a6391a201a9c4535b3be1f9d80147e5720e",
"license": "MIT",
"urls": [
"bzz-raw://6885c6674e450d05a09635d67229707cec222fbd04a241b9270f31a377fda4ca",
"dweb:/ipfs/QmVFNYyULxeurnWo2BZo7m184cFoJT7264PoZa1GG4PTmJ"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220382f14a10e77b75c9bcbbf637a206e36259cd67c85210647c42b83685d2868dd64736f6c634300080d0033",
"opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CODESIZE 0x2F EQ LOG1 0xE PUSH24 0xB75C9BCBBF637A206E36259CD67C85210647C42B83685D28 PUSH9 0xDD64736F6C63430008 0xD STOP CALLER ",
"sourceMap": "236:204:0:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;236:204:0;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220382f14a10e77b75c9bcbbf637a206e36259cd67c85210647c42b83685d2868dd64736f6c634300080d0033",
"opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CODESIZE 0x2F EQ LOG1 0xE PUSH24 0xB75C9BCBBF637A206E36259CD67C85210647C42B83685D28 PUSH9 0xDD64736F6C63430008 0xD STOP CALLER ",
"sourceMap": "236:204:0:-:0;;;;;;;;"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "17200",
"executionCost": "103",
"totalCost": "17303"
},
"internal": {
"multiply(uint256,uint256)": "infinite"
}
},
"methodIdentifiers": {}
},
"abi": []
}
{
"compiler": {
"version": "0.8.13+commit.abaa5c0e"
},
"language": "Solidity",
"output": {
"abi": [],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/Libraries.sol": "Math"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/Libraries.sol": {
"keccak256": "0xefb9c44ffde11a3f8baf0737c65c2b29110ce46a17a28e71f8163781327a234e",
"license": "MIT",
"urls": [
"bzz-raw://8d34489b92921b8366816835ebe77622dba4644404f18a0313393588db20cc27",
"dweb:/ipfs/QmWHZa6n2Mn5AD23SBRveYyiUx2gW3Ne8iD3MN2BvkD2H3"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {
"@_15": {
"entryPoint": null,
"id": 15,
"parameterSlots": 0,
"returnSlots": 0
}
},
"generatedSources": [],
"linkReferences": {},
"object": "6080604052600080546001600160a01b031916331790556101d1806100256000396000f3fe6080604052600436106100555760003560e01c8063273884bd1461005a5780633ccfd60b1461006a578063590791f21461007f5780636f9fb98a146100ad5780638da5cb5b146100c0578063d0e30db014610068575b600080fd5b34801561006657600080fd5b505b005b34801561007657600080fd5b506100686100f8565b34801561008b57600080fd5b506000546001600160a01b0316315b6040519081526020015b60405180910390f35b3480156100b957600080fd5b504761009a565b3480156100cc57600080fd5b506000546100e0906001600160a01b031681565b6040516001600160a01b0390911681526020016100a4565b600080546040514792916001600160a01b03169083908381818185875af1925050503d8060008114610146576040519150601f19603f3d011682016040523d82523d6000602084013e61014b565b606091505b50509050806101975760405162461bcd60e51b81526020600482015260146024820152732330b4b632b2103a379039b2b7321022ba3432b960611b604482015260640160405180910390fd5b505056fea2646970667358221220636d8c639e3d2eb51ea95106dc3f94dfc2816ce33f53f4937d2a0ed09c8460ec64736f6c634300080d0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER OR SWAP1 SSTORE PUSH2 0x1D1 DUP1 PUSH2 0x25 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x55 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x273884BD EQ PUSH2 0x5A JUMPI DUP1 PUSH4 0x3CCFD60B EQ PUSH2 0x6A JUMPI DUP1 PUSH4 0x590791F2 EQ PUSH2 0x7F JUMPI DUP1 PUSH4 0x6F9FB98A EQ PUSH2 0xAD JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xC0 JUMPI DUP1 PUSH4 0xD0E30DB0 EQ PUSH2 0x68 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x68 PUSH2 0xF8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND BALANCE JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SELFBALANCE PUSH2 0x9A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH2 0xE0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA4 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD SELFBALANCE SWAP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP4 SWAP1 DUP4 DUP2 DUP2 DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x146 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x14B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x197 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x2330B4B632B2103A379039B2B7321022BA3432B9 PUSH1 0x61 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH4 0x6D8C639E RETURNDATASIZE 0x2E 0xB5 0x1E 0xA9 MLOAD MOD 0xDC EXTCODEHASH SWAP5 0xDF 0xC2 DUP2 PUSH13 0xE33F53F4937D2A0ED09C8460EC PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ",
"sourceMap": "58:968:0:-:0;;;260:5;:27;;-1:-1:-1;;;;;;260:27:0;276:10;260:27;;;58:968;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@deposit_19": {
"entryPoint": null,
"id": 19,
"parameterSlots": 0,
"returnSlots": 0
},
"@getContractBalance_61": {
"entryPoint": null,
"id": 61,
"parameterSlots": 0,
"returnSlots": 1
},
"@getOwnerBalance_73": {
"entryPoint": null,
"id": 73,
"parameterSlots": 0,
"returnSlots": 1
},
"@notPayable_23": {
"entryPoint": null,
"id": 23,
"parameterSlots": 0,
"returnSlots": 0
},
"@owner_3": {
"entryPoint": null,
"id": 3,
"parameterSlots": 0,
"returnSlots": 0
},
"@withdraw_49": {
"entryPoint": 248,
"id": 49,
"parameterSlots": 0,
"returnSlots": 0
},
"abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_address_payable__to_t_address_payable__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_445140255c9d889994129d349e64078d6f76b4b37ec896948f7e858f9b8a0dcb__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:976:1",
"statements": [
{
"nodeType": "YulBlock",
"src": "6:3:1",
"statements": []
},
{
"body": {
"nodeType": "YulBlock",
"src": "115:76:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "125:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "137:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "148:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "133:3:1"
},
"nodeType": "YulFunctionCall",
"src": "133:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "125:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "167:9:1"
},
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "178:6:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "160:6:1"
},
"nodeType": "YulFunctionCall",
"src": "160:25:1"
},
"nodeType": "YulExpressionStatement",
"src": "160:25:1"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "84:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "95:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "106:4:1",
"type": ""
}
],
"src": "14:177:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "313:102:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "323:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "335:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "346:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "331:3:1"
},
"nodeType": "YulFunctionCall",
"src": "331:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "323:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "365:9:1"
},
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "380:6:1"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "396:3:1",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "401:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "392:3:1"
},
"nodeType": "YulFunctionCall",
"src": "392:11:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "405:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "388:3:1"
},
"nodeType": "YulFunctionCall",
"src": "388:19:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "376:3:1"
},
"nodeType": "YulFunctionCall",
"src": "376:32:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "358:6:1"
},
"nodeType": "YulFunctionCall",
"src": "358:51:1"
},
"nodeType": "YulExpressionStatement",
"src": "358:51:1"
}
]
},
"name": "abi_encode_tuple_t_address_payable__to_t_address_payable__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "282:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "293:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "304:4:1",
"type": ""
}
],
"src": "196:219:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "611:14:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "613:10:1",
"value": {
"name": "pos",
"nodeType": "YulIdentifier",
"src": "620:3:1"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "613:3:1"
}
]
}
]
},
"name": "abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "595:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "603:3:1",
"type": ""
}
],
"src": "420:205:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "804:170:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "821:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "832:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "814:6:1"
},
"nodeType": "YulFunctionCall",
"src": "814:21:1"
},
"nodeType": "YulExpressionStatement",
"src": "814:21:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "855:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "866:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "851:3:1"
},
"nodeType": "YulFunctionCall",
"src": "851:18:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "871:2:1",
"type": "",
"value": "20"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "844:6:1"
},
"nodeType": "YulFunctionCall",
"src": "844:30:1"
},
"nodeType": "YulExpressionStatement",
"src": "844:30:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "894:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "905:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "890:3:1"
},
"nodeType": "YulFunctionCall",
"src": "890:18:1"
},
{
"hexValue": "4661696c656420746f2073656e64204574686572",
"kind": "string",
"nodeType": "YulLiteral",
"src": "910:22:1",
"type": "",
"value": "Failed to send Ether"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "883:6:1"
},
"nodeType": "YulFunctionCall",
"src": "883:50:1"
},
"nodeType": "YulExpressionStatement",
"src": "883:50:1"
},
{
"nodeType": "YulAssignment",
"src": "942:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "954:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "965:2:1",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "950:3:1"
},
"nodeType": "YulFunctionCall",
"src": "950:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "942:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_445140255c9d889994129d349e64078d6f76b4b37ec896948f7e858f9b8a0dcb__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "781:9:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "795:4:1",
"type": ""
}
],
"src": "630:344:1"
}
]
},
"contents": "{\n { }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_address_payable__to_t_address_payable__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n { end := pos }\n function abi_encode_tuple_t_stringliteral_445140255c9d889994129d349e64078d6f76b4b37ec896948f7e858f9b8a0dcb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 20)\n mstore(add(headStart, 64), \"Failed to send Ether\")\n tail := add(headStart, 96)\n }\n}",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "6080604052600436106100555760003560e01c8063273884bd1461005a5780633ccfd60b1461006a578063590791f21461007f5780636f9fb98a146100ad5780638da5cb5b146100c0578063d0e30db014610068575b600080fd5b34801561006657600080fd5b505b005b34801561007657600080fd5b506100686100f8565b34801561008b57600080fd5b506000546001600160a01b0316315b6040519081526020015b60405180910390f35b3480156100b957600080fd5b504761009a565b3480156100cc57600080fd5b506000546100e0906001600160a01b031681565b6040516001600160a01b0390911681526020016100a4565b600080546040514792916001600160a01b03169083908381818185875af1925050503d8060008114610146576040519150601f19603f3d011682016040523d82523d6000602084013e61014b565b606091505b50509050806101975760405162461bcd60e51b81526020600482015260146024820152732330b4b632b2103a379039b2b7321022ba3432b960611b604482015260640160405180910390fd5b505056fea2646970667358221220636d8c639e3d2eb51ea95106dc3f94dfc2816ce33f53f4937d2a0ed09c8460ec64736f6c634300080d0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x55 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x273884BD EQ PUSH2 0x5A JUMPI DUP1 PUSH4 0x3CCFD60B EQ PUSH2 0x6A JUMPI DUP1 PUSH4 0x590791F2 EQ PUSH2 0x7F JUMPI DUP1 PUSH4 0x6F9FB98A EQ PUSH2 0xAD JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xC0 JUMPI DUP1 PUSH4 0xD0E30DB0 EQ PUSH2 0x68 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x68 PUSH2 0xF8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND BALANCE JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SELFBALANCE PUSH2 0x9A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH2 0xE0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA4 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD SELFBALANCE SWAP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP4 SWAP1 DUP4 DUP2 DUP2 DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x146 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x14B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x197 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x2330B4B632B2103A379039B2B7321022BA3432B9 PUSH1 0x61 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH4 0x6D8C639E RETURNDATASIZE 0x2E 0xB5 0x1E 0xA9 MLOAD MOD 0xDC EXTCODEHASH SWAP5 0xDF 0xC2 DUP2 PUSH13 0xE33F53F4937D2A0ED09C8460EC PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ",
"sourceMap": "58:968:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;469:31;;;;;;;;;;;;;564:242;;;;;;;;;;;;;:::i;922:102::-;;;;;;;;;;-1:-1:-1;972:4:0;1003:5;-1:-1:-1;;;;;1003:5:0;995:22;922:102;;;160:25:1;;;148:2;133:18;922:102:0;;;;;;;;812:104;;;;;;;;;;-1:-1:-1;888:21:0;812:104;;122:28;;;;;;;;;;-1:-1:-1;122:28:0;;;;-1:-1:-1;;;;;122:28:0;;;;;;-1:-1:-1;;;;;376:32:1;;;358:51;;346:2;331:18;122:28:0;196:219:1;564:242:0;602:11;720:5;;:29;;616:21;;602:11;-1:-1:-1;;;;;720:5:0;;616:21;;602:11;720:29;602:11;720:29;616:21;720:5;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;701:48;;;767:7;759:40;;;;-1:-1:-1;;;759:40:0;;832:2:1;759:40:0;;;814:21:1;871:2;851:18;;;844:30;-1:-1:-1;;;890:18:1;;;883:50;950:18;;759:40:0;;;;;;;;591:215;;564:242::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "93000",
"executionCost": "24352",
"totalCost": "117352"
},
"external": {
"deposit()": "184",
"getContractBalance()": "227",
"getOwnerBalance()": "4910",
"notPayable()": "101",
"owner()": "2403",
"withdraw()": "infinite"
}
},
"methodIdentifiers": {
"deposit()": "d0e30db0",
"getContractBalance()": "6f9fb98a",
"getOwnerBalance()": "590791f2",
"notPayable()": "273884bd",
"owner()": "8da5cb5b",
"withdraw()": "3ccfd60b"
}
},
"abi": [
{
"inputs": [],
"stateMutability": "payable",
"type": "constructor"
},
{
"inputs": [],
"name": "deposit",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [],
"name": "getContractBalance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getOwnerBalance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "notPayable",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address payable",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "withdraw",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.13+commit.abaa5c0e"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [],
"stateMutability": "payable",
"type": "constructor"
},
{
"inputs": [],
"name": "deposit",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [],
"name": "getContractBalance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getOwnerBalance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "notPayable",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address payable",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "withdraw",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/Payable.sol": "Payable"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/Payable.sol": {
"keccak256": "0x1ec0718c91f7818d1ee0996c9c6ae64e5e41dcb6e748d216d2cc281c10685166",
"license": "MIT",
"urls": [
"bzz-raw://01d1e16ff305a94e880f67c0d17750e49e54f646c3e6b044081765896740cb69",
"dweb:/ipfs/QmXR93vwFkTWuUtBRMPGEF1G8TrnycSTodsGDjcu2MqJ8Y"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207f4c10f52bc906ef5a3859c6146ccc440eb31df000531e0b881e236646e9b31764736f6c634300080d0033",
"opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH32 0x4C10F52BC906EF5A3859C6146CCC440EB31DF000531E0B881E236646E9B31764 PUSH20 0x6F6C634300080D00330000000000000000000000 ",
"sourceMap": "59:175:0:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;59:175:0;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207f4c10f52bc906ef5a3859c6146ccc440eb31df000531e0b881e236646e9b31764736f6c634300080d0033",
"opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH32 0x4C10F52BC906EF5A3859C6146CCC440EB31DF000531E0B881E236646E9B31764 PUSH20 0x6F6C634300080D00330000000000000000000000 ",
"sourceMap": "59:175:0:-:0;;;;;;;;"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "17200",
"executionCost": "103",
"totalCost": "17303"
},
"internal": {
"add(uint256,uint256)": "infinite"
}
},
"methodIdentifiers": {}
},
"abi": []
}
{
"compiler": {
"version": "0.8.13+commit.abaa5c0e"
},
"language": "Solidity",
"output": {
"abi": [],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/Libraries.sol": "SafeMath"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/Libraries.sol": {
"keccak256": "0xefb9c44ffde11a3f8baf0737c65c2b29110ce46a17a28e71f8163781327a234e",
"license": "MIT",
"urls": [
"bzz-raw://8d34489b92921b8366816835ebe77622dba4644404f18a0313393588db20cc27",
"dweb:/ipfs/QmWHZa6n2Mn5AD23SBRveYyiUx2gW3Ne8iD3MN2BvkD2H3"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {
"@_35": {
"entryPoint": null,
"id": 35,
"parameterSlots": 0,
"returnSlots": 0
}
},
"generatedSources": [],
"linkReferences": {},
"object": "6080604052610193806100136000396000f3fe6080604052600436106100295760003560e01c80636ba87a531461002e578063cfc6cdaa14610043575b600080fd5b61004161003c36600461012d565b610056565b005b61004161005136600461012d565b6100f8565b6000816001600160a01b03163460405160006040518083038185875af1925050503d80600081146100a3576040519150601f19603f3d011682016040523d82523d6000602084013e6100a8565b606091505b50509050806100f45760405162461bcd60e51b81526020600482015260146024820152732330b4b632b2103a379039b2b7321022ba3432b960611b604482015260640160405180910390fd5b5050565b6040516001600160a01b038216903480156108fc02916000818181858888f193505050501580156100f4573d6000803e3d6000fd5b60006020828403121561013f57600080fd5b81356001600160a01b038116811461015657600080fd5b939250505056fea2646970667358221220e93f06e42463e37c7cf998762bd832310e5f92ad2975cae374242bf2d2398f0264736f6c634300080d0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH2 0x193 DUP1 PUSH2 0x13 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x29 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6BA87A53 EQ PUSH2 0x2E JUMPI DUP1 PUSH4 0xCFC6CDAA EQ PUSH2 0x43 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x41 PUSH2 0x3C CALLDATASIZE PUSH1 0x4 PUSH2 0x12D JUMP JUMPDEST PUSH2 0x56 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x41 PUSH2 0x51 CALLDATASIZE PUSH1 0x4 PUSH2 0x12D JUMP JUMPDEST PUSH2 0xF8 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLVALUE PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xA3 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xA8 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0xF4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x2330B4B632B2103A379039B2B7321022BA3432B9 PUSH1 0x61 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 CALLVALUE DUP1 ISZERO PUSH2 0x8FC MUL SWAP2 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0xF4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x13F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x156 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE9 EXTCODEHASH MOD 0xE4 0x24 PUSH4 0xE37C7CF9 SWAP9 PUSH23 0x2BD832310E5F92AD2975CAE374242BF2D2398F0264736F PUSH13 0x634300080D0033000000000000 ",
"sourceMap": "794:344:0:-:0;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@callFallback_69": {
"entryPoint": 86,
"id": 69,
"parameterSlots": 1,
"returnSlots": 0
},
"@transferToFallback_48": {
"entryPoint": 248,
"id": 48,
"parameterSlots": 1,
"returnSlots": 0
},
"abi_decode_tuple_t_address_payable": {
"entryPoint": 301,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_445140255c9d889994129d349e64078d6f76b4b37ec896948f7e858f9b8a0dcb__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:869:1",
"statements": [
{
"nodeType": "YulBlock",
"src": "6:3:1",
"statements": []
},
{
"body": {
"nodeType": "YulBlock",
"src": "92:216:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "138:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "147:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "150:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "140:6:1"
},
"nodeType": "YulFunctionCall",
"src": "140:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "140:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "113:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "122:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "109:3:1"
},
"nodeType": "YulFunctionCall",
"src": "109:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "134:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "105:3:1"
},
"nodeType": "YulFunctionCall",
"src": "105:32:1"
},
"nodeType": "YulIf",
"src": "102:52:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "163:36:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "189:9:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "176:12:1"
},
"nodeType": "YulFunctionCall",
"src": "176:23:1"
},
"variables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "167:5:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "262:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "271:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "274:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "264:6:1"
},
"nodeType": "YulFunctionCall",
"src": "264:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "264:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "221:5:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "232:5:1"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "247:3:1",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "252:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "243:3:1"
},
"nodeType": "YulFunctionCall",
"src": "243:11:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "256:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "239:3:1"
},
"nodeType": "YulFunctionCall",
"src": "239:19:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "228:3:1"
},
"nodeType": "YulFunctionCall",
"src": "228:31:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "218:2:1"
},
"nodeType": "YulFunctionCall",
"src": "218:42:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "211:6:1"
},
"nodeType": "YulFunctionCall",
"src": "211:50:1"
},
"nodeType": "YulIf",
"src": "208:70:1"
},
{
"nodeType": "YulAssignment",
"src": "287:15:1",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "297:5:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "287:6:1"
}
]
}
]
},
"name": "abi_decode_tuple_t_address_payable",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "58:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "69:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "81:6:1",
"type": ""
}
],
"src": "14:294:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "504:14:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "506:10:1",
"value": {
"name": "pos",
"nodeType": "YulIdentifier",
"src": "513:3:1"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "506:3:1"
}
]
}
]
},
"name": "abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "488:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "496:3:1",
"type": ""
}
],
"src": "313:205:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "697:170:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "714:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "725:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "707:6:1"
},
"nodeType": "YulFunctionCall",
"src": "707:21:1"
},
"nodeType": "YulExpressionStatement",
"src": "707:21:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "748:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "759:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "744:3:1"
},
"nodeType": "YulFunctionCall",
"src": "744:18:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "764:2:1",
"type": "",
"value": "20"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "737:6:1"
},
"nodeType": "YulFunctionCall",
"src": "737:30:1"
},
"nodeType": "YulExpressionStatement",
"src": "737:30:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "787:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "798:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "783:3:1"
},
"nodeType": "YulFunctionCall",
"src": "783:18:1"
},
{
"hexValue": "4661696c656420746f2073656e64204574686572",
"kind": "string",
"nodeType": "YulLiteral",
"src": "803:22:1",
"type": "",
"value": "Failed to send Ether"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "776:6:1"
},
"nodeType": "YulFunctionCall",
"src": "776:50:1"
},
"nodeType": "YulExpressionStatement",
"src": "776:50:1"
},
{
"nodeType": "YulAssignment",
"src": "835:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "847:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "858:2:1",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "843:3:1"
},
"nodeType": "YulFunctionCall",
"src": "843:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "835:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_445140255c9d889994129d349e64078d6f76b4b37ec896948f7e858f9b8a0dcb__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "674:9:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "688:4:1",
"type": ""
}
],
"src": "523:344:1"
}
]
},
"contents": "{\n { }\n function abi_decode_tuple_t_address_payable(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n { end := pos }\n function abi_encode_tuple_t_stringliteral_445140255c9d889994129d349e64078d6f76b4b37ec896948f7e858f9b8a0dcb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 20)\n mstore(add(headStart, 64), \"Failed to send Ether\")\n tail := add(headStart, 96)\n }\n}",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "6080604052600436106100295760003560e01c80636ba87a531461002e578063cfc6cdaa14610043575b600080fd5b61004161003c36600461012d565b610056565b005b61004161005136600461012d565b6100f8565b6000816001600160a01b03163460405160006040518083038185875af1925050503d80600081146100a3576040519150601f19603f3d011682016040523d82523d6000602084013e6100a8565b606091505b50509050806100f45760405162461bcd60e51b81526020600482015260146024820152732330b4b632b2103a379039b2b7321022ba3432b960611b604482015260640160405180910390fd5b5050565b6040516001600160a01b038216903480156108fc02916000818181858888f193505050501580156100f4573d6000803e3d6000fd5b60006020828403121561013f57600080fd5b81356001600160a01b038116811461015657600080fd5b939250505056fea2646970667358221220e93f06e42463e37c7cf998762bd832310e5f92ad2975cae374242bf2d2398f0264736f6c634300080d0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x29 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6BA87A53 EQ PUSH2 0x2E JUMPI DUP1 PUSH4 0xCFC6CDAA EQ PUSH2 0x43 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x41 PUSH2 0x3C CALLDATASIZE PUSH1 0x4 PUSH2 0x12D JUMP JUMPDEST PUSH2 0x56 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x41 PUSH2 0x51 CALLDATASIZE PUSH1 0x4 PUSH2 0x12D JUMP JUMPDEST PUSH2 0xF8 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLVALUE PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xA3 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xA8 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0xF4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x2330B4B632B2103A379039B2B7321022BA3432B9 PUSH1 0x61 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 CALLVALUE DUP1 ISZERO PUSH2 0x8FC MUL SWAP2 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0xF4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x13F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x156 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE9 EXTCODEHASH MOD 0xE4 0x24 PUSH4 0xE37C7CF9 SWAP9 PUSH23 0x2BD832310E5F92AD2975CAE374242BF2D2398F0264736F PUSH13 0x634300080D0033000000000000 ",
"sourceMap": "794:344:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;968:168;;;;;;:::i;:::-;;:::i;:::-;;858:104;;;;;;:::i;:::-;;:::i;968:168::-;1037:9;1052:3;-1:-1:-1;;;;;1052:8:0;1068:9;1052:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1036:46;;;1100:4;1092:37;;;;-1:-1:-1;;;1092:37:0;;725:2:1;1092:37:0;;;707:21:1;764:2;744:18;;;737:30;-1:-1:-1;;;783:18:1;;;776:50;843:18;;1092:37:0;;;;;;;;1026:110;968:168;:::o;858:104::-;932:23;;-1:-1:-1;;;;;932:12:0;;;945:9;932:23;;;;;;;;;945:9;932:12;:23;;;;;;;;;;;;;;;;;;;14:294:1;81:6;134:2;122:9;113:7;109:23;105:32;102:52;;;150:1;147;140:12;102:52;176:23;;-1:-1:-1;;;;;228:31:1;;218:42;;208:70;;274:1;271;264:12;208:70;297:5;14:294;-1:-1:-1;;;14:294:1:o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "80600",
"executionCost": "105",
"totalCost": "80705"
},
"external": {
"callFallback(address)": "infinite",
"transferToFallback(address)": "infinite"
}
},
"methodIdentifiers": {
"callFallback(address)": "6ba87a53",
"transferToFallback(address)": "cfc6cdaa"
}
},
"abi": [
{
"inputs": [],
"stateMutability": "payable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "address payable",
"name": "_to",
"type": "address"
}
],
"name": "callFallback",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address payable",
"name": "_to",
"type": "address"
}
],
"name": "transferToFallback",
"outputs": [],
"stateMutability": "payable",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.13+commit.abaa5c0e"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [],
"stateMutability": "payable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "address payable",
"name": "_to",
"type": "address"
}
],
"name": "callFallback",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address payable",
"name": "_to",
"type": "address"
}
],
"name": "transferToFallback",
"outputs": [],
"stateMutability": "payable",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/Fallback.sol": "SendToFallback"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/Fallback.sol": {
"keccak256": "0x760b7fdb2677f3a68235c78afdd23a6391a201a9c4535b3be1f9d80147e5720e",
"license": "MIT",
"urls": [
"bzz-raw://6885c6674e450d05a09635d67229707cec222fbd04a241b9270f31a377fda4ca",
"dweb:/ipfs/QmVFNYyULxeurnWo2BZo7m184cFoJT7264PoZa1GG4PTmJ"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "608060405234801561001057600080fd5b506107d7806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c8063335d00c2146100515780639b3e27871461005b578063ee26fac314610086578063f7746e361461008e575b600080fd5b6100596100a1565b005b61006e610069366004610673565b610482565b60405161007d939291906106ab565b60405180910390f35b61006e61055b565b61006e61009c366004610718565b61056a565b6040805160a080820183526006606080840191825265546f796f746160d01b6080808601919091529184526107e160208086019190915233858701819052865194850187526004858401818152634175646960e01b958701959095529385526107e2858301528487018190528651808401885292835260008383018181528489018281528951808b01909a5295895263119bdc9960e21b898501529784526107df909752909252600380546001810182559581905284518051959694959294879492026000805160206107828339815191520192610182928492019061059d565b50602082810151600180840191909155604090930151600290920180546001600160a01b039093166001600160a01b031990931692909217909155600380549283018155600081905284518051869490920260008051602061078283398151915201926101f49284929091019061059d565b50602082810151600180840191909155604090930151600290920180546001600160a01b039093166001600160a01b031990931692909217909155600380549283018155600081905283518051859490920260008051602061078283398151915201926102669284929091019061059d565b50602082810151600180840191909155604093840151600290930180546001600160a01b039094166001600160a01b031990941693909317909255825160a08101845260056060820190815264486f6e646160d81b608083015281526107e0818301523393810193909352600380549283018155600081905283518051939091026000805160206107828339815191520192610305928492019061059d565b506020820151816001015560408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050506000600360008154811061035557610355610731565b906000526020600020906003020160405180606001604052908160008201805461037e90610747565b80601f01602080910402602001604051908101604052809291908181526020018280546103aa90610747565b80156103f75780601f106103cc576101008083540402835291602001916103f7565b820191906000526020600020905b8154815290600101906020018083116103da57829003601f168201915b50505091835250506001828101546020808401919091526002909301546001600160a01b03166040928301526107e6928401929092526000908301526003805492935091811061044957610449610731565b600091825260208220600390910201906104638282610621565b506000600182015560020180546001600160a01b031916905550505050565b6004602052816000526040600020818154811061049e57600080fd5b9060005260206000209060030201600091509150508060000180546104c290610747565b80601f01602080910402602001604051908101604052809291908181526020018280546104ee90610747565b801561053b5780601f106105105761010080835404028352916020019161053b565b820191906000526020600020905b81548152906001019060200180831161051e57829003601f168201915b5050505060018301546002909301549192916001600160a01b0316905083565b6000805481906104c290610747565b6003818154811061057a57600080fd5b90600052602060002090600302016000915090508060000180546104c290610747565b8280546105a990610747565b90600052602060002090601f0160209004810192826105cb5760008555610611565b82601f106105e457805160ff1916838001178555610611565b82800160010185558215610611579182015b828111156106115782518255916020019190600101906105f6565b5061061d92915061065e565b5090565b50805461062d90610747565b6000825580601f1061063d575050565b601f01602090049060005260206000209081019061065b919061065e565b50565b5b8082111561061d576000815560010161065f565b6000806040838503121561068657600080fd5b82356001600160a01b038116811461069d57600080fd5b946020939093013593505050565b606081526000845180606084015260005b818110156106d957602081880181015160808684010152016106bc565b818111156106eb576000608083860101525b506020830194909452506001600160a01b039190911660408201526080601f909201601f19160101919050565b60006020828403121561072a57600080fd5b5035919050565b634e487b7160e01b600052603260045260246000fd5b600181811c9082168061075b57607f821691505b60208210810361077b57634e487b7160e01b600052602260045260246000fd5b5091905056fec2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85ba26469706673582212201ddb430c2afca9261d27f2f8adf20c42c9053143157d5e2639ee05b53a5404d764736f6c634300080d0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7D7 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x335D00C2 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x9B3E2787 EQ PUSH2 0x5B JUMPI DUP1 PUSH4 0xEE26FAC3 EQ PUSH2 0x86 JUMPI DUP1 PUSH4 0xF7746E36 EQ PUSH2 0x8E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0xA1 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x6E PUSH2 0x69 CALLDATASIZE PUSH1 0x4 PUSH2 0x673 JUMP JUMPDEST PUSH2 0x482 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x7D SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6E PUSH2 0x55B JUMP JUMPDEST PUSH2 0x6E PUSH2 0x9C CALLDATASIZE PUSH1 0x4 PUSH2 0x718 JUMP JUMPDEST PUSH2 0x56A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP1 DUP3 ADD DUP4 MSTORE PUSH1 0x6 PUSH1 0x60 DUP1 DUP5 ADD SWAP2 DUP3 MSTORE PUSH6 0x546F796F7461 PUSH1 0xD0 SHL PUSH1 0x80 DUP1 DUP7 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 DUP5 MSTORE PUSH2 0x7E1 PUSH1 0x20 DUP1 DUP7 ADD SWAP2 SWAP1 SWAP2 MSTORE CALLER DUP6 DUP8 ADD DUP2 SWAP1 MSTORE DUP7 MLOAD SWAP5 DUP6 ADD DUP8 MSTORE PUSH1 0x4 DUP6 DUP5 ADD DUP2 DUP2 MSTORE PUSH4 0x41756469 PUSH1 0xE0 SHL SWAP6 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP4 DUP6 MSTORE PUSH2 0x7E2 DUP6 DUP4 ADD MSTORE DUP5 DUP8 ADD DUP2 SWAP1 MSTORE DUP7 MLOAD DUP1 DUP5 ADD DUP9 MSTORE SWAP3 DUP4 MSTORE PUSH1 0x0 DUP4 DUP4 ADD DUP2 DUP2 MSTORE DUP5 DUP10 ADD DUP3 DUP2 MSTORE DUP10 MLOAD DUP1 DUP12 ADD SWAP1 SWAP11 MSTORE SWAP6 DUP10 MSTORE PUSH4 0x119BDC99 PUSH1 0xE2 SHL DUP10 DUP6 ADD MSTORE SWAP8 DUP5 MSTORE PUSH2 0x7DF SWAP1 SWAP8 MSTORE SWAP1 SWAP3 MSTORE PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE SWAP6 DUP2 SWAP1 MSTORE DUP5 MLOAD DUP1 MLOAD SWAP6 SWAP7 SWAP5 SWAP6 SWAP3 SWAP5 DUP8 SWAP5 SWAP3 MUL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x782 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE ADD SWAP3 PUSH2 0x182 SWAP3 DUP5 SWAP3 ADD SWAP1 PUSH2 0x59D JUMP JUMPDEST POP PUSH1 0x20 DUP3 DUP2 ADD MLOAD PUSH1 0x1 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x40 SWAP1 SWAP4 ADD MLOAD PUSH1 0x2 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH1 0x3 DUP1 SLOAD SWAP3 DUP4 ADD DUP2 SSTORE PUSH1 0x0 DUP2 SWAP1 MSTORE DUP5 MLOAD DUP1 MLOAD DUP7 SWAP5 SWAP1 SWAP3 MUL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x782 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE ADD SWAP3 PUSH2 0x1F4 SWAP3 DUP5 SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x59D JUMP JUMPDEST POP PUSH1 0x20 DUP3 DUP2 ADD MLOAD PUSH1 0x1 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x40 SWAP1 SWAP4 ADD MLOAD PUSH1 0x2 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH1 0x3 DUP1 SLOAD SWAP3 DUP4 ADD DUP2 SSTORE PUSH1 0x0 DUP2 SWAP1 MSTORE DUP4 MLOAD DUP1 MLOAD DUP6 SWAP5 SWAP1 SWAP3 MUL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x782 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE ADD SWAP3 PUSH2 0x266 SWAP3 DUP5 SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x59D JUMP JUMPDEST POP PUSH1 0x20 DUP3 DUP2 ADD MLOAD PUSH1 0x1 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x40 SWAP4 DUP5 ADD MLOAD PUSH1 0x2 SWAP1 SWAP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 SSTORE DUP3 MLOAD PUSH1 0xA0 DUP2 ADD DUP5 MSTORE PUSH1 0x5 PUSH1 0x60 DUP3 ADD SWAP1 DUP2 MSTORE PUSH5 0x486F6E6461 PUSH1 0xD8 SHL PUSH1 0x80 DUP4 ADD MSTORE DUP2 MSTORE PUSH2 0x7E0 DUP2 DUP4 ADD MSTORE CALLER SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x3 DUP1 SLOAD SWAP3 DUP4 ADD DUP2 SSTORE PUSH1 0x0 DUP2 SWAP1 MSTORE DUP4 MLOAD DUP1 MLOAD SWAP4 SWAP1 SWAP2 MUL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x782 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE ADD SWAP3 PUSH2 0x305 SWAP3 DUP5 SWAP3 ADD SWAP1 PUSH2 0x59D JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP POP POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP2 SLOAD DUP2 LT PUSH2 0x355 JUMPI PUSH2 0x355 PUSH2 0x731 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD DUP1 SLOAD PUSH2 0x37E SWAP1 PUSH2 0x747 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x3AA SWAP1 PUSH2 0x747 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3F7 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3CC JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3F7 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3DA JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP SWAP2 DUP4 MSTORE POP POP PUSH1 0x1 DUP3 DUP2 ADD SLOAD PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x2 SWAP1 SWAP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 SWAP3 DUP4 ADD MSTORE PUSH2 0x7E6 SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x0 SWAP1 DUP4 ADD MSTORE PUSH1 0x3 DUP1 SLOAD SWAP3 SWAP4 POP SWAP2 DUP2 LT PUSH2 0x449 JUMPI PUSH2 0x449 PUSH2 0x731 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 KECCAK256 PUSH1 0x3 SWAP1 SWAP2 MUL ADD SWAP1 PUSH2 0x463 DUP3 DUP3 PUSH2 0x621 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x1 DUP3 ADD SSTORE PUSH1 0x2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x49E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 SWAP2 POP SWAP2 POP POP DUP1 PUSH1 0x0 ADD DUP1 SLOAD PUSH2 0x4C2 SWAP1 PUSH2 0x747 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x4EE SWAP1 PUSH2 0x747 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x53B JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x510 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x53B JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x51E JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP PUSH1 0x1 DUP4 ADD SLOAD PUSH1 0x2 SWAP1 SWAP4 ADD SLOAD SWAP2 SWAP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP4 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0x4C2 SWAP1 PUSH2 0x747 JUMP JUMPDEST PUSH1 0x3 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x57A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 SWAP2 POP SWAP1 POP DUP1 PUSH1 0x0 ADD DUP1 SLOAD PUSH2 0x4C2 SWAP1 PUSH2 0x747 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x5A9 SWAP1 PUSH2 0x747 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x5CB JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x611 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x5E4 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x611 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x611 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x611 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x5F6 JUMP JUMPDEST POP PUSH2 0x61D SWAP3 SWAP2 POP PUSH2 0x65E JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST POP DUP1 SLOAD PUSH2 0x62D SWAP1 PUSH2 0x747 JUMP JUMPDEST PUSH1 0x0 DUP3 SSTORE DUP1 PUSH1 0x1F LT PUSH2 0x63D JUMPI POP POP JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x65B SWAP2 SWAP1 PUSH2 0x65E JUMP JUMPDEST POP JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x61D JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x65F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x686 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x69D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 DUP5 MLOAD DUP1 PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x6D9 JUMPI PUSH1 0x20 DUP2 DUP9 ADD DUP2 ADD MLOAD PUSH1 0x80 DUP7 DUP5 ADD ADD MSTORE ADD PUSH2 0x6BC JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x6EB JUMPI PUSH1 0x0 PUSH1 0x80 DUP4 DUP7 ADD ADD MSTORE JUMPDEST POP PUSH1 0x20 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x80 PUSH1 0x1F SWAP1 SWAP3 ADD PUSH1 0x1F NOT AND ADD ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x72A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x75B JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x77B JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP INVALID 0xC2 JUMPI GAS 0xE SWAP15 MSIZE EXTCODECOPY STOP 0xF9 MSIZE 0xF8 0xC9 0x2F SLT 0xDB 0x28 PUSH10 0xC3395A3B0502D05E2516 DIFFICULTY PUSH16 0x71F85BA26469706673582212201DDB43 0xC 0x2A 0xFC 0xA9 0x26 SAR 0x27 CALLCODE 0xF8 0xAD CALLCODE 0xC TIMESTAMP 0xC9 SDIV BALANCE NUMBER ISZERO PUSH30 0x5E2639EE05B53A5404D764736F6C634300080D0033000000000000000000 ",
"sourceMap": "151:764:0:-:0;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@car_11": {
"entryPoint": 1371,
"id": 11,
"parameterSlots": 0,
"returnSlots": 0
},
"@cars_15": {
"entryPoint": 1386,
"id": 15,
"parameterSlots": 0,
"returnSlots": 0
},
"@examples_119": {
"entryPoint": 161,
"id": 119,
"parameterSlots": 0,
"returnSlots": 0
},
"@owners_21": {
"entryPoint": 1154,
"id": 21,
"parameterSlots": 0,
"returnSlots": 0
},
"abi_decode_tuple_t_addresst_uint256": {
"entryPoint": 1651,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_decode_tuple_t_uint256": {
"entryPoint": 1816,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_string_memory_ptr_t_uint256_t_address__to_t_string_memory_ptr_t_uint256_t_address__fromStack_reversed": {
"entryPoint": 1707,
"id": null,
"parameterSlots": 4,
"returnSlots": 1
},
"extract_byte_array_length": {
"entryPoint": 1863,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"panic_error_0x32": {
"entryPoint": 1841,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:1830:1",
"statements": [
{
"nodeType": "YulBlock",
"src": "6:3:1",
"statements": []
},
{
"body": {
"nodeType": "YulBlock",
"src": "101:267:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "147:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "156:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "159:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "149:6:1"
},
"nodeType": "YulFunctionCall",
"src": "149:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "149:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "122:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "131:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "118:3:1"
},
"nodeType": "YulFunctionCall",
"src": "118:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "143:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "114:3:1"
},
"nodeType": "YulFunctionCall",
"src": "114:32:1"
},
"nodeType": "YulIf",
"src": "111:52:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "172:36:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "198:9:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "185:12:1"
},
"nodeType": "YulFunctionCall",
"src": "185:23:1"
},
"variables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "176:5:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "271:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "280:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "283:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "273:6:1"
},
"nodeType": "YulFunctionCall",
"src": "273:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "273:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "230:5:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "241:5:1"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "256:3:1",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "261:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "252:3:1"
},
"nodeType": "YulFunctionCall",
"src": "252:11:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "265:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "248:3:1"
},
"nodeType": "YulFunctionCall",
"src": "248:19:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "237:3:1"
},
"nodeType": "YulFunctionCall",
"src": "237:31:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "227:2:1"
},
"nodeType": "YulFunctionCall",
"src": "227:42:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "220:6:1"
},
"nodeType": "YulFunctionCall",
"src": "220:50:1"
},
"nodeType": "YulIf",
"src": "217:70:1"
},
{
"nodeType": "YulAssignment",
"src": "296:15:1",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "306:5:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "296:6:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "320:42:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "347:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "358:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "343:3:1"
},
"nodeType": "YulFunctionCall",
"src": "343:18:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "330:12:1"
},
"nodeType": "YulFunctionCall",
"src": "330:32:1"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "320:6:1"
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "59:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "70:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "82:6:1",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "90:6:1",
"type": ""
}
],
"src": "14:354:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "550:576:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "567:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "578:2:1",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "560:6:1"
},
"nodeType": "YulFunctionCall",
"src": "560:21:1"
},
"nodeType": "YulExpressionStatement",
"src": "560:21:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "590:27:1",
"value": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "610:6:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "604:5:1"
},
"nodeType": "YulFunctionCall",
"src": "604:13:1"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "594:6:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "637:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "648:2:1",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "633:3:1"
},
"nodeType": "YulFunctionCall",
"src": "633:18:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "653:6:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "626:6:1"
},
"nodeType": "YulFunctionCall",
"src": "626:34:1"
},
"nodeType": "YulExpressionStatement",
"src": "626:34:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "669:10:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "678:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "673:1:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "740:93:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "769:9:1"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "780:1:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "765:3:1"
},
"nodeType": "YulFunctionCall",
"src": "765:17:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "784:3:1",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "761:3:1"
},
"nodeType": "YulFunctionCall",
"src": "761:27:1"
},
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "804:6:1"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "812:1:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "800:3:1"
},
"nodeType": "YulFunctionCall",
"src": "800:14:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "816:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "796:3:1"
},
"nodeType": "YulFunctionCall",
"src": "796:25:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "790:5:1"
},
"nodeType": "YulFunctionCall",
"src": "790:32:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "754:6:1"
},
"nodeType": "YulFunctionCall",
"src": "754:69:1"
},
"nodeType": "YulExpressionStatement",
"src": "754:69:1"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "699:1:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "702:6:1"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "696:2:1"
},
"nodeType": "YulFunctionCall",
"src": "696:13:1"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "710:21:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "712:17:1",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "721:1:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "724:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "717:3:1"
},
"nodeType": "YulFunctionCall",
"src": "717:12:1"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "712:1:1"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "692:3:1",
"statements": []
},
"src": "688:145:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "867:67:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "896:9:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "907:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "892:3:1"
},
"nodeType": "YulFunctionCall",
"src": "892:22:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "916:3:1",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "888:3:1"
},
"nodeType": "YulFunctionCall",
"src": "888:32:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "922:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "881:6:1"
},
"nodeType": "YulFunctionCall",
"src": "881:43:1"
},
"nodeType": "YulExpressionStatement",
"src": "881:43:1"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "848:1:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "851:6:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "845:2:1"
},
"nodeType": "YulFunctionCall",
"src": "845:13:1"
},
"nodeType": "YulIf",
"src": "842:92:1"
},
{
"nodeType": "YulAssignment",
"src": "943:63:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "959:9:1"
},
{
"arguments": [
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "978:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "986:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "974:3:1"
},
"nodeType": "YulFunctionCall",
"src": "974:15:1"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "995:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "991:3:1"
},
"nodeType": "YulFunctionCall",
"src": "991:7:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "970:3:1"
},
"nodeType": "YulFunctionCall",
"src": "970:29:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "955:3:1"
},
"nodeType": "YulFunctionCall",
"src": "955:45:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1002:3:1",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "951:3:1"
},
"nodeType": "YulFunctionCall",
"src": "951:55:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "943:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1026:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1037:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1022:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1022:20:1"
},
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "1044:6:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1015:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1015:36:1"
},
"nodeType": "YulExpressionStatement",
"src": "1015:36:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1071:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1082:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1067:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1067:18:1"
},
{
"arguments": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "1091:6:1"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1107:3:1",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1112:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "1103:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1103:11:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1116:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1099:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1099:19:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "1087:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1087:32:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1060:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1060:60:1"
},
"nodeType": "YulExpressionStatement",
"src": "1060:60:1"
}
]
},
"name": "abi_encode_tuple_t_string_memory_ptr_t_uint256_t_address__to_t_string_memory_ptr_t_uint256_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "503:9:1",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "514:6:1",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "522:6:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "530:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "541:4:1",
"type": ""
}
],
"src": "373:753:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1201:110:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1247:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1256:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1259:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1249:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1249:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "1249:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1222:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1231:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1218:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1218:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1243:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "1214:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1214:32:1"
},
"nodeType": "YulIf",
"src": "1211:52:1"
},
{
"nodeType": "YulAssignment",
"src": "1272:33:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1295:9:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "1282:12:1"
},
"nodeType": "YulFunctionCall",
"src": "1282:23:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1272:6:1"
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1167:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "1178:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1190:6:1",
"type": ""
}
],
"src": "1131:180:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1348:95:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1365:1:1",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1372:3:1",
"type": "",
"value": "224"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1377:10:1",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "1368:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1368:20:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1358:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1358:31:1"
},
"nodeType": "YulExpressionStatement",
"src": "1358:31:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1405:1:1",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1408:4:1",
"type": "",
"value": "0x32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1398:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1398:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "1398:15:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1429:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1432:4:1",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1422:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1422:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "1422:15:1"
}
]
},
"name": "panic_error_0x32",
"nodeType": "YulFunctionDefinition",
"src": "1316:127:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1503:325:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1513:22:1",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1527:1:1",
"type": "",
"value": "1"
},
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "1530:4:1"
}
],
"functionName": {
"name": "shr",
"nodeType": "YulIdentifier",
"src": "1523:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1523:12:1"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1513:6:1"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "1544:38:1",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "1574:4:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1580:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "1570:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1570:12:1"
},
"variables": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulTypedName",
"src": "1548:18:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "1621:31:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1623:27:1",
"value": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1637:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1645:4:1",
"type": "",
"value": "0x7f"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "1633:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1633:17:1"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1623:6:1"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "1601:18:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "1594:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1594:26:1"
},
"nodeType": "YulIf",
"src": "1591:61:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1711:111:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1732:1:1",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1739:3:1",
"type": "",
"value": "224"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1744:10:1",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "1735:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1735:20:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1725:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1725:31:1"
},
"nodeType": "YulExpressionStatement",
"src": "1725:31:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1776:1:1",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1779:4:1",
"type": "",
"value": "0x22"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1769:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1769:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "1769:15:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1804:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1807:4:1",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1797:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1797:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "1797:15:1"
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "1667:18:1"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1690:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1698:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "1687:2:1"
},
"nodeType": "YulFunctionCall",
"src": "1687:14:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "1664:2:1"
},
"nodeType": "YulFunctionCall",
"src": "1664:38:1"
},
"nodeType": "YulIf",
"src": "1661:161:1"
}
]
},
"name": "extract_byte_array_length",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "1483:4:1",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "1492:6:1",
"type": ""
}
],
"src": "1448:380:1"
}
]
},
"contents": "{\n { }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n value0 := value\n value1 := calldataload(add(headStart, 32))\n }\n function abi_encode_tuple_t_string_memory_ptr_t_uint256_t_address__to_t_string_memory_ptr_t_uint256_t_address__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n mstore(headStart, 96)\n let length := mload(value0)\n mstore(add(headStart, 96), length)\n let i := 0\n for { } lt(i, length) { i := add(i, 0x20) }\n {\n mstore(add(add(headStart, i), 128), mload(add(add(value0, i), 0x20)))\n }\n if gt(i, length)\n {\n mstore(add(add(headStart, length), 128), 0)\n }\n tail := add(add(headStart, and(add(length, 31), not(31))), 128)\n mstore(add(headStart, 0x20), value1)\n mstore(add(headStart, 64), and(value2, sub(shl(160, 1), 1)))\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n}",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "608060405234801561001057600080fd5b506004361061004c5760003560e01c8063335d00c2146100515780639b3e27871461005b578063ee26fac314610086578063f7746e361461008e575b600080fd5b6100596100a1565b005b61006e610069366004610673565b610482565b60405161007d939291906106ab565b60405180910390f35b61006e61055b565b61006e61009c366004610718565b61056a565b6040805160a080820183526006606080840191825265546f796f746160d01b6080808601919091529184526107e160208086019190915233858701819052865194850187526004858401818152634175646960e01b958701959095529385526107e2858301528487018190528651808401885292835260008383018181528489018281528951808b01909a5295895263119bdc9960e21b898501529784526107df909752909252600380546001810182559581905284518051959694959294879492026000805160206107828339815191520192610182928492019061059d565b50602082810151600180840191909155604090930151600290920180546001600160a01b039093166001600160a01b031990931692909217909155600380549283018155600081905284518051869490920260008051602061078283398151915201926101f49284929091019061059d565b50602082810151600180840191909155604090930151600290920180546001600160a01b039093166001600160a01b031990931692909217909155600380549283018155600081905283518051859490920260008051602061078283398151915201926102669284929091019061059d565b50602082810151600180840191909155604093840151600290930180546001600160a01b039094166001600160a01b031990941693909317909255825160a08101845260056060820190815264486f6e646160d81b608083015281526107e0818301523393810193909352600380549283018155600081905283518051939091026000805160206107828339815191520192610305928492019061059d565b506020820151816001015560408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050506000600360008154811061035557610355610731565b906000526020600020906003020160405180606001604052908160008201805461037e90610747565b80601f01602080910402602001604051908101604052809291908181526020018280546103aa90610747565b80156103f75780601f106103cc576101008083540402835291602001916103f7565b820191906000526020600020905b8154815290600101906020018083116103da57829003601f168201915b50505091835250506001828101546020808401919091526002909301546001600160a01b03166040928301526107e6928401929092526000908301526003805492935091811061044957610449610731565b600091825260208220600390910201906104638282610621565b506000600182015560020180546001600160a01b031916905550505050565b6004602052816000526040600020818154811061049e57600080fd5b9060005260206000209060030201600091509150508060000180546104c290610747565b80601f01602080910402602001604051908101604052809291908181526020018280546104ee90610747565b801561053b5780601f106105105761010080835404028352916020019161053b565b820191906000526020600020905b81548152906001019060200180831161051e57829003601f168201915b5050505060018301546002909301549192916001600160a01b0316905083565b6000805481906104c290610747565b6003818154811061057a57600080fd5b90600052602060002090600302016000915090508060000180546104c290610747565b8280546105a990610747565b90600052602060002090601f0160209004810192826105cb5760008555610611565b82601f106105e457805160ff1916838001178555610611565b82800160010185558215610611579182015b828111156106115782518255916020019190600101906105f6565b5061061d92915061065e565b5090565b50805461062d90610747565b6000825580601f1061063d575050565b601f01602090049060005260206000209081019061065b919061065e565b50565b5b8082111561061d576000815560010161065f565b6000806040838503121561068657600080fd5b82356001600160a01b038116811461069d57600080fd5b946020939093013593505050565b606081526000845180606084015260005b818110156106d957602081880181015160808684010152016106bc565b818111156106eb576000608083860101525b506020830194909452506001600160a01b039190911660408201526080601f909201601f19160101919050565b60006020828403121561072a57600080fd5b5035919050565b634e487b7160e01b600052603260045260246000fd5b600181811c9082168061075b57607f821691505b60208210810361077b57634e487b7160e01b600052602260045260246000fd5b5091905056fec2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85ba26469706673582212201ddb430c2afca9261d27f2f8adf20c42c9053143157d5e2639ee05b53a5404d764736f6c634300080d0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x335D00C2 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x9B3E2787 EQ PUSH2 0x5B JUMPI DUP1 PUSH4 0xEE26FAC3 EQ PUSH2 0x86 JUMPI DUP1 PUSH4 0xF7746E36 EQ PUSH2 0x8E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0xA1 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x6E PUSH2 0x69 CALLDATASIZE PUSH1 0x4 PUSH2 0x673 JUMP JUMPDEST PUSH2 0x482 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x7D SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6E PUSH2 0x55B JUMP JUMPDEST PUSH2 0x6E PUSH2 0x9C CALLDATASIZE PUSH1 0x4 PUSH2 0x718 JUMP JUMPDEST PUSH2 0x56A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP1 DUP3 ADD DUP4 MSTORE PUSH1 0x6 PUSH1 0x60 DUP1 DUP5 ADD SWAP2 DUP3 MSTORE PUSH6 0x546F796F7461 PUSH1 0xD0 SHL PUSH1 0x80 DUP1 DUP7 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 DUP5 MSTORE PUSH2 0x7E1 PUSH1 0x20 DUP1 DUP7 ADD SWAP2 SWAP1 SWAP2 MSTORE CALLER DUP6 DUP8 ADD DUP2 SWAP1 MSTORE DUP7 MLOAD SWAP5 DUP6 ADD DUP8 MSTORE PUSH1 0x4 DUP6 DUP5 ADD DUP2 DUP2 MSTORE PUSH4 0x41756469 PUSH1 0xE0 SHL SWAP6 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP4 DUP6 MSTORE PUSH2 0x7E2 DUP6 DUP4 ADD MSTORE DUP5 DUP8 ADD DUP2 SWAP1 MSTORE DUP7 MLOAD DUP1 DUP5 ADD DUP9 MSTORE SWAP3 DUP4 MSTORE PUSH1 0x0 DUP4 DUP4 ADD DUP2 DUP2 MSTORE DUP5 DUP10 ADD DUP3 DUP2 MSTORE DUP10 MLOAD DUP1 DUP12 ADD SWAP1 SWAP11 MSTORE SWAP6 DUP10 MSTORE PUSH4 0x119BDC99 PUSH1 0xE2 SHL DUP10 DUP6 ADD MSTORE SWAP8 DUP5 MSTORE PUSH2 0x7DF SWAP1 SWAP8 MSTORE SWAP1 SWAP3 MSTORE PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE SWAP6 DUP2 SWAP1 MSTORE DUP5 MLOAD DUP1 MLOAD SWAP6 SWAP7 SWAP5 SWAP6 SWAP3 SWAP5 DUP8 SWAP5 SWAP3 MUL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x782 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE ADD SWAP3 PUSH2 0x182 SWAP3 DUP5 SWAP3 ADD SWAP1 PUSH2 0x59D JUMP JUMPDEST POP PUSH1 0x20 DUP3 DUP2 ADD MLOAD PUSH1 0x1 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x40 SWAP1 SWAP4 ADD MLOAD PUSH1 0x2 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH1 0x3 DUP1 SLOAD SWAP3 DUP4 ADD DUP2 SSTORE PUSH1 0x0 DUP2 SWAP1 MSTORE DUP5 MLOAD DUP1 MLOAD DUP7 SWAP5 SWAP1 SWAP3 MUL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x782 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE ADD SWAP3 PUSH2 0x1F4 SWAP3 DUP5 SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x59D JUMP JUMPDEST POP PUSH1 0x20 DUP3 DUP2 ADD MLOAD PUSH1 0x1 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x40 SWAP1 SWAP4 ADD MLOAD PUSH1 0x2 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH1 0x3 DUP1 SLOAD SWAP3 DUP4 ADD DUP2 SSTORE PUSH1 0x0 DUP2 SWAP1 MSTORE DUP4 MLOAD DUP1 MLOAD DUP6 SWAP5 SWAP1 SWAP3 MUL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x782 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE ADD SWAP3 PUSH2 0x266 SWAP3 DUP5 SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x59D JUMP JUMPDEST POP PUSH1 0x20 DUP3 DUP2 ADD MLOAD PUSH1 0x1 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x40 SWAP4 DUP5 ADD MLOAD PUSH1 0x2 SWAP1 SWAP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 SSTORE DUP3 MLOAD PUSH1 0xA0 DUP2 ADD DUP5 MSTORE PUSH1 0x5 PUSH1 0x60 DUP3 ADD SWAP1 DUP2 MSTORE PUSH5 0x486F6E6461 PUSH1 0xD8 SHL PUSH1 0x80 DUP4 ADD MSTORE DUP2 MSTORE PUSH2 0x7E0 DUP2 DUP4 ADD MSTORE CALLER SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x3 DUP1 SLOAD SWAP3 DUP4 ADD DUP2 SSTORE PUSH1 0x0 DUP2 SWAP1 MSTORE DUP4 MLOAD DUP1 MLOAD SWAP4 SWAP1 SWAP2 MUL PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x782 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE ADD SWAP3 PUSH2 0x305 SWAP3 DUP5 SWAP3 ADD SWAP1 PUSH2 0x59D JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP POP POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP2 SLOAD DUP2 LT PUSH2 0x355 JUMPI PUSH2 0x355 PUSH2 0x731 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD DUP1 SLOAD PUSH2 0x37E SWAP1 PUSH2 0x747 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x3AA SWAP1 PUSH2 0x747 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3F7 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3CC JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3F7 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3DA JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP SWAP2 DUP4 MSTORE POP POP PUSH1 0x1 DUP3 DUP2 ADD SLOAD PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x2 SWAP1 SWAP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 SWAP3 DUP4 ADD MSTORE PUSH2 0x7E6 SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x0 SWAP1 DUP4 ADD MSTORE PUSH1 0x3 DUP1 SLOAD SWAP3 SWAP4 POP SWAP2 DUP2 LT PUSH2 0x449 JUMPI PUSH2 0x449 PUSH2 0x731 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 KECCAK256 PUSH1 0x3 SWAP1 SWAP2 MUL ADD SWAP1 PUSH2 0x463 DUP3 DUP3 PUSH2 0x621 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x1 DUP3 ADD SSTORE PUSH1 0x2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x49E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 SWAP2 POP SWAP2 POP POP DUP1 PUSH1 0x0 ADD DUP1 SLOAD PUSH2 0x4C2 SWAP1 PUSH2 0x747 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x4EE SWAP1 PUSH2 0x747 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x53B JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x510 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x53B JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x51E JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP PUSH1 0x1 DUP4 ADD SLOAD PUSH1 0x2 SWAP1 SWAP4 ADD SLOAD SWAP2 SWAP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP4 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0x4C2 SWAP1 PUSH2 0x747 JUMP JUMPDEST PUSH1 0x3 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x57A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 SWAP2 POP SWAP1 POP DUP1 PUSH1 0x0 ADD DUP1 SLOAD PUSH2 0x4C2 SWAP1 PUSH2 0x747 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x5A9 SWAP1 PUSH2 0x747 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x5CB JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x611 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x5E4 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x611 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x611 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x611 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x5F6 JUMP JUMPDEST POP PUSH2 0x61D SWAP3 SWAP2 POP PUSH2 0x65E JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST POP DUP1 SLOAD PUSH2 0x62D SWAP1 PUSH2 0x747 JUMP JUMPDEST PUSH1 0x0 DUP3 SSTORE DUP1 PUSH1 0x1F LT PUSH2 0x63D JUMPI POP POP JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x65B SWAP2 SWAP1 PUSH2 0x65E JUMP JUMPDEST POP JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x61D JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x65F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x686 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x69D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 DUP5 MLOAD DUP1 PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x6D9 JUMPI PUSH1 0x20 DUP2 DUP9 ADD DUP2 ADD MLOAD PUSH1 0x80 DUP7 DUP5 ADD ADD MSTORE ADD PUSH2 0x6BC JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x6EB JUMPI PUSH1 0x0 PUSH1 0x80 DUP4 DUP7 ADD ADD MSTORE JUMPDEST POP PUSH1 0x20 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x80 PUSH1 0x1F SWAP1 SWAP3 ADD PUSH1 0x1F NOT AND ADD ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x72A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x75B JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x77B JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP INVALID 0xC2 JUMPI GAS 0xE SWAP15 MSIZE EXTCODECOPY STOP 0xF9 MSIZE 0xF8 0xC9 0x2F SLT 0xDB 0x28 PUSH10 0xC3395A3B0502D05E2516 DIFFICULTY PUSH16 0x71F85BA26469706673582212201DDB43 0xC 0x2A 0xFC 0xA9 0x26 SAR 0x27 CALLCODE 0xF8 0xAD CALLCODE 0xC TIMESTAMP 0xC9 SDIV BALANCE NUMBER ISZERO PUSH30 0x5E2639EE05B53A5404D764736F6C634300080D0033000000000000000000 ",
"sourceMap": "151:764:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;352:560;;;:::i;:::-;;306:39;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;263:14;;;:::i;283:17::-;;;;;;:::i;:::-;;:::i;352:560::-;409:31;;;;;;;;;;;;;;;;;-1:-1:-1;;;409:31:0;;;;;;;;;;;423:4;409:31;;;;;;;;429:10;409:31;;;;;;468:51;;;;;;;;;;;;;;-1:-1:-1;;;468:51:0;;;;;;;;;;494:4;468:51;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;554:19:0;;;;;;;;;;;-1:-1:-1;;;554:19:0;;;;;;;595:4;583:16;;;609:23;;;651:4;:15;;;;;;;;;;;;;;;409:31;;468:51;;-1:-1:-1;;409:31:0;;651:15;;-1:-1:-1;;;;;;;;;;;651:15:0;;;;;;;;;:::i;:::-;-1:-1:-1;651:15:0;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;651:15:0;;;-1:-1:-1;;;;;;651:15:0;;;;;;;;;;676:4;:15;;;;;;;651;676;;;;;;;686:4;;676:15;;;-1:-1:-1;;;;;;;;;;;676:15:0;;;;;;;;;;;:::i;:::-;-1:-1:-1;676:15:0;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;676:15:0;;;-1:-1:-1;;;;;;676:15:0;;;;;;;;;;709:4;:15;;;;;;;676;709;;;;;;;719:4;;709:15;;;-1:-1:-1;;;;;;;;;;;709:15:0;;;;;;;;;;;:::i;:::-;-1:-1:-1;709:15:0;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;709:15:0;;;-1:-1:-1;;;;;;709:15:0;;;;;;;;;;745:30;;;;;;;;;;;;;;-1:-1:-1;;;745:30:0;;;;;;758:4;745:30;;;;764:10;745:30;;;;;;;735:4;:41;;;;;;;709:15;735:41;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;735:41:0;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;735:41:0;;;;;-1:-1:-1;;;;;735:41:0;;;;;;;;787:15;805:4;810:1;805:7;;;;;;;;:::i;:::-;;;;;;;;;;;787:25;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;787:25:0;;;-1:-1:-1;;787:25:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;787:25:0;;;;;;849:4;837:9;;;:16;;;;-1:-1:-1;871:10:0;;;864:17;898:4;:7;;787:25;;-1:-1:-1;898:4:0;:7;;;;;;:::i;:::-;;;;;;;;;;;;;;891:14;898:7;;891:14;:::i;:::-;-1:-1:-1;891:14:0;;;;;;;;;-1:-1:-1;;;;;;891:14:0;;;-1:-1:-1;;;;352:560:0:o;306:39::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;306:39:0;;;;;;;;;;;;-1:-1:-1;;;;;306:39:0;;-1:-1:-1;306:39:0;:::o;263:14::-;;;;;;;;;:::i;283:17::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;14:354:1;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;185:23;;-1:-1:-1;;;;;237:31:1;;227:42;;217:70;;283:1;280;273:12;217:70;306:5;358:2;343:18;;;;330:32;;-1:-1:-1;;;14:354:1:o;373:753::-;578:2;567:9;560:21;541:4;610:6;604:13;653:6;648:2;637:9;633:18;626:34;678:1;688:145;702:6;699:1;696:13;688:145;;;816:4;800:14;;;796:25;;790:32;784:3;765:17;;;761:27;754:69;717:12;688:145;;;851:6;848:1;845:13;842:92;;;922:1;916:3;907:6;896:9;892:22;888:32;881:43;842:92;-1:-1:-1;1037:4:1;1022:20;;1015:36;;;;-1:-1:-1;;;;;;1087:32:1;;;;1082:2;1067:18;;1060:60;1002:3;995:2;974:15;;;-1:-1:-1;;970:29:1;955:45;951:55;;;-1:-1:-1;373:753:1:o;1131:180::-;1190:6;1243:2;1231:9;1222:7;1218:23;1214:32;1211:52;;;1259:1;1256;1249:12;1211:52;-1:-1:-1;1282:23:1;;1131:180;-1:-1:-1;1131:180:1:o;1316:127::-;1377:10;1372:3;1368:20;1365:1;1358:31;1408:4;1405:1;1398:15;1432:4;1429:1;1422:15;1448:380;1527:1;1523:12;;;;1570;;;1591:61;;1645:4;1637:6;1633:17;1623:27;;1591:61;1698:2;1690:6;1687:14;1667:18;1664:38;1661:161;;1744:10;1739:3;1735:20;1732:1;1725:31;1779:4;1776:1;1769:15;1807:4;1804:1;1797:15;1661:161;;1448:380;;;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "401400",
"executionCost": "436",
"totalCost": "401836"
},
"external": {
"car()": "infinite",
"cars(uint256)": "infinite",
"examples()": "infinite",
"owners(address,uint256)": "infinite"
}
},
"methodIdentifiers": {
"car()": "ee26fac3",
"cars(uint256)": "f7746e36",
"examples()": "335d00c2",
"owners(address,uint256)": "9b3e2787"
}
},
"abi": [
{
"inputs": [],
"name": "car",
"outputs": [
{
"internalType": "string",
"name": "model",
"type": "string"
},
{
"internalType": "uint256",
"name": "year",
"type": "uint256"
},
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "cars",
"outputs": [
{
"internalType": "string",
"name": "model",
"type": "string"
},
{
"internalType": "uint256",
"name": "year",
"type": "uint256"
},
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "examples",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "owners",
"outputs": [
{
"internalType": "string",
"name": "model",
"type": "string"
},
{
"internalType": "uint256",
"name": "year",
"type": "uint256"
},
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.13+commit.abaa5c0e"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [],
"name": "car",
"outputs": [
{
"internalType": "string",
"name": "model",
"type": "string"
},
{
"internalType": "uint256",
"name": "year",
"type": "uint256"
},
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "cars",
"outputs": [
{
"internalType": "string",
"name": "model",
"type": "string"
},
{
"internalType": "uint256",
"name": "year",
"type": "uint256"
},
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "examples",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "owners",
"outputs": [
{
"internalType": "string",
"name": "model",
"type": "string"
},
{
"internalType": "uint256",
"name": "year",
"type": "uint256"
},
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/Structs.sol": "Structs"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/Structs.sol": {
"keccak256": "0x190f29bef24b5b0eb8665c005caa1778432d0bacd8388cbd5a8d57e2ad35b277",
"license": "MIT",
"urls": [
"bzz-raw://0022fb9c8360151e2ef78188b90a5a8682bba38caae05dcf9e95b3dcf6a78932",
"dweb:/ipfs/Qmdnbwr5L6ZLoPq3ppoeg82xAnzAPpzo12Jc8ukbF8k1mo"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "608060405260001960005534801561001657600080fd5b50610232806100266000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063042116f1146100465780637c3ffef21461006b578063e5b5019a1461007e575b600080fd5b61005961005436600461016b565b610087565b60405190815260200160405180910390f35b61005961007936600461016b565b61009a565b61005960005481565b600061009383836100a6565b9392505050565b6000610093838361011c565b6000806100b383856101a3565b9050826100c085836101c2565b146100935760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b60008061012983856101e4565b9050838110156100935760405162461bcd60e51b815260206004820152600d60248201526c75696e74206f766572666c6f7760981b6044820152606401610113565b6000806040838503121561017e57600080fd5b50508035926020909101359150565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156101bd576101bd61018d565b500290565b6000826101df57634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156101f7576101f761018d565b50019056fea2646970667358221220ef17229bdedec8fdcd430c26c7305c6d8f240f1c2c9d42246619689515249cdb64736f6c634300080d0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 NOT PUSH1 0x0 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x232 DUP1 PUSH2 0x26 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 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x42116F1 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x7C3FFEF2 EQ PUSH2 0x6B JUMPI DUP1 PUSH4 0xE5B5019A EQ PUSH2 0x7E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0x54 CALLDATASIZE PUSH1 0x4 PUSH2 0x16B JUMP JUMPDEST PUSH2 0x87 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x59 PUSH2 0x79 CALLDATASIZE PUSH1 0x4 PUSH2 0x16B JUMP JUMPDEST PUSH2 0x9A JUMP JUMPDEST PUSH2 0x59 PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x93 DUP4 DUP4 PUSH2 0xA6 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x93 DUP4 DUP4 PUSH2 0x11C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xB3 DUP4 DUP6 PUSH2 0x1A3 JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0xC0 DUP6 DUP4 PUSH2 0x1C2 JUMP JUMPDEST EQ PUSH2 0x93 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x129 DUP4 DUP6 PUSH2 0x1E4 JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x93 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x75696E74206F766572666C6F77 PUSH1 0x98 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x113 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x17E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x1BD JUMPI PUSH2 0x1BD PUSH2 0x18D JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1DF JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x1F7 JUMPI PUSH2 0x1F7 PUSH2 0x18D JUMP JUMPDEST POP ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEF OR 0x22 SWAP12 0xDE 0xDE 0xC8 REVERT 0xCD NUMBER 0xC 0x26 0xC7 ADDRESS 0x5C PUSH14 0x8F240F1C2C9D4224661968951524 SWAP13 0xDB PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ",
"sourceMap": "442:306:0:-:0;;;-1:-1:-1;;500:33:0;;442:306;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@MAX_UINT_65": {
"entryPoint": null,
"id": 65,
"parameterSlots": 0,
"returnSlots": 0
},
"@add_26": {
"entryPoint": 284,
"id": 26,
"parameterSlots": 2,
"returnSlots": 1
},
"@multiply_54": {
"entryPoint": 166,
"id": 54,
"parameterSlots": 2,
"returnSlots": 1
},
"@testAdd_80": {
"entryPoint": 154,
"id": 80,
"parameterSlots": 2,
"returnSlots": 1
},
"@testMultiply_96": {
"entryPoint": 135,
"id": 96,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_uint256t_uint256": {
"entryPoint": 363,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_encode_tuple_t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_d7619cf226aa1083efd1d1aceaadcc6f0915c69c3fbd27ef531e87c5ccbd257f__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_add_t_uint256": {
"entryPoint": 484,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_div_t_uint256": {
"entryPoint": 450,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_mul_t_uint256": {
"entryPoint": 419,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"panic_error_0x11": {
"entryPoint": 397,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:1850:1",
"statements": [
{
"nodeType": "YulBlock",
"src": "6:3:1",
"statements": []
},
{
"body": {
"nodeType": "YulBlock",
"src": "101:161:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "147:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "156:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "159:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "149:6:1"
},
"nodeType": "YulFunctionCall",
"src": "149:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "149:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "122:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "131:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "118:3:1"
},
"nodeType": "YulFunctionCall",
"src": "118:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "143:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "114:3:1"
},
"nodeType": "YulFunctionCall",
"src": "114:32:1"
},
"nodeType": "YulIf",
"src": "111:52:1"
},
{
"nodeType": "YulAssignment",
"src": "172:33:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "195:9:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "182:12:1"
},
"nodeType": "YulFunctionCall",
"src": "182:23:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "172:6:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "214:42:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "241:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "252:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "237:3:1"
},
"nodeType": "YulFunctionCall",
"src": "237:18:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "224:12:1"
},
"nodeType": "YulFunctionCall",
"src": "224:32:1"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "214:6:1"
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "59:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "70:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "82:6:1",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "90:6:1",
"type": ""
}
],
"src": "14:248:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "368:76:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "378:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "390:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "401:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "386:3:1"
},
"nodeType": "YulFunctionCall",
"src": "386:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "378:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "420:9:1"
},
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "431:6:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "413:6:1"
},
"nodeType": "YulFunctionCall",
"src": "413:25:1"
},
"nodeType": "YulExpressionStatement",
"src": "413:25:1"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "337:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "348:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "359:4:1",
"type": ""
}
],
"src": "267:177:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "481:95:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "498:1:1",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "505:3:1",
"type": "",
"value": "224"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "510:10:1",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "501:3:1"
},
"nodeType": "YulFunctionCall",
"src": "501:20:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "491:6:1"
},
"nodeType": "YulFunctionCall",
"src": "491:31:1"
},
"nodeType": "YulExpressionStatement",
"src": "491:31:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "538:1:1",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "541:4:1",
"type": "",
"value": "0x11"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "531:6:1"
},
"nodeType": "YulFunctionCall",
"src": "531:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "531:15:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "562:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "565:4:1",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "555:6:1"
},
"nodeType": "YulFunctionCall",
"src": "555:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "555:15:1"
}
]
},
"name": "panic_error_0x11",
"nodeType": "YulFunctionDefinition",
"src": "449:127:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "633:116:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "692:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "694:16:1"
},
"nodeType": "YulFunctionCall",
"src": "694:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "694:18:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "664:1:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "657:6:1"
},
"nodeType": "YulFunctionCall",
"src": "657:9:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "650:6:1"
},
"nodeType": "YulFunctionCall",
"src": "650:17:1"
},
{
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "672:1:1"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "683:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "679:3:1"
},
"nodeType": "YulFunctionCall",
"src": "679:6:1"
},
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "687:1:1"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "675:3:1"
},
"nodeType": "YulFunctionCall",
"src": "675:14:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "669:2:1"
},
"nodeType": "YulFunctionCall",
"src": "669:21:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "646:3:1"
},
"nodeType": "YulFunctionCall",
"src": "646:45:1"
},
"nodeType": "YulIf",
"src": "643:71:1"
},
{
"nodeType": "YulAssignment",
"src": "723:20:1",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "738:1:1"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "741:1:1"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "734:3:1"
},
"nodeType": "YulFunctionCall",
"src": "734:9:1"
},
"variableNames": [
{
"name": "product",
"nodeType": "YulIdentifier",
"src": "723:7:1"
}
]
}
]
},
"name": "checked_mul_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "612:1:1",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "615:1:1",
"type": ""
}
],
"returnVariables": [
{
"name": "product",
"nodeType": "YulTypedName",
"src": "621:7:1",
"type": ""
}
],
"src": "581:168:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "800:171:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "831:111:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "852:1:1",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "859:3:1",
"type": "",
"value": "224"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "864:10:1",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "855:3:1"
},
"nodeType": "YulFunctionCall",
"src": "855:20:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "845:6:1"
},
"nodeType": "YulFunctionCall",
"src": "845:31:1"
},
"nodeType": "YulExpressionStatement",
"src": "845:31:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "896:1:1",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "899:4:1",
"type": "",
"value": "0x12"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "889:6:1"
},
"nodeType": "YulFunctionCall",
"src": "889:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "889:15:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "924:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "927:4:1",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "917:6:1"
},
"nodeType": "YulFunctionCall",
"src": "917:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "917:15:1"
}
]
},
"condition": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "820:1:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "813:6:1"
},
"nodeType": "YulFunctionCall",
"src": "813:9:1"
},
"nodeType": "YulIf",
"src": "810:132:1"
},
{
"nodeType": "YulAssignment",
"src": "951:14:1",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "960:1:1"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "963:1:1"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "956:3:1"
},
"nodeType": "YulFunctionCall",
"src": "956:9:1"
},
"variableNames": [
{
"name": "r",
"nodeType": "YulIdentifier",
"src": "951:1:1"
}
]
}
]
},
"name": "checked_div_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "785:1:1",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "788:1:1",
"type": ""
}
],
"returnVariables": [
{
"name": "r",
"nodeType": "YulTypedName",
"src": "794:1:1",
"type": ""
}
],
"src": "754:217:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1150:223:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1167:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1178:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1160:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1160:21:1"
},
"nodeType": "YulExpressionStatement",
"src": "1160:21:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1201:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1212:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1197:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1197:18:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1217:2:1",
"type": "",
"value": "33"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1190:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1190:30:1"
},
"nodeType": "YulExpressionStatement",
"src": "1190:30:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1240:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1251:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1236:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1236:18:1"
},
{
"hexValue": "536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f",
"kind": "string",
"nodeType": "YulLiteral",
"src": "1256:34:1",
"type": "",
"value": "SafeMath: multiplication overflo"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1229:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1229:62:1"
},
"nodeType": "YulExpressionStatement",
"src": "1229:62:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1311:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1322:2:1",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1307:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1307:18:1"
},
{
"hexValue": "77",
"kind": "string",
"nodeType": "YulLiteral",
"src": "1327:3:1",
"type": "",
"value": "w"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1300:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1300:31:1"
},
"nodeType": "YulExpressionStatement",
"src": "1300:31:1"
},
{
"nodeType": "YulAssignment",
"src": "1340:27:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1352:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1363:3:1",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1348:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1348:19:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1340:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1127:9:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1141:4:1",
"type": ""
}
],
"src": "976:397:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1426:80:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1453:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "1455:16:1"
},
"nodeType": "YulFunctionCall",
"src": "1455:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "1455:18:1"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "1442:1:1"
},
{
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "1449:1:1"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "1445:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1445:6:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "1439:2:1"
},
"nodeType": "YulFunctionCall",
"src": "1439:13:1"
},
"nodeType": "YulIf",
"src": "1436:39:1"
},
{
"nodeType": "YulAssignment",
"src": "1484:16:1",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "1495:1:1"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "1498:1:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1491:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1491:9:1"
},
"variableNames": [
{
"name": "sum",
"nodeType": "YulIdentifier",
"src": "1484:3:1"
}
]
}
]
},
"name": "checked_add_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "1409:1:1",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "1412:1:1",
"type": ""
}
],
"returnVariables": [
{
"name": "sum",
"nodeType": "YulTypedName",
"src": "1418:3:1",
"type": ""
}
],
"src": "1378:128:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1685:163:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1702:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1713:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1695:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1695:21:1"
},
"nodeType": "YulExpressionStatement",
"src": "1695:21:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1736:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1747:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1732:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1732:18:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1752:2:1",
"type": "",
"value": "13"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1725:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1725:30:1"
},
"nodeType": "YulExpressionStatement",
"src": "1725:30:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1775:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1786:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1771:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1771:18:1"
},
{
"hexValue": "75696e74206f766572666c6f77",
"kind": "string",
"nodeType": "YulLiteral",
"src": "1791:15:1",
"type": "",
"value": "uint overflow"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1764:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1764:43:1"
},
"nodeType": "YulExpressionStatement",
"src": "1764:43:1"
},
{
"nodeType": "YulAssignment",
"src": "1816:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1828:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1839:2:1",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1824:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1824:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1816:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_d7619cf226aa1083efd1d1aceaadcc6f0915c69c3fbd27ef531e87c5ccbd257f__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1662:9:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1676:4:1",
"type": ""
}
],
"src": "1511:337:1"
}
]
},
"contents": "{\n { }\n function abi_decode_tuple_t_uint256t_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_mul_t_uint256(x, y) -> product\n {\n if and(iszero(iszero(x)), gt(y, div(not(0), x))) { panic_error_0x11() }\n product := mul(x, y)\n }\n function checked_div_t_uint256(x, y) -> r\n {\n if iszero(y)\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n r := div(x, y)\n }\n function abi_encode_tuple_t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 33)\n mstore(add(headStart, 64), \"SafeMath: multiplication overflo\")\n mstore(add(headStart, 96), \"w\")\n tail := add(headStart, 128)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n if gt(x, not(y)) { panic_error_0x11() }\n sum := add(x, y)\n }\n function abi_encode_tuple_t_stringliteral_d7619cf226aa1083efd1d1aceaadcc6f0915c69c3fbd27ef531e87c5ccbd257f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 13)\n mstore(add(headStart, 64), \"uint overflow\")\n tail := add(headStart, 96)\n }\n}",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50600436106100415760003560e01c8063042116f1146100465780637c3ffef21461006b578063e5b5019a1461007e575b600080fd5b61005961005436600461016b565b610087565b60405190815260200160405180910390f35b61005961007936600461016b565b61009a565b61005960005481565b600061009383836100a6565b9392505050565b6000610093838361011c565b6000806100b383856101a3565b9050826100c085836101c2565b146100935760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b60008061012983856101e4565b9050838110156100935760405162461bcd60e51b815260206004820152600d60248201526c75696e74206f766572666c6f7760981b6044820152606401610113565b6000806040838503121561017e57600080fd5b50508035926020909101359150565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156101bd576101bd61018d565b500290565b6000826101df57634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156101f7576101f761018d565b50019056fea2646970667358221220ef17229bdedec8fdcd430c26c7305c6d8f240f1c2c9d42246619689515249cdb64736f6c634300080d0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x42116F1 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x7C3FFEF2 EQ PUSH2 0x6B JUMPI DUP1 PUSH4 0xE5B5019A EQ PUSH2 0x7E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0x54 CALLDATASIZE PUSH1 0x4 PUSH2 0x16B JUMP JUMPDEST PUSH2 0x87 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x59 PUSH2 0x79 CALLDATASIZE PUSH1 0x4 PUSH2 0x16B JUMP JUMPDEST PUSH2 0x9A JUMP JUMPDEST PUSH2 0x59 PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x93 DUP4 DUP4 PUSH2 0xA6 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x93 DUP4 DUP4 PUSH2 0x11C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xB3 DUP4 DUP6 PUSH2 0x1A3 JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0xC0 DUP6 DUP4 PUSH2 0x1C2 JUMP JUMPDEST EQ PUSH2 0x93 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x129 DUP4 DUP6 PUSH2 0x1E4 JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x93 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x75696E74206F766572666C6F77 PUSH1 0x98 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x113 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x17E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x1BD JUMPI PUSH2 0x1BD PUSH2 0x18D JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1DF JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x1F7 JUMPI PUSH2 0x1F7 PUSH2 0x18D JUMP JUMPDEST POP ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEF OR 0x22 SWAP12 0xDE 0xDE 0xC8 REVERT 0xCD NUMBER 0xC 0x26 0xC7 ADDRESS 0x5C PUSH14 0x8F240F1C2C9D4224661968951524 SWAP13 0xDB PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ",
"sourceMap": "442:306:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;638:108;;;;;;:::i;:::-;;:::i;:::-;;;413:25:1;;;401:2;386:18;638:108:0;;;;;;;540:92;;;;;;:::i;:::-;;:::i;500:33::-;;;;;;638:108;697:4;720:19;734:1;737;720:13;:19::i;:::-;713:26;638:108;-1:-1:-1;;;638:108:0:o;540:92::-;594:4;617:8;:1;623;617:5;:8::i;255:183::-;312:4;;340:5;344:1;340;:5;:::i;:::-;328:17;-1:-1:-1;372:1:0;363:5;367:1;328:17;363:5;:::i;:::-;:10;355:56;;;;-1:-1:-1;;;355:56:0;;1178:2:1;355:56:0;;;1160:21:1;1217:2;1197:18;;;1190:30;1256:34;1236:18;;;1229:62;-1:-1:-1;;;1307:18:1;;;1300:31;1348:19;;355:56:0;;;;;;;;82:150;134:4;;159:5;163:1;159;:5;:::i;:::-;150:14;;187:1;182;:6;;174:32;;;;-1:-1:-1;;;174:32:0;;1713:2:1;174:32:0;;;1695:21:1;1752:2;1732:18;;;1725:30;-1:-1:-1;;;1771:18:1;;;1764:43;1824:18;;174:32:0;1511:337:1;14:248;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;182:23:1;;;252:2;237:18;;;224:32;;-1:-1:-1;14:248:1:o;449:127::-;510:10;505:3;501:20;498:1;491:31;541:4;538:1;531:15;565:4;562:1;555:15;581:168;621:7;687:1;683;679:6;675:14;672:1;669:21;664:1;657:9;650:17;646:45;643:71;;;694:18;;:::i;:::-;-1:-1:-1;734:9:1;;581:168::o;754:217::-;794:1;820;810:132;;864:10;859:3;855:20;852:1;845:31;899:4;896:1;889:15;927:4;924:1;917:15;810:132;-1:-1:-1;956:9:1;;754:217::o;1378:128::-;1418:3;1449:1;1445:6;1442:1;1439:13;1436:39;;;1455:18;;:::i;:::-;-1:-1:-1;1491:9:1;;1378:128::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "112400",
"executionCost": "22268",
"totalCost": "134668"
},
"external": {
"MAX_UINT()": "2305",
"testAdd(uint256,uint256)": "infinite",
"testMultiply(uint256,uint256)": "infinite"
}
},
"methodIdentifiers": {
"MAX_UINT()": "e5b5019a",
"testAdd(uint256,uint256)": "7c3ffef2",
"testMultiply(uint256,uint256)": "042116f1"
}
},
"abi": [
{
"inputs": [],
"name": "MAX_UINT",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "x",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "y",
"type": "uint256"
}
],
"name": "testAdd",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "a",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "b",
"type": "uint256"
}
],
"name": "testMultiply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "pure",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.13+commit.abaa5c0e"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [],
"name": "MAX_UINT",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "x",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "y",
"type": "uint256"
}
],
"name": "testAdd",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "a",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "b",
"type": "uint256"
}
],
"name": "testMultiply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "pure",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/Libraries.sol": "TestSafeMath"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/Libraries.sol": {
"keccak256": "0x337b22aeca8904b1c77a45357fb38870c6f1ac074ffb5184132214f2a70c56b6",
"license": "MIT",
"urls": [
"bzz-raw://91a48796c5d72163f5c3adb9e8eeae34c78bc4cfee28a66e79e64944b9c7c380",
"dweb:/ipfs/Qma7wEsg3Lg4XDEJJwJYP38Rqy15vwsYhjYHRBUHc1HtST"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50610184806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063042116f114610030575b600080fd5b61004361003e3660046100dd565b610055565b60405190815260200160405180910390f35b60006100618383610068565b9392505050565b60008061007583856100ff565b905082610082858361012c565b146100615760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840160405180910390fd5b600080604083850312156100f057600080fd5b50508035926020909101359150565b600081600019048311821515161561012757634e487b7160e01b600052601160045260246000fd5b500290565b60008261014957634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220b587b390e34afb6eec16bc38bfa340e937c1852d58f556b29726a2b75908ef2564736f6c634300080d0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x184 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 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x42116F1 EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x3E CALLDATASIZE PUSH1 0x4 PUSH2 0xDD JUMP JUMPDEST PUSH2 0x55 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH2 0x61 DUP4 DUP4 PUSH2 0x68 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x75 DUP4 DUP6 PUSH2 0xFF JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0x82 DUP6 DUP4 PUSH2 0x12C JUMP JUMPDEST EQ PUSH2 0x61 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x127 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x149 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB5 DUP8 0xB3 SWAP1 0xE3 0x4A 0xFB PUSH15 0xEC16BC38BFA340E937C1852D58F556 0xB2 SWAP8 0x26 LOG2 0xB7 MSIZE ADDMOD 0xEF 0x25 PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ",
"sourceMap": "442:147:0:-:0;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@multiply_54": {
"entryPoint": 104,
"id": 54,
"parameterSlots": 2,
"returnSlots": 1
},
"@testMultiply_71": {
"entryPoint": 85,
"id": 71,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_uint256t_uint256": {
"entryPoint": 221,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_encode_tuple_t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_div_t_uint256": {
"entryPoint": 300,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_mul_t_uint256": {
"entryPoint": 255,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:1340:1",
"statements": [
{
"nodeType": "YulBlock",
"src": "6:3:1",
"statements": []
},
{
"body": {
"nodeType": "YulBlock",
"src": "101:161:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "147:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "156:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "159:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "149:6:1"
},
"nodeType": "YulFunctionCall",
"src": "149:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "149:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "122:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "131:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "118:3:1"
},
"nodeType": "YulFunctionCall",
"src": "118:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "143:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "114:3:1"
},
"nodeType": "YulFunctionCall",
"src": "114:32:1"
},
"nodeType": "YulIf",
"src": "111:52:1"
},
{
"nodeType": "YulAssignment",
"src": "172:33:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "195:9:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "182:12:1"
},
"nodeType": "YulFunctionCall",
"src": "182:23:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "172:6:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "214:42:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "241:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "252:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "237:3:1"
},
"nodeType": "YulFunctionCall",
"src": "237:18:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "224:12:1"
},
"nodeType": "YulFunctionCall",
"src": "224:32:1"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "214:6:1"
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "59:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "70:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "82:6:1",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "90:6:1",
"type": ""
}
],
"src": "14:248:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "368:76:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "378:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "390:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "401:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "386:3:1"
},
"nodeType": "YulFunctionCall",
"src": "386:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "378:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "420:9:1"
},
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "431:6:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "413:6:1"
},
"nodeType": "YulFunctionCall",
"src": "413:25:1"
},
"nodeType": "YulExpressionStatement",
"src": "413:25:1"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "337:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "348:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "359:4:1",
"type": ""
}
],
"src": "267:177:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "501:213:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "568:111:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "589:1:1",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "596:3:1",
"type": "",
"value": "224"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "601:10:1",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "592:3:1"
},
"nodeType": "YulFunctionCall",
"src": "592:20:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "582:6:1"
},
"nodeType": "YulFunctionCall",
"src": "582:31:1"
},
"nodeType": "YulExpressionStatement",
"src": "582:31:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "633:1:1",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "636:4:1",
"type": "",
"value": "0x11"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "626:6:1"
},
"nodeType": "YulFunctionCall",
"src": "626:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "626:15:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "661:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "664:4:1",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "654:6:1"
},
"nodeType": "YulFunctionCall",
"src": "654:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "654:15:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "532:1:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "525:6:1"
},
"nodeType": "YulFunctionCall",
"src": "525:9:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "518:6:1"
},
"nodeType": "YulFunctionCall",
"src": "518:17:1"
},
{
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "540:1:1"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "551:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "547:3:1"
},
"nodeType": "YulFunctionCall",
"src": "547:6:1"
},
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "555:1:1"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "543:3:1"
},
"nodeType": "YulFunctionCall",
"src": "543:14:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "537:2:1"
},
"nodeType": "YulFunctionCall",
"src": "537:21:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "514:3:1"
},
"nodeType": "YulFunctionCall",
"src": "514:45:1"
},
"nodeType": "YulIf",
"src": "511:168:1"
},
{
"nodeType": "YulAssignment",
"src": "688:20:1",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "703:1:1"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "706:1:1"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "699:3:1"
},
"nodeType": "YulFunctionCall",
"src": "699:9:1"
},
"variableNames": [
{
"name": "product",
"nodeType": "YulIdentifier",
"src": "688:7:1"
}
]
}
]
},
"name": "checked_mul_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "480:1:1",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "483:1:1",
"type": ""
}
],
"returnVariables": [
{
"name": "product",
"nodeType": "YulTypedName",
"src": "489:7:1",
"type": ""
}
],
"src": "449:265:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "765:171:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "796:111:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "817:1:1",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "824:3:1",
"type": "",
"value": "224"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "829:10:1",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "820:3:1"
},
"nodeType": "YulFunctionCall",
"src": "820:20:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "810:6:1"
},
"nodeType": "YulFunctionCall",
"src": "810:31:1"
},
"nodeType": "YulExpressionStatement",
"src": "810:31:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "861:1:1",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "864:4:1",
"type": "",
"value": "0x12"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "854:6:1"
},
"nodeType": "YulFunctionCall",
"src": "854:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "854:15:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "889:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "892:4:1",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "882:6:1"
},
"nodeType": "YulFunctionCall",
"src": "882:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "882:15:1"
}
]
},
"condition": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "785:1:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "778:6:1"
},
"nodeType": "YulFunctionCall",
"src": "778:9:1"
},
"nodeType": "YulIf",
"src": "775:132:1"
},
{
"nodeType": "YulAssignment",
"src": "916:14:1",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "925:1:1"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "928:1:1"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "921:3:1"
},
"nodeType": "YulFunctionCall",
"src": "921:9:1"
},
"variableNames": [
{
"name": "r",
"nodeType": "YulIdentifier",
"src": "916:1:1"
}
]
}
]
},
"name": "checked_div_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "750:1:1",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "753:1:1",
"type": ""
}
],
"returnVariables": [
{
"name": "r",
"nodeType": "YulTypedName",
"src": "759:1:1",
"type": ""
}
],
"src": "719:217:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1115:223:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1132:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1143:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1125:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1125:21:1"
},
"nodeType": "YulExpressionStatement",
"src": "1125:21:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1166:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1177:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1162:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1162:18:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1182:2:1",
"type": "",
"value": "33"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1155:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1155:30:1"
},
"nodeType": "YulExpressionStatement",
"src": "1155:30:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1205:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1216:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1201:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1201:18:1"
},
{
"hexValue": "536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f",
"kind": "string",
"nodeType": "YulLiteral",
"src": "1221:34:1",
"type": "",
"value": "SafeMath: multiplication overflo"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1194:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1194:62:1"
},
"nodeType": "YulExpressionStatement",
"src": "1194:62:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1276:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1287:2:1",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1272:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1272:18:1"
},
{
"hexValue": "77",
"kind": "string",
"nodeType": "YulLiteral",
"src": "1292:3:1",
"type": "",
"value": "w"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1265:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1265:31:1"
},
"nodeType": "YulExpressionStatement",
"src": "1265:31:1"
},
{
"nodeType": "YulAssignment",
"src": "1305:27:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1317:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1328:3:1",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1313:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1313:19:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1305:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1092:9:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1106:4:1",
"type": ""
}
],
"src": "941:397:1"
}
]
},
"contents": "{\n { }\n function abi_decode_tuple_t_uint256t_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function checked_mul_t_uint256(x, y) -> product\n {\n if and(iszero(iszero(x)), gt(y, div(not(0), x)))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n product := mul(x, y)\n }\n function checked_div_t_uint256(x, y) -> r\n {\n if iszero(y)\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n r := div(x, y)\n }\n function abi_encode_tuple_t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 33)\n mstore(add(headStart, 64), \"SafeMath: multiplication overflo\")\n mstore(add(headStart, 96), \"w\")\n tail := add(headStart, 128)\n }\n}",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "608060405234801561001057600080fd5b506004361061002b5760003560e01c8063042116f114610030575b600080fd5b61004361003e3660046100dd565b610055565b60405190815260200160405180910390f35b60006100618383610068565b9392505050565b60008061007583856100ff565b905082610082858361012c565b146100615760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840160405180910390fd5b600080604083850312156100f057600080fd5b50508035926020909101359150565b600081600019048311821515161561012757634e487b7160e01b600052601160045260246000fd5b500290565b60008261014957634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220b587b390e34afb6eec16bc38bfa340e937c1852d58f556b29726a2b75908ef2564736f6c634300080d0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x42116F1 EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x3E CALLDATASIZE PUSH1 0x4 PUSH2 0xDD JUMP JUMPDEST PUSH2 0x55 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH2 0x61 DUP4 DUP4 PUSH2 0x68 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x75 DUP4 DUP6 PUSH2 0xFF JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0x82 DUP6 DUP4 PUSH2 0x12C JUMP JUMPDEST EQ PUSH2 0x61 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x127 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x149 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB5 DUP8 0xB3 SWAP1 0xE3 0x4A 0xFB PUSH15 0xEC16BC38BFA340E937C1852D58F556 0xB2 SWAP8 0x26 LOG2 0xB7 MSIZE ADDMOD 0xEF 0x25 PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ",
"sourceMap": "442:147:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;479:108;;;;;;:::i;:::-;;:::i;:::-;;;413:25:1;;;401:2;386:18;479:108:0;;;;;;;;538:4;561:19;575:1;578;561:13;:19::i;:::-;554:26;479:108;-1:-1:-1;;;479:108:0:o;255:183::-;312:4;;340:5;344:1;340;:5;:::i;:::-;328:17;-1:-1:-1;372:1:0;363:5;367:1;328:17;363:5;:::i;:::-;:10;355:56;;;;-1:-1:-1;;;355:56:0;;1143:2:1;355:56:0;;;1125:21:1;1182:2;1162:18;;;1155:30;1221:34;1201:18;;;1194:62;-1:-1:-1;;;1272:18:1;;;1265:31;1313:19;;355:56:0;;;;;;;14:248:1;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;182:23:1;;;252:2;237:18;;;224:32;;-1:-1:-1;14:248:1:o;449:265::-;489:7;555:1;551;547:6;543:14;540:1;537:21;532:1;525:9;518:17;514:45;511:168;;;601:10;596:3;592:20;589:1;582:31;636:4;633:1;626:15;664:4;661:1;654:15;511:168;-1:-1:-1;699:9:1;;449:265::o;719:217::-;759:1;785;775:132;;829:10;824:3;820:20;817:1;810:31;864:4;861:1;854:15;892:4;889:1;882:15;775:132;-1:-1:-1;921:9:1;;719:217::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "77600",
"executionCost": "129",
"totalCost": "77729"
},
"external": {
"testMultiply(uint256,uint256)": "infinite"
}
},
"methodIdentifiers": {
"testMultiply(uint256,uint256)": "042116f1"
}
},
"abi": [
{
"inputs": [
{
"internalType": "uint256",
"name": "a",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "b",
"type": "uint256"
}
],
"name": "testMultiply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "pure",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.13+commit.abaa5c0e"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "uint256",
"name": "a",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "b",
"type": "uint256"
}
],
"name": "testMultiply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "pure",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/Libraries.sol": "TestSafeMathAsLibrary"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/Libraries.sol": {
"keccak256": "0xefb9c44ffde11a3f8baf0737c65c2b29110ce46a17a28e71f8163781327a234e",
"license": "MIT",
"urls": [
"bzz-raw://8d34489b92921b8366816835ebe77622dba4644404f18a0313393588db20cc27",
"dweb:/ipfs/QmWHZa6n2Mn5AD23SBRveYyiUx2gW3Ne8iD3MN2BvkD2H3"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "608060405234801561001057600080fd5b5061012b806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80637c3ffef214602d575b600080fd5b603c603836600460af565b604e565b60405190815260200160405180910390f35b600060588383605f565b9392505050565b600080606a838560d0565b90508381101560585760405162461bcd60e51b815260206004820152600d60248201526c75696e74206f766572666c6f7760981b604482015260640160405180910390fd5b6000806040838503121560c157600080fd5b50508035926020909101359150565b6000821982111560f057634e487b7160e01b600052601160045260246000fd5b50019056fea264697066735822122096a7404c6646bd9ac8897f28ae92216c3f0c9915ec50fe048a2cfbe40f98fc8b64736f6c634300080d0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12B 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 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7C3FFEF2 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3C PUSH1 0x38 CALLDATASIZE PUSH1 0x4 PUSH1 0xAF JUMP JUMPDEST PUSH1 0x4E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x58 DUP4 DUP4 PUSH1 0x5F JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x6A DUP4 DUP6 PUSH1 0xD0 JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH1 0x58 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x75696E74206F766572666C6F77 PUSH1 0x98 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH1 0xC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH1 0xF0 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP7 0xA7 BLOCKHASH 0x4C PUSH7 0x46BD9AC8897F28 0xAE SWAP3 0x21 PUSH13 0x3F0C9915EC50FE048A2CFBE40F SWAP9 0xFC DUP12 PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ",
"sourceMap": "591:163:0:-:0;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@add_26": {
"entryPoint": 95,
"id": 26,
"parameterSlots": 2,
"returnSlots": 1
},
"@testAdd_90": {
"entryPoint": 78,
"id": 90,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_uint256t_uint256": {
"entryPoint": 175,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_encode_tuple_t_stringliteral_d7619cf226aa1083efd1d1aceaadcc6f0915c69c3fbd27ef531e87c5ccbd257f__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_add_t_uint256": {
"entryPoint": 208,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:1018:1",
"statements": [
{
"nodeType": "YulBlock",
"src": "6:3:1",
"statements": []
},
{
"body": {
"nodeType": "YulBlock",
"src": "101:161:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "147:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "156:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "159:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "149:6:1"
},
"nodeType": "YulFunctionCall",
"src": "149:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "149:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "122:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "131:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "118:3:1"
},
"nodeType": "YulFunctionCall",
"src": "118:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "143:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "114:3:1"
},
"nodeType": "YulFunctionCall",
"src": "114:32:1"
},
"nodeType": "YulIf",
"src": "111:52:1"
},
{
"nodeType": "YulAssignment",
"src": "172:33:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "195:9:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "182:12:1"
},
"nodeType": "YulFunctionCall",
"src": "182:23:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "172:6:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "214:42:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "241:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "252:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "237:3:1"
},
"nodeType": "YulFunctionCall",
"src": "237:18:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "224:12:1"
},
"nodeType": "YulFunctionCall",
"src": "224:32:1"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "214:6:1"
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "59:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "70:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "82:6:1",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "90:6:1",
"type": ""
}
],
"src": "14:248:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "368:76:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "378:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "390:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "401:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "386:3:1"
},
"nodeType": "YulFunctionCall",
"src": "386:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "378:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "420:9:1"
},
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "431:6:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "413:6:1"
},
"nodeType": "YulFunctionCall",
"src": "413:25:1"
},
"nodeType": "YulExpressionStatement",
"src": "413:25:1"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "337:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "348:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "359:4:1",
"type": ""
}
],
"src": "267:177:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "497:177:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "532:111:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "553:1:1",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "560:3:1",
"type": "",
"value": "224"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "565:10:1",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "556:3:1"
},
"nodeType": "YulFunctionCall",
"src": "556:20:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "546:6:1"
},
"nodeType": "YulFunctionCall",
"src": "546:31:1"
},
"nodeType": "YulExpressionStatement",
"src": "546:31:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "597:1:1",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "600:4:1",
"type": "",
"value": "0x11"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "590:6:1"
},
"nodeType": "YulFunctionCall",
"src": "590:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "590:15:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "625:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "628:4:1",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "618:6:1"
},
"nodeType": "YulFunctionCall",
"src": "618:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "618:15:1"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "513:1:1"
},
{
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "520:1:1"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "516:3:1"
},
"nodeType": "YulFunctionCall",
"src": "516:6:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "510:2:1"
},
"nodeType": "YulFunctionCall",
"src": "510:13:1"
},
"nodeType": "YulIf",
"src": "507:136:1"
},
{
"nodeType": "YulAssignment",
"src": "652:16:1",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "663:1:1"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "666:1:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "659:3:1"
},
"nodeType": "YulFunctionCall",
"src": "659:9:1"
},
"variableNames": [
{
"name": "sum",
"nodeType": "YulIdentifier",
"src": "652:3:1"
}
]
}
]
},
"name": "checked_add_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "480:1:1",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "483:1:1",
"type": ""
}
],
"returnVariables": [
{
"name": "sum",
"nodeType": "YulTypedName",
"src": "489:3:1",
"type": ""
}
],
"src": "449:225:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "853:163:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "870:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "881:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "863:6:1"
},
"nodeType": "YulFunctionCall",
"src": "863:21:1"
},
"nodeType": "YulExpressionStatement",
"src": "863:21:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "904:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "915:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "900:3:1"
},
"nodeType": "YulFunctionCall",
"src": "900:18:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "920:2:1",
"type": "",
"value": "13"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "893:6:1"
},
"nodeType": "YulFunctionCall",
"src": "893:30:1"
},
"nodeType": "YulExpressionStatement",
"src": "893:30:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "943:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "954:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "939:3:1"
},
"nodeType": "YulFunctionCall",
"src": "939:18:1"
},
{
"hexValue": "75696e74206f766572666c6f77",
"kind": "string",
"nodeType": "YulLiteral",
"src": "959:15:1",
"type": "",
"value": "uint overflow"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "932:6:1"
},
"nodeType": "YulFunctionCall",
"src": "932:43:1"
},
"nodeType": "YulExpressionStatement",
"src": "932:43:1"
},
{
"nodeType": "YulAssignment",
"src": "984:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "996:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1007:2:1",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "992:3:1"
},
"nodeType": "YulFunctionCall",
"src": "992:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "984:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_d7619cf226aa1083efd1d1aceaadcc6f0915c69c3fbd27ef531e87c5ccbd257f__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "830:9:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "844:4:1",
"type": ""
}
],
"src": "679:337:1"
}
]
},
"contents": "{\n { }\n function abi_decode_tuple_t_uint256t_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n if gt(x, not(y))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n sum := add(x, y)\n }\n function abi_encode_tuple_t_stringliteral_d7619cf226aa1083efd1d1aceaadcc6f0915c69c3fbd27ef531e87c5ccbd257f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 13)\n mstore(add(headStart, 64), \"uint overflow\")\n tail := add(headStart, 96)\n }\n}",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "6080604052348015600f57600080fd5b506004361060285760003560e01c80637c3ffef214602d575b600080fd5b603c603836600460af565b604e565b60405190815260200160405180910390f35b600060588383605f565b9392505050565b600080606a838560d0565b90508381101560585760405162461bcd60e51b815260206004820152600d60248201526c75696e74206f766572666c6f7760981b604482015260640160405180910390fd5b6000806040838503121560c157600080fd5b50508035926020909101359150565b6000821982111560f057634e487b7160e01b600052601160045260246000fd5b50019056fea264697066735822122096a7404c6646bd9ac8897f28ae92216c3f0c9915ec50fe048a2cfbe40f98fc8b64736f6c634300080d0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7C3FFEF2 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3C PUSH1 0x38 CALLDATASIZE PUSH1 0x4 PUSH1 0xAF JUMP JUMPDEST PUSH1 0x4E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x58 DUP4 DUP4 PUSH1 0x5F JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x6A DUP4 DUP6 PUSH1 0xD0 JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH1 0x58 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x75696E74206F766572666C6F77 PUSH1 0x98 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH1 0xC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH1 0xF0 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP7 0xA7 BLOCKHASH 0x4C PUSH7 0x46BD9AC8897F28 0xAE SWAP3 0x21 PUSH13 0x3F0C9915EC50FE048A2CFBE40F SWAP9 0xFC DUP12 PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ",
"sourceMap": "591:163:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;660:92;;;;;;:::i;:::-;;:::i;:::-;;;413:25:1;;;401:2;386:18;660:92:0;;;;;;;;714:4;737:8;:1;743;737:5;:8::i;:::-;730:15;660:92;-1:-1:-1;;;660:92:0:o;82:150::-;134:4;;159:5;163:1;159;:5;:::i;:::-;150:14;;187:1;182;:6;;174:32;;;;-1:-1:-1;;;174:32:0;;881:2:1;174:32:0;;;863:21:1;920:2;900:18;;;893:30;-1:-1:-1;;;939:18:1;;;932:43;992:18;;174:32:0;;;;;;;14:248:1;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;182:23:1;;;252:2;237:18;;;224:32;;-1:-1:-1;14:248:1:o;449:225::-;489:3;520:1;516:6;513:1;510:13;507:136;;;565:10;560:3;556:20;553:1;546:31;600:4;597:1;590:15;628:4;625:1;618:15;507:136;-1:-1:-1;659:9:1;;449:225::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "59800",
"executionCost": "111",
"totalCost": "59911"
},
"external": {
"testAdd(uint256,uint256)": "infinite"
}
},
"methodIdentifiers": {
"testAdd(uint256,uint256)": "7c3ffef2"
}
},
"abi": [
{
"inputs": [
{
"internalType": "uint256",
"name": "x",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "y",
"type": "uint256"
}
],
"name": "testAdd",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "pure",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.13+commit.abaa5c0e"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "uint256",
"name": "x",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "y",
"type": "uint256"
}
],
"name": "testAdd",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "pure",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/Libraries.sol": "TestSafeMathMonkeyPatch"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/Libraries.sol": {
"keccak256": "0xefb9c44ffde11a3f8baf0737c65c2b29110ce46a17a28e71f8163781327a234e",
"license": "MIT",
"urls": [
"bzz-raw://8d34489b92921b8366816835ebe77622dba4644404f18a0313393588db20cc27",
"dweb:/ipfs/QmWHZa6n2Mn5AD23SBRveYyiUx2gW3Ne8iD3MN2BvkD2H3"
]
}
},
"version": 1
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
contract CalledContract {
uint public x;
uint public value;
function setX(uint _x) public returns (uint) {
x = _x;
return x;
}
function setXandSendEther(uint _x) public payable returns (uint, uint) {
x = _x;
value = msg.value;
return (x, value);
}
}
contract CallingContract {
function setX(CalledContract _calledContract, uint _x) public {
uint x = _calledContract.setX(_x);
}
function setXFromAddress(address _addr, uint _x) public {
CalledContract calledContract = CalledContract(_addr);
calledContract.setX(_x);
}
function setXandSendEther(CalledContract _calledContract, uint _x) public payable {
(uint x, uint value) = _calledContract.setXandSendEther{value: msg.value}(_x);
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
contract Constants {
// coding convention to uppercase constant variables
address public constant MY_ADDRESS = 0x777788889999AaAAbBbbCcccddDdeeeEfFFfCcCc;
uint public constant MY_UINT = 123;
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
// Base contract X
contract X {
string public name;
constructor(string memory _name) {
name = _name;
}
}
// Base contract Y
contract Y {
string public text;
constructor(string memory _text) {
text = _text;
}
}
// There are 2 ways to initialize parent contract with parameters.
// Pass the parameters here in the inheritance list.
contract B is X("Input to X"), Y("Input to Y") {
}
contract C is X, Y {
// Pass the parameters here in the constructor,
// similar to function modifiers.
constructor(string memory _name, string memory _text) X(_name) Y(_text) {}
}
// Parent constructors are always called in the order of inheritance
// regardless of the order of parent contracts listed in the
// constructor of the child contract.
// Order of constructors called:
// 1. X
// 2. Y
// 3. D
contract D is X, Y {
constructor() X("X was called") Y("Y was called") {}
}
// Order of constructors called:
// 1. X
// 2. Y
// 3. E
contract E is X, Y {
constructor() Y("Y was called") X("X was called") {}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
contract DataLocations {
string myString; // Storage -> variable is a state variable (stored on blockchain)
// Memory -> variable is in memory and it exists while a function is being called
// You can use memory within a function's logic
// It is mutable
function memoryExample(string memory _exampleString) public returns (string memory) {
_exampleString = "example"; // You can modify _exampleString
string memory newString = _exampleString;
return newString; // You can return memory
}
// Calldata -> special data location that contains function arguments
// Calldata can only be used for function declaration parameters (and not function logic)
// It is immutable
// It must be used for dynamic parameters of an external function
function calldataTest(string calldata _exampleString) external returns (string memory) {
// Cannot modify _exampleString
// But can return it
return _exampleString;
}
}
/*
- State variables are always in storage
- Function arguments are always in memory
- Local variables of struct, array or mapping type reference storage by default
- Local variables of value type (i.e. neither array, nor struct nor mapping) are stored in the stack
*/
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
contract Error {
function testRequire(uint _i) public pure {
// Require should be used to validate conditions such as:
// - inputs
// - conditions before execution
// - return values from calls to other functions
require(_i > 10, "Input must be greater than 10");
}
function testRevert(uint _i) public pure {
// Revert is useful when the condition to check is complex.
// This code does the exact same thing as the example above
if (_i <= 10) {
revert("Input must be greater than 10");
}
}
uint public num;
function testAssert() public view {
// Assert should only be used to test for internal errors,
// and to check invariants.
// Here we assert that num is always equal to 0
// since it is impossible to update the value of num
assert(num == 0);
}
// Custom error (saves gas)
error InsufficientBalance(uint balance, uint withdrawAmount);
function testCustomError(uint _withdrawAmount) public view {
uint bal = address(this).balance;
if (bal < _withdrawAmount) {
revert InsufficientBalance({balance: bal, withdrawAmount: _withdrawAmount});
}
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
contract Event {
// Can index up to 3 parameters
// Indexed parameters helps you filter the logs by the indexed parameter
event Log(address indexed sender, string message);
event AnotherLog();
function test() public {
emit Log(msg.sender, "Hello World!");
emit Log(msg.sender, "Hello EVM!");
emit AnotherLog();
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
/*
Fallback function is executed either when
1) A function that does not exist is called or
2) Ether is sent directly to a contract but receive() does not exist or msg.data is not empty
fallback does not take any arguments and does not return anything
*/
contract Fallback {
event Log(uint gas);
// Fallback function must be declared as external
fallback() external payable {
// send / transfer (forwards 2300 gas to this fallback function)
// call (forwards all of the gas)
emit Log(gasleft());
}
// Helper function to check the balance of this contract
function getBalance() public view returns (uint) {
return address(this).balance;
}
}
contract SendToFallback {
function transferToFallback(address payable _to) public payable {
_to.transfer(msg.value);
}
function callFallback(address payable _to) public payable {
(bool sent, ) = _to.call{value: msg.value}("");
require(sent, "Failed to send Ether");
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
contract Counter {
uint public count;
// Function to get the current count
function get() public view returns (uint) {
return count;
}
// Function to increment count by 1
function inc() public {
count += 1;
}
// Function to decrement count by 1
function dec() public {
// This function will fail if count = 0
count -= 1;
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
contract Function {
// Functions can return multiple values.
function returnMany()
public
pure
returns (
uint,
bool,
uint
)
{
return (1, true, 2);
}
// Return values can be named.
function named()
public
pure
returns (
uint x,
bool b,
uint y
)
{
return (1, true, 2);
}
// Return values can be assigned to their name.
// In this case the return statement can be omitted.
function assigned()
public
pure
returns (
uint x,
bool b,
uint y
)
{
x = 1;
b = true;
y = 2;
}
// Use destructuring assignment when calling another
// function that returns multiple values.
function destructuringAssignments()
public
pure
returns (
uint,
bool,
uint,
uint,
uint
)
{
(uint i, bool b, uint j) = returnMany();
// Values can be left out.
(uint x, , uint y) = (4, 5, 6);
return (i, b, j, x, y);
}
// Cannot use map for either input or output
// Can use array for input
function arrayInput(uint[] memory _arr) public {}
// Can use array for output
uint[] public arr;
function arrayOutput() public view returns (uint[] memory) {
return arr;
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
contract Immutable {
// coding convention to uppercase constant variables
// 32 bytes are reserved, even if they would fit in fewer bytes
address public immutable MY_ADDRESS;
uint public immutable MY_UINT;
constructor(uint _myUint) {
MY_ADDRESS = msg.sender;
MY_UINT = _myUint;
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
/*
- Function that is going to be overridden by a child contract must be declared as virtual
- Function that is going to override a parent function must use the keyword override
- Order of inheritance is important
- You have to list the parent contracts in the order from “most base-like” to “most derived”
Graph of inheritance
A
/ \
B C
/ \ /
F D,E
*/
contract A {
function foo() public pure virtual returns (string memory) {
return "A";
}
}
// Contracts inherit other contracts by using the keyword 'is'.
contract B is A {
// Override A.foo()
function foo() public pure virtual override returns (string memory) {
return "B";
}
}
contract C is A {
// Override A.foo()
function foo() public pure virtual override returns (string memory) {
return "C";
}
}
// Contracts can inherit from multiple parent contracts.
// When a function is called that is defined multiple times in
// different contracts, parent contracts are searched from
// right to left, and in depth-first manner.
contract D is B, C {
// D.foo() returns "C"
function foo() public pure override(B, C) returns (string memory) {
return super.foo();
}
}
contract E is C, B {
// E.foo() returns "B"
function foo() public pure override(C, B) returns (string memory) {
return super.foo();
}
}
// Inheritance must be ordered from “most base-like” to “most derived”.
// Swapping the order of A and B will throw a compilation error.
contract F is A, B {
function foo() public pure override(A, B) returns (string memory) {
return super.foo();
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
library SafeMath {
function add(uint x, uint y) internal pure returns (uint) {
uint z = x + y;
require(z >= x, "uint overflow");
return z;
}
}
library Math {
function multiply(uint a, uint b) internal pure returns (uint) {
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
}
contract TestSafeMathAsLibrary {
function testMultiply(uint a, uint b) public pure returns (uint) {
return Math.multiply(a, b);
}
}
contract TestSafeMathMonkeyPatch {
using SafeMath for uint;
function testAdd(uint x, uint y) public pure returns (uint) {
return x.add(y);
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
contract Mapping {
// Mappings are not iterable.
mapping(address => uint) public balances;
mapping(address => mapping(address => bool)) public isFriend;
function examples() external {
balances[msg.sender] = 123; // set
uint bal1 = balances[msg.sender]; // get
uint bal2 = balances[address(1)]; // not set --> will return the default value
balances[msg.sender] += 1; // update
delete balances[msg.sender]; // delete resets the value to the default value
isFriend[msg.sender][address(this)] = true;
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
// Function Modifier - Reuse code before and / or after function
// Basic, Inputs, Sandwich
contract FunctionModifier {
// We will use these variables to demonstrate how to use modifiers.
address public owner;
uint public x = 10;
bool public locked;
constructor() {
// Set the transaction sender as the owner of the contract.
owner = msg.sender;
}
// Modifier to check that the caller is the owner of the contract.
modifier onlyOwner() {
require(msg.sender == owner, "Not owner");
// Underscore is a special character only used inside
// a function modifier and it tells Solidity to
// execute the rest of the code.
_;
}
// Modifiers can take inputs
modifier validAddress(address _addr) {
require(_addr != address(0), "Not valid address");
_;
}
function changeOwner(address _newOwner) public onlyOwner validAddress(_newOwner) {
owner = _newOwner;
}
// Modifiers can be called before and / or after a function.
// This modifier prevents a function from being called while it is still executing.
modifier noReentrancy() {
require(!locked, "No reentrancy");
locked = true;
_;
locked = false;
}
function decrement(uint i) public noReentrancy {
x -= i;
if (i > 1) {
decrement(i - 1);
}
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
contract Payable {
// Payable address can receive Ether
address payable public owner;
// Payable constructor -> Contract can receive Ether upon creation
constructor() payable {
owner = payable(msg.sender);
}
// Function to deposit Ether into this contract
function deposit() public payable {}
// The function will throw an error since this function is not payable
function notPayable() public {}
// Function to withdraw all Ether from this contract.
function withdraw() public {
uint amount = address(this).balance;
// send all Ether in this contract to owner
(bool success, ) = owner.call{value: amount}("");
require(success, "Failed to send Ether");
}
function getContractBalance() external view returns (uint) {
return address(this).balance;
}
function getOwnerBalance() external view returns (uint) {
return address(owner).balance;
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
contract Primitives {
bool public boo = true;
/*
uint stands for unsigned integer, meaning non negative integers
different sizes are available
uint8 ranges from 0 to 2 ** 8 - 1
uint16 ranges from 0 to 2 ** 16 - 1
...
uint256 ranges from 0 to 2 ** 256 - 1
*/
uint8 public u8 = 1;
uint public u256 = 456;
uint public u = 123; // uint is an alias for uint256
/*
Negative numbers are allowed for int types.
Like uint, different ranges are available from int8 to int256
int256 ranges from -2 ** 255 to 2 ** 255 - 1
int128 ranges from -2 ** 127 to 2 ** 127 - 1
*/
int8 public i8 = -1;
int public i256 = 456;
int public i = -123; // int is same as int256
address public addr = 0xCA35b7d915458EF540aDe6068dFe2F44E8fa733c;
// Default values
// Unassigned variables have a default value
bool public defaultBoo; // false
uint public defaultUint; // 0
int public defaultInt; // 0
address public defaultAddr; // 0x0000000000000000000000000000000000000000
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
contract SimpleStorage {
// Define a state variable to store a number
uint public num;
// To write to a state variable, need to send a transaction.
function set(uint _num) public {
num = _num;
}
// Can state variable without sending a transaction.
function get() public view returns (uint) {
return num;
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
/*
3 ways to send Ether:
- transfer (2300 gas, throws error)
- send (2300 gas, returns bool)
- call (forward all gas or set gas, returns bool)
call is the recommended method to use after December 2019
*/
/*
2 ways to receive Ether:
- receive() external payable
- fallback() external payable
receive() is called if msg.data is empty, otherwise fallback() is called.
*/
contract ReceiveEther {
// Function to receive Ether. msg.data must be empty
receive() external payable {}
// Fallback function is called when msg.data is not empty
fallback() external payable {}
function getBalance() public view returns (uint) {
return address(this).balance;
}
}
contract SendEther {
function sendViaTransfer(address payable _to) public payable {
// No longer recommended for sending Ether
_to.transfer(msg.value);
}
function sendViaSend(address payable _to) public payable {
// No longer recommended for sending Ether
bool sent = _to.send(msg.value);
require(sent, "Failed to send Ether");
}
function sendViaCall(address payable _to) public payable {
// Recommended method to use
(bool sent, bytes memory data) = _to.call{value: msg.value}("");
require(sent, "Failed to send Ether");
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
/*
Structs
- Declaring structs
- Initializing structs
- get, set, delete
*/
contract Structs {
struct Car {
string model;
uint year;
address owner;
}
Car public car;
Car[] public cars;
mapping(address => Car[]) public owners;
function examples() external {
Car memory car1 = Car("Toyota", 2017, msg.sender);
Car memory car2 = Car({model: "Audi", year: 2018, owner: msg.sender});
Car memory car3;
car3.model = "Ford";
car3.year = 2015;
car3.owner = msg.sender;
cars.push(car1);
cars.push(car2);
cars.push(car3);
cars.push(Car("Honda", 2016, msg.sender));
Car memory _car = cars[0]; // try storage
_car.year = 2022;
delete _car.owner;
delete cars[1];
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
contract Variables {
// State variables are stored on the blockchain and declared OUTSIDE a function
string public text = "Hello";
uint public num = 123;
function doSomething() public {
// Local variables are NOT saved to the blockchain and declared INSIDE
uint i = 456;
// Global variables
uint timestamp = block.timestamp; // Current block timestamp
uint blockNumber = block.number; // Current block number
address sender = msg.sender; // address of the caller
uint value = msg.value; // number of wei sent with the message
// For more, go to Solidity docs (https://docs.soliditylang.org/en/v0.8.13/units-and-global-variables.html)
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
contract ViewAndPure {
uint public x = 1;
// Promise not to modify the state.
function addToX(uint y) public view returns (uint) {
return x + y;
}
// Promise not to modify or read from the state.
function add(uint i, uint j) public pure returns (uint) {
return i + j;
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
contract Base {
// Private function can only be called
// 1) inside this contract
// Contracts that inherit this contract cannot call this function
function privateFunc() private pure returns (string memory) {
return "this is a private function";
}
function testPrivateFunc() public pure returns (string memory) {
return privateFunc();
}
// Internal function can be called
// 1) inside this contract
// 2) inside contracts that inherit this contract
function internalFunc() internal pure returns (string memory) {
return "this is an internal function";
}
function testInternalFunc() public pure virtual returns (string memory) {
return internalFunc();
}
// Public functions can be called
// 1) inside this contract
// 2) inside contracts that inherit this contract
// 3) by other contracts and accounts
function publicFunc() public pure returns (string memory) {
return "public function called";
}
// External functions can only be called
// 1) by other contracts and accounts
function externalFunc() external pure returns (string memory) {
return "this is an external function";
}
// This function would not compile since we're trying to call
// an external function here.
// function testExternalFunc() public pure returns (string memory) {
// return externalFunc();
// }
// State variables
string private privateVar = "my private variable";
string internal internalVar = "my internal variable";
string public publicVar = "my public variable";
// State variables cannot be external so this code won't compile.
// string external externalVar = "my external variable";
}
}
This file has been truncated, but you can view the full file.
{
"id": "42831103df18238433a787da3cdad21d",
"_format": "hh-sol-build-info-1",
"solcVersion": "0.8.13",
"solcLongVersion": "0.8.13+commit.abaa5c0e",
"input": {
"language": "Soli
View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment