Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save CJ42/c48d405d251dfb80cfe4ec9748a41758 to your computer and use it in GitHub Desktop.
Save CJ42/c48d405d251dfb80cfe4ec9748a41758 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.4+commit.c7e474f2.js&optimize=false&runs=200&gist=
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
/**
* @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.
*
* These functions can be used to verify that a message was signed by the holder
* of the private keys of a given address.
*/
library ECDSA {
/**
* @dev Returns the address that signed a hashed message (`hash`) with
* `signature`. This address can then be used for verification purposes.
*
* The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:
* this function rejects them by requiring the `s` value to be in the lower
* half order, and the `v` value to be either 27 or 28.
*
* IMPORTANT: `hash` _must_ be the result of a hash operation for the
* verification to be secure: it is possible to craft signatures that
* recover to arbitrary addresses for non-hashed data. A safe way to ensure
* this is by receiving a hash of the original message (which may otherwise
* be too long), and then calling {toEthSignedMessageHash} on it.
*/
function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {
// Check the signature length
if (signature.length != 65) {
revert("ECDSA: invalid signature length");
}
// Divide the signature in r, s and v variables
bytes32 r;
bytes32 s;
uint8 v;
// ecrecover takes the signature parameters, and the only way to get them
// currently is to use assembly.
// solhint-disable-next-line no-inline-assembly
assembly {
r := mload(add(signature, 0x20))
s := mload(add(signature, 0x40))
v := byte(0, mload(add(signature, 0x60)))
}
return recover(hash, v, r, s);
}
/**
* @dev Overload of {ECDSA-recover} that receives the `v`,
* `r` and `s` signature fields separately.
*/
function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) {
// EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature
// unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines
// the valid range for s in (281): 0 < s < secp256k1n ÷ 2 + 1, and for v in (282): v ∈ {27, 28}. Most
// signatures from current libraries generate a unique signature with an s-value in the lower half order.
//
// If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value
// with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or
// vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept
// these malleable signatures as well.
require(uint256(s) <= 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0, "ECDSA: invalid signature 's' value");
require(v == 27 || v == 28, "ECDSA: invalid signature 'v' value");
// If the signature is valid (and not malleable), return the signer address
address signer = ecrecover(hash, v, r, s);
require(signer != address(0), "ECDSA: invalid signature");
return signer;
}
/**
* @dev Returns an Ethereum Signed Message, created from a `hash`. This
* produces hash corresponding to the one signed with the
* https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]
* JSON-RPC method as part of EIP-191.
*
* See {recover}.
*/
function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {
// 32 is the length in bytes of hash,
// enforced by the type signature above
return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", hash));
}
/**
* @dev Returns an Ethereum Signed Typed Data, created from a
* `domainSeparator` and a `structHash`. This produces hash corresponding
* to the one signed with the
* https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]
* JSON-RPC method as part of EIP-712.
*
* See {recover}.
*/
function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) {
return keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash));
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "./IERC165.sol";
/**
* @dev Implementation of the {IERC165} interface.
*
* Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check
* for the additional interface id that will be supported. For example:
*
* ```solidity
* function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
* return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);
* }
* ```
*
* Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.
*/
abstract contract ERC165 is IERC165 {
/**
* @dev See {IERC165-supportsInterface}.
*/
function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
return interfaceId == type(IERC165).interfaceId;
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.
/**
* @dev Wrappers over Solidity's arithmetic operations.
*
* NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler
* now has built in overflow checking.
*/
library SafeMath {
/**
* @dev Returns the addition of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
uint256 c = a + b;
if (c < a) return (false, 0);
return (true, c);
}
}
/**
* @dev Returns the substraction of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b > a) return (false, 0);
return (true, a - b);
}
}
/**
* @dev Returns the multiplication of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
if (a == 0) return (true, 0);
uint256 c = a * b;
if (c / a != b) return (false, 0);
return (true, c);
}
}
/**
* @dev Returns the division of two unsigned integers, with a division by zero flag.
*
* _Available since v3.4._
*/
function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a / b);
}
}
/**
* @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
*
* _Available since v3.4._
*/
function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a % b);
}
}
/**
* @dev Returns the addition of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `+` operator.
*
* Requirements:
*
* - Addition cannot overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
return a + b;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return a - b;
}
/**
* @dev Returns the multiplication of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `*` operator.
*
* Requirements:
*
* - Multiplication cannot overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
return a * b;
}
/**
* @dev Returns the integer division of two unsigned integers, reverting on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator.
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return a / b;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* reverting when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return a % b;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting with custom message on
* overflow (when the result is negative).
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {trySub}.
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
unchecked {
require(b <= a, errorMessage);
return a - b;
}
}
/**
* @dev Returns the integer division of two unsigned integers, reverting with custom message on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a / b;
}
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* reverting with custom message when dividing by zero.
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {tryMod}.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a % b;
}
}
}
// SPDX-License-Identifier: Unlicense
/*
* @title Solidity Bytes Arrays Utils
* @author Gonçalo Sá <goncalo.sa@consensys.net>
*
* @dev Bytes tightly packed arrays utility library for ethereum contracts written in Solidity.
* The library lets you concatenate, slice and type cast bytes arrays both in memory and storage.
*/
pragma solidity >=0.8.0 <0.9.0;
library BytesLib {
function concat(
bytes memory _preBytes,
bytes memory _postBytes
)
internal
pure
returns (bytes memory)
{
bytes memory tempBytes;
assembly {
// Get a location of some free memory and store it in tempBytes as
// Solidity does for memory variables.
tempBytes := mload(0x40)
// Store the length of the first bytes array at the beginning of
// the memory for tempBytes.
let length := mload(_preBytes)
mstore(tempBytes, length)
// Maintain a memory counter for the current write location in the
// temp bytes array by adding the 32 bytes for the array length to
// the starting location.
let mc := add(tempBytes, 0x20)
// Stop copying when the memory counter reaches the length of the
// first bytes array.
let end := add(mc, length)
for {
// Initialize a copy counter to the start of the _preBytes data,
// 32 bytes into its memory.
let cc := add(_preBytes, 0x20)
} lt(mc, end) {
// Increase both counters by 32 bytes each iteration.
mc := add(mc, 0x20)
cc := add(cc, 0x20)
} {
// Write the _preBytes data into the tempBytes memory 32 bytes
// at a time.
mstore(mc, mload(cc))
}
// Add the length of _postBytes to the current length of tempBytes
// and store it as the new length in the first 32 bytes of the
// tempBytes memory.
length := mload(_postBytes)
mstore(tempBytes, add(length, mload(tempBytes)))
// Move the memory counter back from a multiple of 0x20 to the
// actual end of the _preBytes data.
mc := end
// Stop copying when the memory counter reaches the new combined
// length of the arrays.
end := add(mc, length)
for {
let cc := add(_postBytes, 0x20)
} lt(mc, end) {
mc := add(mc, 0x20)
cc := add(cc, 0x20)
} {
mstore(mc, mload(cc))
}
// Update the free-memory pointer by padding our last write location
// to 32 bytes: add 31 bytes to the end of tempBytes to move to the
// next 32 byte block, then round down to the nearest multiple of
// 32. If the sum of the length of the two arrays is zero then add
// one before rounding down to leave a blank 32 bytes (the length block with 0).
mstore(0x40, and(
add(add(end, iszero(add(length, mload(_preBytes)))), 31),
not(31) // Round down to the nearest 32 bytes.
))
}
return tempBytes;
}
function concatStorage(bytes storage _preBytes, bytes memory _postBytes) internal {
assembly {
// Read the first 32 bytes of _preBytes storage, which is the length
// of the array. (We don't need to use the offset into the slot
// because arrays use the entire slot.)
let fslot := sload(_preBytes.slot)
// Arrays of 31 bytes or less have an even value in their slot,
// while longer arrays have an odd value. The actual length is
// the slot divided by two for odd values, and the lowest order
// byte divided by two for even values.
// If the slot is even, bitwise and the slot with 255 and divide by
// two to get the length. If the slot is odd, bitwise and the slot
// with -1 and divide by two.
let slength := div(and(fslot, sub(mul(0x100, iszero(and(fslot, 1))), 1)), 2)
let mlength := mload(_postBytes)
let newlength := add(slength, mlength)
// slength can contain both the length and contents of the array
// if length < 32 bytes so let's prepare for that
// v. http://solidity.readthedocs.io/en/latest/miscellaneous.html#layout-of-state-variables-in-storage
switch add(lt(slength, 32), lt(newlength, 32))
case 2 {
// Since the new array still fits in the slot, we just need to
// update the contents of the slot.
// uint256(bytes_storage) = uint256(bytes_storage) + uint256(bytes_memory) + new_length
sstore(
_preBytes.slot,
// all the modifications to the slot are inside this
// next block
add(
// we can just add to the slot contents because the
// bytes we want to change are the LSBs
fslot,
add(
mul(
div(
// load the bytes from memory
mload(add(_postBytes, 0x20)),
// zero all bytes to the right
exp(0x100, sub(32, mlength))
),
// and now shift left the number of bytes to
// leave space for the length in the slot
exp(0x100, sub(32, newlength))
),
// increase length by the double of the memory
// bytes length
mul(mlength, 2)
)
)
)
}
case 1 {
// The stored value fits in the slot, but the combined value
// will exceed it.
// get the keccak hash to get the contents of the array
mstore(0x0, _preBytes.slot)
let sc := add(keccak256(0x0, 0x20), div(slength, 32))
// save new length
sstore(_preBytes.slot, add(mul(newlength, 2), 1))
// The contents of the _postBytes array start 32 bytes into
// the structure. Our first read should obtain the `submod`
// bytes that can fit into the unused space in the last word
// of the stored array. To get this, we read 32 bytes starting
// from `submod`, so the data we read overlaps with the array
// contents by `submod` bytes. Masking the lowest-order
// `submod` bytes allows us to add that value directly to the
// stored value.
let submod := sub(32, slength)
let mc := add(_postBytes, submod)
let end := add(_postBytes, mlength)
let mask := sub(exp(0x100, submod), 1)
sstore(
sc,
add(
and(
fslot,
0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
),
and(mload(mc), mask)
)
)
for {
mc := add(mc, 0x20)
sc := add(sc, 1)
} lt(mc, end) {
sc := add(sc, 1)
mc := add(mc, 0x20)
} {
sstore(sc, mload(mc))
}
mask := exp(0x100, sub(mc, end))
sstore(sc, mul(div(mload(mc), mask), mask))
}
default {
// get the keccak hash to get the contents of the array
mstore(0x0, _preBytes.slot)
// Start copying to the last used word of the stored array.
let sc := add(keccak256(0x0, 0x20), div(slength, 32))
// save new length
sstore(_preBytes.slot, add(mul(newlength, 2), 1))
// Copy over the first `submod` bytes of the new data as in
// case 1 above.
let slengthmod := mod(slength, 32)
let mlengthmod := mod(mlength, 32)
let submod := sub(32, slengthmod)
let mc := add(_postBytes, submod)
let end := add(_postBytes, mlength)
let mask := sub(exp(0x100, submod), 1)
sstore(sc, add(sload(sc), and(mload(mc), mask)))
for {
sc := add(sc, 1)
mc := add(mc, 0x20)
} lt(mc, end) {
sc := add(sc, 1)
mc := add(mc, 0x20)
} {
sstore(sc, mload(mc))
}
mask := exp(0x100, sub(mc, end))
sstore(sc, mul(div(mload(mc), mask), mask))
}
}
}
function slice(
bytes memory _bytes,
uint256 _start,
uint256 _length
)
internal
pure
returns (bytes memory)
{
require(_length + 31 >= _length, "slice_overflow");
require(_bytes.length >= _start + _length, "slice_outOfBounds");
bytes memory tempBytes;
assembly {
switch iszero(_length)
case 0 {
// Get a location of some free memory and store it in tempBytes as
// Solidity does for memory variables.
tempBytes := mload(0x40)
// The first word of the slice result is potentially a partial
// word read from the original array. To read it, we calculate
// the length of that partial word and start copying that many
// bytes into the array. The first word we copy will start with
// data we don't care about, but the last `lengthmod` bytes will
// land at the beginning of the contents of the new array. When
// we're done copying, we overwrite the full first word with
// the actual length of the slice.
let lengthmod := and(_length, 31)
// The multiplication in the next line is necessary
// because when slicing multiples of 32 bytes (lengthmod == 0)
// the following copy loop was copying the origin's length
// and then ending prematurely not copying everything it should.
let mc := add(add(tempBytes, lengthmod), mul(0x20, iszero(lengthmod)))
let end := add(mc, _length)
for {
// The multiplication in the next line has the same exact purpose
// as the one above.
let cc := add(add(add(_bytes, lengthmod), mul(0x20, iszero(lengthmod))), _start)
} lt(mc, end) {
mc := add(mc, 0x20)
cc := add(cc, 0x20)
} {
mstore(mc, mload(cc))
}
mstore(tempBytes, _length)
//update free-memory pointer
//allocating the array padded to 32 bytes like the compiler does now
mstore(0x40, and(add(mc, 31), not(31)))
}
//if we want a zero-length slice let's just return a zero-length array
default {
tempBytes := mload(0x40)
//zero out the 32 bytes slice we are about to return
//we need to do it because Solidity does not garbage collect
mstore(tempBytes, 0)
mstore(0x40, add(tempBytes, 0x20))
}
}
return tempBytes;
}
function toAddress(bytes memory _bytes, uint256 _start) internal pure returns (address) {
require(_bytes.length >= _start + 20, "toAddress_outOfBounds");
address tempAddress;
assembly {
tempAddress := div(mload(add(add(_bytes, 0x20), _start)), 0x1000000000000000000000000)
}
return tempAddress;
}
function toUint8(bytes memory _bytes, uint256 _start) internal pure returns (uint8) {
require(_bytes.length >= _start + 1 , "toUint8_outOfBounds");
uint8 tempUint;
assembly {
tempUint := mload(add(add(_bytes, 0x1), _start))
}
return tempUint;
}
function toUint16(bytes memory _bytes, uint256 _start) internal pure returns (uint16) {
require(_bytes.length >= _start + 2, "toUint16_outOfBounds");
uint16 tempUint;
assembly {
tempUint := mload(add(add(_bytes, 0x2), _start))
}
return tempUint;
}
function toUint32(bytes memory _bytes, uint256 _start) internal pure returns (uint32) {
require(_bytes.length >= _start + 4, "toUint32_outOfBounds");
uint32 tempUint;
assembly {
tempUint := mload(add(add(_bytes, 0x4), _start))
}
return tempUint;
}
function toUint64(bytes memory _bytes, uint256 _start) internal pure returns (uint64) {
require(_bytes.length >= _start + 8, "toUint64_outOfBounds");
uint64 tempUint;
assembly {
tempUint := mload(add(add(_bytes, 0x8), _start))
}
return tempUint;
}
function toUint96(bytes memory _bytes, uint256 _start) internal pure returns (uint96) {
require(_bytes.length >= _start + 12, "toUint96_outOfBounds");
uint96 tempUint;
assembly {
tempUint := mload(add(add(_bytes, 0xc), _start))
}
return tempUint;
}
function toUint128(bytes memory _bytes, uint256 _start) internal pure returns (uint128) {
require(_bytes.length >= _start + 16, "toUint128_outOfBounds");
uint128 tempUint;
assembly {
tempUint := mload(add(add(_bytes, 0x10), _start))
}
return tempUint;
}
function toUint256(bytes memory _bytes, uint256 _start) internal pure returns (uint256) {
require(_bytes.length >= _start + 32, "toUint256_outOfBounds");
uint256 tempUint;
assembly {
tempUint := mload(add(add(_bytes, 0x20), _start))
}
return tempUint;
}
function toBytes32(bytes memory _bytes, uint256 _start) internal pure returns (bytes32) {
require(_bytes.length >= _start + 32, "toBytes32_outOfBounds");
bytes32 tempBytes32;
assembly {
tempBytes32 := mload(add(add(_bytes, 0x20), _start))
}
return tempBytes32;
}
function equal(bytes memory _preBytes, bytes memory _postBytes) internal pure returns (bool) {
bool success = true;
assembly {
let length := mload(_preBytes)
// if lengths don't match the arrays are not equal
switch eq(length, mload(_postBytes))
case 1 {
// cb is a circuit breaker in the for loop since there's
// no said feature for inline assembly loops
// cb = 1 - don't breaker
// cb = 0 - break
let cb := 1
let mc := add(_preBytes, 0x20)
let end := add(mc, length)
for {
let cc := add(_postBytes, 0x20)
// the next line is the loop condition:
// while(uint256(mc < end) + cb == 2)
} eq(add(lt(mc, end), cb), 2) {
mc := add(mc, 0x20)
cc := add(cc, 0x20)
} {
// if any of these checks fails then arrays are not equal
if iszero(eq(mload(mc), mload(cc))) {
// unsuccess:
success := 0
cb := 0
}
}
}
default {
// unsuccess:
success := 0
}
}
return success;
}
function equalStorage(
bytes storage _preBytes,
bytes memory _postBytes
)
internal
view
returns (bool)
{
bool success = true;
assembly {
// we know _preBytes_offset is 0
let fslot := sload(_preBytes.slot)
// Decode the length of the stored array like in concatStorage().
let slength := div(and(fslot, sub(mul(0x100, iszero(and(fslot, 1))), 1)), 2)
let mlength := mload(_postBytes)
// if lengths don't match the arrays are not equal
switch eq(slength, mlength)
case 1 {
// slength can contain both the length and contents of the array
// if length < 32 bytes so let's prepare for that
// v. http://solidity.readthedocs.io/en/latest/miscellaneous.html#layout-of-state-variables-in-storage
if iszero(iszero(slength)) {
switch lt(slength, 32)
case 1 {
// blank the last byte which is the length
fslot := mul(div(fslot, 0x100), 0x100)
if iszero(eq(fslot, mload(add(_postBytes, 0x20)))) {
// unsuccess:
success := 0
}
}
default {
// cb is a circuit breaker in the for loop since there's
// no said feature for inline assembly loops
// cb = 1 - don't breaker
// cb = 0 - break
let cb := 1
// get the keccak hash to get the contents of the array
mstore(0x0, _preBytes.slot)
let sc := keccak256(0x0, 0x20)
let mc := add(_postBytes, 0x20)
let end := add(mc, mlength)
// the next line is the loop condition:
// while(uint256(mc < end) + cb == 2)
for {} eq(add(lt(mc, end), cb), 2) {
sc := add(sc, 1)
mc := add(mc, 0x20)
} {
if iszero(eq(sload(sc), mload(mc))) {
// unsuccess:
success := 0
cb := 0
}
}
}
}
}
default {
// unsuccess:
success := 0
}
}
return success;
}
}
REMIX EXAMPLE PROJECT
Remix example project is present when Remix loads very first time or there are no files existing in the File Explorer.
It contains 3 directories:
1. 'contracts': Holds three contracts with different complexity level, denoted with number prefix in file name.
2. 'scripts': Holds two scripts to deploy a contract. It is explained below.
3. 'tests': Contains one test file for 'Ballot' contract with unit tests in Solidity.
SCRIPTS
The 'scripts' folder contains example async/await scripts for deploying the 'Storage' contract.
For the deployment of any other contract, 'contractName' and 'constructorArgs' should be updated (along with other code if required).
Scripts have full access to the web3.js and ethers.js libraries.
To run a script, right click on file name in the file explorer and click 'Run'. Remember, Solidity file must already be compiled.
Output from script will appear in remix terminal.
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"linkReferences": {},
"object": "608060405269021e19e0c9bab2400000600055683635c9adc5dea0000060015534801561002b57600080fd5b5060a18061003a6000396000f300608060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806371d26fdb146044575b600080fd5b348015604f57600080fd5b506056606c565b6040518082815260200191505060405180910390f35b600080549050905600a165627a7a72305820d7511dd9bfaa15a878ef5fff0279d5050eeacd57adf1ac02b8ffc8d2c2dc60090029",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH10 0x21E19E0C9BAB2400000 PUSH1 0x0 SSTORE PUSH9 0x3635C9ADC5DEA00000 PUSH1 0x1 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xA1 DUP1 PUSH2 0x3A PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x3F JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP1 PUSH4 0x71D26FDB EQ PUSH1 0x44 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH1 0x4F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x56 PUSH1 0x6C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 POP SWAP1 JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xd7 MLOAD SAR 0xd9 0xbf 0xaa ISZERO 0xa8 PUSH25 0xEF5FFF0279D5050EEACD57ADF1AC02B8FFC8D2C2DC60090029 ",
"sourceMap": "197:103:0:-;;;65:11;50:26;;248:10;233:25;;265:33;8:9:-1;5:2;;;30:1;27;20:12;5:2;265:33:0;197:103;;;;;;"
},
"deployedBytecode": {
"linkReferences": {},
"object": "608060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806371d26fdb146044575b600080fd5b348015604f57600080fd5b506056606c565b6040518082815260200191505060405180910390f35b600080549050905600a165627a7a72305820d7511dd9bfaa15a878ef5fff0279d5050eeacd57adf1ac02b8ffc8d2c2dc60090029",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x3F JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP1 PUSH4 0x71D26FDB EQ PUSH1 0x44 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH1 0x4F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x56 PUSH1 0x6C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 POP SWAP1 JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xd7 MLOAD SAR 0xd9 0xbf 0xaa ISZERO 0xa8 PUSH25 0xEF5FFF0279D5050EEACD57ADF1AC02B8FFC8D2C2DC60090029 ",
"sourceMap": "197:103:0:-;;;;;;;;;;;;;;;;;;;;;;;;112:81;;8:9:-1;5:2;;;30:1;27;20:12;5:2;112:81:0;;;;;;;;;;;;;;;;;;;;;;;;156:4;179:7;;172:14;;112:81;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "32200",
"executionCost": "40099",
"totalCost": "72299"
},
"external": {
"fetchCap()": "402"
}
},
"methodIdentifiers": {
"fetchCap()": "71d26fdb"
}
},
"abi": [
{
"constant": true,
"inputs": [],
"name": "fetchCap",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
}
]
}
{
"compiler": {
"version": "0.4.24+commit.e67f0147"
},
"language": "Solidity",
"output": {
"abi": [
{
"constant": true,
"inputs": [],
"name": "fetchCap",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
}
],
"devdoc": {
"methods": {}
},
"userdoc": {
"methods": {}
}
},
"settings": {
"compilationTarget": {
"Reentrancy.sol": "Presale"
},
"evmVersion": "byzantium",
"libraries": {},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"Reentrancy.sol": {
"keccak256": "0x374e8eea54c8614b288772c2e9a9f589aa34139faf11e2e24ffd18c113ec073a",
"urls": [
"bzzr://9aad0e57beae4a1b389c8cac7edf0674e56bf9ac22272135c3e0723dba9d8abc"
]
}
},
"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": {
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:3663:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "101:258:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "111:74:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "177:6:1"
}
],
"functionName": {
"name": "array_allocation_size_t_bytes_memory_ptr",
"nodeType": "YulIdentifier",
"src": "136:40:1"
},
"nodeType": "YulFunctionCall",
"src": "136:48:1"
}
],
"functionName": {
"name": "allocate_memory",
"nodeType": "YulIdentifier",
"src": "120:15:1"
},
"nodeType": "YulFunctionCall",
"src": "120:65:1"
},
"variableNames": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "111:5:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "201:5:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "208:6:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "194:6:1"
},
"nodeType": "YulFunctionCall",
"src": "194:21:1"
},
"nodeType": "YulExpressionStatement",
"src": "194:21:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "224:27:1",
"value": {
"arguments": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "239:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "246:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "235:3:1"
},
"nodeType": "YulFunctionCall",
"src": "235:16:1"
},
"variables": [
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "228:3:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "289:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "298:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "301:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "291:6:1"
},
"nodeType": "YulFunctionCall",
"src": "291:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "291:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "270:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "275:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "266:3:1"
},
"nodeType": "YulFunctionCall",
"src": "266:16:1"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "284:3:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "263:2:1"
},
"nodeType": "YulFunctionCall",
"src": "263:25:1"
},
"nodeType": "YulIf",
"src": "260:2:1"
},
{
"expression": {
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "336:3:1"
},
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "341:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "346:6:1"
}
],
"functionName": {
"name": "copy_memory_to_memory",
"nodeType": "YulIdentifier",
"src": "314:21:1"
},
"nodeType": "YulFunctionCall",
"src": "314:39:1"
},
"nodeType": "YulExpressionStatement",
"src": "314:39:1"
}
]
},
"name": "abi_decode_available_length_t_bytes_memory_ptr_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "74:3:1",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "79:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "87:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nodeType": "YulTypedName",
"src": "95:5:1",
"type": ""
}
],
"src": "7:352:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "428:80:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "438:22:1",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "453:6:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "447:5:1"
},
"nodeType": "YulFunctionCall",
"src": "447:13:1"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "438:5:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "496:5:1"
}
],
"functionName": {
"name": "validator_revert_t_address",
"nodeType": "YulIdentifier",
"src": "469:26:1"
},
"nodeType": "YulFunctionCall",
"src": "469:33:1"
},
"nodeType": "YulExpressionStatement",
"src": "469:33:1"
}
]
},
"name": "abi_decode_t_address_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "406:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "414:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "422:5:1",
"type": ""
}
],
"src": "365:143:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "599:214:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "648:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "657:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "660:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "650:6:1"
},
"nodeType": "YulFunctionCall",
"src": "650:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "650:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "627:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "635:4:1",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "623:3:1"
},
"nodeType": "YulFunctionCall",
"src": "623:17:1"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "642:3:1"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "619:3:1"
},
"nodeType": "YulFunctionCall",
"src": "619:27:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "612:6:1"
},
"nodeType": "YulFunctionCall",
"src": "612:35:1"
},
"nodeType": "YulIf",
"src": "609:2:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "673:27:1",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "693:6:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "687:5:1"
},
"nodeType": "YulFunctionCall",
"src": "687:13:1"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "677:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "709:98:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "780:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "788:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "776:3:1"
},
"nodeType": "YulFunctionCall",
"src": "776:17:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "795:6:1"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "803:3:1"
}
],
"functionName": {
"name": "abi_decode_available_length_t_bytes_memory_ptr_fromMemory",
"nodeType": "YulIdentifier",
"src": "718:57:1"
},
"nodeType": "YulFunctionCall",
"src": "718:89:1"
},
"variableNames": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "709:5:1"
}
]
}
]
},
"name": "abi_decode_t_bytes_memory_ptr_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "577:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "585:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nodeType": "YulTypedName",
"src": "593:5:1",
"type": ""
}
],
"src": "527:286:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "922:441:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "968:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "977:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "980:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "970:6:1"
},
"nodeType": "YulFunctionCall",
"src": "970:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "970:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "943:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "952:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "939:3:1"
},
"nodeType": "YulFunctionCall",
"src": "939:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "964:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "935:3:1"
},
"nodeType": "YulFunctionCall",
"src": "935:32:1"
},
"nodeType": "YulIf",
"src": "932:2:1"
},
{
"nodeType": "YulBlock",
"src": "994:223:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1009:38:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1033:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1044:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1029:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1029:17:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1023:5:1"
},
"nodeType": "YulFunctionCall",
"src": "1023:24:1"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1013:6:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "1094:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1103:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1106:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1096:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1096:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "1096:12:1"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1066:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1074:18:1",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "1063:2:1"
},
"nodeType": "YulFunctionCall",
"src": "1063:30:1"
},
"nodeType": "YulIf",
"src": "1060:2:1"
},
{
"nodeType": "YulAssignment",
"src": "1124:83:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1179:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1190:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1175:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1175:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1199:7:1"
}
],
"functionName": {
"name": "abi_decode_t_bytes_memory_ptr_fromMemory",
"nodeType": "YulIdentifier",
"src": "1134:40:1"
},
"nodeType": "YulFunctionCall",
"src": "1134:73:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1124:6:1"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "1227:129:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1242:16:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "1256:2:1",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1246:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "1272:74:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1318:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1329:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1314:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1314:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1338:7:1"
}
],
"functionName": {
"name": "abi_decode_t_address_fromMemory",
"nodeType": "YulIdentifier",
"src": "1282:31:1"
},
"nodeType": "YulFunctionCall",
"src": "1282:64:1"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "1272:6:1"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_bytes_memory_ptrt_address_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "884:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "895:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "907:6:1",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "915:6:1",
"type": ""
}
],
"src": "819:544:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1410:88:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1420:30:1",
"value": {
"arguments": [],
"functionName": {
"name": "allocate_unbounded",
"nodeType": "YulIdentifier",
"src": "1430:18:1"
},
"nodeType": "YulFunctionCall",
"src": "1430:20:1"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "1420:6:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "1479:6:1"
},
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "1487:4:1"
}
],
"functionName": {
"name": "finalize_allocation",
"nodeType": "YulIdentifier",
"src": "1459:19:1"
},
"nodeType": "YulFunctionCall",
"src": "1459:33:1"
},
"nodeType": "YulExpressionStatement",
"src": "1459:33:1"
}
]
},
"name": "allocate_memory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "size",
"nodeType": "YulTypedName",
"src": "1394:4:1",
"type": ""
}
],
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "1403:6:1",
"type": ""
}
],
"src": "1369:129:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1544:35:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1554:19:1",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1570:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1564:5:1"
},
"nodeType": "YulFunctionCall",
"src": "1564:9:1"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "1554:6:1"
}
]
}
]
},
"name": "allocate_unbounded",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "1537:6:1",
"type": ""
}
],
"src": "1504:75:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1651:241:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1756:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "1758:16:1"
},
"nodeType": "YulFunctionCall",
"src": "1758:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "1758:18:1"
}
]
},
"condition": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1728:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1736:18:1",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "1725:2:1"
},
"nodeType": "YulFunctionCall",
"src": "1725:30:1"
},
"nodeType": "YulIf",
"src": "1722:2:1"
},
{
"nodeType": "YulAssignment",
"src": "1788:37:1",
"value": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1818:6:1"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nodeType": "YulIdentifier",
"src": "1796:21:1"
},
"nodeType": "YulFunctionCall",
"src": "1796:29:1"
},
"variableNames": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "1788:4:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "1862:23:1",
"value": {
"arguments": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "1874:4:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1880:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1870:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1870:15:1"
},
"variableNames": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "1862:4:1"
}
]
}
]
},
"name": "array_allocation_size_t_bytes_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "1635:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "size",
"nodeType": "YulTypedName",
"src": "1646:4:1",
"type": ""
}
],
"src": "1585:307:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1943:51:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1953:35:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1982:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "1964:17:1"
},
"nodeType": "YulFunctionCall",
"src": "1964:24:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "1953:7:1"
}
]
}
]
},
"name": "cleanup_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1925:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "1935:7:1",
"type": ""
}
],
"src": "1898:96:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2045:81:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2055:65:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2070:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2077:42:1",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "2066:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2066:54:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "2055:7:1"
}
]
}
]
},
"name": "cleanup_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2027:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "2037:7:1",
"type": ""
}
],
"src": "2000:126:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2181:258:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2191:10:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "2200:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "2195:1:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "2260:63:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "2285:3:1"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "2290:1:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2281:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2281:11:1"
},
{
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "2304:3:1"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "2309:1:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2300:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2300:11:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "2294:5:1"
},
"nodeType": "YulFunctionCall",
"src": "2294:18:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2274:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2274:39:1"
},
"nodeType": "YulExpressionStatement",
"src": "2274:39:1"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "2221:1:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2224:6:1"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "2218:2:1"
},
"nodeType": "YulFunctionCall",
"src": "2218:13:1"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "2232:19:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2234:15:1",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "2243:1:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2246:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2239:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2239:10:1"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "2234:1:1"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "2214:3:1",
"statements": []
},
"src": "2210:113:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2357:76:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "2407:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2412:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2403:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2403:16:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2421:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2396:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2396:27:1"
},
"nodeType": "YulExpressionStatement",
"src": "2396:27:1"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "2338:1:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2341:6:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "2335:2:1"
},
"nodeType": "YulFunctionCall",
"src": "2335:13:1"
},
"nodeType": "YulIf",
"src": "2332:2:1"
}
]
},
"name": "copy_memory_to_memory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "2163:3:1",
"type": ""
},
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "2168:3:1",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "2173:6:1",
"type": ""
}
],
"src": "2132:307:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2496:269:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2506:22:1",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "2520:4:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2526:1:1",
"type": "",
"value": "2"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "2516:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2516:12:1"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2506:6:1"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "2537:38:1",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "2567:4:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2573:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "2563:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2563:12:1"
},
"variables": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulTypedName",
"src": "2541:18:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "2614:51:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2628:27:1",
"value": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2642:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2650:4:1",
"type": "",
"value": "0x7f"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "2638:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2638:17:1"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2628:6:1"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "2594:18:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "2587:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2587:26:1"
},
"nodeType": "YulIf",
"src": "2584:2:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2717:42:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x22",
"nodeType": "YulIdentifier",
"src": "2731:16:1"
},
"nodeType": "YulFunctionCall",
"src": "2731:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "2731:18:1"
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "2681:18:1"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2704:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2712:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "2701:2:1"
},
"nodeType": "YulFunctionCall",
"src": "2701:14:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "2678:2:1"
},
"nodeType": "YulFunctionCall",
"src": "2678:38:1"
},
"nodeType": "YulIf",
"src": "2675:2:1"
}
]
},
"name": "extract_byte_array_length",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "2480:4:1",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "2489:6:1",
"type": ""
}
],
"src": "2445:320:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2814:238:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2824:58:1",
"value": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "2846:6:1"
},
{
"arguments": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "2876:4:1"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nodeType": "YulIdentifier",
"src": "2854:21:1"
},
"nodeType": "YulFunctionCall",
"src": "2854:27:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2842:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2842:40:1"
},
"variables": [
{
"name": "newFreePtr",
"nodeType": "YulTypedName",
"src": "2828:10:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "2993:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "2995:16:1"
},
"nodeType": "YulFunctionCall",
"src": "2995:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "2995:18:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "2936:10:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2948:18:1",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "2933:2:1"
},
"nodeType": "YulFunctionCall",
"src": "2933:34:1"
},
{
"arguments": [
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "2972:10:1"
},
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "2984:6:1"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "2969:2:1"
},
"nodeType": "YulFunctionCall",
"src": "2969:22:1"
}
],
"functionName": {
"name": "or",
"nodeType": "YulIdentifier",
"src": "2930:2:1"
},
"nodeType": "YulFunctionCall",
"src": "2930:62:1"
},
"nodeType": "YulIf",
"src": "2927:2:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3031:2:1",
"type": "",
"value": "64"
},
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "3035:10:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3024:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3024:22:1"
},
"nodeType": "YulExpressionStatement",
"src": "3024:22:1"
}
]
},
"name": "finalize_allocation",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "2800:6:1",
"type": ""
},
{
"name": "size",
"nodeType": "YulTypedName",
"src": "2808:4:1",
"type": ""
}
],
"src": "2771:281:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3086:152:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3103:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3106:77:1",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3096:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3096:88:1"
},
"nodeType": "YulExpressionStatement",
"src": "3096:88:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3200:1:1",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3203:4:1",
"type": "",
"value": "0x22"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3193:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3193:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "3193:15:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3224:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3227:4:1",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "3217:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3217:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "3217:15:1"
}
]
},
"name": "panic_error_0x22",
"nodeType": "YulFunctionDefinition",
"src": "3058:180:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3272:152:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3289:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3292:77:1",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3282:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3282:88:1"
},
"nodeType": "YulExpressionStatement",
"src": "3282:88:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3386:1:1",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3389:4:1",
"type": "",
"value": "0x41"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3379:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3379:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "3379:15:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3410:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3413:4:1",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "3403:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3403:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "3403:15:1"
}
]
},
"name": "panic_error_0x41",
"nodeType": "YulFunctionDefinition",
"src": "3244:180:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3478:54:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3488:38:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3506:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3513:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3502:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3502:14:1"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3522:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "3518:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3518:7:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "3498:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3498:28:1"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "3488:6:1"
}
]
}
]
},
"name": "round_up_to_mul_of_32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3461:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nodeType": "YulTypedName",
"src": "3471:6:1",
"type": ""
}
],
"src": "3430:102:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3581:79:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "3638:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3647:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3650:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "3640:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3640:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "3640:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3604:5:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3629:5:1"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "3611:17:1"
},
"nodeType": "YulFunctionCall",
"src": "3611:24:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "3601:2:1"
},
"nodeType": "YulFunctionCall",
"src": "3601:35:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "3594:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3594:43:1"
},
"nodeType": "YulIf",
"src": "3591:2:1"
}
]
},
"name": "validator_revert_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3574:5:1",
"type": ""
}
],
"src": "3538:122:1"
}
]
},
"contents": "{\n\n function abi_decode_available_length_t_bytes_memory_ptr_fromMemory(src, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_bytes_memory_ptr(length))\n mstore(array, length)\n let dst := add(array, 0x20)\n if gt(add(src, length), end) { revert(0, 0) }\n copy_memory_to_memory(src, dst, length)\n }\n\n function abi_decode_t_address_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_address(value)\n }\n\n // bytes\n function abi_decode_t_bytes_memory_ptr_fromMemory(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let length := mload(offset)\n array := abi_decode_available_length_t_bytes_memory_ptr_fromMemory(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_bytes_memory_ptrt_address_fromMemory(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n\n {\n\n let offset := mload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n\n value0 := abi_decode_t_bytes_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function array_allocation_size_t_bytes_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := round_up_to_mul_of_32(length)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function copy_memory_to_memory(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n if gt(i, length)\n {\n // clear end\n mstore(add(dst, length), 0)\n }\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n}\n",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50604051610598380380610598833981810160405281019061003291906101b1565b8160009080519060200190610048929190610091565b5080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506103a9565b82805461009d906102c0565b90600052602060002090601f0160209004810192826100bf5760008555610106565b82601f106100d857805160ff1916838001178555610106565b82800160010185558215610106579182015b828111156101055782518255916020019190600101906100ea565b5b5090506101139190610117565b5090565b5b80821115610130576000816000905550600101610118565b5090565b60006101476101428461022a565b610205565b90508281526020810184848401111561015f57600080fd5b61016a84828561028d565b509392505050565b60008151905061018181610392565b92915050565b600082601f83011261019857600080fd5b81516101a8848260208601610134565b91505092915050565b600080604083850312156101c457600080fd5b600083015167ffffffffffffffff8111156101de57600080fd5b6101ea85828601610187565b92505060206101fb85828601610172565b9150509250929050565b600061020f610220565b905061021b82826102f2565b919050565b6000604051905090565b600067ffffffffffffffff82111561024557610244610352565b5b61024e82610381565b9050602081019050919050565b60006102668261026d565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60005b838110156102ab578082015181840152602081019050610290565b838111156102ba576000848401525b50505050565b600060028204905060018216806102d857607f821691505b602082108114156102ec576102eb610323565b5b50919050565b6102fb82610381565b810181811067ffffffffffffffff8211171561031a57610319610352565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b61039b8161025b565b81146103a657600080fd5b50565b6101e0806103b86000396000f3fe6080604052600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600060405161004c9190610112565b6000604051808303816000865af19150503d8060008114610089576040519150601f19603f3d011682016040523d82523d6000602084013e61008e565b606091505b505050005b600081546100a081610149565b6100aa818661013e565b945060018216600081146100c557600181146100d657610109565b60ff19831686528186019350610109565b6100df85610129565b60005b83811015610101578154818901526001820191506020810190506100e2565b838801955050505b50505092915050565b600061011e8284610093565b915081905092915050565b60008190508160005260206000209050919050565b600081905092915050565b6000600282049050600182168061016157607f821691505b602082108114156101755761017461017b565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fdfea2646970667358221220db448682d08de665ddbc58da60b0948a34ea452d30b5e22aba06bd6760fea69164736f6c63430008040033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x598 CODESIZE SUB DUP1 PUSH2 0x598 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH2 0x32 SWAP2 SWAP1 PUSH2 0x1B1 JUMP JUMPDEST DUP2 PUSH1 0x0 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x48 SWAP3 SWAP2 SWAP1 PUSH2 0x91 JUMP JUMPDEST POP DUP1 PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP POP PUSH2 0x3A9 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x9D SWAP1 PUSH2 0x2C0 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0xBF JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x106 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0xD8 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x106 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x106 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x105 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0xEA JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x113 SWAP2 SWAP1 PUSH2 0x117 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x130 JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH2 0x118 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x147 PUSH2 0x142 DUP5 PUSH2 0x22A JUMP JUMPDEST PUSH2 0x205 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x15F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x16A DUP5 DUP3 DUP6 PUSH2 0x28D JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x181 DUP2 PUSH2 0x392 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x198 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1A8 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x134 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP4 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1EA DUP6 DUP3 DUP7 ADD PUSH2 0x187 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x1FB DUP6 DUP3 DUP7 ADD PUSH2 0x172 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x20F PUSH2 0x220 JUMP JUMPDEST SWAP1 POP PUSH2 0x21B DUP3 DUP3 PUSH2 0x2F2 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x245 JUMPI PUSH2 0x244 PUSH2 0x352 JUMP JUMPDEST JUMPDEST PUSH2 0x24E DUP3 PUSH2 0x381 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x266 DUP3 PUSH2 0x26D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2AB JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x290 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2BA JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x2D8 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x2EC JUMPI PUSH2 0x2EB PUSH2 0x323 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2FB DUP3 PUSH2 0x381 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x31A JUMPI PUSH2 0x319 PUSH2 0x352 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x39B DUP2 PUSH2 0x25B JUMP JUMPDEST DUP2 EQ PUSH2 0x3A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x1E0 DUP1 PUSH2 0x3B8 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x4C SWAP2 SWAP1 PUSH2 0x112 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x89 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 0x8E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP POP STOP JUMPDEST PUSH1 0x0 DUP2 SLOAD PUSH2 0xA0 DUP2 PUSH2 0x149 JUMP JUMPDEST PUSH2 0xAA DUP2 DUP7 PUSH2 0x13E JUMP JUMPDEST SWAP5 POP PUSH1 0x1 DUP3 AND PUSH1 0x0 DUP2 EQ PUSH2 0xC5 JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0xD6 JUMPI PUSH2 0x109 JUMP JUMPDEST PUSH1 0xFF NOT DUP4 AND DUP7 MSTORE DUP2 DUP7 ADD SWAP4 POP PUSH2 0x109 JUMP JUMPDEST PUSH2 0xDF DUP6 PUSH2 0x129 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x101 JUMPI DUP2 SLOAD DUP2 DUP10 ADD MSTORE PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xE2 JUMP JUMPDEST DUP4 DUP9 ADD SWAP6 POP POP POP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11E DUP3 DUP5 PUSH2 0x93 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x161 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x175 JUMPI PUSH2 0x174 PUSH2 0x17B JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDB DIFFICULTY DUP7 DUP3 0xD0 DUP14 0xE6 PUSH6 0xDDBC58DA60B0 SWAP5 DUP11 CALLVALUE 0xEA GASLIMIT 0x2D ADDRESS 0xB5 0xE2 0x2A 0xBA MOD 0xBD PUSH8 0x60FEA69164736F6C PUSH4 0x43000804 STOP CALLER ",
"sourceMap": "64:273:0:-:0;;;135:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;211:8;201:7;:18;;;;;;;;;;;;:::i;:::-;;242:11;229:10;;:24;;;;;;;;;;;;;;;;;;135:125;;64:273;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:352:1:-;95:5;120:65;136:48;177:6;136:48;:::i;:::-;120:65;:::i;:::-;111:74;;208:6;201:5;194:21;246:4;239:5;235:16;284:3;275:6;270:3;266:16;263:25;260:2;;;301:1;298;291:12;260:2;314:39;346:6;341:3;336;314:39;:::i;:::-;101:258;;;;;;:::o;365:143::-;422:5;453:6;447:13;438:22;;469:33;496:5;469:33;:::i;:::-;428:80;;;;:::o;527:286::-;593:5;642:3;635:4;627:6;623:17;619:27;609:2;;660:1;657;650:12;609:2;693:6;687:13;718:89;803:3;795:6;788:4;780:6;776:17;718:89;:::i;:::-;709:98;;599:214;;;;;:::o;819:544::-;907:6;915;964:2;952:9;943:7;939:23;935:32;932:2;;;980:1;977;970:12;932:2;1044:1;1033:9;1029:17;1023:24;1074:18;1066:6;1063:30;1060:2;;;1106:1;1103;1096:12;1060:2;1134:73;1199:7;1190:6;1179:9;1175:22;1134:73;:::i;:::-;1124:83;;994:223;1256:2;1282:64;1338:7;1329:6;1318:9;1314:22;1282:64;:::i;:::-;1272:74;;1227:129;922:441;;;;;:::o;1369:129::-;1403:6;1430:20;;:::i;:::-;1420:30;;1459:33;1487:4;1479:6;1459:33;:::i;:::-;1410:88;;;:::o;1504:75::-;1537:6;1570:2;1564:9;1554:19;;1544:35;:::o;1585:307::-;1646:4;1736:18;1728:6;1725:30;1722:2;;;1758:18;;:::i;:::-;1722:2;1796:29;1818:6;1796:29;:::i;:::-;1788:37;;1880:4;1874;1870:15;1862:23;;1651:241;;;:::o;1898:96::-;1935:7;1964:24;1982:5;1964:24;:::i;:::-;1953:35;;1943:51;;;:::o;2000:126::-;2037:7;2077:42;2070:5;2066:54;2055:65;;2045:81;;;:::o;2132:307::-;2200:1;2210:113;2224:6;2221:1;2218:13;2210:113;;;2309:1;2304:3;2300:11;2294:18;2290:1;2285:3;2281:11;2274:39;2246:2;2243:1;2239:10;2234:15;;2210:113;;;2341:6;2338:1;2335:13;2332:2;;;2421:1;2412:6;2407:3;2403:16;2396:27;2332:2;2181:258;;;;:::o;2445:320::-;2489:6;2526:1;2520:4;2516:12;2506:22;;2573:1;2567:4;2563:12;2594:18;2584:2;;2650:4;2642:6;2638:17;2628:27;;2584:2;2712;2704:6;2701:14;2681:18;2678:38;2675:2;;;2731:18;;:::i;:::-;2675:2;2496:269;;;;:::o;2771:281::-;2854:27;2876:4;2854:27;:::i;:::-;2846:6;2842:40;2984:6;2972:10;2969:22;2948:18;2936:10;2933:34;2930:62;2927:2;;;2995:18;;:::i;:::-;2927:2;3035:10;3031:2;3024:22;2814:238;;;:::o;3058:180::-;3106:77;3103:1;3096:88;3203:4;3200:1;3193:15;3227:4;3224:1;3217:15;3244:180;3292:77;3289:1;3282:88;3389:4;3386:1;3379:15;3413:4;3410:1;3403:15;3430:102;3471:6;3522:2;3518:7;3513:2;3506:5;3502:14;3498:28;3488:38;;3478:54;;;:::o;3538:122::-;3611:24;3629:5;3611:24;:::i;:::-;3604:5;3601:35;3591:2;;3650:1;3647;3640:12;3591:2;3581:79;:::o;64:273:0:-;;;;;;;"
},
"deployedBytecode": {
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:1955:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "134:736:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "144:29:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "167:5:1"
}
],
"functionName": {
"name": "sload",
"nodeType": "YulIdentifier",
"src": "161:5:1"
},
"nodeType": "YulFunctionCall",
"src": "161:12:1"
},
"variables": [
{
"name": "slotValue",
"nodeType": "YulTypedName",
"src": "148:9:1",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "182:50:1",
"value": {
"arguments": [
{
"name": "slotValue",
"nodeType": "YulIdentifier",
"src": "222:9:1"
}
],
"functionName": {
"name": "extract_byte_array_length",
"nodeType": "YulIdentifier",
"src": "196:25:1"
},
"nodeType": "YulFunctionCall",
"src": "196:36:1"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "186:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "241:95:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "324:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "329:6:1"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "248:75:1"
},
"nodeType": "YulFunctionCall",
"src": "248:88:1"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "241:3:1"
}
]
},
{
"cases": [
{
"body": {
"nodeType": "YulBlock",
"src": "385:130:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "438:3:1"
},
{
"arguments": [
{
"name": "slotValue",
"nodeType": "YulIdentifier",
"src": "447:9:1"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "462:4:1",
"type": "",
"value": "0xff"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "458:3:1"
},
"nodeType": "YulFunctionCall",
"src": "458:9:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "443:3:1"
},
"nodeType": "YulFunctionCall",
"src": "443:25:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "431:6:1"
},
"nodeType": "YulFunctionCall",
"src": "431:38:1"
},
"nodeType": "YulExpressionStatement",
"src": "431:38:1"
},
{
"nodeType": "YulAssignment",
"src": "482:23:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "493:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "498:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "489:3:1"
},
"nodeType": "YulFunctionCall",
"src": "489:16:1"
},
"variableNames": [
{
"name": "ret",
"nodeType": "YulIdentifier",
"src": "482:3:1"
}
]
}
]
},
"nodeType": "YulCase",
"src": "378:137:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "383:1:1",
"type": "",
"value": "0"
}
},
{
"body": {
"nodeType": "YulBlock",
"src": "531:333:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "576:52:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "622:5:1"
}
],
"functionName": {
"name": "array_dataslot_t_bytes_storage",
"nodeType": "YulIdentifier",
"src": "591:30:1"
},
"nodeType": "YulFunctionCall",
"src": "591:37:1"
},
"variables": [
{
"name": "dataPos",
"nodeType": "YulTypedName",
"src": "580:7:1",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "641:10:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "650:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "645:1:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "708:110:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "737:3:1"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "742:1:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "733:3:1"
},
"nodeType": "YulFunctionCall",
"src": "733:11:1"
},
{
"arguments": [
{
"name": "dataPos",
"nodeType": "YulIdentifier",
"src": "752:7:1"
}
],
"functionName": {
"name": "sload",
"nodeType": "YulIdentifier",
"src": "746:5:1"
},
"nodeType": "YulFunctionCall",
"src": "746:14:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "726:6:1"
},
"nodeType": "YulFunctionCall",
"src": "726:35:1"
},
"nodeType": "YulExpressionStatement",
"src": "726:35:1"
},
{
"nodeType": "YulAssignment",
"src": "778:26:1",
"value": {
"arguments": [
{
"name": "dataPos",
"nodeType": "YulIdentifier",
"src": "793:7:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "802:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "789:3:1"
},
"nodeType": "YulFunctionCall",
"src": "789:15:1"
},
"variableNames": [
{
"name": "dataPos",
"nodeType": "YulIdentifier",
"src": "778:7:1"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "675:1:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "678:6:1"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "672:2:1"
},
"nodeType": "YulFunctionCall",
"src": "672:13:1"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "686:21:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "688:17:1",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "697:1:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "700:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "693:3:1"
},
"nodeType": "YulFunctionCall",
"src": "693:12:1"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "688:1:1"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "668:3:1",
"statements": []
},
"src": "664:154:1"
},
{
"nodeType": "YulAssignment",
"src": "831:23:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "842:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "847:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "838:3:1"
},
"nodeType": "YulFunctionCall",
"src": "838:16:1"
},
"variableNames": [
{
"name": "ret",
"nodeType": "YulIdentifier",
"src": "831:3:1"
}
]
}
]
},
"nodeType": "YulCase",
"src": "524:340:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "529:1:1",
"type": "",
"value": "1"
}
}
],
"expression": {
"arguments": [
{
"name": "slotValue",
"nodeType": "YulIdentifier",
"src": "356:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "367:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "352:3:1"
},
"nodeType": "YulFunctionCall",
"src": "352:17:1"
},
"nodeType": "YulSwitch",
"src": "345:519:1"
}
]
},
"name": "abi_encode_t_bytes_storage_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "115:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "122:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "ret",
"nodeType": "YulTypedName",
"src": "130:3:1",
"type": ""
}
],
"src": "29:841:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1007:134:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1018:97:1",
"value": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1102:6:1"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1111:3:1"
}
],
"functionName": {
"name": "abi_encode_t_bytes_storage_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "1025:76:1"
},
"nodeType": "YulFunctionCall",
"src": "1025:90:1"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1018:3:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "1125:10:1",
"value": {
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1132:3:1"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "1125:3:1"
}
]
}
]
},
"name": "abi_encode_tuple_packed_t_bytes_storage__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "986:3:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "992:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "1003:3:1",
"type": ""
}
],
"src": "876:265:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1200:87:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1210:11:1",
"value": {
"name": "ptr",
"nodeType": "YulIdentifier",
"src": "1218:3:1"
},
"variableNames": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "1210:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1238:1:1",
"type": "",
"value": "0"
},
{
"name": "ptr",
"nodeType": "YulIdentifier",
"src": "1241:3:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1231:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1231:14:1"
},
"nodeType": "YulExpressionStatement",
"src": "1231:14:1"
},
{
"nodeType": "YulAssignment",
"src": "1254:26:1",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1272:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1275:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "keccak256",
"nodeType": "YulIdentifier",
"src": "1262:9:1"
},
"nodeType": "YulFunctionCall",
"src": "1262:18:1"
},
"variableNames": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "1254:4:1"
}
]
}
]
},
"name": "array_dataslot_t_bytes_storage",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "ptr",
"nodeType": "YulTypedName",
"src": "1187:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "1195:4:1",
"type": ""
}
],
"src": "1147:140:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1406:34:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1416:18:1",
"value": {
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1431:3:1"
},
"variableNames": [
{
"name": "updated_pos",
"nodeType": "YulIdentifier",
"src": "1416:11:1"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "1378:3:1",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "1383:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nodeType": "YulTypedName",
"src": "1394:11:1",
"type": ""
}
],
"src": "1293:147:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1497:269:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1507:22:1",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "1521:4:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1527:1:1",
"type": "",
"value": "2"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "1517:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1517:12:1"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1507:6:1"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "1538:38:1",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "1568:4:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1574:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "1564:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1564:12:1"
},
"variables": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulTypedName",
"src": "1542:18:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "1615:51:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1629:27:1",
"value": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1643:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1651:4:1",
"type": "",
"value": "0x7f"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "1639:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1639:17:1"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1629:6:1"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "1595:18:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "1588:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1588:26:1"
},
"nodeType": "YulIf",
"src": "1585:2:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1718:42:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x22",
"nodeType": "YulIdentifier",
"src": "1732:16:1"
},
"nodeType": "YulFunctionCall",
"src": "1732:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "1732:18:1"
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "1682:18:1"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1705:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1713:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "1702:2:1"
},
"nodeType": "YulFunctionCall",
"src": "1702:14:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "1679:2:1"
},
"nodeType": "YulFunctionCall",
"src": "1679:38:1"
},
"nodeType": "YulIf",
"src": "1676:2:1"
}
]
},
"name": "extract_byte_array_length",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "1481:4:1",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "1490:6:1",
"type": ""
}
],
"src": "1446:320:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1800:152:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1817:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1820:77:1",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1810:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1810:88:1"
},
"nodeType": "YulExpressionStatement",
"src": "1810:88:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1914:1:1",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1917:4:1",
"type": "",
"value": "0x22"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1907:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1907:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "1907:15:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1938:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1941:4:1",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1931:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1931:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "1931:15:1"
}
]
},
"name": "panic_error_0x22",
"nodeType": "YulFunctionDefinition",
"src": "1772:180:1"
}
]
},
"contents": "{\n\n // bytes -> bytes\n function abi_encode_t_bytes_storage_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> ret {\n let slotValue := sload(value)\n let length := extract_byte_array_length(slotValue)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n switch and(slotValue, 1)\n case 0 {\n // short byte array\n mstore(pos, and(slotValue, not(0xff)))\n ret := add(pos, length)\n }\n case 1 {\n // long byte array\n let dataPos := array_dataslot_t_bytes_storage(value)\n let i := 0\n for { } lt(i, length) { i := add(i, 0x20) } {\n mstore(add(pos, i), sload(dataPos))\n dataPos := add(dataPos, 1)\n }\n ret := add(pos, length)\n }\n }\n\n function abi_encode_tuple_packed_t_bytes_storage__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value0) -> end {\n\n pos := abi_encode_t_bytes_storage_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value0, pos)\n\n end := pos\n }\n\n function array_dataslot_t_bytes_storage(ptr) -> data {\n data := ptr\n\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n}\n",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "6080604052600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600060405161004c9190610112565b6000604051808303816000865af19150503d8060008114610089576040519150601f19603f3d011682016040523d82523d6000602084013e61008e565b606091505b505050005b600081546100a081610149565b6100aa818661013e565b945060018216600081146100c557600181146100d657610109565b60ff19831686528186019350610109565b6100df85610129565b60005b83811015610101578154818901526001820191506020810190506100e2565b838801955050505b50505092915050565b600061011e8284610093565b915081905092915050565b60008190508160005260206000209050919050565b600081905092915050565b6000600282049050600182168061016157607f821691505b602082108114156101755761017461017b565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fdfea2646970667358221220db448682d08de665ddbc58da60b0948a34ea452d30b5e22aba06bd6760fea69164736f6c63430008040033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x4C SWAP2 SWAP1 PUSH2 0x112 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x89 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 0x8E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP POP STOP JUMPDEST PUSH1 0x0 DUP2 SLOAD PUSH2 0xA0 DUP2 PUSH2 0x149 JUMP JUMPDEST PUSH2 0xAA DUP2 DUP7 PUSH2 0x13E JUMP JUMPDEST SWAP5 POP PUSH1 0x1 DUP3 AND PUSH1 0x0 DUP2 EQ PUSH2 0xC5 JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0xD6 JUMPI PUSH2 0x109 JUMP JUMPDEST PUSH1 0xFF NOT DUP4 AND DUP7 MSTORE DUP2 DUP7 ADD SWAP4 POP PUSH2 0x109 JUMP JUMPDEST PUSH2 0xDF DUP6 PUSH2 0x129 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x101 JUMPI DUP2 SLOAD DUP2 DUP10 ADD MSTORE PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xE2 JUMP JUMPDEST DUP4 DUP9 ADD SWAP6 POP POP POP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11E DUP3 DUP5 PUSH2 0x93 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x161 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x175 JUMPI PUSH2 0x174 PUSH2 0x17B JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDB DIFFICULTY DUP7 DUP3 0xD0 DUP14 0xE6 PUSH6 0xDDBC58DA60B0 SWAP5 DUP11 CALLVALUE 0xEA GASLIMIT 0x2D ADDRESS 0xB5 0xE2 0x2A 0xBA MOD 0xBD PUSH8 0x60FEA69164736F6C PUSH4 0x43000804 STOP CALLER ",
"sourceMap": "64:273:0:-:0;;;304:10;;;;;;;;;;;:15;;320:7;304:24;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;64:273;29:841:1;130:3;167:5;161:12;196:36;222:9;196:36;:::i;:::-;248:88;329:6;324:3;248:88;:::i;:::-;241:95;;367:1;356:9;352:17;383:1;378:137;;;;529:1;524:340;;;;345:519;;378:137;462:4;458:9;447;443:25;438:3;431:38;498:6;493:3;489:16;482:23;;378:137;;524:340;591:37;622:5;591:37;:::i;:::-;650:1;664:154;678:6;675:1;672:13;664:154;;;752:7;746:14;742:1;737:3;733:11;726:35;802:1;793:7;789:15;778:26;;700:4;697:1;693:12;688:17;;664:154;;;847:6;842:3;838:16;831:23;;531:333;;345:519;;134:736;;;;;;:::o;876:265::-;1003:3;1025:90;1111:3;1102:6;1025:90;:::i;:::-;1018:97;;1132:3;1125:10;;1007:134;;;;:::o;1147:140::-;1195:4;1218:3;1210:11;;1241:3;1238:1;1231:14;1275:4;1272:1;1262:18;1254:26;;1200:87;;;:::o;1293:147::-;1394:11;1431:3;1416:18;;1406:34;;;;:::o;1446:320::-;1490:6;1527:1;1521:4;1517:12;1507:22;;1574:1;1568:4;1564:12;1595:18;1585:2;;1651:4;1643:6;1639:17;1629:27;;1585:2;1713;1705:6;1702:14;1682:18;1679:38;1676:2;;;1732:18;;:::i;:::-;1676:2;1497:269;;;;:::o;1772:180::-;1820:77;1817:1;1810:88;1917:4;1914:1;1907:15;1941:4;1938:1;1931:15"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "96000",
"executionCost": "infinite",
"totalCost": "infinite"
},
"external": {
"": "infinite"
}
},
"methodIdentifiers": {}
},
"abi": [
{
"inputs": [
{
"internalType": "bytes",
"name": "_payload",
"type": "bytes"
},
{
"internalType": "address",
"name": "_keyManager",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"stateMutability": "payable",
"type": "fallback"
}
]
}
{
"compiler": {
"version": "0.8.4+commit.c7e474f2"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "bytes",
"name": "_payload",
"type": "bytes"
},
{
"internalType": "address",
"name": "_keyManager",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"stateMutability": "payable",
"type": "fallback"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"Reentrancy.sol": "Reentrancy"
},
"evmVersion": "istanbul",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"Reentrancy.sol": {
"keccak256": "0x1bca313939affd73de1101dbb4fe8a01dd7244961cf535bdf992f6e602bd8731",
"license": "Apache-2.0",
"urls": [
"bzz-raw://4957dda8c3730f914b8bb1d3f5d24b913888677d170926d5410cf447e053f915",
"dweb:/ipfs/QmRZFtS6nJRgaVx6a4nhB8JnELGJjCeUe1gYF65Y5CDjMj"
]
}
},
"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": {
"linkReferences": {},
"object": "608060405269021e19e0c9bab240000060005534801561001e57600080fd5b5060a18061002d6000396000f300608060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806371d26fdb146044575b600080fd5b348015604f57600080fd5b506056606c565b6040518082815260200191505060405180910390f35b600080549050905600a165627a7a723058205ecb516f7c4b00104518300f86dfa78b7134fcdc96e95adbe32ef1a824ca88130029",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH10 0x21E19E0C9BAB2400000 PUSH1 0x0 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x1E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xA1 DUP1 PUSH2 0x2D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x3F JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP1 PUSH4 0x71D26FDB EQ PUSH1 0x44 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH1 0x4F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x56 PUSH1 0x6C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 POP SWAP1 JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0x5e 0xcb MLOAD PUSH16 0x7C4B00104518300F86DFA78B7134FCDC SWAP7 0xe9 GAS 0xdb 0xe3 0x2e CALL 0xa8 0x24 0xca DUP9 SGT STOP 0x29 ",
"sourceMap": "25:170:0:-;;;65:11;50:26;;83:23;8:9:-1;5:2;;;30:1;27;20:12;5:2;83:23:0;25:170;;;;;;"
},
"deployedBytecode": {
"linkReferences": {},
"object": "608060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806371d26fdb146044575b600080fd5b348015604f57600080fd5b506056606c565b6040518082815260200191505060405180910390f35b600080549050905600a165627a7a723058205ecb516f7c4b00104518300f86dfa78b7134fcdc96e95adbe32ef1a824ca88130029",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x3F JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP1 PUSH4 0x71D26FDB EQ PUSH1 0x44 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH1 0x4F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x56 PUSH1 0x6C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 POP SWAP1 JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0x5e 0xcb MLOAD PUSH16 0x7C4B00104518300F86DFA78B7134FCDC SWAP7 0xe9 GAS 0xdb 0xe3 0x2e CALL 0xa8 0x24 0xca DUP9 SGT STOP 0x29 ",
"sourceMap": "25:170:0:-;;;;;;;;;;;;;;;;;;;;;;;;112:81;;8:9:-1;5:2;;;30:1;27;20:12;5:2;112:81:0;;;;;;;;;;;;;;;;;;;;;;;;156:4;179:7;;172:14;;112:81;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "32200",
"executionCost": "20093",
"totalCost": "52293"
},
"external": {
"fetchCap()": "402"
}
},
"methodIdentifiers": {
"fetchCap()": "71d26fdb"
}
},
"abi": [
{
"constant": true,
"inputs": [],
"name": "fetchCap",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
}
]
}
{
"compiler": {
"version": "0.4.24+commit.e67f0147"
},
"language": "Solidity",
"output": {
"abi": [
{
"constant": true,
"inputs": [],
"name": "fetchCap",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
}
],
"devdoc": {
"methods": {}
},
"userdoc": {
"methods": {}
}
},
"settings": {
"compilationTarget": {
"Reentrancy.sol": "Tokensale"
},
"evmVersion": "byzantium",
"libraries": {},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"Reentrancy.sol": {
"keccak256": "0x374e8eea54c8614b288772c2e9a9f589aa34139faf11e2e24ffd18c113ec073a",
"urls": [
"bzzr://9aad0e57beae4a1b389c8cac7edf0674e56bf9ac22272135c3e0723dba9d8abc"
]
}
},
"version": 1
}
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
/**
* @title Storage
* @dev Store & retrieve value in a variable
*/
contract Storage {
uint256 number;
/**
* @dev Store value in variable
* @param num value to store
*/
function store(uint256 num) public {
number = num;
}
/**
* @dev Return value
* @return value of 'number'
*/
function retrieve() public view returns (uint256){
return number;
}
}
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
/**
* @title Owner
* @dev Set & change owner
*/
contract Owner {
address private owner;
// event for EVM logging
event OwnerSet(address indexed oldOwner, address indexed newOwner);
// modifier to check if caller is owner
modifier isOwner() {
// If the first argument of 'require' evaluates to 'false', execution terminates and all
// changes to the state and to Ether balances are reverted.
// This used to consume all gas in old EVM versions, but not anymore.
// It is often a good idea to use 'require' to check if functions are called correctly.
// As a second argument, you can also provide an explanation about what went wrong.
require(msg.sender == owner, "Caller is not owner");
_;
}
/**
* @dev Set contract deployer as owner
*/
constructor() {
owner = msg.sender; // 'msg.sender' is sender of current call, contract deployer for a constructor
emit OwnerSet(address(0), owner);
}
/**
* @dev Change owner
* @param newOwner address of new owner
*/
function changeOwner(address newOwner) public isOwner {
emit OwnerSet(owner, newOwner);
owner = newOwner;
}
/**
* @dev Return owner address
* @return address of owner
*/
function getOwner() external view returns (address) {
return owner;
}
}
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
/**
* @title Ballot
* @dev Implements voting process along with vote delegation
*/
contract Ballot {
struct Voter {
uint weight; // weight is accumulated by delegation
bool voted; // if true, that person already voted
address delegate; // person delegated to
uint vote; // index of the voted proposal
}
struct Proposal {
// If you can limit the length to a certain number of bytes,
// always use one of bytes1 to bytes32 because they are much cheaper
bytes32 name; // short name (up to 32 bytes)
uint voteCount; // number of accumulated votes
}
address public chairperson;
mapping(address => Voter) public voters;
Proposal[] public proposals;
/**
* @dev Create a new ballot to choose one of 'proposalNames'.
* @param proposalNames names of proposals
*/
constructor(bytes32[] memory proposalNames) {
chairperson = msg.sender;
voters[chairperson].weight = 1;
for (uint i = 0; i < proposalNames.length; i++) {
// 'Proposal({...})' creates a temporary
// Proposal object and 'proposals.push(...)'
// appends it to the end of 'proposals'.
proposals.push(Proposal({
name: proposalNames[i],
voteCount: 0
}));
}
}
/**
* @dev Give 'voter' the right to vote on this ballot. May only be called by 'chairperson'.
* @param voter address of voter
*/
function giveRightToVote(address voter) public {
require(
msg.sender == chairperson,
"Only chairperson can give right to vote."
);
require(
!voters[voter].voted,
"The voter already voted."
);
require(voters[voter].weight == 0);
voters[voter].weight = 1;
}
/**
* @dev Delegate your vote to the voter 'to'.
* @param to address to which vote is delegated
*/
function delegate(address to) public {
Voter storage sender = voters[msg.sender];
require(!sender.voted, "You already voted.");
require(to != msg.sender, "Self-delegation is disallowed.");
while (voters[to].delegate != address(0)) {
to = voters[to].delegate;
// We found a loop in the delegation, not allowed.
require(to != msg.sender, "Found loop in delegation.");
}
sender.voted = true;
sender.delegate = to;
Voter storage delegate_ = voters[to];
if (delegate_.voted) {
// If the delegate already voted,
// directly add to the number of votes
proposals[delegate_.vote].voteCount += sender.weight;
} else {
// If the delegate did not vote yet,
// add to her weight.
delegate_.weight += sender.weight;
}
}
/**
* @dev Give your vote (including votes delegated to you) to proposal 'proposals[proposal].name'.
* @param proposal index of proposal in the proposals array
*/
function vote(uint proposal) public {
Voter storage sender = voters[msg.sender];
require(sender.weight != 0, "Has no right to vote");
require(!sender.voted, "Already voted.");
sender.voted = true;
sender.vote = proposal;
// If 'proposal' is out of the range of the array,
// this will throw automatically and revert all
// changes.
proposals[proposal].voteCount += sender.weight;
}
/**
* @dev Computes the winning proposal taking all previous votes into account.
* @return winningProposal_ index of winning proposal in the proposals array
*/
function winningProposal() public view
returns (uint winningProposal_)
{
uint winningVoteCount = 0;
for (uint p = 0; p < proposals.length; p++) {
if (proposals[p].voteCount > winningVoteCount) {
winningVoteCount = proposals[p].voteCount;
winningProposal_ = p;
}
}
}
/**
* @dev Calls winningProposal() function to get the index of the winner contained in the proposals array and then
* @return winnerName_ the name of the winner
*/
function winnerName() public view
returns (bytes32 winnerName_)
{
winnerName_ = proposals[winningProposal()].name;
}
}
pragma solidity 0.8.0;
contract Animal {
string public name;
uint public feet;
bool public canSwim;
constructor(string memory _name, uint _feet, bool _canSwim) {
name = _name;
feet = _feet;
canSwim = _canSwim;
}
}
contract Lion is Animal {
constructor(string memory _name)
Animal(_name, 4, true)
{
// ...
}
}
{
"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": {
"generatedSources": [],
"linkReferences": {},
"object": "6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea2646970667358221220c9bc8236c129687c4da0a763e054e619de31bb43eceef40857ec310ba86e5a1a64736f6c63430008000033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3F DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC9 0xBC DUP3 CALLDATASIZE 0xC1 0x29 PUSH9 0x7C4DA0A763E054E619 0xDE BALANCE 0xBB NUMBER 0xEC 0xEE DELEGATECALL ADDMOD JUMPI 0xEC BALANCE SIGNEXTEND 0xA8 PUSH15 0x5A1A64736F6C634300080000330000 ",
"sourceMap": "24:29:0:-:0;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "6080604052600080fdfea2646970667358221220c9bc8236c129687c4da0a763e054e619de31bb43eceef40857ec310ba86e5a1a64736f6c63430008000033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC9 0xBC DUP3 CALLDATASIZE 0xC1 0x29 PUSH9 0x7C4DA0A763E054E619 0xDE BALANCE 0xBB NUMBER 0xEC 0xEE DELEGATECALL ADDMOD JUMPI 0xEC BALANCE SIGNEXTEND 0xA8 PUSH15 0x5A1A64736F6C634300080000330000 ",
"sourceMap": "24:29:0:-:0;;;;;"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "12600",
"executionCost": "66",
"totalCost": "12666"
}
},
"methodIdentifiers": {}
},
"abi": []
}
{
"compiler": {
"version": "0.8.0+commit.c7dfd78e"
},
"language": "Solidity",
"output": {
"abi": [],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/draft.sol": "Animal"
},
"evmVersion": "istanbul",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/draft.sol": {
"keccak256": "0x6ceed786bdce07d6a2981f57e4049bdffedeba03245e79873cc388b8229323fa",
"urls": [
"bzz-raw://209cb738ee8e6d87925a2278b26ab821c35bb390f9c7e3fbd58d1e67455ede19",
"dweb:/ipfs/QmPNkmUcBux6gVVEvifo91UkDrK4scfELAWj4KFYsyrZUG"
]
}
},
"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": {
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:3453:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "137:564:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "147:90:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "229:6:1"
}
],
"functionName": {
"name": "array_allocation_size_t_array$_t_bytes32_$dyn_memory_ptr",
"nodeType": "YulIdentifier",
"src": "172:56:1"
},
"nodeType": "YulFunctionCall",
"src": "172:64:1"
}
],
"functionName": {
"name": "allocate_memory",
"nodeType": "YulIdentifier",
"src": "156:15:1"
},
"nodeType": "YulFunctionCall",
"src": "156:81:1"
},
"variableNames": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "147:5:1"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "246:16:1",
"value": {
"name": "array",
"nodeType": "YulIdentifier",
"src": "257:5:1"
},
"variables": [
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "250:3:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "279:5:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "286:6:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "272:6:1"
},
"nodeType": "YulFunctionCall",
"src": "272:21:1"
},
"nodeType": "YulExpressionStatement",
"src": "272:21:1"
},
{
"nodeType": "YulAssignment",
"src": "302:23:1",
"value": {
"arguments": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "313:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "320:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "309:3:1"
},
"nodeType": "YulFunctionCall",
"src": "309:16:1"
},
"variableNames": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "302:3:1"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "335:17:1",
"value": {
"name": "offset",
"nodeType": "YulIdentifier",
"src": "346:6:1"
},
"variables": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "339:3:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "401:36:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "422:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "425:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "415:6:1"
},
"nodeType": "YulFunctionCall",
"src": "415:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "415:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "371:3:1"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "380:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "388:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "376:3:1"
},
"nodeType": "YulFunctionCall",
"src": "376:17:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "367:3:1"
},
"nodeType": "YulFunctionCall",
"src": "367:27:1"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "396:3:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "364:2:1"
},
"nodeType": "YulFunctionCall",
"src": "364:36:1"
},
"nodeType": "YulIf",
"src": "361:2:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "506:189:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "521:21:1",
"value": {
"name": "src",
"nodeType": "YulIdentifier",
"src": "539:3:1"
},
"variables": [
{
"name": "elementPos",
"nodeType": "YulTypedName",
"src": "525:10:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "563:3:1"
},
{
"arguments": [
{
"name": "elementPos",
"nodeType": "YulIdentifier",
"src": "600:10:1"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "612:3:1"
}
],
"functionName": {
"name": "abi_decode_t_bytes32_fromMemory",
"nodeType": "YulIdentifier",
"src": "568:31:1"
},
"nodeType": "YulFunctionCall",
"src": "568:48:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "556:6:1"
},
"nodeType": "YulFunctionCall",
"src": "556:61:1"
},
"nodeType": "YulExpressionStatement",
"src": "556:61:1"
},
{
"nodeType": "YulAssignment",
"src": "630:21:1",
"value": {
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "641:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "646:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "637:3:1"
},
"nodeType": "YulFunctionCall",
"src": "637:14:1"
},
"variableNames": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "630:3:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "664:21:1",
"value": {
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "675:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "680:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "671:3:1"
},
"nodeType": "YulFunctionCall",
"src": "671:14:1"
},
"variableNames": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "664:3:1"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "468:1:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "471:6:1"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "465:2:1"
},
"nodeType": "YulFunctionCall",
"src": "465:13:1"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "479:18:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "481:14:1",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "490:1:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "493:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "486:3:1"
},
"nodeType": "YulFunctionCall",
"src": "486:9:1"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "481:1:1"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "450:14:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "452:10:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "461:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "456:1:1",
"type": ""
}
]
}
]
},
"src": "446:249:1"
}
]
},
"name": "abi_decode_available_length_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "107:6:1",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "115:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "123:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nodeType": "YulTypedName",
"src": "131:5:1",
"type": ""
}
],
"src": "24:677:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "812:230:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "861:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "870:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "873:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "863:6:1"
},
"nodeType": "YulFunctionCall",
"src": "863:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "863:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "840:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "848:4:1",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "836:3:1"
},
"nodeType": "YulFunctionCall",
"src": "836:17:1"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "855:3:1"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "832:3:1"
},
"nodeType": "YulFunctionCall",
"src": "832:27:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "825:6:1"
},
"nodeType": "YulFunctionCall",
"src": "825:35:1"
},
"nodeType": "YulIf",
"src": "822:2:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "886:27:1",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "906:6:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "900:5:1"
},
"nodeType": "YulFunctionCall",
"src": "900:13:1"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "890:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "922:114:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1009:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1017:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1005:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1005:17:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1024:6:1"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "1032:3:1"
}
],
"functionName": {
"name": "abi_decode_available_length_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory",
"nodeType": "YulIdentifier",
"src": "931:73:1"
},
"nodeType": "YulFunctionCall",
"src": "931:105:1"
},
"variableNames": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "922:5:1"
}
]
}
]
},
"name": "abi_decode_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "790:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "798:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nodeType": "YulTypedName",
"src": "806:5:1",
"type": ""
}
],
"src": "724:318:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1111:80:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1121:22:1",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1136:6:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1130:5:1"
},
"nodeType": "YulFunctionCall",
"src": "1130:13:1"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1121:5:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1179:5:1"
}
],
"functionName": {
"name": "validator_revert_t_bytes32",
"nodeType": "YulIdentifier",
"src": "1152:26:1"
},
"nodeType": "YulFunctionCall",
"src": "1152:33:1"
},
"nodeType": "YulExpressionStatement",
"src": "1152:33:1"
}
]
},
"name": "abi_decode_t_bytes32_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1089:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "1097:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1105:5:1",
"type": ""
}
],
"src": "1048:143:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1299:318:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1345:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1354:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1357:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1347:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1347:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "1347:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1320:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1329:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1316:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1316:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1341:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "1312:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1312:32:1"
},
"nodeType": "YulIf",
"src": "1309:2:1"
},
{
"nodeType": "YulBlock",
"src": "1371:239:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1386:38:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1410:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1421:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1406:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1406:17:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1400:5:1"
},
"nodeType": "YulFunctionCall",
"src": "1400:24:1"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1390:6:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "1471:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1480:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1483:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1473:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1473:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "1473:12:1"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1443:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1451:18:1",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "1440:2:1"
},
"nodeType": "YulFunctionCall",
"src": "1440:30:1"
},
"nodeType": "YulIf",
"src": "1437:2:1"
},
{
"nodeType": "YulAssignment",
"src": "1501:99:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1572:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1583:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1568:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1568:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1592:7:1"
}
],
"functionName": {
"name": "abi_decode_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory",
"nodeType": "YulIdentifier",
"src": "1511:56:1"
},
"nodeType": "YulFunctionCall",
"src": "1511:89:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1501:6:1"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1269:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "1280:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1292:6:1",
"type": ""
}
],
"src": "1197:420:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1664:88:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1674:30:1",
"value": {
"arguments": [],
"functionName": {
"name": "allocate_unbounded",
"nodeType": "YulIdentifier",
"src": "1684:18:1"
},
"nodeType": "YulFunctionCall",
"src": "1684:20:1"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "1674:6:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "1733:6:1"
},
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "1741:4:1"
}
],
"functionName": {
"name": "finalize_allocation",
"nodeType": "YulIdentifier",
"src": "1713:19:1"
},
"nodeType": "YulFunctionCall",
"src": "1713:33:1"
},
"nodeType": "YulExpressionStatement",
"src": "1713:33:1"
}
]
},
"name": "allocate_memory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "size",
"nodeType": "YulTypedName",
"src": "1648:4:1",
"type": ""
}
],
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "1657:6:1",
"type": ""
}
],
"src": "1623:129:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1798:35:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1808:19:1",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1824:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1818:5:1"
},
"nodeType": "YulFunctionCall",
"src": "1818:9:1"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "1808:6:1"
}
]
}
]
},
"name": "allocate_unbounded",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "1791:6:1",
"type": ""
}
],
"src": "1758:75:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1921:229:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2026:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "2028:16:1"
},
"nodeType": "YulFunctionCall",
"src": "2028:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "2028:18:1"
}
]
},
"condition": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1998:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2006:18:1",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "1995:2:1"
},
"nodeType": "YulFunctionCall",
"src": "1995:30:1"
},
"nodeType": "YulIf",
"src": "1992:2:1"
},
{
"nodeType": "YulAssignment",
"src": "2058:25:1",
"value": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2070:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2078:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "2066:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2066:17:1"
},
"variableNames": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "2058:4:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "2120:23:1",
"value": {
"arguments": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "2132:4:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2138:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2128:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2128:15:1"
},
"variableNames": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "2120:4:1"
}
]
}
]
},
"name": "array_allocation_size_t_array$_t_bytes32_$dyn_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "1905:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "size",
"nodeType": "YulTypedName",
"src": "1916:4:1",
"type": ""
}
],
"src": "1839:311:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2201:32:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2211:16:1",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "2222:5:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "2211:7:1"
}
]
}
]
},
"name": "cleanup_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2183:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "2193:7:1",
"type": ""
}
],
"src": "2156:77:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2284:32:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2294:16:1",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "2305:5:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "2294:7:1"
}
]
}
]
},
"name": "cleanup_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2266:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "2276:7:1",
"type": ""
}
],
"src": "2239:77:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2365:238:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2375:58:1",
"value": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "2397:6:1"
},
{
"arguments": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "2427:4:1"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nodeType": "YulIdentifier",
"src": "2405:21:1"
},
"nodeType": "YulFunctionCall",
"src": "2405:27:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2393:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2393:40:1"
},
"variables": [
{
"name": "newFreePtr",
"nodeType": "YulTypedName",
"src": "2379:10:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "2544:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "2546:16:1"
},
"nodeType": "YulFunctionCall",
"src": "2546:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "2546:18:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "2487:10:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2499:18:1",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "2484:2:1"
},
"nodeType": "YulFunctionCall",
"src": "2484:34:1"
},
{
"arguments": [
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "2523:10:1"
},
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "2535:6:1"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "2520:2:1"
},
"nodeType": "YulFunctionCall",
"src": "2520:22:1"
}
],
"functionName": {
"name": "or",
"nodeType": "YulIdentifier",
"src": "2481:2:1"
},
"nodeType": "YulFunctionCall",
"src": "2481:62:1"
},
"nodeType": "YulIf",
"src": "2478:2:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2582:2:1",
"type": "",
"value": "64"
},
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "2586:10:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2575:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2575:22:1"
},
"nodeType": "YulExpressionStatement",
"src": "2575:22:1"
}
]
},
"name": "finalize_allocation",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "2351:6:1",
"type": ""
},
{
"name": "size",
"nodeType": "YulTypedName",
"src": "2359:4:1",
"type": ""
}
],
"src": "2322:281:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2652:190:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2662:33:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2689:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "2671:17:1"
},
"nodeType": "YulFunctionCall",
"src": "2671:24:1"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2662:5:1"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "2785:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "2787:16:1"
},
"nodeType": "YulFunctionCall",
"src": "2787:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "2787:18:1"
}
]
},
"condition": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2710:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2717:66:1",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "2707:2:1"
},
"nodeType": "YulFunctionCall",
"src": "2707:77:1"
},
"nodeType": "YulIf",
"src": "2704:2:1"
},
{
"nodeType": "YulAssignment",
"src": "2816:20:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2827:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2834:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2823:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2823:13:1"
},
"variableNames": [
{
"name": "ret",
"nodeType": "YulIdentifier",
"src": "2816:3:1"
}
]
}
]
},
"name": "increment_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2638:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "ret",
"nodeType": "YulTypedName",
"src": "2648:3:1",
"type": ""
}
],
"src": "2609:233:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2876:152:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2893:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2896:77:1",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2886:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2886:88:1"
},
"nodeType": "YulExpressionStatement",
"src": "2886:88:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2990:1:1",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2993:4:1",
"type": "",
"value": "0x11"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2983:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2983:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "2983:15:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3014:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3017:4:1",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "3007:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3007:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "3007:15:1"
}
]
},
"name": "panic_error_0x11",
"nodeType": "YulFunctionDefinition",
"src": "2848:180:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3062:152:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3079:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3082:77:1",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3072:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3072:88:1"
},
"nodeType": "YulExpressionStatement",
"src": "3072:88:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3176:1:1",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3179:4:1",
"type": "",
"value": "0x41"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3169:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3169:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "3169:15:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3200:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3203:4:1",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "3193:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3193:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "3193:15:1"
}
]
},
"name": "panic_error_0x41",
"nodeType": "YulFunctionDefinition",
"src": "3034:180:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3268:54:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3278:38:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3296:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3303:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3292:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3292:14:1"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3312:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "3308:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3308:7:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "3288:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3288:28:1"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "3278:6:1"
}
]
}
]
},
"name": "round_up_to_mul_of_32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3251:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nodeType": "YulTypedName",
"src": "3261:6:1",
"type": ""
}
],
"src": "3220:102:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3371:79:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "3428:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3437:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3440:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "3430:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3430:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "3430:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3394:5:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3419:5:1"
}
],
"functionName": {
"name": "cleanup_t_bytes32",
"nodeType": "YulIdentifier",
"src": "3401:17:1"
},
"nodeType": "YulFunctionCall",
"src": "3401:24:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "3391:2:1"
},
"nodeType": "YulFunctionCall",
"src": "3391:35:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "3384:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3384:43:1"
},
"nodeType": "YulIf",
"src": "3381:2:1"
}
]
},
"name": "validator_revert_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3364:5:1",
"type": ""
}
],
"src": "3328:122:1"
}
]
},
"contents": "{\n\n // bytes32[]\n function abi_decode_available_length_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_bytes32_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let src := offset\n if gt(add(src, mul(length, 0x20)), end) {\n revert(0, 0)\n }\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_bytes32_fromMemory(elementPos, end))\n dst := add(dst, 0x20)\n src := add(src, 0x20)\n }\n }\n\n // bytes32[]\n function abi_decode_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let length := mload(offset)\n array := abi_decode_available_length_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory(add(offset, 0x20), length, end)\n }\n\n function abi_decode_t_bytes32_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_bytes32(value)\n }\n\n function abi_decode_tuple_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n\n {\n\n let offset := mload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n\n value0 := abi_decode_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function array_allocation_size_t_array$_t_bytes32_$dyn_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function increment_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function validator_revert_t_bytes32(value) {\n if iszero(eq(value, cleanup_t_bytes32(value))) { revert(0, 0) }\n }\n\n}\n",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"linkReferences": {},
"object": "60806040523480156200001157600080fd5b50604051620014b7380380620014b783398181016040528101906200003791906200025b565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555060005b81518110156200019a576002604051806040016040528084848151811062000133577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151815260200160008152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550508080620001919062000342565b915050620000e2565b505062000419565b6000620001b9620001b384620002c9565b620002a0565b90508083825260208201905082856020860282011115620001d957600080fd5b60005b858110156200020d5781620001f2888262000244565b845260208401935060208301925050600181019050620001dc565b5050509392505050565b600082601f8301126200022957600080fd5b81516200023b848260208601620001a2565b91505092915050565b6000815190506200025581620003ff565b92915050565b6000602082840312156200026e57600080fd5b600082015167ffffffffffffffff8111156200028957600080fd5b620002978482850162000217565b91505092915050565b6000620002ac620002bf565b9050620002ba82826200030c565b919050565b6000604051905090565b600067ffffffffffffffff821115620002e757620002e6620003bf565b5b602082029050602081019050919050565b6000819050919050565b6000819050919050565b6200031782620003ee565b810181811067ffffffffffffffff82111715620003395762000338620003bf565b5b80604052505050565b60006200034f8262000302565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141562000385576200038462000390565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6200040a81620002f8565b81146200041657600080fd5b50565b61108e80620004296000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063609ff1bd1161005b578063609ff1bd146101145780639e7b8d6114610132578063a3ec138d1461014e578063e2ba53f01461018157610088565b80630121b93f1461008d578063013cf08b146100a95780632e4176cf146100da5780635c19a95c146100f8575b600080fd5b6100a760048036038101906100a29190610abb565b61019f565b005b6100c360048036038101906100be9190610abb565b61030c565b6040516100d1929190610c4b565b60405180910390f35b6100e2610340565b6040516100ef9190610c15565b60405180910390f35b610112600480360381019061010d9190610a92565b610364565b005b61011c610726565b6040516101299190610d54565b60405180910390f35b61014c60048036038101906101479190610a92565b6107fa565b005b61016860048036038101906101639190610a92565b6109b1565b6040516101789493929190610d6f565b60405180910390f35b610189610a0e565b6040516101969190610c30565b60405180910390f35b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160000154141561022a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161022190610c74565b60405180910390fd5b8060010160009054906101000a900460ff161561027c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027390610c94565b60405180910390fd5b60018160010160006101000a81548160ff0219169083151502179055508181600201819055508060000154600283815481106102e1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020906002020160010160008282546103019190610dc5565b925050819055505050565b6002818154811061031c57600080fd5b90600052602060002090600202016000915090508060000154908060010154905082565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060010160009054906101000a900460ff16156103f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103f090610cb4565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610468576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045f90610d34565b60405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105d857600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156105d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ca90610cf4565b60405180910390fd5b610469565b60018160010160006101000a81548160ff021916908315150217905550818160010160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060010160009054906101000a900460ff161561070157816000015460028260020154815481106106d5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020906002020160010160008282546106f59190610dc5565b92505081905550610721565b81600001548160000160008282546107199190610dc5565b925050819055505b505050565b6000806000905060005b6002805490508110156107f5578160028281548110610778577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600202016001015411156107e257600281815481106107ca577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600202016001015491508092505b80806107ed90610e6d565b915050610730565b505090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610888576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087f90610cd4565b60405180910390fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900460ff1615610918576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090f90610d14565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541461096757600080fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555050565b60016020528060005260406000206000915090508060000154908060010160009054906101000a900460ff16908060010160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154905084565b60006002610a1a610726565b81548110610a51577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020906002020160000154905090565b600081359050610a778161102a565b92915050565b600081359050610a8c81611041565b92915050565b600060208284031215610aa457600080fd5b6000610ab284828501610a68565b91505092915050565b600060208284031215610acd57600080fd5b6000610adb84828501610a7d565b91505092915050565b610aed81610e1b565b82525050565b610afc81610e2d565b82525050565b610b0b81610e39565b82525050565b6000610b1e601483610db4565b9150610b2982610ee5565b602082019050919050565b6000610b41600e83610db4565b9150610b4c82610f0e565b602082019050919050565b6000610b64601283610db4565b9150610b6f82610f37565b602082019050919050565b6000610b87602883610db4565b9150610b9282610f60565b604082019050919050565b6000610baa601983610db4565b9150610bb582610faf565b602082019050919050565b6000610bcd601883610db4565b9150610bd882610fd8565b602082019050919050565b6000610bf0601e83610db4565b9150610bfb82611001565b602082019050919050565b610c0f81610e63565b82525050565b6000602082019050610c2a6000830184610ae4565b92915050565b6000602082019050610c456000830184610b02565b92915050565b6000604082019050610c606000830185610b02565b610c6d6020830184610c06565b9392505050565b60006020820190508181036000830152610c8d81610b11565b9050919050565b60006020820190508181036000830152610cad81610b34565b9050919050565b60006020820190508181036000830152610ccd81610b57565b9050919050565b60006020820190508181036000830152610ced81610b7a565b9050919050565b60006020820190508181036000830152610d0d81610b9d565b9050919050565b60006020820190508181036000830152610d2d81610bc0565b9050919050565b60006020820190508181036000830152610d4d81610be3565b9050919050565b6000602082019050610d696000830184610c06565b92915050565b6000608082019050610d846000830187610c06565b610d916020830186610af3565b610d9e6040830185610ae4565b610dab6060830184610c06565b95945050505050565b600082825260208201905092915050565b6000610dd082610e63565b9150610ddb83610e63565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610e1057610e0f610eb6565b5b828201905092915050565b6000610e2682610e43565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610e7882610e63565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610eab57610eaa610eb6565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f486173206e6f20726967687420746f20766f7465000000000000000000000000600082015250565b7f416c726561647920766f7465642e000000000000000000000000000000000000600082015250565b7f596f7520616c726561647920766f7465642e0000000000000000000000000000600082015250565b7f4f6e6c79206368616972706572736f6e2063616e20676976652072696768742060008201527f746f20766f74652e000000000000000000000000000000000000000000000000602082015250565b7f466f756e64206c6f6f7020696e2064656c65676174696f6e2e00000000000000600082015250565b7f54686520766f74657220616c726561647920766f7465642e0000000000000000600082015250565b7f53656c662d64656c65676174696f6e20697320646973616c6c6f7765642e0000600082015250565b61103381610e1b565b811461103e57600080fd5b50565b61104a81610e63565b811461105557600080fd5b5056fea264697066735822122052b673a01a0028911a57ca3a1d176f852a2664391436d4b17f127f98f1623dad64736f6c63430008040033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x14B7 CODESIZE SUB DUP1 PUSH3 0x14B7 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH3 0x37 SWAP2 SWAP1 PUSH3 0x25B JUMP JUMPDEST CALLER PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x1 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH3 0x19A JUMPI PUSH1 0x2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH3 0x133 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE POP POP DUP1 DUP1 PUSH3 0x191 SWAP1 PUSH3 0x342 JUMP JUMPDEST SWAP2 POP POP PUSH3 0xE2 JUMP JUMPDEST POP POP PUSH3 0x419 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1B9 PUSH3 0x1B3 DUP5 PUSH3 0x2C9 JUMP JUMPDEST PUSH3 0x2A0 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP DUP3 DUP6 PUSH1 0x20 DUP7 MUL DUP3 ADD GT ISZERO PUSH3 0x1D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH3 0x20D JUMPI DUP2 PUSH3 0x1F2 DUP9 DUP3 PUSH3 0x244 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP4 ADD SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH3 0x1DC JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x23B DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH3 0x1A2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH3 0x255 DUP2 PUSH3 0x3FF JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x26E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x289 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x297 DUP5 DUP3 DUP6 ADD PUSH3 0x217 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x2AC PUSH3 0x2BF JUMP JUMPDEST SWAP1 POP PUSH3 0x2BA DUP3 DUP3 PUSH3 0x30C JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH3 0x2E7 JUMPI PUSH3 0x2E6 PUSH3 0x3BF JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x317 DUP3 PUSH3 0x3EE JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH3 0x339 JUMPI PUSH3 0x338 PUSH3 0x3BF JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x34F DUP3 PUSH3 0x302 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH3 0x385 JUMPI PUSH3 0x384 PUSH3 0x390 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x40A DUP2 PUSH3 0x2F8 JUMP JUMPDEST DUP2 EQ PUSH3 0x416 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x108E DUP1 PUSH3 0x429 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 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x609FF1BD GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x609FF1BD EQ PUSH2 0x114 JUMPI DUP1 PUSH4 0x9E7B8D61 EQ PUSH2 0x132 JUMPI DUP1 PUSH4 0xA3EC138D EQ PUSH2 0x14E JUMPI DUP1 PUSH4 0xE2BA53F0 EQ PUSH2 0x181 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x121B93F EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x13CF08B EQ PUSH2 0xA9 JUMPI DUP1 PUSH4 0x2E4176CF EQ PUSH2 0xDA JUMPI DUP1 PUSH4 0x5C19A95C EQ PUSH2 0xF8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xA2 SWAP2 SWAP1 PUSH2 0xABB JUMP JUMPDEST PUSH2 0x19F JUMP JUMPDEST STOP JUMPDEST PUSH2 0xC3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xBE SWAP2 SWAP1 PUSH2 0xABB JUMP JUMPDEST PUSH2 0x30C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD1 SWAP3 SWAP2 SWAP1 PUSH2 0xC4B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xE2 PUSH2 0x340 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xEF SWAP2 SWAP1 PUSH2 0xC15 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x112 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x10D SWAP2 SWAP1 PUSH2 0xA92 JUMP JUMPDEST PUSH2 0x364 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11C PUSH2 0x726 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x129 SWAP2 SWAP1 PUSH2 0xD54 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x14C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x147 SWAP2 SWAP1 PUSH2 0xA92 JUMP JUMPDEST PUSH2 0x7FA JUMP JUMPDEST STOP JUMPDEST PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x163 SWAP2 SWAP1 PUSH2 0xA92 JUMP JUMPDEST PUSH2 0x9B1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x178 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xD6F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x189 PUSH2 0xA0E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x196 SWAP2 SWAP1 PUSH2 0xC30 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x0 ADD SLOAD EQ ISZERO PUSH2 0x22A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x221 SWAP1 PUSH2 0xC74 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x27C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x273 SWAP1 PUSH2 0xC94 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP2 DUP2 PUSH1 0x2 ADD DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x0 ADD SLOAD PUSH1 0x2 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x2E1 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x301 SWAP2 SWAP1 PUSH2 0xDC5 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x31C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 SWAP2 POP SWAP1 POP DUP1 PUSH1 0x0 ADD SLOAD SWAP1 DUP1 PUSH1 0x1 ADD SLOAD SWAP1 POP DUP3 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP DUP1 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x3F9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3F0 SWAP1 PUSH2 0xCB4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x468 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x45F SWAP1 PUSH2 0xD34 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x5D8 JUMPI PUSH1 0x1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x5D3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CA SWAP1 PUSH2 0xCF4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x469 JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP2 DUP2 PUSH1 0x1 ADD PUSH1 0x1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP DUP1 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x701 JUMPI DUP2 PUSH1 0x0 ADD SLOAD PUSH1 0x2 DUP3 PUSH1 0x2 ADD SLOAD DUP2 SLOAD DUP2 LT PUSH2 0x6D5 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x6F5 SWAP2 SWAP1 PUSH2 0xDC5 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0x721 JUMP JUMPDEST DUP2 PUSH1 0x0 ADD SLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x719 SWAP2 SWAP1 PUSH2 0xDC5 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 POP PUSH1 0x0 JUMPDEST PUSH1 0x2 DUP1 SLOAD SWAP1 POP DUP2 LT ISZERO PUSH2 0x7F5 JUMPI DUP2 PUSH1 0x2 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x778 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD SLOAD GT ISZERO PUSH2 0x7E2 JUMPI PUSH1 0x2 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x7CA JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD SLOAD SWAP2 POP DUP1 SWAP3 POP JUMPDEST DUP1 DUP1 PUSH2 0x7ED SWAP1 PUSH2 0xE6D JUMP JUMPDEST SWAP2 POP POP PUSH2 0x730 JUMP JUMPDEST POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x888 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x87F SWAP1 PUSH2 0xCD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x918 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x90F SWAP1 PUSH2 0xD14 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD SLOAD EQ PUSH2 0x967 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP DUP1 PUSH1 0x0 ADD SLOAD SWAP1 DUP1 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 DUP1 PUSH1 0x1 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP1 PUSH1 0x2 ADD SLOAD SWAP1 POP DUP5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 PUSH2 0xA1A PUSH2 0x726 JUMP JUMPDEST DUP2 SLOAD DUP2 LT PUSH2 0xA51 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 ADD SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xA77 DUP2 PUSH2 0x102A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xA8C DUP2 PUSH2 0x1041 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xAB2 DUP5 DUP3 DUP6 ADD PUSH2 0xA68 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xACD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xADB DUP5 DUP3 DUP6 ADD PUSH2 0xA7D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xAED DUP2 PUSH2 0xE1B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xAFC DUP2 PUSH2 0xE2D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xB0B DUP2 PUSH2 0xE39 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB1E PUSH1 0x14 DUP4 PUSH2 0xDB4 JUMP JUMPDEST SWAP2 POP PUSH2 0xB29 DUP3 PUSH2 0xEE5 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB41 PUSH1 0xE DUP4 PUSH2 0xDB4 JUMP JUMPDEST SWAP2 POP PUSH2 0xB4C DUP3 PUSH2 0xF0E JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB64 PUSH1 0x12 DUP4 PUSH2 0xDB4 JUMP JUMPDEST SWAP2 POP PUSH2 0xB6F DUP3 PUSH2 0xF37 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB87 PUSH1 0x28 DUP4 PUSH2 0xDB4 JUMP JUMPDEST SWAP2 POP PUSH2 0xB92 DUP3 PUSH2 0xF60 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBAA PUSH1 0x19 DUP4 PUSH2 0xDB4 JUMP JUMPDEST SWAP2 POP PUSH2 0xBB5 DUP3 PUSH2 0xFAF JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBCD PUSH1 0x18 DUP4 PUSH2 0xDB4 JUMP JUMPDEST SWAP2 POP PUSH2 0xBD8 DUP3 PUSH2 0xFD8 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBF0 PUSH1 0x1E DUP4 PUSH2 0xDB4 JUMP JUMPDEST SWAP2 POP PUSH2 0xBFB DUP3 PUSH2 0x1001 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xC0F DUP2 PUSH2 0xE63 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xC2A PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xAE4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xC45 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xB02 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xC60 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0xB02 JUMP JUMPDEST PUSH2 0xC6D PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xC06 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xC8D DUP2 PUSH2 0xB11 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xCAD DUP2 PUSH2 0xB34 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xCCD DUP2 PUSH2 0xB57 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xCED DUP2 PUSH2 0xB7A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xD0D DUP2 PUSH2 0xB9D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xD2D DUP2 PUSH2 0xBC0 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xD4D DUP2 PUSH2 0xBE3 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xD69 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xC06 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0xD84 PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0xC06 JUMP JUMPDEST PUSH2 0xD91 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0xAF3 JUMP JUMPDEST PUSH2 0xD9E PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0xAE4 JUMP JUMPDEST PUSH2 0xDAB PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0xC06 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDD0 DUP3 PUSH2 0xE63 JUMP JUMPDEST SWAP2 POP PUSH2 0xDDB DUP4 PUSH2 0xE63 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0xE10 JUMPI PUSH2 0xE0F PUSH2 0xEB6 JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE26 DUP3 PUSH2 0xE43 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE78 DUP3 PUSH2 0xE63 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0xEAB JUMPI PUSH2 0xEAA PUSH2 0xEB6 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x486173206E6F20726967687420746F20766F7465000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x416C726561647920766F7465642E000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x596F7520616C726561647920766F7465642E0000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x4F6E6C79206368616972706572736F6E2063616E206769766520726967687420 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x746F20766F74652E000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x466F756E64206C6F6F7020696E2064656C65676174696F6E2E00000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x54686520766F74657220616C726561647920766F7465642E0000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x53656C662D64656C65676174696F6E20697320646973616C6C6F7765642E0000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH2 0x1033 DUP2 PUSH2 0xE1B JUMP JUMPDEST DUP2 EQ PUSH2 0x103E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x104A DUP2 PUSH2 0xE63 JUMP JUMPDEST DUP2 EQ PUSH2 0x1055 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MSTORE 0xB6 PUSH20 0xA01A0028911A57CA3A1D176F852A2664391436D4 0xB1 PUSH32 0x127F98F1623DAD64736F6C634300080400330000000000000000000000000000 ",
"sourceMap": "157:4362:0:-:0;;;958:481;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1026:10;1012:11;;:24;;;;;;;;;;;;;;;;;;1075:1;1046:6;:19;1053:11;;;;;;;;;;;1046:19;;;;;;;;;;;;;;;:26;;:30;;;;1092:6;1087:346;1108:13;:20;1104:1;:24;1087:346;;;1312:9;1327:94;;;;;;;;1360:13;1374:1;1360:16;;;;;;;;;;;;;;;;;;;;;;1327:94;;;;1405:1;1327:94;;;1312:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1130:3;;;;;:::i;:::-;;;;1087:346;;;;958:481;157:4362;;24:677:1;131:5;156:81;172:64;229:6;172:64;:::i;:::-;156:81;:::i;:::-;147:90;;257:5;286:6;279:5;272:21;320:4;313:5;309:16;302:23;;346:6;396:3;388:4;380:6;376:17;371:3;367:27;364:36;361:2;;;425:1;422;415:12;361:2;461:1;446:249;471:6;468:1;465:13;446:249;;;539:3;568:48;612:3;600:10;568:48;:::i;:::-;563:3;556:61;646:4;641:3;637:14;630:21;;680:4;675:3;671:14;664:21;;506:189;493:1;490;486:9;481:14;;446:249;;;450:14;137:564;;;;;;;:::o;724:318::-;806:5;855:3;848:4;840:6;836:17;832:27;822:2;;873:1;870;863:12;822:2;906:6;900:13;931:105;1032:3;1024:6;1017:4;1009:6;1005:17;931:105;:::i;:::-;922:114;;812:230;;;;;:::o;1048:143::-;1105:5;1136:6;1130:13;1121:22;;1152:33;1179:5;1152:33;:::i;:::-;1111:80;;;;:::o;1197:420::-;1292:6;1341:2;1329:9;1320:7;1316:23;1312:32;1309:2;;;1357:1;1354;1347:12;1309:2;1421:1;1410:9;1406:17;1400:24;1451:18;1443:6;1440:30;1437:2;;;1483:1;1480;1473:12;1437:2;1511:89;1592:7;1583:6;1572:9;1568:22;1511:89;:::i;:::-;1501:99;;1371:239;1299:318;;;;:::o;1623:129::-;1657:6;1684:20;;:::i;:::-;1674:30;;1713:33;1741:4;1733:6;1713:33;:::i;:::-;1664:88;;;:::o;1758:75::-;1791:6;1824:2;1818:9;1808:19;;1798:35;:::o;1839:311::-;1916:4;2006:18;1998:6;1995:30;1992:2;;;2028:18;;:::i;:::-;1992:2;2078:4;2070:6;2066:17;2058:25;;2138:4;2132;2128:15;2120:23;;1921:229;;;:::o;2156:77::-;2193:7;2222:5;2211:16;;2201:32;;;:::o;2239:77::-;2276:7;2305:5;2294:16;;2284:32;;;:::o;2322:281::-;2405:27;2427:4;2405:27;:::i;:::-;2397:6;2393:40;2535:6;2523:10;2520:22;2499:18;2487:10;2484:34;2481:62;2478:2;;;2546:18;;:::i;:::-;2478:2;2586:10;2582:2;2575:22;2365:238;;;:::o;2609:233::-;2648:3;2671:24;2689:5;2671:24;:::i;:::-;2662:33;;2717:66;2710:5;2707:77;2704:2;;;2787:18;;:::i;:::-;2704:2;2834:1;2827:5;2823:13;2816:20;;2652:190;;;:::o;2848:180::-;2896:77;2893:1;2886:88;2993:4;2990:1;2983:15;3017:4;3014:1;3007:15;3034:180;3082:77;3079:1;3072:88;3179:4;3176:1;3169:15;3203:4;3200:1;3193:15;3220:102;3261:6;3312:2;3308:7;3303:2;3296:5;3292:14;3288:28;3278:38;;3268:54;;;:::o;3328:122::-;3401:24;3419:5;3401:24;:::i;:::-;3394:5;3391:35;3381:2;;3440:1;3437;3430:12;3381:2;3371:79;:::o;157:4362:0:-;;;;;;;"
},
"deployedBytecode": {
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:11428:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "59:87:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "69:29:1",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "91:6:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "78:12:1"
},
"nodeType": "YulFunctionCall",
"src": "78:20:1"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "69:5:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "134:5:1"
}
],
"functionName": {
"name": "validator_revert_t_address",
"nodeType": "YulIdentifier",
"src": "107:26:1"
},
"nodeType": "YulFunctionCall",
"src": "107:33:1"
},
"nodeType": "YulExpressionStatement",
"src": "107:33:1"
}
]
},
"name": "abi_decode_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "37:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "45:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "53:5:1",
"type": ""
}
],
"src": "7:139:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "204:87:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "214:29:1",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "236:6:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "223:12:1"
},
"nodeType": "YulFunctionCall",
"src": "223:20:1"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "214:5:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "279:5:1"
}
],
"functionName": {
"name": "validator_revert_t_uint256",
"nodeType": "YulIdentifier",
"src": "252:26:1"
},
"nodeType": "YulFunctionCall",
"src": "252:33:1"
},
"nodeType": "YulExpressionStatement",
"src": "252:33:1"
}
]
},
"name": "abi_decode_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "182:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "190:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "198:5:1",
"type": ""
}
],
"src": "152:139:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "363:196:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "409:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "418:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "421:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "411:6:1"
},
"nodeType": "YulFunctionCall",
"src": "411:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "411:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "384:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "393:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "380:3:1"
},
"nodeType": "YulFunctionCall",
"src": "380:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "405:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "376:3:1"
},
"nodeType": "YulFunctionCall",
"src": "376:32:1"
},
"nodeType": "YulIf",
"src": "373:2:1"
},
{
"nodeType": "YulBlock",
"src": "435:117:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "450:15:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "464:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "454:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "479:63:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "514:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "525:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "510:3:1"
},
"nodeType": "YulFunctionCall",
"src": "510:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "534:7:1"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nodeType": "YulIdentifier",
"src": "489:20:1"
},
"nodeType": "YulFunctionCall",
"src": "489:53:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "479:6:1"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "333:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "344:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "356:6:1",
"type": ""
}
],
"src": "297:262:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "631:196:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "677:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "686:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "689:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "679:6:1"
},
"nodeType": "YulFunctionCall",
"src": "679:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "679:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "652:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "661:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "648:3:1"
},
"nodeType": "YulFunctionCall",
"src": "648:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "673:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "644:3:1"
},
"nodeType": "YulFunctionCall",
"src": "644:32:1"
},
"nodeType": "YulIf",
"src": "641:2:1"
},
{
"nodeType": "YulBlock",
"src": "703:117:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "718:15:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "732:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "722:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "747:63:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "782:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "793:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "778:3:1"
},
"nodeType": "YulFunctionCall",
"src": "778:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "802:7:1"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "757:20:1"
},
"nodeType": "YulFunctionCall",
"src": "757:53:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "747:6:1"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "601:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "612:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "624:6:1",
"type": ""
}
],
"src": "565:262:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "898:53:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "915:3:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "938:5:1"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "920:17:1"
},
"nodeType": "YulFunctionCall",
"src": "920:24:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "908:6:1"
},
"nodeType": "YulFunctionCall",
"src": "908:37:1"
},
"nodeType": "YulExpressionStatement",
"src": "908:37:1"
}
]
},
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "886:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "893:3:1",
"type": ""
}
],
"src": "833:118:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1016:50:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1033:3:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1053:5:1"
}
],
"functionName": {
"name": "cleanup_t_bool",
"nodeType": "YulIdentifier",
"src": "1038:14:1"
},
"nodeType": "YulFunctionCall",
"src": "1038:21:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1026:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1026:34:1"
},
"nodeType": "YulExpressionStatement",
"src": "1026:34:1"
}
]
},
"name": "abi_encode_t_bool_to_t_bool_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1004:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "1011:3:1",
"type": ""
}
],
"src": "957:109:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1137:53:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1154:3:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1177:5:1"
}
],
"functionName": {
"name": "cleanup_t_bytes32",
"nodeType": "YulIdentifier",
"src": "1159:17:1"
},
"nodeType": "YulFunctionCall",
"src": "1159:24:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1147:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1147:37:1"
},
"nodeType": "YulExpressionStatement",
"src": "1147:37:1"
}
]
},
"name": "abi_encode_t_bytes32_to_t_bytes32_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1125:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "1132:3:1",
"type": ""
}
],
"src": "1072:118:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1342:220:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1352:74:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1418:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1423:2:1",
"type": "",
"value": "20"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "1359:58:1"
},
"nodeType": "YulFunctionCall",
"src": "1359:67:1"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1352:3:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1524:3:1"
}
],
"functionName": {
"name": "store_literal_in_memory_0dc527e8fa9b76c996eb5eda9ddb749b21540f5509781b94e1e37f7027e7f50e",
"nodeType": "YulIdentifier",
"src": "1435:88:1"
},
"nodeType": "YulFunctionCall",
"src": "1435:93:1"
},
"nodeType": "YulExpressionStatement",
"src": "1435:93:1"
},
{
"nodeType": "YulAssignment",
"src": "1537:19:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1548:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1553:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1544:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1544:12:1"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "1537:3:1"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_0dc527e8fa9b76c996eb5eda9ddb749b21540f5509781b94e1e37f7027e7f50e_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "1330:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "1338:3:1",
"type": ""
}
],
"src": "1196:366:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1714:220:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1724:74:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1790:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1795:2:1",
"type": "",
"value": "14"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "1731:58:1"
},
"nodeType": "YulFunctionCall",
"src": "1731:67:1"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1724:3:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1896:3:1"
}
],
"functionName": {
"name": "store_literal_in_memory_56aab92b7164a4ea72a098d2d95a5e763b71d07f265e8d46fc7240404017fa84",
"nodeType": "YulIdentifier",
"src": "1807:88:1"
},
"nodeType": "YulFunctionCall",
"src": "1807:93:1"
},
"nodeType": "YulExpressionStatement",
"src": "1807:93:1"
},
{
"nodeType": "YulAssignment",
"src": "1909:19:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1920:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1925:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1916:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1916:12:1"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "1909:3:1"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_56aab92b7164a4ea72a098d2d95a5e763b71d07f265e8d46fc7240404017fa84_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "1702:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "1710:3:1",
"type": ""
}
],
"src": "1568:366:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2086:220:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2096:74:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2162:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2167:2:1",
"type": "",
"value": "18"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "2103:58:1"
},
"nodeType": "YulFunctionCall",
"src": "2103:67:1"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2096:3:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2268:3:1"
}
],
"functionName": {
"name": "store_literal_in_memory_657c6119c4ed567c60278fba62242b17c2fedf38962e651040dabfb3c9e15a5f",
"nodeType": "YulIdentifier",
"src": "2179:88:1"
},
"nodeType": "YulFunctionCall",
"src": "2179:93:1"
},
"nodeType": "YulExpressionStatement",
"src": "2179:93:1"
},
{
"nodeType": "YulAssignment",
"src": "2281:19:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2292:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2297:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2288:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2288:12:1"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "2281:3:1"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_657c6119c4ed567c60278fba62242b17c2fedf38962e651040dabfb3c9e15a5f_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "2074:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "2082:3:1",
"type": ""
}
],
"src": "1940:366:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2458:220:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2468:74:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2534:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2539:2:1",
"type": "",
"value": "40"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "2475:58:1"
},
"nodeType": "YulFunctionCall",
"src": "2475:67:1"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2468:3:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2640:3:1"
}
],
"functionName": {
"name": "store_literal_in_memory_80126ce3251ab2b6e4ade14fe5b2bc11f593510cbe9e3550c09bff1989e33b95",
"nodeType": "YulIdentifier",
"src": "2551:88:1"
},
"nodeType": "YulFunctionCall",
"src": "2551:93:1"
},
"nodeType": "YulExpressionStatement",
"src": "2551:93:1"
},
{
"nodeType": "YulAssignment",
"src": "2653:19:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2664:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2669:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2660:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2660:12:1"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "2653:3:1"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_80126ce3251ab2b6e4ade14fe5b2bc11f593510cbe9e3550c09bff1989e33b95_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "2446:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "2454:3:1",
"type": ""
}
],
"src": "2312:366:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2830:220:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2840:74:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2906:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2911:2:1",
"type": "",
"value": "25"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "2847:58:1"
},
"nodeType": "YulFunctionCall",
"src": "2847:67:1"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2840:3:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3012:3:1"
}
],
"functionName": {
"name": "store_literal_in_memory_8bd75322489f7ff7ab0b18506f4dcde935a32eca2a506b00f4d21b0becfa093c",
"nodeType": "YulIdentifier",
"src": "2923:88:1"
},
"nodeType": "YulFunctionCall",
"src": "2923:93:1"
},
"nodeType": "YulExpressionStatement",
"src": "2923:93:1"
},
{
"nodeType": "YulAssignment",
"src": "3025:19:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3036:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3041:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3032:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3032:12:1"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "3025:3:1"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_8bd75322489f7ff7ab0b18506f4dcde935a32eca2a506b00f4d21b0becfa093c_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "2818:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "2826:3:1",
"type": ""
}
],
"src": "2684:366:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3202:220:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3212:74:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3278:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3283:2:1",
"type": "",
"value": "24"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "3219:58:1"
},
"nodeType": "YulFunctionCall",
"src": "3219:67:1"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3212:3:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3384:3:1"
}
],
"functionName": {
"name": "store_literal_in_memory_d39b1db28626750c546703ffb72f30ea3facdfed1bebd47408e22ef18a76ba2d",
"nodeType": "YulIdentifier",
"src": "3295:88:1"
},
"nodeType": "YulFunctionCall",
"src": "3295:93:1"
},
"nodeType": "YulExpressionStatement",
"src": "3295:93:1"
},
{
"nodeType": "YulAssignment",
"src": "3397:19:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3408:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3413:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3404:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3404:12:1"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "3397:3:1"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_d39b1db28626750c546703ffb72f30ea3facdfed1bebd47408e22ef18a76ba2d_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "3190:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "3198:3:1",
"type": ""
}
],
"src": "3056:366:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3574:220:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3584:74:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3650:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3655:2:1",
"type": "",
"value": "30"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "3591:58:1"
},
"nodeType": "YulFunctionCall",
"src": "3591:67:1"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3584:3:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3756:3:1"
}
],
"functionName": {
"name": "store_literal_in_memory_f37bf1aca80f8fa291a40f639db6aeaa1425ceb0e8c61c8648f0e2efa282a947",
"nodeType": "YulIdentifier",
"src": "3667:88:1"
},
"nodeType": "YulFunctionCall",
"src": "3667:93:1"
},
"nodeType": "YulExpressionStatement",
"src": "3667:93:1"
},
{
"nodeType": "YulAssignment",
"src": "3769:19:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3780:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3785:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3776:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3776:12:1"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "3769:3:1"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_f37bf1aca80f8fa291a40f639db6aeaa1425ceb0e8c61c8648f0e2efa282a947_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "3562:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "3570:3:1",
"type": ""
}
],
"src": "3428:366:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3865:53:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3882:3:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3905:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "3887:17:1"
},
"nodeType": "YulFunctionCall",
"src": "3887:24:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3875:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3875:37:1"
},
"nodeType": "YulExpressionStatement",
"src": "3875:37:1"
}
]
},
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3853:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "3860:3:1",
"type": ""
}
],
"src": "3800:118:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4022:124:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4032:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4044:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4055:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4040:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4040:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "4032:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "4112:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4125:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4136:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4121:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4121:17:1"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "4068:43:1"
},
"nodeType": "YulFunctionCall",
"src": "4068:71:1"
},
"nodeType": "YulExpressionStatement",
"src": "4068:71:1"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "3994:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "4006:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "4017:4:1",
"type": ""
}
],
"src": "3924:222:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4250:124:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4260:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4272:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4283:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4268:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4268:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "4260:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "4340:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4353:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4364:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4349:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4349:17:1"
}
],
"functionName": {
"name": "abi_encode_t_bytes32_to_t_bytes32_fromStack",
"nodeType": "YulIdentifier",
"src": "4296:43:1"
},
"nodeType": "YulFunctionCall",
"src": "4296:71:1"
},
"nodeType": "YulExpressionStatement",
"src": "4296:71:1"
}
]
},
"name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "4222:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "4234:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "4245:4:1",
"type": ""
}
],
"src": "4152:222:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4506:206:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4516:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4528:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4539:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4524:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4524:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "4516:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "4596:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4609:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4620:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4605:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4605:17:1"
}
],
"functionName": {
"name": "abi_encode_t_bytes32_to_t_bytes32_fromStack",
"nodeType": "YulIdentifier",
"src": "4552:43:1"
},
"nodeType": "YulFunctionCall",
"src": "4552:71:1"
},
"nodeType": "YulExpressionStatement",
"src": "4552:71:1"
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "4677:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4690:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4701:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4686:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4686:18:1"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "4633:43:1"
},
"nodeType": "YulFunctionCall",
"src": "4633:72:1"
},
"nodeType": "YulExpressionStatement",
"src": "4633:72:1"
}
]
},
"name": "abi_encode_tuple_t_bytes32_t_uint256__to_t_bytes32_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "4470:9:1",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "4482:6:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "4490:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "4501:4:1",
"type": ""
}
],
"src": "4380:332:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4889:248:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4899:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4911:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4922:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4907:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4907:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "4899:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4946:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4957:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4942:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4942:17:1"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "4965:4:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4971:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "4961:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4961:20:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4935:6:1"
},
"nodeType": "YulFunctionCall",
"src": "4935:47:1"
},
"nodeType": "YulExpressionStatement",
"src": "4935:47:1"
},
{
"nodeType": "YulAssignment",
"src": "4991:139:1",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "5125:4:1"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_0dc527e8fa9b76c996eb5eda9ddb749b21540f5509781b94e1e37f7027e7f50e_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "4999:124:1"
},
"nodeType": "YulFunctionCall",
"src": "4999:131:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "4991:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_0dc527e8fa9b76c996eb5eda9ddb749b21540f5509781b94e1e37f7027e7f50e__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "4869:9:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "4884:4:1",
"type": ""
}
],
"src": "4718:419:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5314:248:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5324:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5336:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5347:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5332:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5332:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "5324:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5371:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5382:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5367:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5367:17:1"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "5390:4:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5396:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "5386:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5386:20:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5360:6:1"
},
"nodeType": "YulFunctionCall",
"src": "5360:47:1"
},
"nodeType": "YulExpressionStatement",
"src": "5360:47:1"
},
{
"nodeType": "YulAssignment",
"src": "5416:139:1",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "5550:4:1"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_56aab92b7164a4ea72a098d2d95a5e763b71d07f265e8d46fc7240404017fa84_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "5424:124:1"
},
"nodeType": "YulFunctionCall",
"src": "5424:131:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "5416:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_56aab92b7164a4ea72a098d2d95a5e763b71d07f265e8d46fc7240404017fa84__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "5294:9:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "5309:4:1",
"type": ""
}
],
"src": "5143:419:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5739:248:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5749:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5761:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5772:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5757:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5757:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "5749:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5796:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5807:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5792:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5792:17:1"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "5815:4:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5821:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "5811:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5811:20:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5785:6:1"
},
"nodeType": "YulFunctionCall",
"src": "5785:47:1"
},
"nodeType": "YulExpressionStatement",
"src": "5785:47:1"
},
{
"nodeType": "YulAssignment",
"src": "5841:139:1",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "5975:4:1"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_657c6119c4ed567c60278fba62242b17c2fedf38962e651040dabfb3c9e15a5f_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "5849:124:1"
},
"nodeType": "YulFunctionCall",
"src": "5849:131:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "5841:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_657c6119c4ed567c60278fba62242b17c2fedf38962e651040dabfb3c9e15a5f__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "5719:9:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "5734:4:1",
"type": ""
}
],
"src": "5568:419:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6164:248:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6174:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6186:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6197:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6182:3:1"
},
"nodeType": "YulFunctionCall",
"src": "6182:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "6174:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6221:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6232:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6217:3:1"
},
"nodeType": "YulFunctionCall",
"src": "6217:17:1"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "6240:4:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6246:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "6236:3:1"
},
"nodeType": "YulFunctionCall",
"src": "6236:20:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6210:6:1"
},
"nodeType": "YulFunctionCall",
"src": "6210:47:1"
},
"nodeType": "YulExpressionStatement",
"src": "6210:47:1"
},
{
"nodeType": "YulAssignment",
"src": "6266:139:1",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "6400:4:1"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_80126ce3251ab2b6e4ade14fe5b2bc11f593510cbe9e3550c09bff1989e33b95_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "6274:124:1"
},
"nodeType": "YulFunctionCall",
"src": "6274:131:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "6266:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_80126ce3251ab2b6e4ade14fe5b2bc11f593510cbe9e3550c09bff1989e33b95__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "6144:9:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "6159:4:1",
"type": ""
}
],
"src": "5993:419:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6589:248:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6599:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6611:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6622:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6607:3:1"
},
"nodeType": "YulFunctionCall",
"src": "6607:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "6599:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6646:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6657:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6642:3:1"
},
"nodeType": "YulFunctionCall",
"src": "6642:17:1"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "6665:4:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6671:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "6661:3:1"
},
"nodeType": "YulFunctionCall",
"src": "6661:20:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6635:6:1"
},
"nodeType": "YulFunctionCall",
"src": "6635:47:1"
},
"nodeType": "YulExpressionStatement",
"src": "6635:47:1"
},
{
"nodeType": "YulAssignment",
"src": "6691:139:1",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "6825:4:1"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_8bd75322489f7ff7ab0b18506f4dcde935a32eca2a506b00f4d21b0becfa093c_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "6699:124:1"
},
"nodeType": "YulFunctionCall",
"src": "6699:131:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "6691:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_8bd75322489f7ff7ab0b18506f4dcde935a32eca2a506b00f4d21b0becfa093c__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "6569:9:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "6584:4:1",
"type": ""
}
],
"src": "6418:419:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7014:248:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7024:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7036:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7047:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7032:3:1"
},
"nodeType": "YulFunctionCall",
"src": "7032:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "7024:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7071:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7082:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7067:3:1"
},
"nodeType": "YulFunctionCall",
"src": "7067:17:1"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "7090:4:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7096:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "7086:3:1"
},
"nodeType": "YulFunctionCall",
"src": "7086:20:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7060:6:1"
},
"nodeType": "YulFunctionCall",
"src": "7060:47:1"
},
"nodeType": "YulExpressionStatement",
"src": "7060:47:1"
},
{
"nodeType": "YulAssignment",
"src": "7116:139:1",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "7250:4:1"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_d39b1db28626750c546703ffb72f30ea3facdfed1bebd47408e22ef18a76ba2d_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "7124:124:1"
},
"nodeType": "YulFunctionCall",
"src": "7124:131:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "7116:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_d39b1db28626750c546703ffb72f30ea3facdfed1bebd47408e22ef18a76ba2d__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "6994:9:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "7009:4:1",
"type": ""
}
],
"src": "6843:419:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7439:248:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7449:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7461:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7472:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7457:3:1"
},
"nodeType": "YulFunctionCall",
"src": "7457:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "7449:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7496:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7507:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7492:3:1"
},
"nodeType": "YulFunctionCall",
"src": "7492:17:1"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "7515:4:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7521:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "7511:3:1"
},
"nodeType": "YulFunctionCall",
"src": "7511:20:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7485:6:1"
},
"nodeType": "YulFunctionCall",
"src": "7485:47:1"
},
"nodeType": "YulExpressionStatement",
"src": "7485:47:1"
},
{
"nodeType": "YulAssignment",
"src": "7541:139:1",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "7675:4:1"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_f37bf1aca80f8fa291a40f639db6aeaa1425ceb0e8c61c8648f0e2efa282a947_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "7549:124:1"
},
"nodeType": "YulFunctionCall",
"src": "7549:131:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "7541:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_f37bf1aca80f8fa291a40f639db6aeaa1425ceb0e8c61c8648f0e2efa282a947__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "7419:9:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "7434:4:1",
"type": ""
}
],
"src": "7268:419:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7791:124:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7801:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7813:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7824:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7809:3:1"
},
"nodeType": "YulFunctionCall",
"src": "7809:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "7801:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "7881:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7894:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7905:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7890:3:1"
},
"nodeType": "YulFunctionCall",
"src": "7890:17:1"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "7837:43:1"
},
"nodeType": "YulFunctionCall",
"src": "7837:71:1"
},
"nodeType": "YulExpressionStatement",
"src": "7837:71:1"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "7763:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "7775:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "7786:4:1",
"type": ""
}
],
"src": "7693:222:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8097:365:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "8107:27:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8119:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8130:3:1",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8115:3:1"
},
"nodeType": "YulFunctionCall",
"src": "8115:19:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "8107:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "8188:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8201:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8212:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8197:3:1"
},
"nodeType": "YulFunctionCall",
"src": "8197:17:1"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "8144:43:1"
},
"nodeType": "YulFunctionCall",
"src": "8144:71:1"
},
"nodeType": "YulExpressionStatement",
"src": "8144:71:1"
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "8263:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8276:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8287:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8272:3:1"
},
"nodeType": "YulFunctionCall",
"src": "8272:18:1"
}
],
"functionName": {
"name": "abi_encode_t_bool_to_t_bool_fromStack",
"nodeType": "YulIdentifier",
"src": "8225:37:1"
},
"nodeType": "YulFunctionCall",
"src": "8225:66:1"
},
"nodeType": "YulExpressionStatement",
"src": "8225:66:1"
},
{
"expression": {
"arguments": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "8345:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8358:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8369:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8354:3:1"
},
"nodeType": "YulFunctionCall",
"src": "8354:18:1"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "8301:43:1"
},
"nodeType": "YulFunctionCall",
"src": "8301:72:1"
},
"nodeType": "YulExpressionStatement",
"src": "8301:72:1"
},
{
"expression": {
"arguments": [
{
"name": "value3",
"nodeType": "YulIdentifier",
"src": "8427:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8440:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8451:2:1",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8436:3:1"
},
"nodeType": "YulFunctionCall",
"src": "8436:18:1"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "8383:43:1"
},
"nodeType": "YulFunctionCall",
"src": "8383:72:1"
},
"nodeType": "YulExpressionStatement",
"src": "8383:72:1"
}
]
},
"name": "abi_encode_tuple_t_uint256_t_bool_t_address_t_uint256__to_t_uint256_t_bool_t_address_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "8045:9:1",
"type": ""
},
{
"name": "value3",
"nodeType": "YulTypedName",
"src": "8057:6:1",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "8065:6:1",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "8073:6:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "8081:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "8092:4:1",
"type": ""
}
],
"src": "7921:541:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8564:73:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8581:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "8586:6:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8574:6:1"
},
"nodeType": "YulFunctionCall",
"src": "8574:19:1"
},
"nodeType": "YulExpressionStatement",
"src": "8574:19:1"
},
{
"nodeType": "YulAssignment",
"src": "8602:29:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8621:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8626:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8617:3:1"
},
"nodeType": "YulFunctionCall",
"src": "8617:14:1"
},
"variableNames": [
{
"name": "updated_pos",
"nodeType": "YulIdentifier",
"src": "8602:11:1"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "8536:3:1",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "8541:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nodeType": "YulTypedName",
"src": "8552:11:1",
"type": ""
}
],
"src": "8468:169:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8687:261:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "8697:25:1",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "8720:1:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "8702:17:1"
},
"nodeType": "YulFunctionCall",
"src": "8702:20:1"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "8697:1:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "8731:25:1",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "8754:1:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "8736:17:1"
},
"nodeType": "YulFunctionCall",
"src": "8736:20:1"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "8731:1:1"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "8894:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "8896:16:1"
},
"nodeType": "YulFunctionCall",
"src": "8896:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "8896:18:1"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "8815:1:1"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8822:66:1",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "8890:1:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "8818:3:1"
},
"nodeType": "YulFunctionCall",
"src": "8818:74:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "8812:2:1"
},
"nodeType": "YulFunctionCall",
"src": "8812:81:1"
},
"nodeType": "YulIf",
"src": "8809:2:1"
},
{
"nodeType": "YulAssignment",
"src": "8926:16:1",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "8937:1:1"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "8940:1:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8933:3:1"
},
"nodeType": "YulFunctionCall",
"src": "8933:9:1"
},
"variableNames": [
{
"name": "sum",
"nodeType": "YulIdentifier",
"src": "8926:3:1"
}
]
}
]
},
"name": "checked_add_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "8674:1:1",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "8677:1:1",
"type": ""
}
],
"returnVariables": [
{
"name": "sum",
"nodeType": "YulTypedName",
"src": "8683:3:1",
"type": ""
}
],
"src": "8643:305:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8999:51:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9009:35:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "9038:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "9020:17:1"
},
"nodeType": "YulFunctionCall",
"src": "9020:24:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "9009:7:1"
}
]
}
]
},
"name": "cleanup_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "8981:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "8991:7:1",
"type": ""
}
],
"src": "8954:96:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9098:48:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9108:32:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "9133:5:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "9126:6:1"
},
"nodeType": "YulFunctionCall",
"src": "9126:13:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "9119:6:1"
},
"nodeType": "YulFunctionCall",
"src": "9119:21:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "9108:7:1"
}
]
}
]
},
"name": "cleanup_t_bool",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "9080:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "9090:7:1",
"type": ""
}
],
"src": "9056:90:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9197:32:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9207:16:1",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "9218:5:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "9207:7:1"
}
]
}
]
},
"name": "cleanup_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "9179:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "9189:7:1",
"type": ""
}
],
"src": "9152:77:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9280:81:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9290:65:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "9305:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9312:42:1",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "9301:3:1"
},
"nodeType": "YulFunctionCall",
"src": "9301:54:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "9290:7:1"
}
]
}
]
},
"name": "cleanup_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "9262:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "9272:7:1",
"type": ""
}
],
"src": "9235:126:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9412:32:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9422:16:1",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "9433:5:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "9422:7:1"
}
]
}
]
},
"name": "cleanup_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "9394:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "9404:7:1",
"type": ""
}
],
"src": "9367:77:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9493:190:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9503:33:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "9530:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "9512:17:1"
},
"nodeType": "YulFunctionCall",
"src": "9512:24:1"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "9503:5:1"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "9626:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "9628:16:1"
},
"nodeType": "YulFunctionCall",
"src": "9628:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "9628:18:1"
}
]
},
"condition": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "9551:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9558:66:1",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "9548:2:1"
},
"nodeType": "YulFunctionCall",
"src": "9548:77:1"
},
"nodeType": "YulIf",
"src": "9545:2:1"
},
{
"nodeType": "YulAssignment",
"src": "9657:20:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "9668:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9675:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9664:3:1"
},
"nodeType": "YulFunctionCall",
"src": "9664:13:1"
},
"variableNames": [
{
"name": "ret",
"nodeType": "YulIdentifier",
"src": "9657:3:1"
}
]
}
]
},
"name": "increment_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "9479:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "ret",
"nodeType": "YulTypedName",
"src": "9489:3:1",
"type": ""
}
],
"src": "9450:233:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9717:152:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9734:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9737:77:1",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "9727:6:1"
},
"nodeType": "YulFunctionCall",
"src": "9727:88:1"
},
"nodeType": "YulExpressionStatement",
"src": "9727:88:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9831:1:1",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9834:4:1",
"type": "",
"value": "0x11"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "9824:6:1"
},
"nodeType": "YulFunctionCall",
"src": "9824:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "9824:15:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9855:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9858:4:1",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "9848:6:1"
},
"nodeType": "YulFunctionCall",
"src": "9848:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "9848:15:1"
}
]
},
"name": "panic_error_0x11",
"nodeType": "YulFunctionDefinition",
"src": "9689:180:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9981:64:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "10003:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10011:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9999:3:1"
},
"nodeType": "YulFunctionCall",
"src": "9999:14:1"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "10015:22:1",
"type": "",
"value": "Has no right to vote"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "9992:6:1"
},
"nodeType": "YulFunctionCall",
"src": "9992:46:1"
},
"nodeType": "YulExpressionStatement",
"src": "9992:46:1"
}
]
},
"name": "store_literal_in_memory_0dc527e8fa9b76c996eb5eda9ddb749b21540f5509781b94e1e37f7027e7f50e",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "9973:6:1",
"type": ""
}
],
"src": "9875:170:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10157:58:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "10179:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10187:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10175:3:1"
},
"nodeType": "YulFunctionCall",
"src": "10175:14:1"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "10191:16:1",
"type": "",
"value": "Already voted."
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "10168:6:1"
},
"nodeType": "YulFunctionCall",
"src": "10168:40:1"
},
"nodeType": "YulExpressionStatement",
"src": "10168:40:1"
}
]
},
"name": "store_literal_in_memory_56aab92b7164a4ea72a098d2d95a5e763b71d07f265e8d46fc7240404017fa84",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "10149:6:1",
"type": ""
}
],
"src": "10051:164:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10327:62:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "10349:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10357:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10345:3:1"
},
"nodeType": "YulFunctionCall",
"src": "10345:14:1"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "10361:20:1",
"type": "",
"value": "You already voted."
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "10338:6:1"
},
"nodeType": "YulFunctionCall",
"src": "10338:44:1"
},
"nodeType": "YulExpressionStatement",
"src": "10338:44:1"
}
]
},
"name": "store_literal_in_memory_657c6119c4ed567c60278fba62242b17c2fedf38962e651040dabfb3c9e15a5f",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "10319:6:1",
"type": ""
}
],
"src": "10221:168:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10501:121:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "10523:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10531:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10519:3:1"
},
"nodeType": "YulFunctionCall",
"src": "10519:14:1"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "10535:34:1",
"type": "",
"value": "Only chairperson can give right "
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "10512:6:1"
},
"nodeType": "YulFunctionCall",
"src": "10512:58:1"
},
"nodeType": "YulExpressionStatement",
"src": "10512:58:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "10591:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10599:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10587:3:1"
},
"nodeType": "YulFunctionCall",
"src": "10587:15:1"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "10604:10:1",
"type": "",
"value": "to vote."
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "10580:6:1"
},
"nodeType": "YulFunctionCall",
"src": "10580:35:1"
},
"nodeType": "YulExpressionStatement",
"src": "10580:35:1"
}
]
},
"name": "store_literal_in_memory_80126ce3251ab2b6e4ade14fe5b2bc11f593510cbe9e3550c09bff1989e33b95",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "10493:6:1",
"type": ""
}
],
"src": "10395:227:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10734:69:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "10756:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10764:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10752:3:1"
},
"nodeType": "YulFunctionCall",
"src": "10752:14:1"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "10768:27:1",
"type": "",
"value": "Found loop in delegation."
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "10745:6:1"
},
"nodeType": "YulFunctionCall",
"src": "10745:51:1"
},
"nodeType": "YulExpressionStatement",
"src": "10745:51:1"
}
]
},
"name": "store_literal_in_memory_8bd75322489f7ff7ab0b18506f4dcde935a32eca2a506b00f4d21b0becfa093c",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "10726:6:1",
"type": ""
}
],
"src": "10628:175:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10915:68:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "10937:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10945:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10933:3:1"
},
"nodeType": "YulFunctionCall",
"src": "10933:14:1"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "10949:26:1",
"type": "",
"value": "The voter already voted."
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "10926:6:1"
},
"nodeType": "YulFunctionCall",
"src": "10926:50:1"
},
"nodeType": "YulExpressionStatement",
"src": "10926:50:1"
}
]
},
"name": "store_literal_in_memory_d39b1db28626750c546703ffb72f30ea3facdfed1bebd47408e22ef18a76ba2d",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "10907:6:1",
"type": ""
}
],
"src": "10809:174:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11095:74:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "11117:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11125:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11113:3:1"
},
"nodeType": "YulFunctionCall",
"src": "11113:14:1"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "11129:32:1",
"type": "",
"value": "Self-delegation is disallowed."
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "11106:6:1"
},
"nodeType": "YulFunctionCall",
"src": "11106:56:1"
},
"nodeType": "YulExpressionStatement",
"src": "11106:56:1"
}
]
},
"name": "store_literal_in_memory_f37bf1aca80f8fa291a40f639db6aeaa1425ceb0e8c61c8648f0e2efa282a947",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "11087:6:1",
"type": ""
}
],
"src": "10989:180:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11218:79:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "11275:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11284:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11287:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "11277:6:1"
},
"nodeType": "YulFunctionCall",
"src": "11277:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "11277:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "11241:5:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "11266:5:1"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "11248:17:1"
},
"nodeType": "YulFunctionCall",
"src": "11248:24:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "11238:2:1"
},
"nodeType": "YulFunctionCall",
"src": "11238:35:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "11231:6:1"
},
"nodeType": "YulFunctionCall",
"src": "11231:43:1"
},
"nodeType": "YulIf",
"src": "11228:2:1"
}
]
},
"name": "validator_revert_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "11211:5:1",
"type": ""
}
],
"src": "11175:122:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11346:79:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "11403:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11412:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11415:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "11405:6:1"
},
"nodeType": "YulFunctionCall",
"src": "11405:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "11405:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "11369:5:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "11394:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "11376:17:1"
},
"nodeType": "YulFunctionCall",
"src": "11376:24:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "11366:2:1"
},
"nodeType": "YulFunctionCall",
"src": "11366:35:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "11359:6:1"
},
"nodeType": "YulFunctionCall",
"src": "11359:43:1"
},
"nodeType": "YulIf",
"src": "11356:2:1"
}
]
},
"name": "validator_revert_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "11339:5:1",
"type": ""
}
],
"src": "11303:122:1"
}
]
},
"contents": "{\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_t_bytes32_to_t_bytes32_fromStack(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function abi_encode_t_stringliteral_0dc527e8fa9b76c996eb5eda9ddb749b21540f5509781b94e1e37f7027e7f50e_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 20)\n store_literal_in_memory_0dc527e8fa9b76c996eb5eda9ddb749b21540f5509781b94e1e37f7027e7f50e(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_t_stringliteral_56aab92b7164a4ea72a098d2d95a5e763b71d07f265e8d46fc7240404017fa84_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 14)\n store_literal_in_memory_56aab92b7164a4ea72a098d2d95a5e763b71d07f265e8d46fc7240404017fa84(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_t_stringliteral_657c6119c4ed567c60278fba62242b17c2fedf38962e651040dabfb3c9e15a5f_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 18)\n store_literal_in_memory_657c6119c4ed567c60278fba62242b17c2fedf38962e651040dabfb3c9e15a5f(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_t_stringliteral_80126ce3251ab2b6e4ade14fe5b2bc11f593510cbe9e3550c09bff1989e33b95_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 40)\n store_literal_in_memory_80126ce3251ab2b6e4ade14fe5b2bc11f593510cbe9e3550c09bff1989e33b95(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_t_stringliteral_8bd75322489f7ff7ab0b18506f4dcde935a32eca2a506b00f4d21b0becfa093c_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 25)\n store_literal_in_memory_8bd75322489f7ff7ab0b18506f4dcde935a32eca2a506b00f4d21b0becfa093c(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_t_stringliteral_d39b1db28626750c546703ffb72f30ea3facdfed1bebd47408e22ef18a76ba2d_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 24)\n store_literal_in_memory_d39b1db28626750c546703ffb72f30ea3facdfed1bebd47408e22ef18a76ba2d(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_t_stringliteral_f37bf1aca80f8fa291a40f639db6aeaa1425ceb0e8c61c8648f0e2efa282a947_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 30)\n store_literal_in_memory_f37bf1aca80f8fa291a40f639db6aeaa1425ceb0e8c61c8648f0e2efa282a947(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_bytes32_t_uint256__to_t_bytes32_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n function abi_encode_tuple_t_stringliteral_0dc527e8fa9b76c996eb5eda9ddb749b21540f5509781b94e1e37f7027e7f50e__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_0dc527e8fa9b76c996eb5eda9ddb749b21540f5509781b94e1e37f7027e7f50e_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_56aab92b7164a4ea72a098d2d95a5e763b71d07f265e8d46fc7240404017fa84__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_56aab92b7164a4ea72a098d2d95a5e763b71d07f265e8d46fc7240404017fa84_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_657c6119c4ed567c60278fba62242b17c2fedf38962e651040dabfb3c9e15a5f__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_657c6119c4ed567c60278fba62242b17c2fedf38962e651040dabfb3c9e15a5f_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_80126ce3251ab2b6e4ade14fe5b2bc11f593510cbe9e3550c09bff1989e33b95__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_80126ce3251ab2b6e4ade14fe5b2bc11f593510cbe9e3550c09bff1989e33b95_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_8bd75322489f7ff7ab0b18506f4dcde935a32eca2a506b00f4d21b0becfa093c__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_8bd75322489f7ff7ab0b18506f4dcde935a32eca2a506b00f4d21b0becfa093c_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_d39b1db28626750c546703ffb72f30ea3facdfed1bebd47408e22ef18a76ba2d__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_d39b1db28626750c546703ffb72f30ea3facdfed1bebd47408e22ef18a76ba2d_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_f37bf1aca80f8fa291a40f639db6aeaa1425ceb0e8c61c8648f0e2efa282a947__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_f37bf1aca80f8fa291a40f639db6aeaa1425ceb0e8c61c8648f0e2efa282a947_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_uint256_t_bool_t_address_t_uint256__to_t_uint256_t_bool_t_address_t_uint256__fromStack_reversed(headStart , value3, value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_bool_to_t_bool_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_address_to_t_address_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value3, add(headStart, 96))\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n // overflow, if x > (maxValue - y)\n if gt(x, sub(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, y)) { panic_error_0x11() }\n\n sum := add(x, y)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function increment_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function store_literal_in_memory_0dc527e8fa9b76c996eb5eda9ddb749b21540f5509781b94e1e37f7027e7f50e(memPtr) {\n\n mstore(add(memPtr, 0), \"Has no right to vote\")\n\n }\n\n function store_literal_in_memory_56aab92b7164a4ea72a098d2d95a5e763b71d07f265e8d46fc7240404017fa84(memPtr) {\n\n mstore(add(memPtr, 0), \"Already voted.\")\n\n }\n\n function store_literal_in_memory_657c6119c4ed567c60278fba62242b17c2fedf38962e651040dabfb3c9e15a5f(memPtr) {\n\n mstore(add(memPtr, 0), \"You already voted.\")\n\n }\n\n function store_literal_in_memory_80126ce3251ab2b6e4ade14fe5b2bc11f593510cbe9e3550c09bff1989e33b95(memPtr) {\n\n mstore(add(memPtr, 0), \"Only chairperson can give right \")\n\n mstore(add(memPtr, 32), \"to vote.\")\n\n }\n\n function store_literal_in_memory_8bd75322489f7ff7ab0b18506f4dcde935a32eca2a506b00f4d21b0becfa093c(memPtr) {\n\n mstore(add(memPtr, 0), \"Found loop in delegation.\")\n\n }\n\n function store_literal_in_memory_d39b1db28626750c546703ffb72f30ea3facdfed1bebd47408e22ef18a76ba2d(memPtr) {\n\n mstore(add(memPtr, 0), \"The voter already voted.\")\n\n }\n\n function store_literal_in_memory_f37bf1aca80f8fa291a40f639db6aeaa1425ceb0e8c61c8648f0e2efa282a947(memPtr) {\n\n mstore(add(memPtr, 0), \"Self-delegation is disallowed.\")\n\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n}\n",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50600436106100885760003560e01c8063609ff1bd1161005b578063609ff1bd146101145780639e7b8d6114610132578063a3ec138d1461014e578063e2ba53f01461018157610088565b80630121b93f1461008d578063013cf08b146100a95780632e4176cf146100da5780635c19a95c146100f8575b600080fd5b6100a760048036038101906100a29190610abb565b61019f565b005b6100c360048036038101906100be9190610abb565b61030c565b6040516100d1929190610c4b565b60405180910390f35b6100e2610340565b6040516100ef9190610c15565b60405180910390f35b610112600480360381019061010d9190610a92565b610364565b005b61011c610726565b6040516101299190610d54565b60405180910390f35b61014c60048036038101906101479190610a92565b6107fa565b005b61016860048036038101906101639190610a92565b6109b1565b6040516101789493929190610d6f565b60405180910390f35b610189610a0e565b6040516101969190610c30565b60405180910390f35b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160000154141561022a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161022190610c74565b60405180910390fd5b8060010160009054906101000a900460ff161561027c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027390610c94565b60405180910390fd5b60018160010160006101000a81548160ff0219169083151502179055508181600201819055508060000154600283815481106102e1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020906002020160010160008282546103019190610dc5565b925050819055505050565b6002818154811061031c57600080fd5b90600052602060002090600202016000915090508060000154908060010154905082565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060010160009054906101000a900460ff16156103f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103f090610cb4565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610468576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045f90610d34565b60405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105d857600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156105d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ca90610cf4565b60405180910390fd5b610469565b60018160010160006101000a81548160ff021916908315150217905550818160010160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060010160009054906101000a900460ff161561070157816000015460028260020154815481106106d5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020906002020160010160008282546106f59190610dc5565b92505081905550610721565b81600001548160000160008282546107199190610dc5565b925050819055505b505050565b6000806000905060005b6002805490508110156107f5578160028281548110610778577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600202016001015411156107e257600281815481106107ca577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600202016001015491508092505b80806107ed90610e6d565b915050610730565b505090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610888576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087f90610cd4565b60405180910390fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900460ff1615610918576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090f90610d14565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541461096757600080fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555050565b60016020528060005260406000206000915090508060000154908060010160009054906101000a900460ff16908060010160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154905084565b60006002610a1a610726565b81548110610a51577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020906002020160000154905090565b600081359050610a778161102a565b92915050565b600081359050610a8c81611041565b92915050565b600060208284031215610aa457600080fd5b6000610ab284828501610a68565b91505092915050565b600060208284031215610acd57600080fd5b6000610adb84828501610a7d565b91505092915050565b610aed81610e1b565b82525050565b610afc81610e2d565b82525050565b610b0b81610e39565b82525050565b6000610b1e601483610db4565b9150610b2982610ee5565b602082019050919050565b6000610b41600e83610db4565b9150610b4c82610f0e565b602082019050919050565b6000610b64601283610db4565b9150610b6f82610f37565b602082019050919050565b6000610b87602883610db4565b9150610b9282610f60565b604082019050919050565b6000610baa601983610db4565b9150610bb582610faf565b602082019050919050565b6000610bcd601883610db4565b9150610bd882610fd8565b602082019050919050565b6000610bf0601e83610db4565b9150610bfb82611001565b602082019050919050565b610c0f81610e63565b82525050565b6000602082019050610c2a6000830184610ae4565b92915050565b6000602082019050610c456000830184610b02565b92915050565b6000604082019050610c606000830185610b02565b610c6d6020830184610c06565b9392505050565b60006020820190508181036000830152610c8d81610b11565b9050919050565b60006020820190508181036000830152610cad81610b34565b9050919050565b60006020820190508181036000830152610ccd81610b57565b9050919050565b60006020820190508181036000830152610ced81610b7a565b9050919050565b60006020820190508181036000830152610d0d81610b9d565b9050919050565b60006020820190508181036000830152610d2d81610bc0565b9050919050565b60006020820190508181036000830152610d4d81610be3565b9050919050565b6000602082019050610d696000830184610c06565b92915050565b6000608082019050610d846000830187610c06565b610d916020830186610af3565b610d9e6040830185610ae4565b610dab6060830184610c06565b95945050505050565b600082825260208201905092915050565b6000610dd082610e63565b9150610ddb83610e63565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610e1057610e0f610eb6565b5b828201905092915050565b6000610e2682610e43565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610e7882610e63565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610eab57610eaa610eb6565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f486173206e6f20726967687420746f20766f7465000000000000000000000000600082015250565b7f416c726561647920766f7465642e000000000000000000000000000000000000600082015250565b7f596f7520616c726561647920766f7465642e0000000000000000000000000000600082015250565b7f4f6e6c79206368616972706572736f6e2063616e20676976652072696768742060008201527f746f20766f74652e000000000000000000000000000000000000000000000000602082015250565b7f466f756e64206c6f6f7020696e2064656c65676174696f6e2e00000000000000600082015250565b7f54686520766f74657220616c726561647920766f7465642e0000000000000000600082015250565b7f53656c662d64656c65676174696f6e20697320646973616c6c6f7765642e0000600082015250565b61103381610e1b565b811461103e57600080fd5b50565b61104a81610e63565b811461105557600080fd5b5056fea264697066735822122052b673a01a0028911a57ca3a1d176f852a2664391436d4b17f127f98f1623dad64736f6c63430008040033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x609FF1BD GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x609FF1BD EQ PUSH2 0x114 JUMPI DUP1 PUSH4 0x9E7B8D61 EQ PUSH2 0x132 JUMPI DUP1 PUSH4 0xA3EC138D EQ PUSH2 0x14E JUMPI DUP1 PUSH4 0xE2BA53F0 EQ PUSH2 0x181 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x121B93F EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x13CF08B EQ PUSH2 0xA9 JUMPI DUP1 PUSH4 0x2E4176CF EQ PUSH2 0xDA JUMPI DUP1 PUSH4 0x5C19A95C EQ PUSH2 0xF8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xA2 SWAP2 SWAP1 PUSH2 0xABB JUMP JUMPDEST PUSH2 0x19F JUMP JUMPDEST STOP JUMPDEST PUSH2 0xC3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xBE SWAP2 SWAP1 PUSH2 0xABB JUMP JUMPDEST PUSH2 0x30C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD1 SWAP3 SWAP2 SWAP1 PUSH2 0xC4B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xE2 PUSH2 0x340 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xEF SWAP2 SWAP1 PUSH2 0xC15 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x112 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x10D SWAP2 SWAP1 PUSH2 0xA92 JUMP JUMPDEST PUSH2 0x364 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11C PUSH2 0x726 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x129 SWAP2 SWAP1 PUSH2 0xD54 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x14C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x147 SWAP2 SWAP1 PUSH2 0xA92 JUMP JUMPDEST PUSH2 0x7FA JUMP JUMPDEST STOP JUMPDEST PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x163 SWAP2 SWAP1 PUSH2 0xA92 JUMP JUMPDEST PUSH2 0x9B1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x178 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xD6F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x189 PUSH2 0xA0E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x196 SWAP2 SWAP1 PUSH2 0xC30 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x0 ADD SLOAD EQ ISZERO PUSH2 0x22A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x221 SWAP1 PUSH2 0xC74 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x27C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x273 SWAP1 PUSH2 0xC94 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP2 DUP2 PUSH1 0x2 ADD DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x0 ADD SLOAD PUSH1 0x2 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x2E1 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x301 SWAP2 SWAP1 PUSH2 0xDC5 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x31C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 SWAP2 POP SWAP1 POP DUP1 PUSH1 0x0 ADD SLOAD SWAP1 DUP1 PUSH1 0x1 ADD SLOAD SWAP1 POP DUP3 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP DUP1 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x3F9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3F0 SWAP1 PUSH2 0xCB4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x468 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x45F SWAP1 PUSH2 0xD34 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x5D8 JUMPI PUSH1 0x1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x5D3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CA SWAP1 PUSH2 0xCF4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x469 JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP2 DUP2 PUSH1 0x1 ADD PUSH1 0x1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP DUP1 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x701 JUMPI DUP2 PUSH1 0x0 ADD SLOAD PUSH1 0x2 DUP3 PUSH1 0x2 ADD SLOAD DUP2 SLOAD DUP2 LT PUSH2 0x6D5 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x6F5 SWAP2 SWAP1 PUSH2 0xDC5 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0x721 JUMP JUMPDEST DUP2 PUSH1 0x0 ADD SLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x719 SWAP2 SWAP1 PUSH2 0xDC5 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 POP PUSH1 0x0 JUMPDEST PUSH1 0x2 DUP1 SLOAD SWAP1 POP DUP2 LT ISZERO PUSH2 0x7F5 JUMPI DUP2 PUSH1 0x2 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x778 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD SLOAD GT ISZERO PUSH2 0x7E2 JUMPI PUSH1 0x2 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x7CA JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD SLOAD SWAP2 POP DUP1 SWAP3 POP JUMPDEST DUP1 DUP1 PUSH2 0x7ED SWAP1 PUSH2 0xE6D JUMP JUMPDEST SWAP2 POP POP PUSH2 0x730 JUMP JUMPDEST POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x888 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x87F SWAP1 PUSH2 0xCD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x918 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x90F SWAP1 PUSH2 0xD14 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD SLOAD EQ PUSH2 0x967 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP DUP1 PUSH1 0x0 ADD SLOAD SWAP1 DUP1 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 DUP1 PUSH1 0x1 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP1 PUSH1 0x2 ADD SLOAD SWAP1 POP DUP5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 PUSH2 0xA1A PUSH2 0x726 JUMP JUMPDEST DUP2 SLOAD DUP2 LT PUSH2 0xA51 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 ADD SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xA77 DUP2 PUSH2 0x102A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xA8C DUP2 PUSH2 0x1041 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xAB2 DUP5 DUP3 DUP6 ADD PUSH2 0xA68 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xACD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xADB DUP5 DUP3 DUP6 ADD PUSH2 0xA7D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xAED DUP2 PUSH2 0xE1B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xAFC DUP2 PUSH2 0xE2D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xB0B DUP2 PUSH2 0xE39 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB1E PUSH1 0x14 DUP4 PUSH2 0xDB4 JUMP JUMPDEST SWAP2 POP PUSH2 0xB29 DUP3 PUSH2 0xEE5 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB41 PUSH1 0xE DUP4 PUSH2 0xDB4 JUMP JUMPDEST SWAP2 POP PUSH2 0xB4C DUP3 PUSH2 0xF0E JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB64 PUSH1 0x12 DUP4 PUSH2 0xDB4 JUMP JUMPDEST SWAP2 POP PUSH2 0xB6F DUP3 PUSH2 0xF37 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB87 PUSH1 0x28 DUP4 PUSH2 0xDB4 JUMP JUMPDEST SWAP2 POP PUSH2 0xB92 DUP3 PUSH2 0xF60 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBAA PUSH1 0x19 DUP4 PUSH2 0xDB4 JUMP JUMPDEST SWAP2 POP PUSH2 0xBB5 DUP3 PUSH2 0xFAF JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBCD PUSH1 0x18 DUP4 PUSH2 0xDB4 JUMP JUMPDEST SWAP2 POP PUSH2 0xBD8 DUP3 PUSH2 0xFD8 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBF0 PUSH1 0x1E DUP4 PUSH2 0xDB4 JUMP JUMPDEST SWAP2 POP PUSH2 0xBFB DUP3 PUSH2 0x1001 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xC0F DUP2 PUSH2 0xE63 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xC2A PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xAE4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xC45 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xB02 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xC60 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0xB02 JUMP JUMPDEST PUSH2 0xC6D PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xC06 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xC8D DUP2 PUSH2 0xB11 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xCAD DUP2 PUSH2 0xB34 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xCCD DUP2 PUSH2 0xB57 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xCED DUP2 PUSH2 0xB7A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xD0D DUP2 PUSH2 0xB9D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xD2D DUP2 PUSH2 0xBC0 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xD4D DUP2 PUSH2 0xBE3 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xD69 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xC06 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0xD84 PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0xC06 JUMP JUMPDEST PUSH2 0xD91 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0xAF3 JUMP JUMPDEST PUSH2 0xD9E PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0xAE4 JUMP JUMPDEST PUSH2 0xDAB PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0xC06 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDD0 DUP3 PUSH2 0xE63 JUMP JUMPDEST SWAP2 POP PUSH2 0xDDB DUP4 PUSH2 0xE63 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0xE10 JUMPI PUSH2 0xE0F PUSH2 0xEB6 JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE26 DUP3 PUSH2 0xE43 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE78 DUP3 PUSH2 0xE63 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0xEAB JUMPI PUSH2 0xEAA PUSH2 0xEB6 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x486173206E6F20726967687420746F20766F7465000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x416C726561647920766F7465642E000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x596F7520616C726561647920766F7465642E0000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x4F6E6C79206368616972706572736F6E2063616E206769766520726967687420 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x746F20766F74652E000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x466F756E64206C6F6F7020696E2064656C65676174696F6E2E00000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x54686520766F74657220616C726561647920766F7465642E0000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x53656C662D64656C65676174696F6E20697320646973616C6C6F7765642E0000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH2 0x1033 DUP2 PUSH2 0xE1B JUMP JUMPDEST DUP2 EQ PUSH2 0x103E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x104A DUP2 PUSH2 0xE63 JUMP JUMPDEST DUP2 EQ PUSH2 0x1055 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MSTORE 0xB6 PUSH20 0xA01A0028911A57CA3A1D176F852A2664391436D4 0xB1 PUSH32 0x127F98F1623DAD64736F6C634300080400330000000000000000000000000000 ",
"sourceMap": "157:4362:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3173:458;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;794:27;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;715:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2078:907;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3817:365;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1599:355;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;748:39;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;4373:144;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3173:458;3219:20;3242:6;:18;3249:10;3242:18;;;;;;;;;;;;;;;3219:41;;3295:1;3278:6;:13;;;:18;;3270:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;3340:6;:12;;;;;;;;;;;;3339:13;3331:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;3396:4;3381:6;:12;;;:19;;;;;;;;;;;;;;;;;;3424:8;3410:6;:11;;:22;;;;3611:6;:13;;;3578:9;3588:8;3578:19;;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;:46;;;;;;;:::i;:::-;;;;;;;;3173:458;;:::o;794:27::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;715:26::-;;;;;;;;;;;;:::o;2078:907::-;2125:20;2148:6;:18;2155:10;2148:18;;;;;;;;;;;;;;;2125:41;;2185:6;:12;;;;;;;;;;;;2184:13;2176:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;2244:10;2238:16;;:2;:16;;;;2230:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;2300:223;2338:1;2307:33;;:6;:10;2314:2;2307:10;;;;;;;;;;;;;;;:19;;;;;;;;;;;;:33;;;2300:223;;2361:6;:10;2368:2;2361:10;;;;;;;;;;;;;;;:19;;;;;;;;;;;;2356:24;;2472:10;2466:16;;:2;:16;;;;2458:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;2300:223;;;2547:4;2532:6;:12;;;:19;;;;;;;;;;;;;;;;;;2579:2;2561:6;:15;;;:20;;;;;;;;;;;;;;;;;;2591:23;2617:6;:10;2624:2;2617:10;;;;;;;;;;;;;;;2591:36;;2641:9;:15;;;;;;;;;;;;2637:342;;;2808:6;:13;;;2769:9;2779;:14;;;2769:25;;;;;;;;;;;;;;;;;;;;;;;;;;:35;;;:52;;;;;;;:::i;:::-;;;;;;;;2637:342;;;2955:6;:13;;;2935:9;:16;;;:33;;;;;;;:::i;:::-;;;;;;;;2637:342;2078:907;;;:::o;3817:365::-;3877:21;3914;3938:1;3914:25;;3954:6;3949:227;3970:9;:16;;;;3966:1;:20;3949:227;;;4036:16;4011:9;4021:1;4011:12;;;;;;;;;;;;;;;;;;;;;;;;;;:22;;;:41;4007:159;;;4091:9;4101:1;4091:12;;;;;;;;;;;;;;;;;;;;;;;;;;:22;;;4072:41;;4150:1;4131:20;;4007:159;3988:3;;;;;:::i;:::-;;;;3949:227;;;;3817:365;;:::o;1599:355::-;1691:11;;;;;;;;;;1677:25;;:10;:25;;;1656:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;1800:6;:13;1807:5;1800:13;;;;;;;;;;;;;;;:19;;;;;;;;;;;;1799:20;1778:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;1911:1;1887:6;:13;1894:5;1887:13;;;;;;;;;;;;;;;:20;;;:25;1879:34;;;;;;1946:1;1923:6;:13;1930:5;1923:13;;;;;;;;;;;;;;;:20;;:24;;;;1599:355;:::o;748:39::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4373:144::-;4428:19;4477:9;4487:17;:15;:17::i;:::-;4477:28;;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;4463:47;;4373:144;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:139::-;198:5;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;204:87;;;;:::o;297:262::-;356:6;405:2;393:9;384:7;380:23;376:32;373:2;;;421:1;418;411:12;373:2;464:1;489:53;534:7;525:6;514:9;510:22;489:53;:::i;:::-;479:63;;435:117;363:196;;;;:::o;565:262::-;624:6;673:2;661:9;652:7;648:23;644:32;641:2;;;689:1;686;679:12;641:2;732:1;757:53;802:7;793:6;782:9;778:22;757:53;:::i;:::-;747:63;;703:117;631:196;;;;:::o;833:118::-;920:24;938:5;920:24;:::i;:::-;915:3;908:37;898:53;;:::o;957:109::-;1038:21;1053:5;1038:21;:::i;:::-;1033:3;1026:34;1016:50;;:::o;1072:118::-;1159:24;1177:5;1159:24;:::i;:::-;1154:3;1147:37;1137:53;;:::o;1196:366::-;1338:3;1359:67;1423:2;1418:3;1359:67;:::i;:::-;1352:74;;1435:93;1524:3;1435:93;:::i;:::-;1553:2;1548:3;1544:12;1537:19;;1342:220;;;:::o;1568:366::-;1710:3;1731:67;1795:2;1790:3;1731:67;:::i;:::-;1724:74;;1807:93;1896:3;1807:93;:::i;:::-;1925:2;1920:3;1916:12;1909:19;;1714:220;;;:::o;1940:366::-;2082:3;2103:67;2167:2;2162:3;2103:67;:::i;:::-;2096:74;;2179:93;2268:3;2179:93;:::i;:::-;2297:2;2292:3;2288:12;2281:19;;2086:220;;;:::o;2312:366::-;2454:3;2475:67;2539:2;2534:3;2475:67;:::i;:::-;2468:74;;2551:93;2640:3;2551:93;:::i;:::-;2669:2;2664:3;2660:12;2653:19;;2458:220;;;:::o;2684:366::-;2826:3;2847:67;2911:2;2906:3;2847:67;:::i;:::-;2840:74;;2923:93;3012:3;2923:93;:::i;:::-;3041:2;3036:3;3032:12;3025:19;;2830:220;;;:::o;3056:366::-;3198:3;3219:67;3283:2;3278:3;3219:67;:::i;:::-;3212:74;;3295:93;3384:3;3295:93;:::i;:::-;3413:2;3408:3;3404:12;3397:19;;3202:220;;;:::o;3428:366::-;3570:3;3591:67;3655:2;3650:3;3591:67;:::i;:::-;3584:74;;3667:93;3756:3;3667:93;:::i;:::-;3785:2;3780:3;3776:12;3769:19;;3574:220;;;:::o;3800:118::-;3887:24;3905:5;3887:24;:::i;:::-;3882:3;3875:37;3865:53;;:::o;3924:222::-;4017:4;4055:2;4044:9;4040:18;4032:26;;4068:71;4136:1;4125:9;4121:17;4112:6;4068:71;:::i;:::-;4022:124;;;;:::o;4152:222::-;4245:4;4283:2;4272:9;4268:18;4260:26;;4296:71;4364:1;4353:9;4349:17;4340:6;4296:71;:::i;:::-;4250:124;;;;:::o;4380:332::-;4501:4;4539:2;4528:9;4524:18;4516:26;;4552:71;4620:1;4609:9;4605:17;4596:6;4552:71;:::i;:::-;4633:72;4701:2;4690:9;4686:18;4677:6;4633:72;:::i;:::-;4506:206;;;;;:::o;4718:419::-;4884:4;4922:2;4911:9;4907:18;4899:26;;4971:9;4965:4;4961:20;4957:1;4946:9;4942:17;4935:47;4999:131;5125:4;4999:131;:::i;:::-;4991:139;;4889:248;;;:::o;5143:419::-;5309:4;5347:2;5336:9;5332:18;5324:26;;5396:9;5390:4;5386:20;5382:1;5371:9;5367:17;5360:47;5424:131;5550:4;5424:131;:::i;:::-;5416:139;;5314:248;;;:::o;5568:419::-;5734:4;5772:2;5761:9;5757:18;5749:26;;5821:9;5815:4;5811:20;5807:1;5796:9;5792:17;5785:47;5849:131;5975:4;5849:131;:::i;:::-;5841:139;;5739:248;;;:::o;5993:419::-;6159:4;6197:2;6186:9;6182:18;6174:26;;6246:9;6240:4;6236:20;6232:1;6221:9;6217:17;6210:47;6274:131;6400:4;6274:131;:::i;:::-;6266:139;;6164:248;;;:::o;6418:419::-;6584:4;6622:2;6611:9;6607:18;6599:26;;6671:9;6665:4;6661:20;6657:1;6646:9;6642:17;6635:47;6699:131;6825:4;6699:131;:::i;:::-;6691:139;;6589:248;;;:::o;6843:419::-;7009:4;7047:2;7036:9;7032:18;7024:26;;7096:9;7090:4;7086:20;7082:1;7071:9;7067:17;7060:47;7124:131;7250:4;7124:131;:::i;:::-;7116:139;;7014:248;;;:::o;7268:419::-;7434:4;7472:2;7461:9;7457:18;7449:26;;7521:9;7515:4;7511:20;7507:1;7496:9;7492:17;7485:47;7549:131;7675:4;7549:131;:::i;:::-;7541:139;;7439:248;;;:::o;7693:222::-;7786:4;7824:2;7813:9;7809:18;7801:26;;7837:71;7905:1;7894:9;7890:17;7881:6;7837:71;:::i;:::-;7791:124;;;;:::o;7921:541::-;8092:4;8130:3;8119:9;8115:19;8107:27;;8144:71;8212:1;8201:9;8197:17;8188:6;8144:71;:::i;:::-;8225:66;8287:2;8276:9;8272:18;8263:6;8225:66;:::i;:::-;8301:72;8369:2;8358:9;8354:18;8345:6;8301:72;:::i;:::-;8383;8451:2;8440:9;8436:18;8427:6;8383:72;:::i;:::-;8097:365;;;;;;;:::o;8468:169::-;8552:11;8586:6;8581:3;8574:19;8626:4;8621:3;8617:14;8602:29;;8564:73;;;;:::o;8643:305::-;8683:3;8702:20;8720:1;8702:20;:::i;:::-;8697:25;;8736:20;8754:1;8736:20;:::i;:::-;8731:25;;8890:1;8822:66;8818:74;8815:1;8812:81;8809:2;;;8896:18;;:::i;:::-;8809:2;8940:1;8937;8933:9;8926:16;;8687:261;;;;:::o;8954:96::-;8991:7;9020:24;9038:5;9020:24;:::i;:::-;9009:35;;8999:51;;;:::o;9056:90::-;9090:7;9133:5;9126:13;9119:21;9108:32;;9098:48;;;:::o;9152:77::-;9189:7;9218:5;9207:16;;9197:32;;;:::o;9235:126::-;9272:7;9312:42;9305:5;9301:54;9290:65;;9280:81;;;:::o;9367:77::-;9404:7;9433:5;9422:16;;9412:32;;;:::o;9450:233::-;9489:3;9512:24;9530:5;9512:24;:::i;:::-;9503:33;;9558:66;9551:5;9548:77;9545:2;;;9628:18;;:::i;:::-;9545:2;9675:1;9668:5;9664:13;9657:20;;9493:190;;;:::o;9689:180::-;9737:77;9734:1;9727:88;9834:4;9831:1;9824:15;9858:4;9855:1;9848:15;9875:170;10015:22;10011:1;10003:6;9999:14;9992:46;9981:64;:::o;10051:164::-;10191:16;10187:1;10179:6;10175:14;10168:40;10157:58;:::o;10221:168::-;10361:20;10357:1;10349:6;10345:14;10338:44;10327:62;:::o;10395:227::-;10535:34;10531:1;10523:6;10519:14;10512:58;10604:10;10599:2;10591:6;10587:15;10580:35;10501:121;:::o;10628:175::-;10768:27;10764:1;10756:6;10752:14;10745:51;10734:69;:::o;10809:174::-;10949:26;10945:1;10937:6;10933:14;10926:50;10915:68;:::o;10989:180::-;11129:32;11125:1;11117:6;11113:14;11106:56;11095:74;:::o;11175:122::-;11248:24;11266:5;11248:24;:::i;:::-;11241:5;11238:35;11228:2;;11287:1;11284;11277:12;11228:2;11218:79;:::o;11303:122::-;11376:24;11394:5;11376:24;:::i;:::-;11369:5;11366:35;11356:2;;11415:1;11412;11405:12;11356:2;11346:79;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "847600",
"executionCost": "infinite",
"totalCost": "infinite"
},
"external": {
"chairperson()": "1256",
"delegate(address)": "infinite",
"giveRightToVote(address)": "23325",
"proposals(uint256)": "infinite",
"vote(uint256)": "infinite",
"voters(address)": "infinite",
"winnerName()": "infinite",
"winningProposal()": "infinite"
}
},
"methodIdentifiers": {
"chairperson()": "2e4176cf",
"delegate(address)": "5c19a95c",
"giveRightToVote(address)": "9e7b8d61",
"proposals(uint256)": "013cf08b",
"vote(uint256)": "0121b93f",
"voters(address)": "a3ec138d",
"winnerName()": "e2ba53f0",
"winningProposal()": "609ff1bd"
}
},
"abi": [
{
"inputs": [
{
"internalType": "bytes32[]",
"name": "proposalNames",
"type": "bytes32[]"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "chairperson",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
}
],
"name": "delegate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "voter",
"type": "address"
}
],
"name": "giveRightToVote",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "proposals",
"outputs": [
{
"internalType": "bytes32",
"name": "name",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "voteCount",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposal",
"type": "uint256"
}
],
"name": "vote",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "voters",
"outputs": [
{
"internalType": "uint256",
"name": "weight",
"type": "uint256"
},
{
"internalType": "bool",
"name": "voted",
"type": "bool"
},
{
"internalType": "address",
"name": "delegate",
"type": "address"
},
{
"internalType": "uint256",
"name": "vote",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "winnerName",
"outputs": [
{
"internalType": "bytes32",
"name": "winnerName_",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "winningProposal",
"outputs": [
{
"internalType": "uint256",
"name": "winningProposal_",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.4+commit.c7e474f2"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "bytes32[]",
"name": "proposalNames",
"type": "bytes32[]"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "chairperson",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
}
],
"name": "delegate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "voter",
"type": "address"
}
],
"name": "giveRightToVote",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "proposals",
"outputs": [
{
"internalType": "bytes32",
"name": "name",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "voteCount",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposal",
"type": "uint256"
}
],
"name": "vote",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "voters",
"outputs": [
{
"internalType": "uint256",
"name": "weight",
"type": "uint256"
},
{
"internalType": "bool",
"name": "voted",
"type": "bool"
},
{
"internalType": "address",
"name": "delegate",
"type": "address"
},
{
"internalType": "uint256",
"name": "vote",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "winnerName",
"outputs": [
{
"internalType": "bytes32",
"name": "winnerName_",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "winningProposal",
"outputs": [
{
"internalType": "uint256",
"name": "winningProposal_",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
}
],
"devdoc": {
"details": "Implements voting process along with vote delegation",
"kind": "dev",
"methods": {
"constructor": {
"details": "Create a new ballot to choose one of 'proposalNames'.",
"params": {
"proposalNames": "names of proposals"
}
},
"delegate(address)": {
"details": "Delegate your vote to the voter 'to'.",
"params": {
"to": "address to which vote is delegated"
}
},
"giveRightToVote(address)": {
"details": "Give 'voter' the right to vote on this ballot. May only be called by 'chairperson'.",
"params": {
"voter": "address of voter"
}
},
"vote(uint256)": {
"details": "Give your vote (including votes delegated to you) to proposal 'proposals[proposal].name'.",
"params": {
"proposal": "index of proposal in the proposals array"
}
},
"winnerName()": {
"details": "Calls winningProposal() function to get the index of the winner contained in the proposals array and then",
"returns": {
"winnerName_": "the name of the winner"
}
},
"winningProposal()": {
"details": "Computes the winning proposal taking all previous votes into account.",
"returns": {
"winningProposal_": "index of winning proposal in the proposals array"
}
}
},
"title": "Ballot",
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/ballot.sol": "Ballot"
},
"evmVersion": "istanbul",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/ballot.sol": {
"keccak256": "0x24201196abe31cfcc3bffa88cb607ed6903b382bdccc84ed36e4c942438ba803",
"license": "GPL-3.0",
"urls": [
"bzz-raw://e193faf8fbaca8b607be06eea665c5f53ea241b948a352c3bc353713c2c1e49e",
"dweb:/ipfs/QmPSepDbLc6NZ7HMKZ8TPgNoeqQoi73DebrwH1BYsR7Rzi"
]
}
},
"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": {
"generatedSources": [],
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50610988806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063991a27d61161005b578063991a27d6146101125780639e26811914610142578063a1680b9d14610172578063f21fa7ab146101a25761007d565b8063069bab52146100825780631b9da2ae146100b257806347ad5e3c146100e2575b600080fd5b61009c600480360381019061009791906105ef565b6101d2565b6040516100a991906106e9565b60405180910390f35b6100cc60048036038101906100c79190610618565b610227565b6040516100d991906106ce565b60405180910390f35b6100fc60048036038101906100f79190610618565b6102c4565b60405161010991906106ce565b60405180910390f35b61012c600480360381019061012791906105b3565b61030e565b60405161013991906106ce565b60405180910390f35b61015c6004803603810190610157919061058a565b610377565b6040516101699190610704565b60405180910390f35b61018c60048036038101906101879190610618565b6104d6565b60405161019991906106e9565b60405180910390f35b6101bc60048036038101906101b79190610618565b6104e3565b6040516101c991906106ce565b60405180910390f35b6000600260ff16827effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169050919050565b60008060018360f01c61023a9190610773565b8360f01c1661ffff1614610283576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027a90610726565b60405180910390fd5b600060f01b8284167dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156102b95760006102bc565b60015b905092915050565b6000808284169050600060f01b817dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614610302576001915050610308565b60009150505b92915050565b60008061031a84610377565b9050600060a05190506000847effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916821660001c90508460f81c60ff168114156103695760019350505050610371565b600093505050505b92915050565b60606000600267ffffffffffffffff8111156103bc577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156103ee5781602001600182028036833780820191505090505b50905060ff60f81b81600081518110610430577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060f760f81b8160018151811061049e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080915050919050565b6000818318905092915050565b6000808284169050827dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561053f576001915050610545565b60009150505b92915050565b60008135905061055a8161090d565b92915050565b60008135905061056f81610924565b92915050565b6000813590506105848161093b565b92915050565b60006020828403121561059c57600080fd5b60006105aa8482850161054b565b91505092915050565b600080604083850312156105c657600080fd5b60006105d48582860161054b565b92505060206105e585828601610560565b9150509250929050565b60006020828403121561060157600080fd5b600061060f84828501610560565b91505092915050565b6000806040838503121561062b57600080fd5b600061063985828601610575565b925050602061064a85828601610575565b9150509250929050565b61065d816107b9565b82525050565b61066c816107f1565b82525050565b600061067d82610746565b6106878185610751565b935061069781856020860161084b565b6106a0816108ad565b840191505092915050565b60006106b8602883610762565b91506106c3826108be565b604082019050919050565b60006020820190506106e36000830184610654565b92915050565b60006020820190506106fe6000830184610663565b92915050565b6000602082019050818103600083015261071e8184610672565b905092915050565b6000602082019050818103600083015261073f816106ab565b9050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061077e8261081d565b91506107898361081d565b92508282101561079c5761079b61087e565b5b828203905092915050565b60006107b28261082b565b9050919050565b60008115159050919050565b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b60007fffff00000000000000000000000000000000000000000000000000000000000082169050919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60005b8381101561086957808201518184015260208101905061084e565b83811115610878576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000601f19601f8301169050919050565b7f547279696e6720746f20636865636b206d6f7265207468616e206f6e6520706560008201527f726d697373696f6e000000000000000000000000000000000000000000000000602082015250565b610916816107a7565b811461092157600080fd5b50565b61092d816107c5565b811461093857600080fd5b50565b610944816107f1565b811461094f57600080fd5b5056fea264697066735822122044fb86f96b4070244ce76fc7738e048bfa6afc95dc8cb43734855f5550821b7564736f6c63430008010033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x988 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 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x991A27D6 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x991A27D6 EQ PUSH2 0x112 JUMPI DUP1 PUSH4 0x9E268119 EQ PUSH2 0x142 JUMPI DUP1 PUSH4 0xA1680B9D EQ PUSH2 0x172 JUMPI DUP1 PUSH4 0xF21FA7AB EQ PUSH2 0x1A2 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x69BAB52 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x1B9DA2AE EQ PUSH2 0xB2 JUMPI DUP1 PUSH4 0x47AD5E3C EQ PUSH2 0xE2 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x97 SWAP2 SWAP1 PUSH2 0x5EF JUMP JUMPDEST PUSH2 0x1D2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0x6E9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xCC PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xC7 SWAP2 SWAP1 PUSH2 0x618 JUMP JUMPDEST PUSH2 0x227 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD9 SWAP2 SWAP1 PUSH2 0x6CE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xFC PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xF7 SWAP2 SWAP1 PUSH2 0x618 JUMP JUMPDEST PUSH2 0x2C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x109 SWAP2 SWAP1 PUSH2 0x6CE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x12C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x127 SWAP2 SWAP1 PUSH2 0x5B3 JUMP JUMPDEST PUSH2 0x30E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x139 SWAP2 SWAP1 PUSH2 0x6CE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x15C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x157 SWAP2 SWAP1 PUSH2 0x58A JUMP JUMPDEST PUSH2 0x377 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x169 SWAP2 SWAP1 PUSH2 0x704 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x18C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x187 SWAP2 SWAP1 PUSH2 0x618 JUMP JUMPDEST PUSH2 0x4D6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x199 SWAP2 SWAP1 PUSH2 0x6E9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1BC PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1B7 SWAP2 SWAP1 PUSH2 0x618 JUMP JUMPDEST PUSH2 0x4E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C9 SWAP2 SWAP1 PUSH2 0x6CE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x2 PUSH1 0xFF AND DUP3 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SHL PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 DUP4 PUSH1 0xF0 SHR PUSH2 0x23A SWAP2 SWAP1 PUSH2 0x773 JUMP JUMPDEST DUP4 PUSH1 0xF0 SHR AND PUSH2 0xFFFF AND EQ PUSH2 0x283 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x27A SWAP1 PUSH2 0x726 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xF0 SHL DUP3 DUP5 AND PUSH30 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ ISZERO PUSH2 0x2B9 JUMPI PUSH1 0x0 PUSH2 0x2BC JUMP JUMPDEST PUSH1 0x1 JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 AND SWAP1 POP PUSH1 0x0 PUSH1 0xF0 SHL DUP2 PUSH30 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ PUSH2 0x302 JUMPI PUSH1 0x1 SWAP2 POP POP PUSH2 0x308 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x31A DUP5 PUSH2 0x377 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0xA0 MLOAD SWAP1 POP PUSH1 0x0 DUP5 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 AND PUSH1 0x0 SHR SWAP1 POP DUP5 PUSH1 0xF8 SHR PUSH1 0xFF AND DUP2 EQ ISZERO PUSH2 0x369 JUMPI PUSH1 0x1 SWAP4 POP POP POP POP PUSH2 0x371 JUMP JUMPDEST PUSH1 0x0 SWAP4 POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3BC JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3EE JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0xFF PUSH1 0xF8 SHL DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x430 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xF7 PUSH1 0xF8 SHL DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x49E JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP DUP1 SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 XOR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 AND SWAP1 POP DUP3 PUSH30 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 PUSH30 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ ISZERO PUSH2 0x53F JUMPI PUSH1 0x1 SWAP2 POP POP PUSH2 0x545 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x55A DUP2 PUSH2 0x90D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x56F DUP2 PUSH2 0x924 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x584 DUP2 PUSH2 0x93B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x59C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x5AA DUP5 DUP3 DUP6 ADD PUSH2 0x54B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x5D4 DUP6 DUP3 DUP7 ADD PUSH2 0x54B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x5E5 DUP6 DUP3 DUP7 ADD PUSH2 0x560 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x601 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x60F DUP5 DUP3 DUP6 ADD PUSH2 0x560 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x62B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x639 DUP6 DUP3 DUP7 ADD PUSH2 0x575 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x64A DUP6 DUP3 DUP7 ADD PUSH2 0x575 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x65D DUP2 PUSH2 0x7B9 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x66C DUP2 PUSH2 0x7F1 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x67D DUP3 PUSH2 0x746 JUMP JUMPDEST PUSH2 0x687 DUP2 DUP6 PUSH2 0x751 JUMP JUMPDEST SWAP4 POP PUSH2 0x697 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x84B JUMP JUMPDEST PUSH2 0x6A0 DUP2 PUSH2 0x8AD JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6B8 PUSH1 0x28 DUP4 PUSH2 0x762 JUMP JUMPDEST SWAP2 POP PUSH2 0x6C3 DUP3 PUSH2 0x8BE JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x6E3 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x654 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x6FE PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x663 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x71E DUP2 DUP5 PUSH2 0x672 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x73F DUP2 PUSH2 0x6AB JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x77E DUP3 PUSH2 0x81D JUMP JUMPDEST SWAP2 POP PUSH2 0x789 DUP4 PUSH2 0x81D JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0x79C JUMPI PUSH2 0x79B PUSH2 0x87E JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7B2 DUP3 PUSH2 0x82B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFF000000000000000000000000000000000000000000000000000000000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x869 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x84E JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x878 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x547279696E6720746F20636865636B206D6F7265207468616E206F6E65207065 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x726D697373696F6E000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH2 0x916 DUP2 PUSH2 0x7A7 JUMP JUMPDEST DUP2 EQ PUSH2 0x921 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x92D DUP2 PUSH2 0x7C5 JUMP JUMPDEST DUP2 EQ PUSH2 0x938 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x944 DUP2 PUSH2 0x7F1 JUMP JUMPDEST DUP2 EQ PUSH2 0x94F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DIFFICULTY 0xFB DUP7 0xF9 PUSH12 0x4070244CE76FC7738E048BFA PUSH11 0xFC95DC8CB43734855F5550 DUP3 SHL PUSH22 0x64736F6C634300080100330000000000000000000000 ",
"sourceMap": "64:2311:0:-:0;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:6545:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "59:87:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "69:29:1",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "91:6:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "78:12:1"
},
"nodeType": "YulFunctionCall",
"src": "78:20:1"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "69:5:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "134:5:1"
}
],
"functionName": {
"name": "validator_revert_t_address",
"nodeType": "YulIdentifier",
"src": "107:26:1"
},
"nodeType": "YulFunctionCall",
"src": "107:33:1"
},
"nodeType": "YulExpressionStatement",
"src": "107:33:1"
}
]
},
"name": "abi_decode_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "37:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "45:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "53:5:1",
"type": ""
}
],
"src": "7:139:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "203:86:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "213:29:1",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "235:6:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "222:12:1"
},
"nodeType": "YulFunctionCall",
"src": "222:20:1"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "213:5:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "277:5:1"
}
],
"functionName": {
"name": "validator_revert_t_bytes1",
"nodeType": "YulIdentifier",
"src": "251:25:1"
},
"nodeType": "YulFunctionCall",
"src": "251:32:1"
},
"nodeType": "YulExpressionStatement",
"src": "251:32:1"
}
]
},
"name": "abi_decode_t_bytes1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "181:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "189:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "197:5:1",
"type": ""
}
],
"src": "152:137:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "346:86:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "356:29:1",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "378:6:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "365:12:1"
},
"nodeType": "YulFunctionCall",
"src": "365:20:1"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "356:5:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "420:5:1"
}
],
"functionName": {
"name": "validator_revert_t_bytes2",
"nodeType": "YulIdentifier",
"src": "394:25:1"
},
"nodeType": "YulFunctionCall",
"src": "394:32:1"
},
"nodeType": "YulExpressionStatement",
"src": "394:32:1"
}
]
},
"name": "abi_decode_t_bytes2",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "324:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "332:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "340:5:1",
"type": ""
}
],
"src": "295:137:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "504:196:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "550:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "559:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "562:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "552:6:1"
},
"nodeType": "YulFunctionCall",
"src": "552:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "552:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "525:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "534:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "521:3:1"
},
"nodeType": "YulFunctionCall",
"src": "521:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "546:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "517:3:1"
},
"nodeType": "YulFunctionCall",
"src": "517:32:1"
},
"nodeType": "YulIf",
"src": "514:2:1"
},
{
"nodeType": "YulBlock",
"src": "576:117:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "591:15:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "605:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "595:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "620:63:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "655:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "666:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "651:3:1"
},
"nodeType": "YulFunctionCall",
"src": "651:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "675:7:1"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nodeType": "YulIdentifier",
"src": "630:20:1"
},
"nodeType": "YulFunctionCall",
"src": "630:53:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "620:6:1"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "474:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "485:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "497:6:1",
"type": ""
}
],
"src": "438:262:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "788:323:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "834:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "843:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "846:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "836:6:1"
},
"nodeType": "YulFunctionCall",
"src": "836:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "836:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "809:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "818:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "805:3:1"
},
"nodeType": "YulFunctionCall",
"src": "805:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "830:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "801:3:1"
},
"nodeType": "YulFunctionCall",
"src": "801:32:1"
},
"nodeType": "YulIf",
"src": "798:2:1"
},
{
"nodeType": "YulBlock",
"src": "860:117:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "875:15:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "889:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "879:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "904:63:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "939:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "950:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "935:3:1"
},
"nodeType": "YulFunctionCall",
"src": "935:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "959:7:1"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nodeType": "YulIdentifier",
"src": "914:20:1"
},
"nodeType": "YulFunctionCall",
"src": "914:53:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "904:6:1"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "987:117:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1002:16:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "1016:2:1",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1006:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "1032:62:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1066:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1077:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1062:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1062:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1086:7:1"
}
],
"functionName": {
"name": "abi_decode_t_bytes1",
"nodeType": "YulIdentifier",
"src": "1042:19:1"
},
"nodeType": "YulFunctionCall",
"src": "1042:52:1"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "1032:6:1"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_bytes1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "750:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "761:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "773:6:1",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "781:6:1",
"type": ""
}
],
"src": "706:405:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1182:195:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1228:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1237:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1240:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1230:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1230:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "1230:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1203:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1212:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1199:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1199:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1224:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "1195:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1195:32:1"
},
"nodeType": "YulIf",
"src": "1192:2:1"
},
{
"nodeType": "YulBlock",
"src": "1254:116:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1269:15:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "1283:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1273:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "1298:62:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1332:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1343:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1328:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1328:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1352:7:1"
}
],
"functionName": {
"name": "abi_decode_t_bytes1",
"nodeType": "YulIdentifier",
"src": "1308:19:1"
},
"nodeType": "YulFunctionCall",
"src": "1308:52:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1298:6:1"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_bytes1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1152:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "1163:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1175:6:1",
"type": ""
}
],
"src": "1117:260:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1464:322:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1510:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1519:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1522:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1512:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1512:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "1512:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1485:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1494:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1481:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1481:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1506:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "1477:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1477:32:1"
},
"nodeType": "YulIf",
"src": "1474:2:1"
},
{
"nodeType": "YulBlock",
"src": "1536:116:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1551:15:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "1565:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1555:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "1580:62:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1614:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1625:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1610:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1610:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1634:7:1"
}
],
"functionName": {
"name": "abi_decode_t_bytes2",
"nodeType": "YulIdentifier",
"src": "1590:19:1"
},
"nodeType": "YulFunctionCall",
"src": "1590:52:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1580:6:1"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "1662:117:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1677:16:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "1691:2:1",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1681:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "1707:62:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1741:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1752:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1737:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1737:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1761:7:1"
}
],
"functionName": {
"name": "abi_decode_t_bytes2",
"nodeType": "YulIdentifier",
"src": "1717:19:1"
},
"nodeType": "YulFunctionCall",
"src": "1717:52:1"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "1707:6:1"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_bytes2t_bytes2",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1426:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "1437:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1449:6:1",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "1457:6:1",
"type": ""
}
],
"src": "1383:403:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1851:50:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1868:3:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1888:5:1"
}
],
"functionName": {
"name": "cleanup_t_bool",
"nodeType": "YulIdentifier",
"src": "1873:14:1"
},
"nodeType": "YulFunctionCall",
"src": "1873:21:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1861:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1861:34:1"
},
"nodeType": "YulExpressionStatement",
"src": "1861:34:1"
}
]
},
"name": "abi_encode_t_bool_to_t_bool_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1839:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "1846:3:1",
"type": ""
}
],
"src": "1792:109:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1970:52:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1987:3:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2009:5:1"
}
],
"functionName": {
"name": "cleanup_t_bytes2",
"nodeType": "YulIdentifier",
"src": "1992:16:1"
},
"nodeType": "YulFunctionCall",
"src": "1992:23:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1980:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1980:36:1"
},
"nodeType": "YulExpressionStatement",
"src": "1980:36:1"
}
]
},
"name": "abi_encode_t_bytes2_to_t_bytes2_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1958:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "1965:3:1",
"type": ""
}
],
"src": "1907:115:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2118:270:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2128:52:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2174:5:1"
}
],
"functionName": {
"name": "array_length_t_bytes_memory_ptr",
"nodeType": "YulIdentifier",
"src": "2142:31:1"
},
"nodeType": "YulFunctionCall",
"src": "2142:38:1"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "2132:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "2189:77:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2254:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2259:6:1"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "2196:57:1"
},
"nodeType": "YulFunctionCall",
"src": "2196:70:1"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2189:3:1"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2301:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2308:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2297:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2297:16:1"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2315:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2320:6:1"
}
],
"functionName": {
"name": "copy_memory_to_memory",
"nodeType": "YulIdentifier",
"src": "2275:21:1"
},
"nodeType": "YulFunctionCall",
"src": "2275:52:1"
},
"nodeType": "YulExpressionStatement",
"src": "2275:52:1"
},
{
"nodeType": "YulAssignment",
"src": "2336:46:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2347:3:1"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2374:6:1"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nodeType": "YulIdentifier",
"src": "2352:21:1"
},
"nodeType": "YulFunctionCall",
"src": "2352:29:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2343:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2343:39:1"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "2336:3:1"
}
]
}
]
},
"name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2099:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "2106:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "2114:3:1",
"type": ""
}
],
"src": "2028:360:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2540:220:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2550:74:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2616:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2621:2:1",
"type": "",
"value": "40"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "2557:58:1"
},
"nodeType": "YulFunctionCall",
"src": "2557:67:1"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2550:3:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2722:3:1"
}
],
"functionName": {
"name": "store_literal_in_memory_9f5d0990b1e1a2a396454d5e10e3706fc67b96dc3df017b23190f90247f5d03e",
"nodeType": "YulIdentifier",
"src": "2633:88:1"
},
"nodeType": "YulFunctionCall",
"src": "2633:93:1"
},
"nodeType": "YulExpressionStatement",
"src": "2633:93:1"
},
{
"nodeType": "YulAssignment",
"src": "2735:19:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2746:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2751:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2742:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2742:12:1"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "2735:3:1"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_9f5d0990b1e1a2a396454d5e10e3706fc67b96dc3df017b23190f90247f5d03e_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "2528:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "2536:3:1",
"type": ""
}
],
"src": "2394:366:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2858:118:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2868:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2880:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2891:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2876:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2876:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "2868:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2942:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2955:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2966:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2951:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2951:17:1"
}
],
"functionName": {
"name": "abi_encode_t_bool_to_t_bool_fromStack",
"nodeType": "YulIdentifier",
"src": "2904:37:1"
},
"nodeType": "YulFunctionCall",
"src": "2904:65:1"
},
"nodeType": "YulExpressionStatement",
"src": "2904:65:1"
}
]
},
"name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "2830:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "2842:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "2853:4:1",
"type": ""
}
],
"src": "2766:210:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3078:122:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3088:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3100:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3111:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3096:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3096:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "3088:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "3166:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3179:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3190:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3175:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3175:17:1"
}
],
"functionName": {
"name": "abi_encode_t_bytes2_to_t_bytes2_fromStack",
"nodeType": "YulIdentifier",
"src": "3124:41:1"
},
"nodeType": "YulFunctionCall",
"src": "3124:69:1"
},
"nodeType": "YulExpressionStatement",
"src": "3124:69:1"
}
]
},
"name": "abi_encode_tuple_t_bytes2__to_t_bytes2__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "3050:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "3062:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "3073:4:1",
"type": ""
}
],
"src": "2982:218:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3322:193:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3332:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3344:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3355:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3340:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3340:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "3332:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3379:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3390:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3375:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3375:17:1"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "3398:4:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3404:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "3394:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3394:20:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3368:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3368:47:1"
},
"nodeType": "YulExpressionStatement",
"src": "3368:47:1"
},
{
"nodeType": "YulAssignment",
"src": "3424:84:1",
"value": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "3494:6:1"
},
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "3503:4:1"
}
],
"functionName": {
"name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "3432:61:1"
},
"nodeType": "YulFunctionCall",
"src": "3432:76:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "3424:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "3294:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "3306:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "3317:4:1",
"type": ""
}
],
"src": "3206:309:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3692:248:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3702:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3714:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3725:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3710:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3710:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "3702:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3749:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3760:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3745:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3745:17:1"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "3768:4:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3774:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "3764:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3764:20:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3738:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3738:47:1"
},
"nodeType": "YulExpressionStatement",
"src": "3738:47:1"
},
{
"nodeType": "YulAssignment",
"src": "3794:139:1",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "3928:4:1"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_9f5d0990b1e1a2a396454d5e10e3706fc67b96dc3df017b23190f90247f5d03e_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "3802:124:1"
},
"nodeType": "YulFunctionCall",
"src": "3802:131:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "3794:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_9f5d0990b1e1a2a396454d5e10e3706fc67b96dc3df017b23190f90247f5d03e__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "3672:9:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "3687:4:1",
"type": ""
}
],
"src": "3521:419:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4004:40:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4015:22:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4031:5:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "4025:5:1"
},
"nodeType": "YulFunctionCall",
"src": "4025:12:1"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4015:6:1"
}
]
}
]
},
"name": "array_length_t_bytes_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3987:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "3997:6:1",
"type": ""
}
],
"src": "3946:98:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4145:73:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4162:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4167:6:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4155:6:1"
},
"nodeType": "YulFunctionCall",
"src": "4155:19:1"
},
"nodeType": "YulExpressionStatement",
"src": "4155:19:1"
},
{
"nodeType": "YulAssignment",
"src": "4183:29:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4202:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4207:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4198:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4198:14:1"
},
"variableNames": [
{
"name": "updated_pos",
"nodeType": "YulIdentifier",
"src": "4183:11:1"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "4117:3:1",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "4122:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nodeType": "YulTypedName",
"src": "4133:11:1",
"type": ""
}
],
"src": "4050:168:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4320:73:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4337:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4342:6:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4330:6:1"
},
"nodeType": "YulFunctionCall",
"src": "4330:19:1"
},
"nodeType": "YulExpressionStatement",
"src": "4330:19:1"
},
{
"nodeType": "YulAssignment",
"src": "4358:29:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4377:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4382:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4373:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4373:14:1"
},
"variableNames": [
{
"name": "updated_pos",
"nodeType": "YulIdentifier",
"src": "4358:11:1"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "4292:3:1",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "4297:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nodeType": "YulTypedName",
"src": "4308:11:1",
"type": ""
}
],
"src": "4224:169:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4443:144:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4453:24:1",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "4475:1:1"
}
],
"functionName": {
"name": "cleanup_t_uint16",
"nodeType": "YulIdentifier",
"src": "4458:16:1"
},
"nodeType": "YulFunctionCall",
"src": "4458:19:1"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "4453:1:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "4486:24:1",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "4508:1:1"
}
],
"functionName": {
"name": "cleanup_t_uint16",
"nodeType": "YulIdentifier",
"src": "4491:16:1"
},
"nodeType": "YulFunctionCall",
"src": "4491:19:1"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "4486:1:1"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "4532:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "4534:16:1"
},
"nodeType": "YulFunctionCall",
"src": "4534:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "4534:18:1"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "4526:1:1"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "4529:1:1"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "4523:2:1"
},
"nodeType": "YulFunctionCall",
"src": "4523:8:1"
},
"nodeType": "YulIf",
"src": "4520:2:1"
},
{
"nodeType": "YulAssignment",
"src": "4564:17:1",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "4576:1:1"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "4579:1:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "4572:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4572:9:1"
},
"variableNames": [
{
"name": "diff",
"nodeType": "YulIdentifier",
"src": "4564:4:1"
}
]
}
]
},
"name": "checked_sub_t_uint16",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "4429:1:1",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "4432:1:1",
"type": ""
}
],
"returnVariables": [
{
"name": "diff",
"nodeType": "YulTypedName",
"src": "4438:4:1",
"type": ""
}
],
"src": "4399:188:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4638:51:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4648:35:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4677:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "4659:17:1"
},
"nodeType": "YulFunctionCall",
"src": "4659:24:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "4648:7:1"
}
]
}
]
},
"name": "cleanup_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4620:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "4630:7:1",
"type": ""
}
],
"src": "4593:96:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4737:48:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4747:32:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4772:5:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "4765:6:1"
},
"nodeType": "YulFunctionCall",
"src": "4765:13:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "4758:6:1"
},
"nodeType": "YulFunctionCall",
"src": "4758:21:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "4747:7:1"
}
]
}
]
},
"name": "cleanup_t_bool",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4719:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "4729:7:1",
"type": ""
}
],
"src": "4695:90:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4835:105:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4845:89:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4860:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4867:66:1",
"type": "",
"value": "0xff00000000000000000000000000000000000000000000000000000000000000"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "4856:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4856:78:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "4845:7:1"
}
]
}
]
},
"name": "cleanup_t_bytes1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4817:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "4827:7:1",
"type": ""
}
],
"src": "4791:149:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4990:105:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5000:89:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "5015:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5022:66:1",
"type": "",
"value": "0xffff000000000000000000000000000000000000000000000000000000000000"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "5011:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5011:78:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "5000:7:1"
}
]
}
]
},
"name": "cleanup_t_bytes2",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4972:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "4982:7:1",
"type": ""
}
],
"src": "4946:149:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5145:45:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5155:29:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "5170:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5177:6:1",
"type": "",
"value": "0xffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "5166:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5166:18:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "5155:7:1"
}
]
}
]
},
"name": "cleanup_t_uint16",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "5127:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "5137:7:1",
"type": ""
}
],
"src": "5101:89:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5241:81:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5251:65:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "5266:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5273:42:1",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "5262:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5262:54:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "5251:7:1"
}
]
}
]
},
"name": "cleanup_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "5223:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "5233:7:1",
"type": ""
}
],
"src": "5196:126:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5377:258:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "5387:10:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "5396:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "5391:1:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "5456:63:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "5481:3:1"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "5486:1:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5477:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5477:11:1"
},
{
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "5500:3:1"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "5505:1:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5496:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5496:11:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "5490:5:1"
},
"nodeType": "YulFunctionCall",
"src": "5490:18:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5470:6:1"
},
"nodeType": "YulFunctionCall",
"src": "5470:39:1"
},
"nodeType": "YulExpressionStatement",
"src": "5470:39:1"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "5417:1:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "5420:6:1"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "5414:2:1"
},
"nodeType": "YulFunctionCall",
"src": "5414:13:1"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "5428:19:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5430:15:1",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "5439:1:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5442:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5435:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5435:10:1"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "5430:1:1"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "5410:3:1",
"statements": []
},
"src": "5406:113:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5553:76:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "5603:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "5608:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5599:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5599:16:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5617:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5592:6:1"
},
"nodeType": "YulFunctionCall",
"src": "5592:27:1"
},
"nodeType": "YulExpressionStatement",
"src": "5592:27:1"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "5534:1:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "5537:6:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "5531:2:1"
},
"nodeType": "YulFunctionCall",
"src": "5531:13:1"
},
"nodeType": "YulIf",
"src": "5528:2:1"
}
]
},
"name": "copy_memory_to_memory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "5359:3:1",
"type": ""
},
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "5364:3:1",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "5369:6:1",
"type": ""
}
],
"src": "5328:307:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5669:152:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5686:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5689:77:1",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5679:6:1"
},
"nodeType": "YulFunctionCall",
"src": "5679:88:1"
},
"nodeType": "YulExpressionStatement",
"src": "5679:88:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5783:1:1",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5786:4:1",
"type": "",
"value": "0x11"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5776:6:1"
},
"nodeType": "YulFunctionCall",
"src": "5776:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "5776:15:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5807:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5810:4:1",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "5800:6:1"
},
"nodeType": "YulFunctionCall",
"src": "5800:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "5800:15:1"
}
]
},
"name": "panic_error_0x11",
"nodeType": "YulFunctionDefinition",
"src": "5641:180:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5875:54:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5885:38:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "5903:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5910:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5899:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5899:14:1"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5919:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "5915:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5915:7:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "5895:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5895:28:1"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "5885:6:1"
}
]
}
]
},
"name": "round_up_to_mul_of_32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "5858:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nodeType": "YulTypedName",
"src": "5868:6:1",
"type": ""
}
],
"src": "5827:102:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6041:121:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "6063:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6071:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6059:3:1"
},
"nodeType": "YulFunctionCall",
"src": "6059:14:1"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "6075:34:1",
"type": "",
"value": "Trying to check more than one pe"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6052:6:1"
},
"nodeType": "YulFunctionCall",
"src": "6052:58:1"
},
"nodeType": "YulExpressionStatement",
"src": "6052:58:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "6131:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6139:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6127:3:1"
},
"nodeType": "YulFunctionCall",
"src": "6127:15:1"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "6144:10:1",
"type": "",
"value": "rmission"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6120:6:1"
},
"nodeType": "YulFunctionCall",
"src": "6120:35:1"
},
"nodeType": "YulExpressionStatement",
"src": "6120:35:1"
}
]
},
"name": "store_literal_in_memory_9f5d0990b1e1a2a396454d5e10e3706fc67b96dc3df017b23190f90247f5d03e",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "6033:6:1",
"type": ""
}
],
"src": "5935:227:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6211:79:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "6268:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6277:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6280:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "6270:6:1"
},
"nodeType": "YulFunctionCall",
"src": "6270:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "6270:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "6234:5:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "6259:5:1"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "6241:17:1"
},
"nodeType": "YulFunctionCall",
"src": "6241:24:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "6231:2:1"
},
"nodeType": "YulFunctionCall",
"src": "6231:35:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "6224:6:1"
},
"nodeType": "YulFunctionCall",
"src": "6224:43:1"
},
"nodeType": "YulIf",
"src": "6221:2:1"
}
]
},
"name": "validator_revert_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "6204:5:1",
"type": ""
}
],
"src": "6168:122:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6338:78:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "6394:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6403:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6406:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "6396:6:1"
},
"nodeType": "YulFunctionCall",
"src": "6396:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "6396:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "6361:5:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "6385:5:1"
}
],
"functionName": {
"name": "cleanup_t_bytes1",
"nodeType": "YulIdentifier",
"src": "6368:16:1"
},
"nodeType": "YulFunctionCall",
"src": "6368:23:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "6358:2:1"
},
"nodeType": "YulFunctionCall",
"src": "6358:34:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "6351:6:1"
},
"nodeType": "YulFunctionCall",
"src": "6351:42:1"
},
"nodeType": "YulIf",
"src": "6348:2:1"
}
]
},
"name": "validator_revert_t_bytes1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "6331:5:1",
"type": ""
}
],
"src": "6296:120:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6464:78:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "6520:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6529:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6532:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "6522:6:1"
},
"nodeType": "YulFunctionCall",
"src": "6522:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "6522:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "6487:5:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "6511:5:1"
}
],
"functionName": {
"name": "cleanup_t_bytes2",
"nodeType": "YulIdentifier",
"src": "6494:16:1"
},
"nodeType": "YulFunctionCall",
"src": "6494:23:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "6484:2:1"
},
"nodeType": "YulFunctionCall",
"src": "6484:34:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "6477:6:1"
},
"nodeType": "YulFunctionCall",
"src": "6477:42:1"
},
"nodeType": "YulIf",
"src": "6474:2:1"
}
]
},
"name": "validator_revert_t_bytes2",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "6457:5:1",
"type": ""
}
],
"src": "6422:120:1"
}
]
},
"contents": "{\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_t_bytes1(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes1(value)\n }\n\n function abi_decode_t_bytes2(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes2(value)\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_bytes1(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_bytes1(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_bytes1(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes1(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_bytes2t_bytes2(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes2(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_bytes2(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_t_bytes2_to_t_bytes2_fromStack(value, pos) {\n mstore(pos, cleanup_t_bytes2(value))\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_t_stringliteral_9f5d0990b1e1a2a396454d5e10e3706fc67b96dc3df017b23190f90247f5d03e_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 40)\n store_literal_in_memory_9f5d0990b1e1a2a396454d5e10e3706fc67b96dc3df017b23190f90247f5d03e(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_bytes2__to_t_bytes2__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bytes2_to_t_bytes2_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value0, tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_9f5d0990b1e1a2a396454d5e10e3706fc67b96dc3df017b23190f90247f5d03e__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_9f5d0990b1e1a2a396454d5e10e3706fc67b96dc3df017b23190f90247f5d03e_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function array_length_t_bytes_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function checked_sub_t_uint16(x, y) -> diff {\n x := cleanup_t_uint16(x)\n y := cleanup_t_uint16(y)\n\n if lt(x, y) { panic_error_0x11() }\n\n diff := sub(x, y)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function cleanup_t_bytes1(value) -> cleaned {\n cleaned := and(value, 0xff00000000000000000000000000000000000000000000000000000000000000)\n }\n\n function cleanup_t_bytes2(value) -> cleaned {\n cleaned := and(value, 0xffff000000000000000000000000000000000000000000000000000000000000)\n }\n\n function cleanup_t_uint16(value) -> cleaned {\n cleaned := and(value, 0xffff)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function copy_memory_to_memory(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n if gt(i, length)\n {\n // clear end\n mstore(add(dst, length), 0)\n }\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function store_literal_in_memory_9f5d0990b1e1a2a396454d5e10e3706fc67b96dc3df017b23190f90247f5d03e(memPtr) {\n\n mstore(add(memPtr, 0), \"Trying to check more than one pe\")\n\n mstore(add(memPtr, 32), \"rmission\")\n\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function validator_revert_t_bytes1(value) {\n if iszero(eq(value, cleanup_t_bytes1(value))) { revert(0, 0) }\n }\n\n function validator_revert_t_bytes2(value) {\n if iszero(eq(value, cleanup_t_bytes2(value))) { revert(0, 0) }\n }\n\n}\n",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "608060405234801561001057600080fd5b506004361061007d5760003560e01c8063991a27d61161005b578063991a27d6146101125780639e26811914610142578063a1680b9d14610172578063f21fa7ab146101a25761007d565b8063069bab52146100825780631b9da2ae146100b257806347ad5e3c146100e2575b600080fd5b61009c600480360381019061009791906105ef565b6101d2565b6040516100a991906106e9565b60405180910390f35b6100cc60048036038101906100c79190610618565b610227565b6040516100d991906106ce565b60405180910390f35b6100fc60048036038101906100f79190610618565b6102c4565b60405161010991906106ce565b60405180910390f35b61012c600480360381019061012791906105b3565b61030e565b60405161013991906106ce565b60405180910390f35b61015c6004803603810190610157919061058a565b610377565b6040516101699190610704565b60405180910390f35b61018c60048036038101906101879190610618565b6104d6565b60405161019991906106e9565b60405180910390f35b6101bc60048036038101906101b79190610618565b6104e3565b6040516101c991906106ce565b60405180910390f35b6000600260ff16827effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169050919050565b60008060018360f01c61023a9190610773565b8360f01c1661ffff1614610283576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027a90610726565b60405180910390fd5b600060f01b8284167dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156102b95760006102bc565b60015b905092915050565b6000808284169050600060f01b817dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614610302576001915050610308565b60009150505b92915050565b60008061031a84610377565b9050600060a05190506000847effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916821660001c90508460f81c60ff168114156103695760019350505050610371565b600093505050505b92915050565b60606000600267ffffffffffffffff8111156103bc577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156103ee5781602001600182028036833780820191505090505b50905060ff60f81b81600081518110610430577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060f760f81b8160018151811061049e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080915050919050565b6000818318905092915050565b6000808284169050827dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561053f576001915050610545565b60009150505b92915050565b60008135905061055a8161090d565b92915050565b60008135905061056f81610924565b92915050565b6000813590506105848161093b565b92915050565b60006020828403121561059c57600080fd5b60006105aa8482850161054b565b91505092915050565b600080604083850312156105c657600080fd5b60006105d48582860161054b565b92505060206105e585828601610560565b9150509250929050565b60006020828403121561060157600080fd5b600061060f84828501610560565b91505092915050565b6000806040838503121561062b57600080fd5b600061063985828601610575565b925050602061064a85828601610575565b9150509250929050565b61065d816107b9565b82525050565b61066c816107f1565b82525050565b600061067d82610746565b6106878185610751565b935061069781856020860161084b565b6106a0816108ad565b840191505092915050565b60006106b8602883610762565b91506106c3826108be565b604082019050919050565b60006020820190506106e36000830184610654565b92915050565b60006020820190506106fe6000830184610663565b92915050565b6000602082019050818103600083015261071e8184610672565b905092915050565b6000602082019050818103600083015261073f816106ab565b9050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061077e8261081d565b91506107898361081d565b92508282101561079c5761079b61087e565b5b828203905092915050565b60006107b28261082b565b9050919050565b60008115159050919050565b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b60007fffff00000000000000000000000000000000000000000000000000000000000082169050919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60005b8381101561086957808201518184015260208101905061084e565b83811115610878576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000601f19601f8301169050919050565b7f547279696e6720746f20636865636b206d6f7265207468616e206f6e6520706560008201527f726d697373696f6e000000000000000000000000000000000000000000000000602082015250565b610916816107a7565b811461092157600080fd5b50565b61092d816107c5565b811461093857600080fd5b50565b610944816107f1565b811461094f57600080fd5b5056fea264697066735822122044fb86f96b4070244ce76fc7738e048bfa6afc95dc8cb43734855f5550821b7564736f6c63430008010033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x991A27D6 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x991A27D6 EQ PUSH2 0x112 JUMPI DUP1 PUSH4 0x9E268119 EQ PUSH2 0x142 JUMPI DUP1 PUSH4 0xA1680B9D EQ PUSH2 0x172 JUMPI DUP1 PUSH4 0xF21FA7AB EQ PUSH2 0x1A2 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x69BAB52 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x1B9DA2AE EQ PUSH2 0xB2 JUMPI DUP1 PUSH4 0x47AD5E3C EQ PUSH2 0xE2 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x97 SWAP2 SWAP1 PUSH2 0x5EF JUMP JUMPDEST PUSH2 0x1D2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0x6E9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xCC PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xC7 SWAP2 SWAP1 PUSH2 0x618 JUMP JUMPDEST PUSH2 0x227 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD9 SWAP2 SWAP1 PUSH2 0x6CE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xFC PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xF7 SWAP2 SWAP1 PUSH2 0x618 JUMP JUMPDEST PUSH2 0x2C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x109 SWAP2 SWAP1 PUSH2 0x6CE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x12C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x127 SWAP2 SWAP1 PUSH2 0x5B3 JUMP JUMPDEST PUSH2 0x30E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x139 SWAP2 SWAP1 PUSH2 0x6CE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x15C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x157 SWAP2 SWAP1 PUSH2 0x58A JUMP JUMPDEST PUSH2 0x377 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x169 SWAP2 SWAP1 PUSH2 0x704 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x18C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x187 SWAP2 SWAP1 PUSH2 0x618 JUMP JUMPDEST PUSH2 0x4D6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x199 SWAP2 SWAP1 PUSH2 0x6E9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1BC PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1B7 SWAP2 SWAP1 PUSH2 0x618 JUMP JUMPDEST PUSH2 0x4E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C9 SWAP2 SWAP1 PUSH2 0x6CE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x2 PUSH1 0xFF AND DUP3 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SHL PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 DUP4 PUSH1 0xF0 SHR PUSH2 0x23A SWAP2 SWAP1 PUSH2 0x773 JUMP JUMPDEST DUP4 PUSH1 0xF0 SHR AND PUSH2 0xFFFF AND EQ PUSH2 0x283 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x27A SWAP1 PUSH2 0x726 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xF0 SHL DUP3 DUP5 AND PUSH30 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ ISZERO PUSH2 0x2B9 JUMPI PUSH1 0x0 PUSH2 0x2BC JUMP JUMPDEST PUSH1 0x1 JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 AND SWAP1 POP PUSH1 0x0 PUSH1 0xF0 SHL DUP2 PUSH30 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ PUSH2 0x302 JUMPI PUSH1 0x1 SWAP2 POP POP PUSH2 0x308 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x31A DUP5 PUSH2 0x377 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0xA0 MLOAD SWAP1 POP PUSH1 0x0 DUP5 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 AND PUSH1 0x0 SHR SWAP1 POP DUP5 PUSH1 0xF8 SHR PUSH1 0xFF AND DUP2 EQ ISZERO PUSH2 0x369 JUMPI PUSH1 0x1 SWAP4 POP POP POP POP PUSH2 0x371 JUMP JUMPDEST PUSH1 0x0 SWAP4 POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3BC JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3EE JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0xFF PUSH1 0xF8 SHL DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x430 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xF7 PUSH1 0xF8 SHL DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x49E JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP DUP1 SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 XOR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 AND SWAP1 POP DUP3 PUSH30 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 PUSH30 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ ISZERO PUSH2 0x53F JUMPI PUSH1 0x1 SWAP2 POP POP PUSH2 0x545 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x55A DUP2 PUSH2 0x90D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x56F DUP2 PUSH2 0x924 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x584 DUP2 PUSH2 0x93B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x59C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x5AA DUP5 DUP3 DUP6 ADD PUSH2 0x54B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x5D4 DUP6 DUP3 DUP7 ADD PUSH2 0x54B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x5E5 DUP6 DUP3 DUP7 ADD PUSH2 0x560 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x601 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x60F DUP5 DUP3 DUP6 ADD PUSH2 0x560 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x62B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x639 DUP6 DUP3 DUP7 ADD PUSH2 0x575 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x64A DUP6 DUP3 DUP7 ADD PUSH2 0x575 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x65D DUP2 PUSH2 0x7B9 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x66C DUP2 PUSH2 0x7F1 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x67D DUP3 PUSH2 0x746 JUMP JUMPDEST PUSH2 0x687 DUP2 DUP6 PUSH2 0x751 JUMP JUMPDEST SWAP4 POP PUSH2 0x697 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x84B JUMP JUMPDEST PUSH2 0x6A0 DUP2 PUSH2 0x8AD JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6B8 PUSH1 0x28 DUP4 PUSH2 0x762 JUMP JUMPDEST SWAP2 POP PUSH2 0x6C3 DUP3 PUSH2 0x8BE JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x6E3 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x654 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x6FE PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x663 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x71E DUP2 DUP5 PUSH2 0x672 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x73F DUP2 PUSH2 0x6AB JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x77E DUP3 PUSH2 0x81D JUMP JUMPDEST SWAP2 POP PUSH2 0x789 DUP4 PUSH2 0x81D JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0x79C JUMPI PUSH2 0x79B PUSH2 0x87E JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7B2 DUP3 PUSH2 0x82B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFF000000000000000000000000000000000000000000000000000000000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x869 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x84E JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x878 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x547279696E6720746F20636865636B206D6F7265207468616E206F6E65207065 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x726D697373696F6E000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH2 0x916 DUP2 PUSH2 0x7A7 JUMP JUMPDEST DUP2 EQ PUSH2 0x921 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x92D DUP2 PUSH2 0x7C5 JUMP JUMPDEST DUP2 EQ PUSH2 0x938 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x944 DUP2 PUSH2 0x7F1 JUMP JUMPDEST DUP2 EQ PUSH2 0x94F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DIFFICULTY 0xFB DUP7 0xF9 PUSH12 0x4070244CE76FC7738E048BFA PUSH11 0xFC95DC8CB43734855F5550 DUP3 SHL PUSH22 0x64736F6C634300080100330000000000000000000000 ",
"sourceMap": "64:2311:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1134:124;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1551:337;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1268:273;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;327:570;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;104:213;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2211:157;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1898:303;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1134:124;1196:6;1249:1;1221:30;;:18;:30;;;;;1214:37;;;;;1134:124;;;:::o;1551:337::-;1641:4;1741:1;1735;1715:18;1708:26;;:28;;;;:::i;:::-;1685:18;1678:26;;:59;:64;;;1657:152;;;;;;;;;;;;:::i;:::-;;;;;;;;;1865:1;1826:40;;1842:18;1827:12;:33;1826:40;;;;;:55;;1876:5;1826:55;;;1869:4;1826:55;1819:62;;1551:337;;;;:::o;1268:273::-;1355:4;1371:13;1402:18;1387:12;:33;1371:49;;1453:1;1443:11;;:6;:11;;;;1439:96;;1477:4;1470:11;;;;;1439:96;1519:5;1512:12;;;1268:273;;;;;:::o;327:570::-;414:4;497:31;531:25;547:8;531:15;:25::i;:::-;497:59;;566:19;648:4;642:11;627:26;;699:11;732:18;718:32;;;:11;:32;713:38;;699:52;;791:18;785:25;;775:35;;:6;:35;771:120;;;833:4;826:11;;;;;;;771:120;875:5;868:12;;;;;327:570;;;;;:::o;104:213::-;168:12;192:19;224:1;214:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;192:34;;248:4;236:16;;:6;243:1;236:9;;;;;;;;;;;;;;;;;;;:16;;;;;;;;;;;274:4;262:16;;:6;269:1;262:9;;;;;;;;;;;;;;;;;;;:16;;;;;;;;;;;304:6;297:13;;;104:213;;;:::o;2211:157::-;2305:6;2346:15;2330:13;:31;2323:38;;2211:157;;;;:::o;1898:303::-;1997:4;2013:13;2044:18;2029:12;:33;2013:49;;2087:18;2077:28;;;:6;:28;;;;2073:113;;;2128:4;2121:11;;;;;2073:113;2170:5;2163:12;;;1898:303;;;;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:137::-;;235:6;222:20;213:29;;251:32;277:5;251:32;:::i;:::-;203:86;;;;:::o;295:137::-;;378:6;365:20;356:29;;394:32;420:5;394:32;:::i;:::-;346:86;;;;:::o;438:262::-;;546:2;534:9;525:7;521:23;517:32;514:2;;;562:1;559;552:12;514:2;605:1;630:53;675:7;666:6;655:9;651:22;630:53;:::i;:::-;620:63;;576:117;504:196;;;;:::o;706:405::-;;;830:2;818:9;809:7;805:23;801:32;798:2;;;846:1;843;836:12;798:2;889:1;914:53;959:7;950:6;939:9;935:22;914:53;:::i;:::-;904:63;;860:117;1016:2;1042:52;1086:7;1077:6;1066:9;1062:22;1042:52;:::i;:::-;1032:62;;987:117;788:323;;;;;:::o;1117:260::-;;1224:2;1212:9;1203:7;1199:23;1195:32;1192:2;;;1240:1;1237;1230:12;1192:2;1283:1;1308:52;1352:7;1343:6;1332:9;1328:22;1308:52;:::i;:::-;1298:62;;1254:116;1182:195;;;;:::o;1383:403::-;;;1506:2;1494:9;1485:7;1481:23;1477:32;1474:2;;;1522:1;1519;1512:12;1474:2;1565:1;1590:52;1634:7;1625:6;1614:9;1610:22;1590:52;:::i;:::-;1580:62;;1536:116;1691:2;1717:52;1761:7;1752:6;1741:9;1737:22;1717:52;:::i;:::-;1707:62;;1662:117;1464:322;;;;;:::o;1792:109::-;1873:21;1888:5;1873:21;:::i;:::-;1868:3;1861:34;1851:50;;:::o;1907:115::-;1992:23;2009:5;1992:23;:::i;:::-;1987:3;1980:36;1970:52;;:::o;2028:360::-;;2142:38;2174:5;2142:38;:::i;:::-;2196:70;2259:6;2254:3;2196:70;:::i;:::-;2189:77;;2275:52;2320:6;2315:3;2308:4;2301:5;2297:16;2275:52;:::i;:::-;2352:29;2374:6;2352:29;:::i;:::-;2347:3;2343:39;2336:46;;2118:270;;;;;:::o;2394:366::-;;2557:67;2621:2;2616:3;2557:67;:::i;:::-;2550:74;;2633:93;2722:3;2633:93;:::i;:::-;2751:2;2746:3;2742:12;2735:19;;2540:220;;;:::o;2766:210::-;;2891:2;2880:9;2876:18;2868:26;;2904:65;2966:1;2955:9;2951:17;2942:6;2904:65;:::i;:::-;2858:118;;;;:::o;2982:218::-;;3111:2;3100:9;3096:18;3088:26;;3124:69;3190:1;3179:9;3175:17;3166:6;3124:69;:::i;:::-;3078:122;;;;:::o;3206:309::-;;3355:2;3344:9;3340:18;3332:26;;3404:9;3398:4;3394:20;3390:1;3379:9;3375:17;3368:47;3432:76;3503:4;3494:6;3432:76;:::i;:::-;3424:84;;3322:193;;;;:::o;3521:419::-;;3725:2;3714:9;3710:18;3702:26;;3774:9;3768:4;3764:20;3760:1;3749:9;3745:17;3738:47;3802:131;3928:4;3802:131;:::i;:::-;3794:139;;3692:248;;;:::o;3946:98::-;;4031:5;4025:12;4015:22;;4004:40;;;:::o;4050:168::-;;4167:6;4162:3;4155:19;4207:4;4202:3;4198:14;4183:29;;4145:73;;;;:::o;4224:169::-;;4342:6;4337:3;4330:19;4382:4;4377:3;4373:14;4358:29;;4320:73;;;;:::o;4399:188::-;;4458:19;4475:1;4458:19;:::i;:::-;4453:24;;4491:19;4508:1;4491:19;:::i;:::-;4486:24;;4529:1;4526;4523:8;4520:2;;;4534:18;;:::i;:::-;4520:2;4579:1;4576;4572:9;4564:17;;4443:144;;;;:::o;4593:96::-;;4659:24;4677:5;4659:24;:::i;:::-;4648:35;;4638:51;;;:::o;4695:90::-;;4772:5;4765:13;4758:21;4747:32;;4737:48;;;:::o;4791:149::-;;4867:66;4860:5;4856:78;4845:89;;4835:105;;;:::o;4946:149::-;;5022:66;5015:5;5011:78;5000:89;;4990:105;;;:::o;5101:89::-;;5177:6;5170:5;5166:18;5155:29;;5145:45;;;:::o;5196:126::-;;5273:42;5266:5;5262:54;5251:65;;5241:81;;;:::o;5328:307::-;5396:1;5406:113;5420:6;5417:1;5414:13;5406:113;;;5505:1;5500:3;5496:11;5490:18;5486:1;5481:3;5477:11;5470:39;5442:2;5439:1;5435:10;5430:15;;5406:113;;;5537:6;5534:1;5531:13;5528:2;;;5617:1;5608:6;5603:3;5599:16;5592:27;5528:2;5377:258;;;;:::o;5641:180::-;5689:77;5686:1;5679:88;5786:4;5783:1;5776:15;5810:4;5807:1;5800:15;5827:102;;5919:2;5915:7;5910:2;5903:5;5899:14;5895:28;5885:38;;5875:54;;;:::o;5935:227::-;6075:34;6071:1;6063:6;6059:14;6052:58;6144:10;6139:2;6131:6;6127:15;6120:35;6041:121;:::o;6168:122::-;6241:24;6259:5;6241:24;:::i;:::-;6234:5;6231:35;6221:2;;6280:1;6277;6270:12;6221:2;6211:79;:::o;6296:120::-;6368:23;6385:5;6368:23;:::i;:::-;6361:5;6358:34;6348:2;;6406:1;6403;6396:12;6348:2;6338:78;:::o;6422:120::-;6494:23;6511:5;6494:23;:::i;:::-;6487:5;6484:34;6474:2;;6532:1;6529;6522:12;6474:2;6464:78;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "488000",
"executionCost": "524",
"totalCost": "488524"
},
"external": {
"_findPermissionsNotSet(bytes2,bytes2)": "infinite",
"_getPermissions(address)": "infinite",
"_verifyMultiplePermissions(bytes2,bytes2)": "infinite",
"_verifyPermission(address,bytes1)": "infinite",
"_verifyPermission(bytes2,bytes2)": "infinite",
"hasPermission(bytes2,bytes2)": "infinite",
"test(bytes1)": "648"
}
},
"methodIdentifiers": {
"_findPermissionsNotSet(bytes2,bytes2)": "a1680b9d",
"_getPermissions(address)": "9e268119",
"_verifyMultiplePermissions(bytes2,bytes2)": "f21fa7ab",
"_verifyPermission(address,bytes1)": "991a27d6",
"_verifyPermission(bytes2,bytes2)": "1b9da2ae",
"hasPermission(bytes2,bytes2)": "47ad5e3c",
"test(bytes1)": "069bab52"
}
},
"abi": [
{
"inputs": [
{
"internalType": "bytes2",
"name": "_initialCheck",
"type": "bytes2"
},
{
"internalType": "bytes2",
"name": "_previousResult",
"type": "bytes2"
}
],
"name": "_findPermissionsNotSet",
"outputs": [
{
"internalType": "bytes2",
"name": "",
"type": "bytes2"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_address",
"type": "address"
}
],
"name": "_getPermissions",
"outputs": [
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes2",
"name": "_permissions",
"type": "bytes2"
},
{
"internalType": "bytes2",
"name": "_allowedPermission",
"type": "bytes2"
}
],
"name": "_verifyMultiplePermissions",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes2",
"name": "_permissions",
"type": "bytes2"
},
{
"internalType": "bytes2",
"name": "_allowedPermission",
"type": "bytes2"
}
],
"name": "_verifyPermission",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_address",
"type": "address"
},
{
"internalType": "bytes1",
"name": "_allowedPermission",
"type": "bytes1"
}
],
"name": "_verifyPermission",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes2",
"name": "_permissions",
"type": "bytes2"
},
{
"internalType": "bytes2",
"name": "_allowedPermission",
"type": "bytes2"
}
],
"name": "hasPermission",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes1",
"name": "_allowedPermission",
"type": "bytes1"
}
],
"name": "test",
"outputs": [
{
"internalType": "bytes2",
"name": "",
"type": "bytes2"
}
],
"stateMutability": "pure",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.1+commit.df193b15"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "bytes2",
"name": "_initialCheck",
"type": "bytes2"
},
{
"internalType": "bytes2",
"name": "_previousResult",
"type": "bytes2"
}
],
"name": "_findPermissionsNotSet",
"outputs": [
{
"internalType": "bytes2",
"name": "",
"type": "bytes2"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_address",
"type": "address"
}
],
"name": "_getPermissions",
"outputs": [
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes2",
"name": "_permissions",
"type": "bytes2"
},
{
"internalType": "bytes2",
"name": "_allowedPermission",
"type": "bytes2"
}
],
"name": "_verifyMultiplePermissions",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes2",
"name": "_permissions",
"type": "bytes2"
},
{
"internalType": "bytes2",
"name": "_allowedPermission",
"type": "bytes2"
}
],
"name": "_verifyPermission",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_address",
"type": "address"
},
{
"internalType": "bytes1",
"name": "_allowedPermission",
"type": "bytes1"
}
],
"name": "_verifyPermission",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes2",
"name": "_permissions",
"type": "bytes2"
},
{
"internalType": "bytes2",
"name": "_allowedPermission",
"type": "bytes2"
}
],
"name": "hasPermission",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes1",
"name": "_allowedPermission",
"type": "bytes1"
}
],
"name": "test",
"outputs": [
{
"internalType": "bytes2",
"name": "",
"type": "bytes2"
}
],
"stateMutability": "pure",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/KeyManager.sol": "BasicKeyManagerTest"
},
"evmVersion": "istanbul",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/KeyManager.sol": {
"keccak256": "0xc875248182086273bbd9280ea336de83c91cb0a14d511d2cb518f7fe87711de4",
"license": "Apache-2.0",
"urls": [
"bzz-raw://032b5924f78759fe2579e8f361f5768e809b1d7af261c847141481b5de3d88f5",
"dweb:/ipfs/Qmb2Sbrc6r5YFQpKHvJgamUHW5EXRng8qq8MH8L9ceHEfn"
]
}
},
"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": {
"linkReferences": {},
"object": "608060405234801561001057600080fd5b506040516020806103ee833981018060405281019080805190602001909291905050508060008190555080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550506103608061008e6000396000f300608060405260043610610057576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806318160ddd1461005c57806370a0823114610087578063a9059cbb146100de575b600080fd5b34801561006857600080fd5b50610071610143565b6040518082815260200191505060405180910390f35b34801561009357600080fd5b506100c8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061014c565b6040518082815260200191505060405180910390f35b3480156100ea57600080fd5b50610129600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610195565b604051808215151515815260200191505060405180910390f35b60008054905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156101d257600080fd5b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561022057600080fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060019050929150505600a165627a7a723058200983bc04bbdf63b759e9e4f07c67440042ff764ff64aa02e5711ad443cd0e1400029",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP1 PUSH2 0x3EE DUP4 CODECOPY DUP2 ADD DUP1 PUSH1 0x40 MSTORE DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP DUP1 PUSH1 0x0 DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP POP PUSH2 0x360 DUP1 PUSH2 0x8E PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x57 JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP1 PUSH4 0x18160DDD EQ PUSH2 0x5C JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x87 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0xDE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x71 PUSH2 0x143 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC8 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x14C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x129 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x195 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO ISZERO ISZERO PUSH2 0x1D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP3 GT ISZERO ISZERO ISZERO PUSH2 0x220 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SUB PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD ADD PUSH1 0x1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 MULMOD DUP4 0xbc DIV 0xbb 0xdf PUSH4 0xB759E9E4 CREATE PUSH29 0x67440042FF764FF64AA02E5711AD443CD0E14000290000000000000000 ",
"sourceMap": "26:686:0:-;;;120:126;8:9:-1;5:2;;;30:1;27;20:12;5:2;120:126:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;184:14;169:12;:29;;;;227:14;204:8;:20;213:10;204:20;;;;;;;;;;;;;;;:37;;;;120:126;26:686;;;;;;"
},
"deployedBytecode": {
"linkReferences": {},
"object": "608060405260043610610057576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806318160ddd1461005c57806370a0823114610087578063a9059cbb146100de575b600080fd5b34801561006857600080fd5b50610071610143565b6040518082815260200191505060405180910390f35b34801561009357600080fd5b506100c8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061014c565b6040518082815260200191505060405180910390f35b3480156100ea57600080fd5b50610129600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610195565b604051808215151515815260200191505060405180910390f35b60008054905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156101d257600080fd5b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561022057600080fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060019050929150505600a165627a7a723058200983bc04bbdf63b759e9e4f07c67440042ff764ff64aa02e5711ad443cd0e1400029",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x57 JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP1 PUSH4 0x18160DDD EQ PUSH2 0x5C JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x87 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0xDE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x71 PUSH2 0x143 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC8 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x14C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x129 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x195 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO ISZERO ISZERO PUSH2 0x1D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP3 GT ISZERO ISZERO ISZERO PUSH2 0x220 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SUB PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD ADD PUSH1 0x1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 MULMOD DUP4 0xbc DIV 0xbb 0xdf PUSH4 0xB759E9E4 CREATE PUSH29 0x67440042FF764FF64AA02E5711AD443CD0E14000290000000000000000 ",
"sourceMap": "26:686:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;250:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;250:83:0;;;;;;;;;;;;;;;;;;;;;;;611:99;;8:9:-1;5:2;;;30:1;27;20:12;5:2;611:99:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;337:270;;8:9:-1;5:2;;;30:1;27;20:12;5:2;337:270:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;250:83;294:7;316:12;;309:19;;250:83;:::o;611:99::-;667:7;689:8;:16;698:6;689:16;;;;;;;;;;;;;;;;682:23;;611:99;;;:::o;337:270::-;400:4;435:1;420:17;;:3;:17;;;;412:26;;;;;;;;462:8;:20;471:10;462:20;;;;;;;;;;;;;;;;452:6;:30;;444:39;;;;;;;;535:6;512:8;:20;521:10;512:20;;;;;;;;;;;;;;;;:29;489:8;:20;498:10;489:20;;;;;;;;;;;;;;;:52;;;;579:6;563:8;:13;572:3;563:13;;;;;;;;;;;;;;;;:22;547:8;:13;556:3;547:13;;;;;;;;;;;;;;;:38;;;;598:4;591:11;;337:270;;;;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "172800",
"executionCost": "40417",
"totalCost": "213217"
},
"external": {
"balanceOf(address)": "581",
"totalSupply()": "402",
"transfer(address,uint256)": "41517"
}
},
"methodIdentifiers": {
"balanceOf(address)": "70a08231",
"totalSupply()": "18160ddd",
"transfer(address,uint256)": "a9059cbb"
}
},
"abi": [
{
"constant": true,
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_owner",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_to",
"type": "address"
},
{
"name": "_value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"name": "_initialSupply",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
}
]
}
{
"compiler": {
"version": "0.4.26+commit.4563c3fc"
},
"language": "Solidity",
"output": {
"abi": [
{
"constant": true,
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_owner",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_to",
"type": "address"
},
{
"name": "_value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"name": "_initialSupply",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
}
],
"devdoc": {
"methods": {}
},
"userdoc": {
"methods": {}
}
},
"settings": {
"compilationTarget": {
"contracts/BasicToken.sol": "BasicToken"
},
"evmVersion": "byzantium",
"libraries": {},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/BasicToken.sol": {
"keccak256": "0x77df12796d7ebec22e93cc55c4781e3f3843c7471ff081f37c363b6d6892ed35",
"urls": [
"bzzr://44548850d7d165cfca835114fbcbb552459ab96db0a2dbad82cfd9454d2de6cc"
]
}
},
"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": {
"generatedSources": [],
"linkReferences": {},
"object": "610ecc610053600b82828239805160001a607314610046577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106101155760003560e01c8063592e629a116100ac578063bbb8c18e1161007b578063bbb8c18e1461035a578063c1bb0e261461038a578063cec4a8f8146103ba578063e078c717146103ea578063e70b1b5b1461041a57610115565b8063592e629a1461029a578063a1ffbdff146102ca578063a7ad613d146102fa578063b9ec148e1461032a57610115565b806341c23d8f116100e857806341c23d8f146101da5780635240ea7a1461020a57806354c2f0921461023a578063567765211461026a57610115565b806318fed50a1461011a5780631ccb22681461014a578063234fc8961461017a5780633301740b146101aa575b600080fd5b610134600480360381019061012f91906107f2565b61044a565b60405161014191906109ca565b60405180910390f35b610164600480360381019061015f9190610880565b61045d565b6040516101719190610a05565b60405180910390f35b610194600480360381019061018f91906108bc565b61048b565b6040516101a19190610a05565b60405180910390f35b6101c460048036038101906101bf91906107f2565b6104b2565b6040516101d191906109ca565b60405180910390f35b6101f460048036038101906101ef9190610857565b6104bc565b6040516102019190610a05565b60405180910390f35b610224600480360381019061021f9190610880565b6104d5565b6040516102319190610979565b60405180910390f35b610254600480360381019061024f91906107f2565b6104f8565b6040516102619190610994565b60405180910390f35b610284600480360381019061027f91906107f2565b610529565b6040516102919190610994565b60405180910390f35b6102b460048036038101906102af919061081b565b610533565b6040516102c19190610979565b60405180910390f35b6102e460048036038101906102df9190610880565b610556565b6040516102f19190610a05565b60405180910390f35b610314600480360381019061030f919061077a565b610584565b60405161032191906109af565b60405180910390f35b610344600480360381019061033f91906107b6565b610591565b60405161035191906109af565b60405180910390f35b610374600480360381019061036f91906108bc565b610648565b6040516103819190610a05565b60405180910390f35b6103a4600480360381019061039f9190610857565b61066f565b6040516103b19190610a05565b60405180910390f35b6103d460048036038101906103cf91906107f2565b610687565b6040516103e19190610994565b60405180910390f35b61040460048036038101906103ff91906108bc565b61069a565b6040516104119190610979565b60405180910390f35b610434600480360381019061042f91906108bc565b6106d3565b6040516104419190610a05565b60405180910390f35b60008060e083901b905080915050919050565b600081156104745760018303831760005260206000f35b6001836104819190610c24565b8317905092915050565b600081156104a2576001831b841860005260206000f35b826001901b841890509392505050565b6000819050919050565b60006001826104cb9190610a31565b8219169050919050565b600081156104ea576001831660005260206000f35b600180841614905092915050565b6000807001000000000000000000000000000000008360001c61051b9190610d47565b90508060801b915050919050565b6000819050919050565b60008115610548576001831660005260206000f35b600180841614905092915050565b6000811561056d5760018303831660005260206000f35b60018361057a9190610c24565b8316905092915050565b6000818316905092915050565b600060ff8260026105a29190610ada565b106105e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d9906109e5565b60405180910390fd5b600060018360026105f39190610b25565b6105fd9190610c58565b60f81b905060008360086106119190610c58565b60ff16827effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901c90508085169250505092915050565b6000811561065f576001831b841760005260206000f35b826001901b841790509392505050565b600060018261067e9190610a31565b82179050919050565b600080608083901b905080915050919050565b600081156106b1578260011b841660005260206000f35b6000836001901b851614156106c75760006106ca565b60015b90509392505050565b600081156106eb576001831b19841660005260206000f35b826001901b19841690509392505050565b60008135905061070b81610e0c565b92915050565b60008135905061072081610e23565b92915050565b60008135905061073581610e3a565b92915050565b60008135905061074a81610e51565b92915050565b60008135905061075f81610e68565b92915050565b60008135905061077481610e7f565b92915050565b6000806040838503121561078d57600080fd5b600061079b85828601610711565b92505060206107ac85828601610711565b9150509250929050565b600080604083850312156107c957600080fd5b60006107d785828601610711565b92505060206107e885828601610765565b9150509250929050565b60006020828403121561080457600080fd5b600061081284828501610726565b91505092915050565b6000806040838503121561082e57600080fd5b600061083c8582860161073b565b925050602061084d858286016106fc565b9150509250929050565b60006020828403121561086957600080fd5b600061087784828501610750565b91505092915050565b6000806040838503121561089357600080fd5b60006108a185828601610750565b92505060206108b2858286016106fc565b9150509250929050565b6000806000606084860312156108d157600080fd5b60006108df86828701610750565b93505060206108f086828701610750565b9250506040610901868287016106fc565b9150509250925092565b61091481610c8c565b82525050565b61092381610cc4565b82525050565b61093281610c98565b82525050565b61094181610cfa565b82525050565b6000610954601783610a20565b915061095f82610de3565b602082019050919050565b61097381610d30565b82525050565b600060208201905061098e600083018461090b565b92915050565b60006020820190506109a9600083018461091a565b92915050565b60006020820190506109c46000830184610929565b92915050565b60006020820190506109df6000830184610938565b92915050565b600060208201905081810360008301526109fe81610947565b9050919050565b6000602082019050610a1a600083018461096a565b92915050565b600082825260208201905092915050565b6000610a3c82610d30565b9150610a4783610d30565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610a7c57610a7b610d78565b5b828201905092915050565b6000808291508390505b6001851115610ad157808604811115610aad57610aac610d78565b5b6001851615610abc5780820291505b8081029050610aca85610dd6565b9450610a91565b94509492505050565b6000610ae582610d30565b9150610af083610d3a565b9250610b1d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610b51565b905092915050565b6000610b3082610d3a565b9150610b3b83610d3a565b9250610b4960ff8484610b51565b905092915050565b600082610b615760019050610c1d565b81610b6f5760009050610c1d565b8160018114610b855760028114610b8f57610bbe565b6001915050610c1d565b60ff841115610ba157610ba0610d78565b5b8360020a915084821115610bb857610bb7610d78565b5b50610c1d565b5060208310610133831016604e8410600b8410161715610bf35782820a905083811115610bee57610bed610d78565b5b610c1d565b610c008484846001610a87565b92509050818404811115610c1757610c16610d78565b5b81810290505b9392505050565b6000610c2f82610d30565b9150610c3a83610d30565b925082821015610c4d57610c4c610d78565b5b828203905092915050565b6000610c6382610d3a565b9150610c6e83610d3a565b925082821015610c8157610c80610d78565b5b828203905092915050565b60008115159050919050565b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b60007fffffffffffffffffffffffffffffffff0000000000000000000000000000000082169050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6000819050919050565b6000819050919050565b600060ff82169050919050565b6000610d5282610d30565b9150610d5d83610d30565b925082610d6d57610d6c610da7565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008160011c9050919050565b7f4f766572666c6f7720656e636f756e7465726564202120000000000000000000600082015250565b610e1581610c8c565b8114610e2057600080fd5b50565b610e2c81610c98565b8114610e3757600080fd5b50565b610e4381610cf0565b8114610e4e57600080fd5b50565b610e5a81610d26565b8114610e6557600080fd5b50565b610e7181610d30565b8114610e7c57600080fd5b50565b610e8881610d3a565b8114610e9357600080fd5b5056fea2646970667358221220e5a45cb21e3a7ac4c24df6194b5227a36b4c00079eab3223fcae70e09b22b68e64736f6c63430008010033",
"opcodes": "PUSH2 0xECC PUSH2 0x53 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH2 0x46 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 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 0x4 CALLDATASIZE LT PUSH2 0x115 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x592E629A GT PUSH2 0xAC JUMPI DUP1 PUSH4 0xBBB8C18E GT PUSH2 0x7B JUMPI DUP1 PUSH4 0xBBB8C18E EQ PUSH2 0x35A JUMPI DUP1 PUSH4 0xC1BB0E26 EQ PUSH2 0x38A JUMPI DUP1 PUSH4 0xCEC4A8F8 EQ PUSH2 0x3BA JUMPI DUP1 PUSH4 0xE078C717 EQ PUSH2 0x3EA JUMPI DUP1 PUSH4 0xE70B1B5B EQ PUSH2 0x41A JUMPI PUSH2 0x115 JUMP JUMPDEST DUP1 PUSH4 0x592E629A EQ PUSH2 0x29A JUMPI DUP1 PUSH4 0xA1FFBDFF EQ PUSH2 0x2CA JUMPI DUP1 PUSH4 0xA7AD613D EQ PUSH2 0x2FA JUMPI DUP1 PUSH4 0xB9EC148E EQ PUSH2 0x32A JUMPI PUSH2 0x115 JUMP JUMPDEST DUP1 PUSH4 0x41C23D8F GT PUSH2 0xE8 JUMPI DUP1 PUSH4 0x41C23D8F EQ PUSH2 0x1DA JUMPI DUP1 PUSH4 0x5240EA7A EQ PUSH2 0x20A JUMPI DUP1 PUSH4 0x54C2F092 EQ PUSH2 0x23A JUMPI DUP1 PUSH4 0x56776521 EQ PUSH2 0x26A JUMPI PUSH2 0x115 JUMP JUMPDEST DUP1 PUSH4 0x18FED50A EQ PUSH2 0x11A JUMPI DUP1 PUSH4 0x1CCB2268 EQ PUSH2 0x14A JUMPI DUP1 PUSH4 0x234FC896 EQ PUSH2 0x17A JUMPI DUP1 PUSH4 0x3301740B EQ PUSH2 0x1AA JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x134 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x12F SWAP2 SWAP1 PUSH2 0x7F2 JUMP JUMPDEST PUSH2 0x44A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x141 SWAP2 SWAP1 PUSH2 0x9CA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x164 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x15F SWAP2 SWAP1 PUSH2 0x880 JUMP JUMPDEST PUSH2 0x45D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x171 SWAP2 SWAP1 PUSH2 0xA05 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x194 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x18F SWAP2 SWAP1 PUSH2 0x8BC JUMP JUMPDEST PUSH2 0x48B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A1 SWAP2 SWAP1 PUSH2 0xA05 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1BF SWAP2 SWAP1 PUSH2 0x7F2 JUMP JUMPDEST PUSH2 0x4B2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D1 SWAP2 SWAP1 PUSH2 0x9CA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1EF SWAP2 SWAP1 PUSH2 0x857 JUMP JUMPDEST PUSH2 0x4BC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x201 SWAP2 SWAP1 PUSH2 0xA05 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x224 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x21F SWAP2 SWAP1 PUSH2 0x880 JUMP JUMPDEST PUSH2 0x4D5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x231 SWAP2 SWAP1 PUSH2 0x979 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x254 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x24F SWAP2 SWAP1 PUSH2 0x7F2 JUMP JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x261 SWAP2 SWAP1 PUSH2 0x994 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x284 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x27F SWAP2 SWAP1 PUSH2 0x7F2 JUMP JUMPDEST PUSH2 0x529 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x291 SWAP2 SWAP1 PUSH2 0x994 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2B4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2AF SWAP2 SWAP1 PUSH2 0x81B JUMP JUMPDEST PUSH2 0x533 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2C1 SWAP2 SWAP1 PUSH2 0x979 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2E4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2DF SWAP2 SWAP1 PUSH2 0x880 JUMP JUMPDEST PUSH2 0x556 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2F1 SWAP2 SWAP1 PUSH2 0xA05 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x314 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x30F SWAP2 SWAP1 PUSH2 0x77A JUMP JUMPDEST PUSH2 0x584 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x321 SWAP2 SWAP1 PUSH2 0x9AF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x344 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x33F SWAP2 SWAP1 PUSH2 0x7B6 JUMP JUMPDEST PUSH2 0x591 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x351 SWAP2 SWAP1 PUSH2 0x9AF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x374 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x36F SWAP2 SWAP1 PUSH2 0x8BC JUMP JUMPDEST PUSH2 0x648 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x381 SWAP2 SWAP1 PUSH2 0xA05 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3A4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x39F SWAP2 SWAP1 PUSH2 0x857 JUMP JUMPDEST PUSH2 0x66F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3B1 SWAP2 SWAP1 PUSH2 0xA05 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3D4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3CF SWAP2 SWAP1 PUSH2 0x7F2 JUMP JUMPDEST PUSH2 0x687 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3E1 SWAP2 SWAP1 PUSH2 0x994 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x404 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3FF SWAP2 SWAP1 PUSH2 0x8BC JUMP JUMPDEST PUSH2 0x69A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x411 SWAP2 SWAP1 PUSH2 0x979 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x434 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x42F SWAP2 SWAP1 PUSH2 0x8BC JUMP JUMPDEST PUSH2 0x6D3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x441 SWAP2 SWAP1 PUSH2 0xA05 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 PUSH1 0xE0 DUP4 SWAP1 SHL SWAP1 POP DUP1 SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0x474 JUMPI PUSH1 0x1 DUP4 SUB DUP4 OR PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 RETURN JUMPDEST PUSH1 0x1 DUP4 PUSH2 0x481 SWAP2 SWAP1 PUSH2 0xC24 JUMP JUMPDEST DUP4 OR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0x4A2 JUMPI PUSH1 0x1 DUP4 SHL DUP5 XOR PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 RETURN JUMPDEST DUP3 PUSH1 0x1 SWAP1 SHL DUP5 XOR SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 PUSH2 0x4CB SWAP2 SWAP1 PUSH2 0xA31 JUMP JUMPDEST DUP3 NOT AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0x4EA JUMPI PUSH1 0x1 DUP4 AND PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 RETURN JUMPDEST PUSH1 0x1 DUP1 DUP5 AND EQ SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH17 0x100000000000000000000000000000000 DUP4 PUSH1 0x0 SHR PUSH2 0x51B SWAP2 SWAP1 PUSH2 0xD47 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x80 SHL SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0x548 JUMPI PUSH1 0x1 DUP4 AND PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 RETURN JUMPDEST PUSH1 0x1 DUP1 DUP5 AND EQ SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0x56D JUMPI PUSH1 0x1 DUP4 SUB DUP4 AND PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 RETURN JUMPDEST PUSH1 0x1 DUP4 PUSH2 0x57A SWAP2 SWAP1 PUSH2 0xC24 JUMP JUMPDEST DUP4 AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 PUSH1 0x2 PUSH2 0x5A2 SWAP2 SWAP1 PUSH2 0xADA JUMP JUMPDEST LT PUSH2 0x5E2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5D9 SWAP1 PUSH2 0x9E5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP4 PUSH1 0x2 PUSH2 0x5F3 SWAP2 SWAP1 PUSH2 0xB25 JUMP JUMPDEST PUSH2 0x5FD SWAP2 SWAP1 PUSH2 0xC58 JUMP JUMPDEST PUSH1 0xF8 SHL SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x8 PUSH2 0x611 SWAP2 SWAP1 PUSH2 0xC58 JUMP JUMPDEST PUSH1 0xFF AND DUP3 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SHR SWAP1 POP DUP1 DUP6 AND SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0x65F JUMPI PUSH1 0x1 DUP4 SHL DUP5 OR PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 RETURN JUMPDEST DUP3 PUSH1 0x1 SWAP1 SHL DUP5 OR SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 PUSH2 0x67E SWAP2 SWAP1 PUSH2 0xA31 JUMP JUMPDEST DUP3 OR SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x80 DUP4 SWAP1 SHL SWAP1 POP DUP1 SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0x6B1 JUMPI DUP3 PUSH1 0x1 SHL DUP5 AND PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 RETURN JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 SWAP1 SHL DUP6 AND EQ ISZERO PUSH2 0x6C7 JUMPI PUSH1 0x0 PUSH2 0x6CA JUMP JUMPDEST PUSH1 0x1 JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0x6EB JUMPI PUSH1 0x1 DUP4 SHL NOT DUP5 AND PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 RETURN JUMPDEST DUP3 PUSH1 0x1 SWAP1 SHL NOT DUP5 AND SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x70B DUP2 PUSH2 0xE0C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x720 DUP2 PUSH2 0xE23 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x735 DUP2 PUSH2 0xE3A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x74A DUP2 PUSH2 0xE51 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x75F DUP2 PUSH2 0xE68 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x774 DUP2 PUSH2 0xE7F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x78D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x79B DUP6 DUP3 DUP7 ADD PUSH2 0x711 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x7AC DUP6 DUP3 DUP7 ADD PUSH2 0x711 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x7C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x7D7 DUP6 DUP3 DUP7 ADD PUSH2 0x711 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x7E8 DUP6 DUP3 DUP7 ADD PUSH2 0x765 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x804 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x812 DUP5 DUP3 DUP6 ADD PUSH2 0x726 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x82E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x83C DUP6 DUP3 DUP7 ADD PUSH2 0x73B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x84D DUP6 DUP3 DUP7 ADD PUSH2 0x6FC JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x869 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x877 DUP5 DUP3 DUP6 ADD PUSH2 0x750 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x893 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x8A1 DUP6 DUP3 DUP7 ADD PUSH2 0x750 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x8B2 DUP6 DUP3 DUP7 ADD PUSH2 0x6FC JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x8D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x8DF DUP7 DUP3 DUP8 ADD PUSH2 0x750 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x8F0 DUP7 DUP3 DUP8 ADD PUSH2 0x750 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x901 DUP7 DUP3 DUP8 ADD PUSH2 0x6FC JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH2 0x914 DUP2 PUSH2 0xC8C JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x923 DUP2 PUSH2 0xCC4 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x932 DUP2 PUSH2 0xC98 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x941 DUP2 PUSH2 0xCFA JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x954 PUSH1 0x17 DUP4 PUSH2 0xA20 JUMP JUMPDEST SWAP2 POP PUSH2 0x95F DUP3 PUSH2 0xDE3 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x973 DUP2 PUSH2 0xD30 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x98E PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x90B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x9A9 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x91A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x9C4 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x929 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x9DF PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x938 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x9FE DUP2 PUSH2 0x947 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xA1A PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x96A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA3C DUP3 PUSH2 0xD30 JUMP JUMPDEST SWAP2 POP PUSH2 0xA47 DUP4 PUSH2 0xD30 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0xA7C JUMPI PUSH2 0xA7B PUSH2 0xD78 JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 SWAP2 POP DUP4 SWAP1 POP JUMPDEST PUSH1 0x1 DUP6 GT ISZERO PUSH2 0xAD1 JUMPI DUP1 DUP7 DIV DUP2 GT ISZERO PUSH2 0xAAD JUMPI PUSH2 0xAAC PUSH2 0xD78 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP6 AND ISZERO PUSH2 0xABC JUMPI DUP1 DUP3 MUL SWAP2 POP JUMPDEST DUP1 DUP2 MUL SWAP1 POP PUSH2 0xACA DUP6 PUSH2 0xDD6 JUMP JUMPDEST SWAP5 POP PUSH2 0xA91 JUMP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAE5 DUP3 PUSH2 0xD30 JUMP JUMPDEST SWAP2 POP PUSH2 0xAF0 DUP4 PUSH2 0xD3A JUMP JUMPDEST SWAP3 POP PUSH2 0xB1D PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP5 PUSH2 0xB51 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB30 DUP3 PUSH2 0xD3A JUMP JUMPDEST SWAP2 POP PUSH2 0xB3B DUP4 PUSH2 0xD3A JUMP JUMPDEST SWAP3 POP PUSH2 0xB49 PUSH1 0xFF DUP5 DUP5 PUSH2 0xB51 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0xB61 JUMPI PUSH1 0x1 SWAP1 POP PUSH2 0xC1D JUMP JUMPDEST DUP2 PUSH2 0xB6F JUMPI PUSH1 0x0 SWAP1 POP PUSH2 0xC1D JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0xB85 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0xB8F JUMPI PUSH2 0xBBE JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0xC1D JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0xBA1 JUMPI PUSH2 0xBA0 PUSH2 0xD78 JUMP JUMPDEST JUMPDEST DUP4 PUSH1 0x2 EXP SWAP2 POP DUP5 DUP3 GT ISZERO PUSH2 0xBB8 JUMPI PUSH2 0xBB7 PUSH2 0xD78 JUMP JUMPDEST JUMPDEST POP PUSH2 0xC1D JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0xBF3 JUMPI DUP3 DUP3 EXP SWAP1 POP DUP4 DUP2 GT ISZERO PUSH2 0xBEE JUMPI PUSH2 0xBED PUSH2 0xD78 JUMP JUMPDEST JUMPDEST PUSH2 0xC1D JUMP JUMPDEST PUSH2 0xC00 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0xA87 JUMP JUMPDEST SWAP3 POP SWAP1 POP DUP2 DUP5 DIV DUP2 GT ISZERO PUSH2 0xC17 JUMPI PUSH2 0xC16 PUSH2 0xD78 JUMP JUMPDEST JUMPDEST DUP2 DUP2 MUL SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC2F DUP3 PUSH2 0xD30 JUMP JUMPDEST SWAP2 POP PUSH2 0xC3A DUP4 PUSH2 0xD30 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0xC4D JUMPI PUSH2 0xC4C PUSH2 0xD78 JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC63 DUP3 PUSH2 0xD3A JUMP JUMPDEST SWAP2 POP PUSH2 0xC6E DUP4 PUSH2 0xD3A JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0xC81 JUMPI PUSH2 0xC80 PUSH2 0xD78 JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD52 DUP3 PUSH2 0xD30 JUMP JUMPDEST SWAP2 POP PUSH2 0xD5D DUP4 PUSH2 0xD30 JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0xD6D JUMPI PUSH2 0xD6C PUSH2 0xDA7 JUMP JUMPDEST JUMPDEST DUP3 DUP3 MOD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 SHR SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4F766572666C6F7720656E636F756E7465726564202120000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH2 0xE15 DUP2 PUSH2 0xC8C JUMP JUMPDEST DUP2 EQ PUSH2 0xE20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0xE2C DUP2 PUSH2 0xC98 JUMP JUMPDEST DUP2 EQ PUSH2 0xE37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0xE43 DUP2 PUSH2 0xCF0 JUMP JUMPDEST DUP2 EQ PUSH2 0xE4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0xE5A DUP2 PUSH2 0xD26 JUMP JUMPDEST DUP2 EQ PUSH2 0xE65 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0xE71 DUP2 PUSH2 0xD30 JUMP JUMPDEST DUP2 EQ PUSH2 0xE7C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0xE88 DUP2 PUSH2 0xD3A JUMP JUMPDEST DUP2 EQ PUSH2 0xE93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE5 LOG4 0x5C 0xB2 0x1E GASPRICE PUSH27 0xC4C24DF6194B5227A36B4C00079EAB3223FCAE70E09B22B68E6473 PUSH16 0x6C634300080100330000000000000000 ",
"sourceMap": "173:6567:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:12030:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "56:84:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "66:29:1",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "88:6:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "75:12:1"
},
"nodeType": "YulFunctionCall",
"src": "75:20:1"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "66:5:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "128:5:1"
}
],
"functionName": {
"name": "validator_revert_t_bool",
"nodeType": "YulIdentifier",
"src": "104:23:1"
},
"nodeType": "YulFunctionCall",
"src": "104:30:1"
},
"nodeType": "YulExpressionStatement",
"src": "104:30:1"
}
]
},
"name": "abi_decode_t_bool",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "34:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "42:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "50:5:1",
"type": ""
}
],
"src": "7:133:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "197:86:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "207:29:1",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "229:6:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "216:12:1"
},
"nodeType": "YulFunctionCall",
"src": "216:20:1"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "207:5:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "271:5:1"
}
],
"functionName": {
"name": "validator_revert_t_bytes1",
"nodeType": "YulIdentifier",
"src": "245:25:1"
},
"nodeType": "YulFunctionCall",
"src": "245:32:1"
},
"nodeType": "YulExpressionStatement",
"src": "245:32:1"
}
]
},
"name": "abi_decode_t_bytes1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "175:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "183:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "191:5:1",
"type": ""
}
],
"src": "146:137:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "341:87:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "351:29:1",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "373:6:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "360:12:1"
},
"nodeType": "YulFunctionCall",
"src": "360:20:1"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "351:5:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "416:5:1"
}
],
"functionName": {
"name": "validator_revert_t_bytes32",
"nodeType": "YulIdentifier",
"src": "389:26:1"
},
"nodeType": "YulFunctionCall",
"src": "389:33:1"
},
"nodeType": "YulExpressionStatement",
"src": "389:33:1"
}
]
},
"name": "abi_decode_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "319:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "327:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "335:5:1",
"type": ""
}
],
"src": "289:139:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "485:86:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "495:29:1",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "517:6:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "504:12:1"
},
"nodeType": "YulFunctionCall",
"src": "504:20:1"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "495:5:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "559:5:1"
}
],
"functionName": {
"name": "validator_revert_t_int256",
"nodeType": "YulIdentifier",
"src": "533:25:1"
},
"nodeType": "YulFunctionCall",
"src": "533:32:1"
},
"nodeType": "YulExpressionStatement",
"src": "533:32:1"
}
]
},
"name": "abi_decode_t_int256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "463:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "471:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "479:5:1",
"type": ""
}
],
"src": "434:137:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "629:87:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "639:29:1",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "661:6:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "648:12:1"
},
"nodeType": "YulFunctionCall",
"src": "648:20:1"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "639:5:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "704:5:1"
}
],
"functionName": {
"name": "validator_revert_t_uint256",
"nodeType": "YulIdentifier",
"src": "677:26:1"
},
"nodeType": "YulFunctionCall",
"src": "677:33:1"
},
"nodeType": "YulExpressionStatement",
"src": "677:33:1"
}
]
},
"name": "abi_decode_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "607:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "615:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "623:5:1",
"type": ""
}
],
"src": "577:139:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "772:85:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "782:29:1",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "804:6:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "791:12:1"
},
"nodeType": "YulFunctionCall",
"src": "791:20:1"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "782:5:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "845:5:1"
}
],
"functionName": {
"name": "validator_revert_t_uint8",
"nodeType": "YulIdentifier",
"src": "820:24:1"
},
"nodeType": "YulFunctionCall",
"src": "820:31:1"
},
"nodeType": "YulExpressionStatement",
"src": "820:31:1"
}
]
},
"name": "abi_decode_t_uint8",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "750:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "758:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "766:5:1",
"type": ""
}
],
"src": "722:135:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "944:322:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "990:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "999:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1002:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "992:6:1"
},
"nodeType": "YulFunctionCall",
"src": "992:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "992:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "965:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "974:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "961:3:1"
},
"nodeType": "YulFunctionCall",
"src": "961:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "986:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "957:3:1"
},
"nodeType": "YulFunctionCall",
"src": "957:32:1"
},
"nodeType": "YulIf",
"src": "954:2:1"
},
{
"nodeType": "YulBlock",
"src": "1016:116:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1031:15:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "1045:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1035:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "1060:62:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1094:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1105:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1090:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1090:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1114:7:1"
}
],
"functionName": {
"name": "abi_decode_t_bytes1",
"nodeType": "YulIdentifier",
"src": "1070:19:1"
},
"nodeType": "YulFunctionCall",
"src": "1070:52:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1060:6:1"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "1142:117:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1157:16:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "1171:2:1",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1161:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "1187:62:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1221:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1232:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1217:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1217:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1241:7:1"
}
],
"functionName": {
"name": "abi_decode_t_bytes1",
"nodeType": "YulIdentifier",
"src": "1197:19:1"
},
"nodeType": "YulFunctionCall",
"src": "1197:52:1"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "1187:6:1"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_bytes1t_bytes1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "906:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "917:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "929:6:1",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "937:6:1",
"type": ""
}
],
"src": "863:403:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1352:321:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1398:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1407:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1410:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1400:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1400:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "1400:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1373:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1382:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1369:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1369:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1394:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "1365:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1365:32:1"
},
"nodeType": "YulIf",
"src": "1362:2:1"
},
{
"nodeType": "YulBlock",
"src": "1424:116:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1439:15:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "1453:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1443:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "1468:62:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1502:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1513:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1498:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1498:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1522:7:1"
}
],
"functionName": {
"name": "abi_decode_t_bytes1",
"nodeType": "YulIdentifier",
"src": "1478:19:1"
},
"nodeType": "YulFunctionCall",
"src": "1478:52:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1468:6:1"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "1550:116:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1565:16:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "1579:2:1",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1569:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "1595:61:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1628:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1639:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1624:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1624:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1648:7:1"
}
],
"functionName": {
"name": "abi_decode_t_uint8",
"nodeType": "YulIdentifier",
"src": "1605:18:1"
},
"nodeType": "YulFunctionCall",
"src": "1605:51:1"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "1595:6:1"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_bytes1t_uint8",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1314:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "1325:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1337:6:1",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "1345:6:1",
"type": ""
}
],
"src": "1272:401:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1745:196:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1791:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1800:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1803:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1793:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1793:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "1793:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1766:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1775:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1762:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1762:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1787:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "1758:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1758:32:1"
},
"nodeType": "YulIf",
"src": "1755:2:1"
},
{
"nodeType": "YulBlock",
"src": "1817:117:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1832:15:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "1846:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1836:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "1861:63:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1896:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1907:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1892:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1892:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1916:7:1"
}
],
"functionName": {
"name": "abi_decode_t_bytes32",
"nodeType": "YulIdentifier",
"src": "1871:20:1"
},
"nodeType": "YulFunctionCall",
"src": "1871:53:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1861:6:1"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1715:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "1726:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1738:6:1",
"type": ""
}
],
"src": "1679:262:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2026:320:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2072:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2081:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2084:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "2074:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2074:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "2074:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2047:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2056:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "2043:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2043:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2068:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "2039:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2039:32:1"
},
"nodeType": "YulIf",
"src": "2036:2:1"
},
{
"nodeType": "YulBlock",
"src": "2098:116:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2113:15:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "2127:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2117:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "2142:62:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2176:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2187:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2172:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2172:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2196:7:1"
}
],
"functionName": {
"name": "abi_decode_t_int256",
"nodeType": "YulIdentifier",
"src": "2152:19:1"
},
"nodeType": "YulFunctionCall",
"src": "2152:52:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2142:6:1"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "2224:115:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2239:16:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "2253:2:1",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2243:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "2269:60:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2301:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2312:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2297:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2297:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2321:7:1"
}
],
"functionName": {
"name": "abi_decode_t_bool",
"nodeType": "YulIdentifier",
"src": "2279:17:1"
},
"nodeType": "YulFunctionCall",
"src": "2279:50:1"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "2269:6:1"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_int256t_bool",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1988:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "1999:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "2011:6:1",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "2019:6:1",
"type": ""
}
],
"src": "1947:399:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2418:196:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2464:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2473:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2476:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "2466:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2466:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "2466:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2439:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2448:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "2435:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2435:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2460:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "2431:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2431:32:1"
},
"nodeType": "YulIf",
"src": "2428:2:1"
},
{
"nodeType": "YulBlock",
"src": "2490:117:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2505:15:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "2519:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2509:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "2534:63:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2569:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2580:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2565:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2565:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2589:7:1"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "2544:20:1"
},
"nodeType": "YulFunctionCall",
"src": "2544:53:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2534:6:1"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "2388:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "2399:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "2411:6:1",
"type": ""
}
],
"src": "2352:262:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2700:321:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2746:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2755:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2758:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "2748:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2748:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "2748:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2721:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2730:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "2717:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2717:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2742:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "2713:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2713:32:1"
},
"nodeType": "YulIf",
"src": "2710:2:1"
},
{
"nodeType": "YulBlock",
"src": "2772:117:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2787:15:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "2801:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2791:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "2816:63:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2851:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2862:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2847:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2847:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2871:7:1"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "2826:20:1"
},
"nodeType": "YulFunctionCall",
"src": "2826:53:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2816:6:1"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "2899:115:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2914:16:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "2928:2:1",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2918:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "2944:60:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2976:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2987:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2972:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2972:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2996:7:1"
}
],
"functionName": {
"name": "abi_decode_t_bool",
"nodeType": "YulIdentifier",
"src": "2954:17:1"
},
"nodeType": "YulFunctionCall",
"src": "2954:50:1"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "2944:6:1"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256t_bool",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "2662:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "2673:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "2685:6:1",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "2693:6:1",
"type": ""
}
],
"src": "2620:401:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3124:449:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "3170:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3179:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3182:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "3172:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3172:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "3172:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "3145:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3154:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "3141:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3141:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3166:2:1",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "3137:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3137:32:1"
},
"nodeType": "YulIf",
"src": "3134:2:1"
},
{
"nodeType": "YulBlock",
"src": "3196:117:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "3211:15:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "3225:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "3215:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "3240:63:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3275:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "3286:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3271:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3271:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "3295:7:1"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "3250:20:1"
},
"nodeType": "YulFunctionCall",
"src": "3250:53:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "3240:6:1"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "3323:118:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "3338:16:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "3352:2:1",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "3342:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "3368:63:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3403:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "3414:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3399:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3399:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "3423:7:1"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "3378:20:1"
},
"nodeType": "YulFunctionCall",
"src": "3378:53:1"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "3368:6:1"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "3451:115:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "3466:16:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "3480:2:1",
"type": "",
"value": "64"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "3470:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "3496:60:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3528:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "3539:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3524:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3524:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "3548:7:1"
}
],
"functionName": {
"name": "abi_decode_t_bool",
"nodeType": "YulIdentifier",
"src": "3506:17:1"
},
"nodeType": "YulFunctionCall",
"src": "3506:50:1"
},
"variableNames": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "3496:6:1"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256t_uint256t_bool",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "3078:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "3089:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "3101:6:1",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "3109:6:1",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "3117:6:1",
"type": ""
}
],
"src": "3027:546:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3646:50:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3663:3:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3683:5:1"
}
],
"functionName": {
"name": "cleanup_t_bool",
"nodeType": "YulIdentifier",
"src": "3668:14:1"
},
"nodeType": "YulFunctionCall",
"src": "3668:21:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3656:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3656:34:1"
},
"nodeType": "YulExpressionStatement",
"src": "3656:34:1"
}
]
},
"name": "abi_encode_t_bool_to_t_bool_fromStack_library",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3634:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "3641:3:1",
"type": ""
}
],
"src": "3579:117:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3775:53:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3792:3:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3815:5:1"
}
],
"functionName": {
"name": "cleanup_t_bytes16",
"nodeType": "YulIdentifier",
"src": "3797:17:1"
},
"nodeType": "YulFunctionCall",
"src": "3797:24:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3785:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3785:37:1"
},
"nodeType": "YulExpressionStatement",
"src": "3785:37:1"
}
]
},
"name": "abi_encode_t_bytes16_to_t_bytes16_fromStack_library",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3763:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "3770:3:1",
"type": ""
}
],
"src": "3702:126:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3905:52:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3922:3:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3944:5:1"
}
],
"functionName": {
"name": "cleanup_t_bytes1",
"nodeType": "YulIdentifier",
"src": "3927:16:1"
},
"nodeType": "YulFunctionCall",
"src": "3927:23:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3915:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3915:36:1"
},
"nodeType": "YulExpressionStatement",
"src": "3915:36:1"
}
]
},
"name": "abi_encode_t_bytes1_to_t_bytes1_fromStack_library",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3893:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "3900:3:1",
"type": ""
}
],
"src": "3834:123:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4034:52:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4051:3:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4073:5:1"
}
],
"functionName": {
"name": "cleanup_t_bytes4",
"nodeType": "YulIdentifier",
"src": "4056:16:1"
},
"nodeType": "YulFunctionCall",
"src": "4056:23:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4044:6:1"
},
"nodeType": "YulFunctionCall",
"src": "4044:36:1"
},
"nodeType": "YulExpressionStatement",
"src": "4044:36:1"
}
]
},
"name": "abi_encode_t_bytes4_to_t_bytes4_fromStack_library",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4022:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "4029:3:1",
"type": ""
}
],
"src": "3963:123:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4238:220:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4248:74:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4314:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4319:2:1",
"type": "",
"value": "23"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "4255:58:1"
},
"nodeType": "YulFunctionCall",
"src": "4255:67:1"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4248:3:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4420:3:1"
}
],
"functionName": {
"name": "store_literal_in_memory_2e15b38e7493d9bd63c0bf8828f1dcc8ef1e85e302f80d14625c1fc3691061f0",
"nodeType": "YulIdentifier",
"src": "4331:88:1"
},
"nodeType": "YulFunctionCall",
"src": "4331:93:1"
},
"nodeType": "YulExpressionStatement",
"src": "4331:93:1"
},
{
"nodeType": "YulAssignment",
"src": "4433:19:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4444:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4449:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4440:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4440:12:1"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "4433:3:1"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_2e15b38e7493d9bd63c0bf8828f1dcc8ef1e85e302f80d14625c1fc3691061f0_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "4226:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "4234:3:1",
"type": ""
}
],
"src": "4092:366:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4537:53:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4554:3:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4577:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "4559:17:1"
},
"nodeType": "YulFunctionCall",
"src": "4559:24:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4547:6:1"
},
"nodeType": "YulFunctionCall",
"src": "4547:37:1"
},
"nodeType": "YulExpressionStatement",
"src": "4547:37:1"
}
]
},
"name": "abi_encode_t_uint256_to_t_uint256_fromStack_library",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4525:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "4532:3:1",
"type": ""
}
],
"src": "4464:126:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4696:126:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4706:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4718:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4729:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4714:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4714:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "4706:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "4788:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4801:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4812:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4797:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4797:17:1"
}
],
"functionName": {
"name": "abi_encode_t_bool_to_t_bool_fromStack_library",
"nodeType": "YulIdentifier",
"src": "4742:45:1"
},
"nodeType": "YulFunctionCall",
"src": "4742:73:1"
},
"nodeType": "YulExpressionStatement",
"src": "4742:73:1"
}
]
},
"name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_library_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "4668:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "4680:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "4691:4:1",
"type": ""
}
],
"src": "4596:226:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4934:132:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4944:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4956:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4967:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4952:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4952:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "4944:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "5032:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5045:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5056:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5041:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5041:17:1"
}
],
"functionName": {
"name": "abi_encode_t_bytes16_to_t_bytes16_fromStack_library",
"nodeType": "YulIdentifier",
"src": "4980:51:1"
},
"nodeType": "YulFunctionCall",
"src": "4980:79:1"
},
"nodeType": "YulExpressionStatement",
"src": "4980:79:1"
}
]
},
"name": "abi_encode_tuple_t_bytes16__to_t_bytes16__fromStack_library_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "4906:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "4918:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "4929:4:1",
"type": ""
}
],
"src": "4828:238:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5176:130:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5186:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5198:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5209:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5194:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5194:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "5186:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "5272:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5285:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5296:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5281:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5281:17:1"
}
],
"functionName": {
"name": "abi_encode_t_bytes1_to_t_bytes1_fromStack_library",
"nodeType": "YulIdentifier",
"src": "5222:49:1"
},
"nodeType": "YulFunctionCall",
"src": "5222:77:1"
},
"nodeType": "YulExpressionStatement",
"src": "5222:77:1"
}
]
},
"name": "abi_encode_tuple_t_bytes1__to_t_bytes1__fromStack_library_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "5148:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "5160:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "5171:4:1",
"type": ""
}
],
"src": "5072:234:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5416:130:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5426:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5438:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5449:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5434:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5434:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "5426:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "5512:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5525:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5536:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5521:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5521:17:1"
}
],
"functionName": {
"name": "abi_encode_t_bytes4_to_t_bytes4_fromStack_library",
"nodeType": "YulIdentifier",
"src": "5462:49:1"
},
"nodeType": "YulFunctionCall",
"src": "5462:77:1"
},
"nodeType": "YulExpressionStatement",
"src": "5462:77:1"
}
]
},
"name": "abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_library_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "5388:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "5400:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "5411:4:1",
"type": ""
}
],
"src": "5312:234:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5723:248:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5733:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5745:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5756:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5741:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5741:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "5733:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5780:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5791:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5776:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5776:17:1"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "5799:4:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5805:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "5795:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5795:20:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5769:6:1"
},
"nodeType": "YulFunctionCall",
"src": "5769:47:1"
},
"nodeType": "YulExpressionStatement",
"src": "5769:47:1"
},
{
"nodeType": "YulAssignment",
"src": "5825:139:1",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "5959:4:1"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_2e15b38e7493d9bd63c0bf8828f1dcc8ef1e85e302f80d14625c1fc3691061f0_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "5833:124:1"
},
"nodeType": "YulFunctionCall",
"src": "5833:131:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "5825:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_2e15b38e7493d9bd63c0bf8828f1dcc8ef1e85e302f80d14625c1fc3691061f0__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "5703:9:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "5718:4:1",
"type": ""
}
],
"src": "5552:419:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6083:132:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6093:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6105:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6116:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6101:3:1"
},
"nodeType": "YulFunctionCall",
"src": "6101:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "6093:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "6181:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6194:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6205:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6190:3:1"
},
"nodeType": "YulFunctionCall",
"src": "6190:17:1"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack_library",
"nodeType": "YulIdentifier",
"src": "6129:51:1"
},
"nodeType": "YulFunctionCall",
"src": "6129:79:1"
},
"nodeType": "YulExpressionStatement",
"src": "6129:79:1"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_library_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "6055:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "6067:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "6078:4:1",
"type": ""
}
],
"src": "5977:238:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6317:73:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6334:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "6339:6:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6327:6:1"
},
"nodeType": "YulFunctionCall",
"src": "6327:19:1"
},
"nodeType": "YulExpressionStatement",
"src": "6327:19:1"
},
{
"nodeType": "YulAssignment",
"src": "6355:29:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6374:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6379:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6370:3:1"
},
"nodeType": "YulFunctionCall",
"src": "6370:14:1"
},
"variableNames": [
{
"name": "updated_pos",
"nodeType": "YulIdentifier",
"src": "6355:11:1"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "6289:3:1",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "6294:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nodeType": "YulTypedName",
"src": "6305:11:1",
"type": ""
}
],
"src": "6221:169:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6440:261:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6450:25:1",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "6473:1:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "6455:17:1"
},
"nodeType": "YulFunctionCall",
"src": "6455:20:1"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "6450:1:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "6484:25:1",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "6507:1:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "6489:17:1"
},
"nodeType": "YulFunctionCall",
"src": "6489:20:1"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "6484:1:1"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "6647:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "6649:16:1"
},
"nodeType": "YulFunctionCall",
"src": "6649:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "6649:18:1"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "6568:1:1"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6575:66:1",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "6643:1:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "6571:3:1"
},
"nodeType": "YulFunctionCall",
"src": "6571:74:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "6565:2:1"
},
"nodeType": "YulFunctionCall",
"src": "6565:81:1"
},
"nodeType": "YulIf",
"src": "6562:2:1"
},
{
"nodeType": "YulAssignment",
"src": "6679:16:1",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "6690:1:1"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "6693:1:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6686:3:1"
},
"nodeType": "YulFunctionCall",
"src": "6686:9:1"
},
"variableNames": [
{
"name": "sum",
"nodeType": "YulIdentifier",
"src": "6679:3:1"
}
]
}
]
},
"name": "checked_add_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "6427:1:1",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "6430:1:1",
"type": ""
}
],
"returnVariables": [
{
"name": "sum",
"nodeType": "YulTypedName",
"src": "6436:3:1",
"type": ""
}
],
"src": "6396:305:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6780:775:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6790:15:1",
"value": {
"name": "_power",
"nodeType": "YulIdentifier",
"src": "6799:6:1"
},
"variableNames": [
{
"name": "power",
"nodeType": "YulIdentifier",
"src": "6790:5:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "6814:14:1",
"value": {
"name": "_base",
"nodeType": "YulIdentifier",
"src": "6823:5:1"
},
"variableNames": [
{
"name": "base",
"nodeType": "YulIdentifier",
"src": "6814:4:1"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "6872:677:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "6960:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "6962:16:1"
},
"nodeType": "YulFunctionCall",
"src": "6962:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "6962:18:1"
}
]
},
"condition": {
"arguments": [
{
"name": "base",
"nodeType": "YulIdentifier",
"src": "6938:4:1"
},
{
"arguments": [
{
"name": "max",
"nodeType": "YulIdentifier",
"src": "6948:3:1"
},
{
"name": "base",
"nodeType": "YulIdentifier",
"src": "6953:4:1"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "6944:3:1"
},
"nodeType": "YulFunctionCall",
"src": "6944:14:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "6935:2:1"
},
"nodeType": "YulFunctionCall",
"src": "6935:24:1"
},
"nodeType": "YulIf",
"src": "6932:2:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7027:419:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7407:25:1",
"value": {
"arguments": [
{
"name": "power",
"nodeType": "YulIdentifier",
"src": "7420:5:1"
},
{
"name": "base",
"nodeType": "YulIdentifier",
"src": "7427:4:1"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "7416:3:1"
},
"nodeType": "YulFunctionCall",
"src": "7416:16:1"
},
"variableNames": [
{
"name": "power",
"nodeType": "YulIdentifier",
"src": "7407:5:1"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "exponent",
"nodeType": "YulIdentifier",
"src": "7002:8:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7012:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "6998:3:1"
},
"nodeType": "YulFunctionCall",
"src": "6998:16:1"
},
"nodeType": "YulIf",
"src": "6995:2:1"
},
{
"nodeType": "YulAssignment",
"src": "7459:23:1",
"value": {
"arguments": [
{
"name": "base",
"nodeType": "YulIdentifier",
"src": "7471:4:1"
},
{
"name": "base",
"nodeType": "YulIdentifier",
"src": "7477:4:1"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "7467:3:1"
},
"nodeType": "YulFunctionCall",
"src": "7467:15:1"
},
"variableNames": [
{
"name": "base",
"nodeType": "YulIdentifier",
"src": "7459:4:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "7495:44:1",
"value": {
"arguments": [
{
"name": "exponent",
"nodeType": "YulIdentifier",
"src": "7530:8:1"
}
],
"functionName": {
"name": "shift_right_1_unsigned",
"nodeType": "YulIdentifier",
"src": "7507:22:1"
},
"nodeType": "YulFunctionCall",
"src": "7507:32:1"
},
"variableNames": [
{
"name": "exponent",
"nodeType": "YulIdentifier",
"src": "7495:8:1"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "exponent",
"nodeType": "YulIdentifier",
"src": "6848:8:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6858:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "6845:2:1"
},
"nodeType": "YulFunctionCall",
"src": "6845:15:1"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "6861:2:1",
"statements": []
},
"pre": {
"nodeType": "YulBlock",
"src": "6841:3:1",
"statements": []
},
"src": "6837:712:1"
}
]
},
"name": "checked_exp_helper",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "_power",
"nodeType": "YulTypedName",
"src": "6735:6:1",
"type": ""
},
{
"name": "_base",
"nodeType": "YulTypedName",
"src": "6743:5:1",
"type": ""
},
{
"name": "exponent",
"nodeType": "YulTypedName",
"src": "6750:8:1",
"type": ""
},
{
"name": "max",
"nodeType": "YulTypedName",
"src": "6760:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "power",
"nodeType": "YulTypedName",
"src": "6768:5:1",
"type": ""
},
{
"name": "base",
"nodeType": "YulTypedName",
"src": "6775:4:1",
"type": ""
}
],
"src": "6707:848:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7625:217:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7635:31:1",
"value": {
"arguments": [
{
"name": "base",
"nodeType": "YulIdentifier",
"src": "7661:4:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "7643:17:1"
},
"nodeType": "YulFunctionCall",
"src": "7643:23:1"
},
"variableNames": [
{
"name": "base",
"nodeType": "YulIdentifier",
"src": "7635:4:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "7675:37:1",
"value": {
"arguments": [
{
"name": "exponent",
"nodeType": "YulIdentifier",
"src": "7703:8:1"
}
],
"functionName": {
"name": "cleanup_t_uint8",
"nodeType": "YulIdentifier",
"src": "7687:15:1"
},
"nodeType": "YulFunctionCall",
"src": "7687:25:1"
},
"variableNames": [
{
"name": "exponent",
"nodeType": "YulIdentifier",
"src": "7675:8:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "7722:113:1",
"value": {
"arguments": [
{
"name": "base",
"nodeType": "YulIdentifier",
"src": "7752:4:1"
},
{
"name": "exponent",
"nodeType": "YulIdentifier",
"src": "7758:8:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7768:66:1",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "checked_exp_unsigned",
"nodeType": "YulIdentifier",
"src": "7731:20:1"
},
"nodeType": "YulFunctionCall",
"src": "7731:104:1"
},
"variableNames": [
{
"name": "power",
"nodeType": "YulIdentifier",
"src": "7722:5:1"
}
]
}
]
},
"name": "checked_exp_t_uint256_t_uint8",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "base",
"nodeType": "YulTypedName",
"src": "7600:4:1",
"type": ""
},
{
"name": "exponent",
"nodeType": "YulTypedName",
"src": "7606:8:1",
"type": ""
}
],
"returnVariables": [
{
"name": "power",
"nodeType": "YulTypedName",
"src": "7619:5:1",
"type": ""
}
],
"src": "7561:281:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7910:153:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7920:29:1",
"value": {
"arguments": [
{
"name": "base",
"nodeType": "YulIdentifier",
"src": "7944:4:1"
}
],
"functionName": {
"name": "cleanup_t_uint8",
"nodeType": "YulIdentifier",
"src": "7928:15:1"
},
"nodeType": "YulFunctionCall",
"src": "7928:21:1"
},
"variableNames": [
{
"name": "base",
"nodeType": "YulIdentifier",
"src": "7920:4:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "7958:37:1",
"value": {
"arguments": [
{
"name": "exponent",
"nodeType": "YulIdentifier",
"src": "7986:8:1"
}
],
"functionName": {
"name": "cleanup_t_uint8",
"nodeType": "YulIdentifier",
"src": "7970:15:1"
},
"nodeType": "YulFunctionCall",
"src": "7970:25:1"
},
"variableNames": [
{
"name": "exponent",
"nodeType": "YulIdentifier",
"src": "7958:8:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "8005:51:1",
"value": {
"arguments": [
{
"name": "base",
"nodeType": "YulIdentifier",
"src": "8035:4:1"
},
{
"name": "exponent",
"nodeType": "YulIdentifier",
"src": "8041:8:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8051:4:1",
"type": "",
"value": "0xff"
}
],
"functionName": {
"name": "checked_exp_unsigned",
"nodeType": "YulIdentifier",
"src": "8014:20:1"
},
"nodeType": "YulFunctionCall",
"src": "8014:42:1"
},
"variableNames": [
{
"name": "power",
"nodeType": "YulIdentifier",
"src": "8005:5:1"
}
]
}
]
},
"name": "checked_exp_t_uint8_t_uint8",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "base",
"nodeType": "YulTypedName",
"src": "7885:4:1",
"type": ""
},
{
"name": "exponent",
"nodeType": "YulTypedName",
"src": "7891:8:1",
"type": ""
}
],
"returnVariables": [
{
"name": "power",
"nodeType": "YulTypedName",
"src": "7904:5:1",
"type": ""
}
],
"src": "7848:215:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8129:1013:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "8324:20:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "8326:10:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "8335:1:1",
"type": "",
"value": "1"
},
"variableNames": [
{
"name": "power",
"nodeType": "YulIdentifier",
"src": "8326:5:1"
}
]
},
{
"nodeType": "YulLeave",
"src": "8337:5:1"
}
]
},
"condition": {
"arguments": [
{
"name": "exponent",
"nodeType": "YulIdentifier",
"src": "8314:8:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "8307:6:1"
},
"nodeType": "YulFunctionCall",
"src": "8307:16:1"
},
"nodeType": "YulIf",
"src": "8304:2:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8369:20:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "8371:10:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "8380:1:1",
"type": "",
"value": "0"
},
"variableNames": [
{
"name": "power",
"nodeType": "YulIdentifier",
"src": "8371:5:1"
}
]
},
{
"nodeType": "YulLeave",
"src": "8382:5:1"
}
]
},
"condition": {
"arguments": [
{
"name": "base",
"nodeType": "YulIdentifier",
"src": "8363:4:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "8356:6:1"
},
"nodeType": "YulFunctionCall",
"src": "8356:12:1"
},
"nodeType": "YulIf",
"src": "8353:2:1"
},
{
"cases": [
{
"body": {
"nodeType": "YulBlock",
"src": "8499:20:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "8501:10:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "8510:1:1",
"type": "",
"value": "1"
},
"variableNames": [
{
"name": "power",
"nodeType": "YulIdentifier",
"src": "8501:5:1"
}
]
},
{
"nodeType": "YulLeave",
"src": "8512:5:1"
}
]
},
"nodeType": "YulCase",
"src": "8492:27:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "8497:1:1",
"type": "",
"value": "1"
}
},
{
"body": {
"nodeType": "YulBlock",
"src": "8543:176:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "8578:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "8580:16:1"
},
"nodeType": "YulFunctionCall",
"src": "8580:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "8580:18:1"
}
]
},
"condition": {
"arguments": [
{
"name": "exponent",
"nodeType": "YulIdentifier",
"src": "8563:8:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8573:3:1",
"type": "",
"value": "255"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "8560:2:1"
},
"nodeType": "YulFunctionCall",
"src": "8560:17:1"
},
"nodeType": "YulIf",
"src": "8557:2:1"
},
{
"nodeType": "YulAssignment",
"src": "8613:25:1",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8626:1:1",
"type": "",
"value": "2"
},
{
"name": "exponent",
"nodeType": "YulIdentifier",
"src": "8629:8:1"
}
],
"functionName": {
"name": "exp",
"nodeType": "YulIdentifier",
"src": "8622:3:1"
},
"nodeType": "YulFunctionCall",
"src": "8622:16:1"
},
"variableNames": [
{
"name": "power",
"nodeType": "YulIdentifier",
"src": "8613:5:1"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "8669:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "8671:16:1"
},
"nodeType": "YulFunctionCall",
"src": "8671:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "8671:18:1"
}
]
},
"condition": {
"arguments": [
{
"name": "power",
"nodeType": "YulIdentifier",
"src": "8657:5:1"
},
{
"name": "max",
"nodeType": "YulIdentifier",
"src": "8664:3:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "8654:2:1"
},
"nodeType": "YulFunctionCall",
"src": "8654:14:1"
},
"nodeType": "YulIf",
"src": "8651:2:1"
},
{
"nodeType": "YulLeave",
"src": "8704:5:1"
}
]
},
"nodeType": "YulCase",
"src": "8528:191:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "8533:1:1",
"type": "",
"value": "2"
}
}
],
"expression": {
"name": "base",
"nodeType": "YulIdentifier",
"src": "8449:4:1"
},
"nodeType": "YulSwitch",
"src": "8442:277:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8851:123:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "8865:28:1",
"value": {
"arguments": [
{
"name": "base",
"nodeType": "YulIdentifier",
"src": "8878:4:1"
},
{
"name": "exponent",
"nodeType": "YulIdentifier",
"src": "8884:8:1"
}
],
"functionName": {
"name": "exp",
"nodeType": "YulIdentifier",
"src": "8874:3:1"
},
"nodeType": "YulFunctionCall",
"src": "8874:19:1"
},
"variableNames": [
{
"name": "power",
"nodeType": "YulIdentifier",
"src": "8865:5:1"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "8924:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "8926:16:1"
},
"nodeType": "YulFunctionCall",
"src": "8926:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "8926:18:1"
}
]
},
"condition": {
"arguments": [
{
"name": "power",
"nodeType": "YulIdentifier",
"src": "8912:5:1"
},
{
"name": "max",
"nodeType": "YulIdentifier",
"src": "8919:3:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "8909:2:1"
},
"nodeType": "YulFunctionCall",
"src": "8909:14:1"
},
"nodeType": "YulIf",
"src": "8906:2:1"
},
{
"nodeType": "YulLeave",
"src": "8959:5:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "base",
"nodeType": "YulIdentifier",
"src": "8754:4:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8760:2:1",
"type": "",
"value": "11"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "8751:2:1"
},
"nodeType": "YulFunctionCall",
"src": "8751:12:1"
},
{
"arguments": [
{
"name": "exponent",
"nodeType": "YulIdentifier",
"src": "8768:8:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8778:2:1",
"type": "",
"value": "78"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "8765:2:1"
},
"nodeType": "YulFunctionCall",
"src": "8765:16:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "8747:3:1"
},
"nodeType": "YulFunctionCall",
"src": "8747:35:1"
},
{
"arguments": [
{
"arguments": [
{
"name": "base",
"nodeType": "YulIdentifier",
"src": "8803:4:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8809:3:1",
"type": "",
"value": "307"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "8800:2:1"
},
"nodeType": "YulFunctionCall",
"src": "8800:13:1"
},
{
"arguments": [
{
"name": "exponent",
"nodeType": "YulIdentifier",
"src": "8818:8:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8828:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "8815:2:1"
},
"nodeType": "YulFunctionCall",
"src": "8815:16:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "8796:3:1"
},
"nodeType": "YulFunctionCall",
"src": "8796:36:1"
}
],
"functionName": {
"name": "or",
"nodeType": "YulIdentifier",
"src": "8731:2:1"
},
"nodeType": "YulFunctionCall",
"src": "8731:111:1"
},
"nodeType": "YulIf",
"src": "8728:2:1"
},
{
"nodeType": "YulAssignment",
"src": "8984:57:1",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9018:1:1",
"type": "",
"value": "1"
},
{
"name": "base",
"nodeType": "YulIdentifier",
"src": "9021:4:1"
},
{
"name": "exponent",
"nodeType": "YulIdentifier",
"src": "9027:8:1"
},
{
"name": "max",
"nodeType": "YulIdentifier",
"src": "9037:3:1"
}
],
"functionName": {
"name": "checked_exp_helper",
"nodeType": "YulIdentifier",
"src": "8999:18:1"
},
"nodeType": "YulFunctionCall",
"src": "8999:42:1"
},
"variableNames": [
{
"name": "power",
"nodeType": "YulIdentifier",
"src": "8984:5:1"
},
{
"name": "base",
"nodeType": "YulIdentifier",
"src": "8991:4:1"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "9080:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "9082:16:1"
},
"nodeType": "YulFunctionCall",
"src": "9082:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "9082:18:1"
}
]
},
"condition": {
"arguments": [
{
"name": "power",
"nodeType": "YulIdentifier",
"src": "9057:5:1"
},
{
"arguments": [
{
"name": "max",
"nodeType": "YulIdentifier",
"src": "9068:3:1"
},
{
"name": "base",
"nodeType": "YulIdentifier",
"src": "9073:4:1"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "9064:3:1"
},
"nodeType": "YulFunctionCall",
"src": "9064:14:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "9054:2:1"
},
"nodeType": "YulFunctionCall",
"src": "9054:25:1"
},
"nodeType": "YulIf",
"src": "9051:2:1"
},
{
"nodeType": "YulAssignment",
"src": "9111:25:1",
"value": {
"arguments": [
{
"name": "power",
"nodeType": "YulIdentifier",
"src": "9124:5:1"
},
{
"name": "base",
"nodeType": "YulIdentifier",
"src": "9131:4:1"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "9120:3:1"
},
"nodeType": "YulFunctionCall",
"src": "9120:16:1"
},
"variableNames": [
{
"name": "power",
"nodeType": "YulIdentifier",
"src": "9111:5:1"
}
]
}
]
},
"name": "checked_exp_unsigned",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "base",
"nodeType": "YulTypedName",
"src": "8099:4:1",
"type": ""
},
{
"name": "exponent",
"nodeType": "YulTypedName",
"src": "8105:8:1",
"type": ""
},
{
"name": "max",
"nodeType": "YulTypedName",
"src": "8115:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "power",
"nodeType": "YulTypedName",
"src": "8123:5:1",
"type": ""
}
],
"src": "8069:1073:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9193:146:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9203:25:1",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "9226:1:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "9208:17:1"
},
"nodeType": "YulFunctionCall",
"src": "9208:20:1"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "9203:1:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "9237:25:1",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "9260:1:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "9242:17:1"
},
"nodeType": "YulFunctionCall",
"src": "9242:20:1"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "9237:1:1"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "9284:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "9286:16:1"
},
"nodeType": "YulFunctionCall",
"src": "9286:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "9286:18:1"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "9278:1:1"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "9281:1:1"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "9275:2:1"
},
"nodeType": "YulFunctionCall",
"src": "9275:8:1"
},
"nodeType": "YulIf",
"src": "9272:2:1"
},
{
"nodeType": "YulAssignment",
"src": "9316:17:1",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "9328:1:1"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "9331:1:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "9324:3:1"
},
"nodeType": "YulFunctionCall",
"src": "9324:9:1"
},
"variableNames": [
{
"name": "diff",
"nodeType": "YulIdentifier",
"src": "9316:4:1"
}
]
}
]
},
"name": "checked_sub_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "9179:1:1",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "9182:1:1",
"type": ""
}
],
"returnVariables": [
{
"name": "diff",
"nodeType": "YulTypedName",
"src": "9188:4:1",
"type": ""
}
],
"src": "9148:191:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9388:142:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9398:23:1",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "9419:1:1"
}
],
"functionName": {
"name": "cleanup_t_uint8",
"nodeType": "YulIdentifier",
"src": "9403:15:1"
},
"nodeType": "YulFunctionCall",
"src": "9403:18:1"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "9398:1:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "9430:23:1",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "9451:1:1"
}
],
"functionName": {
"name": "cleanup_t_uint8",
"nodeType": "YulIdentifier",
"src": "9435:15:1"
},
"nodeType": "YulFunctionCall",
"src": "9435:18:1"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "9430:1:1"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "9475:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "9477:16:1"
},
"nodeType": "YulFunctionCall",
"src": "9477:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "9477:18:1"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "9469:1:1"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "9472:1:1"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "9466:2:1"
},
"nodeType": "YulFunctionCall",
"src": "9466:8:1"
},
"nodeType": "YulIf",
"src": "9463:2:1"
},
{
"nodeType": "YulAssignment",
"src": "9507:17:1",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "9519:1:1"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "9522:1:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "9515:3:1"
},
"nodeType": "YulFunctionCall",
"src": "9515:9:1"
},
"variableNames": [
{
"name": "diff",
"nodeType": "YulIdentifier",
"src": "9507:4:1"
}
]
}
]
},
"name": "checked_sub_t_uint8",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "9374:1:1",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "9377:1:1",
"type": ""
}
],
"returnVariables": [
{
"name": "diff",
"nodeType": "YulTypedName",
"src": "9383:4:1",
"type": ""
}
],
"src": "9345:185:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9578:48:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9588:32:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "9613:5:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "9606:6:1"
},
"nodeType": "YulFunctionCall",
"src": "9606:13:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "9599:6:1"
},
"nodeType": "YulFunctionCall",
"src": "9599:21:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "9588:7:1"
}
]
}
]
},
"name": "cleanup_t_bool",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "9560:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "9570:7:1",
"type": ""
}
],
"src": "9536:90:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9676:105:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9686:89:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "9701:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9708:66:1",
"type": "",
"value": "0xff00000000000000000000000000000000000000000000000000000000000000"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "9697:3:1"
},
"nodeType": "YulFunctionCall",
"src": "9697:78:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "9686:7:1"
}
]
}
]
},
"name": "cleanup_t_bytes1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "9658:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "9668:7:1",
"type": ""
}
],
"src": "9632:149:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9832:105:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9842:89:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "9857:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9864:66:1",
"type": "",
"value": "0xffffffffffffffffffffffffffffffff00000000000000000000000000000000"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "9853:3:1"
},
"nodeType": "YulFunctionCall",
"src": "9853:78:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "9842:7:1"
}
]
}
]
},
"name": "cleanup_t_bytes16",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "9814:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "9824:7:1",
"type": ""
}
],
"src": "9787:150:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9988:32:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9998:16:1",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "10009:5:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "9998:7:1"
}
]
}
]
},
"name": "cleanup_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "9970:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "9980:7:1",
"type": ""
}
],
"src": "9943:77:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10070:105:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "10080:89:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "10095:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10102:66:1",
"type": "",
"value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "10091:3:1"
},
"nodeType": "YulFunctionCall",
"src": "10091:78:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "10080:7:1"
}
]
}
]
},
"name": "cleanup_t_bytes4",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "10052:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "10062:7:1",
"type": ""
}
],
"src": "10026:149:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10225:32:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "10235:16:1",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "10246:5:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "10235:7:1"
}
]
}
]
},
"name": "cleanup_t_int256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "10207:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "10217:7:1",
"type": ""
}
],
"src": "10181:76:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10308:32:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "10318:16:1",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "10329:5:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "10318:7:1"
}
]
}
]
},
"name": "cleanup_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "10290:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "10300:7:1",
"type": ""
}
],
"src": "10263:77:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10389:43:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "10399:27:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "10414:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10421:4:1",
"type": "",
"value": "0xff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "10410:3:1"
},
"nodeType": "YulFunctionCall",
"src": "10410:16:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "10399:7:1"
}
]
}
]
},
"name": "cleanup_t_uint8",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "10371:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "10381:7:1",
"type": ""
}
],
"src": "10346:86:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10472:142:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "10482:25:1",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "10505:1:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "10487:17:1"
},
"nodeType": "YulFunctionCall",
"src": "10487:20:1"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "10482:1:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "10516:25:1",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "10539:1:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "10521:17:1"
},
"nodeType": "YulFunctionCall",
"src": "10521:20:1"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "10516:1:1"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "10563:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x12",
"nodeType": "YulIdentifier",
"src": "10565:16:1"
},
"nodeType": "YulFunctionCall",
"src": "10565:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "10565:18:1"
}
]
},
"condition": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "10560:1:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "10553:6:1"
},
"nodeType": "YulFunctionCall",
"src": "10553:9:1"
},
"nodeType": "YulIf",
"src": "10550:2:1"
},
{
"nodeType": "YulAssignment",
"src": "10594:14:1",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "10603:1:1"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "10606:1:1"
}
],
"functionName": {
"name": "mod",
"nodeType": "YulIdentifier",
"src": "10599:3:1"
},
"nodeType": "YulFunctionCall",
"src": "10599:9:1"
},
"variableNames": [
{
"name": "r",
"nodeType": "YulIdentifier",
"src": "10594:1:1"
}
]
}
]
},
"name": "mod_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "10461:1:1",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "10464:1:1",
"type": ""
}
],
"returnVariables": [
{
"name": "r",
"nodeType": "YulTypedName",
"src": "10470:1:1",
"type": ""
}
],
"src": "10438:176:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10648:152:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10665:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10668:77:1",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "10658:6:1"
},
"nodeType": "YulFunctionCall",
"src": "10658:88:1"
},
"nodeType": "YulExpressionStatement",
"src": "10658:88:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10762:1:1",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10765:4:1",
"type": "",
"value": "0x11"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "10755:6:1"
},
"nodeType": "YulFunctionCall",
"src": "10755:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "10755:15:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10786:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10789:4:1",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "10779:6:1"
},
"nodeType": "YulFunctionCall",
"src": "10779:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "10779:15:1"
}
]
},
"name": "panic_error_0x11",
"nodeType": "YulFunctionDefinition",
"src": "10620:180:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10834:152:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10851:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10854:77:1",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "10844:6:1"
},
"nodeType": "YulFunctionCall",
"src": "10844:88:1"
},
"nodeType": "YulExpressionStatement",
"src": "10844:88:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10948:1:1",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10951:4:1",
"type": "",
"value": "0x12"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "10941:6:1"
},
"nodeType": "YulFunctionCall",
"src": "10941:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "10941:15:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10972:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10975:4:1",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "10965:6:1"
},
"nodeType": "YulFunctionCall",
"src": "10965:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "10965:15:1"
}
]
},
"name": "panic_error_0x12",
"nodeType": "YulFunctionDefinition",
"src": "10806:180:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11043:51:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "11053:34:1",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11078:1:1",
"type": "",
"value": "1"
},
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "11081:5:1"
}
],
"functionName": {
"name": "shr",
"nodeType": "YulIdentifier",
"src": "11074:3:1"
},
"nodeType": "YulFunctionCall",
"src": "11074:13:1"
},
"variableNames": [
{
"name": "newValue",
"nodeType": "YulIdentifier",
"src": "11053:8:1"
}
]
}
]
},
"name": "shift_right_1_unsigned",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "11024:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "newValue",
"nodeType": "YulTypedName",
"src": "11034:8:1",
"type": ""
}
],
"src": "10992:102:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11206:67:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "11228:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11236:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11224:3:1"
},
"nodeType": "YulFunctionCall",
"src": "11224:14:1"
},
{
"kind": "string",
"nodeType": "YulLiteral",
"src": "11240:25:1",
"type": "",
"value": "Overflow encountered ! "
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "11217:6:1"
},
"nodeType": "YulFunctionCall",
"src": "11217:49:1"
},
"nodeType": "YulExpressionStatement",
"src": "11217:49:1"
}
]
},
"name": "store_literal_in_memory_2e15b38e7493d9bd63c0bf8828f1dcc8ef1e85e302f80d14625c1fc3691061f0",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "11198:6:1",
"type": ""
}
],
"src": "11100:173:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11319:76:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "11373:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11382:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11385:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "11375:6:1"
},
"nodeType": "YulFunctionCall",
"src": "11375:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "11375:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "11342:5:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "11364:5:1"
}
],
"functionName": {
"name": "cleanup_t_bool",
"nodeType": "YulIdentifier",
"src": "11349:14:1"
},
"nodeType": "YulFunctionCall",
"src": "11349:21:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "11339:2:1"
},
"nodeType": "YulFunctionCall",
"src": "11339:32:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "11332:6:1"
},
"nodeType": "YulFunctionCall",
"src": "11332:40:1"
},
"nodeType": "YulIf",
"src": "11329:2:1"
}
]
},
"name": "validator_revert_t_bool",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "11312:5:1",
"type": ""
}
],
"src": "11279:116:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11443:78:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "11499:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11508:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11511:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "11501:6:1"
},
"nodeType": "YulFunctionCall",
"src": "11501:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "11501:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "11466:5:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "11490:5:1"
}
],
"functionName": {
"name": "cleanup_t_bytes1",
"nodeType": "YulIdentifier",
"src": "11473:16:1"
},
"nodeType": "YulFunctionCall",
"src": "11473:23:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "11463:2:1"
},
"nodeType": "YulFunctionCall",
"src": "11463:34:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "11456:6:1"
},
"nodeType": "YulFunctionCall",
"src": "11456:42:1"
},
"nodeType": "YulIf",
"src": "11453:2:1"
}
]
},
"name": "validator_revert_t_bytes1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "11436:5:1",
"type": ""
}
],
"src": "11401:120:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11570:79:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "11627:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11636:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11639:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "11629:6:1"
},
"nodeType": "YulFunctionCall",
"src": "11629:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "11629:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "11593:5:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "11618:5:1"
}
],
"functionName": {
"name": "cleanup_t_bytes32",
"nodeType": "YulIdentifier",
"src": "11600:17:1"
},
"nodeType": "YulFunctionCall",
"src": "11600:24:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "11590:2:1"
},
"nodeType": "YulFunctionCall",
"src": "11590:35:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "11583:6:1"
},
"nodeType": "YulFunctionCall",
"src": "11583:43:1"
},
"nodeType": "YulIf",
"src": "11580:2:1"
}
]
},
"name": "validator_revert_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "11563:5:1",
"type": ""
}
],
"src": "11527:122:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11697:78:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "11753:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11762:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11765:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "11755:6:1"
},
"nodeType": "YulFunctionCall",
"src": "11755:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "11755:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "11720:5:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "11744:5:1"
}
],
"functionName": {
"name": "cleanup_t_int256",
"nodeType": "YulIdentifier",
"src": "11727:16:1"
},
"nodeType": "YulFunctionCall",
"src": "11727:23:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "11717:2:1"
},
"nodeType": "YulFunctionCall",
"src": "11717:34:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "11710:6:1"
},
"nodeType": "YulFunctionCall",
"src": "11710:42:1"
},
"nodeType": "YulIf",
"src": "11707:2:1"
}
]
},
"name": "validator_revert_t_int256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "11690:5:1",
"type": ""
}
],
"src": "11655:120:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11824:79:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "11881:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11890:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11893:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "11883:6:1"
},
"nodeType": "YulFunctionCall",
"src": "11883:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "11883:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "11847:5:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "11872:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "11854:17:1"
},
"nodeType": "YulFunctionCall",
"src": "11854:24:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "11844:2:1"
},
"nodeType": "YulFunctionCall",
"src": "11844:35:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "11837:6:1"
},
"nodeType": "YulFunctionCall",
"src": "11837:43:1"
},
"nodeType": "YulIf",
"src": "11834:2:1"
}
]
},
"name": "validator_revert_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "11817:5:1",
"type": ""
}
],
"src": "11781:122:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11950:77:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "12005:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12014:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12017:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "12007:6:1"
},
"nodeType": "YulFunctionCall",
"src": "12007:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "12007:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "11973:5:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "11996:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint8",
"nodeType": "YulIdentifier",
"src": "11980:15:1"
},
"nodeType": "YulFunctionCall",
"src": "11980:22:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "11970:2:1"
},
"nodeType": "YulFunctionCall",
"src": "11970:33:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "11963:6:1"
},
"nodeType": "YulFunctionCall",
"src": "11963:41:1"
},
"nodeType": "YulIf",
"src": "11960:2:1"
}
]
},
"name": "validator_revert_t_uint8",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "11943:5:1",
"type": ""
}
],
"src": "11909:118:1"
}
]
},
"contents": "{\n\n function abi_decode_t_bool(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bool(value)\n }\n\n function abi_decode_t_bytes1(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes1(value)\n }\n\n function abi_decode_t_bytes32(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes32(value)\n }\n\n function abi_decode_t_int256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_int256(value)\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_t_uint8(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint8(value)\n }\n\n function abi_decode_tuple_t_bytes1t_bytes1(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes1(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_bytes1(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_bytes1t_uint8(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes1(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint8(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_int256t_bool(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_int256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_bool(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint256t_bool(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_bool(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint256t_uint256t_bool(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_bool(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack_library(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_t_bytes16_to_t_bytes16_fromStack_library(value, pos) {\n mstore(pos, cleanup_t_bytes16(value))\n }\n\n function abi_encode_t_bytes1_to_t_bytes1_fromStack_library(value, pos) {\n mstore(pos, cleanup_t_bytes1(value))\n }\n\n function abi_encode_t_bytes4_to_t_bytes4_fromStack_library(value, pos) {\n mstore(pos, cleanup_t_bytes4(value))\n }\n\n function abi_encode_t_stringliteral_2e15b38e7493d9bd63c0bf8828f1dcc8ef1e85e302f80d14625c1fc3691061f0_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 23)\n store_literal_in_memory_2e15b38e7493d9bd63c0bf8828f1dcc8ef1e85e302f80d14625c1fc3691061f0(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack_library(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_library_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack_library(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_bytes16__to_t_bytes16__fromStack_library_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bytes16_to_t_bytes16_fromStack_library(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_bytes1__to_t_bytes1__fromStack_library_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bytes1_to_t_bytes1_fromStack_library(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_library_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bytes4_to_t_bytes4_fromStack_library(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_stringliteral_2e15b38e7493d9bd63c0bf8828f1dcc8ef1e85e302f80d14625c1fc3691061f0__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_2e15b38e7493d9bd63c0bf8828f1dcc8ef1e85e302f80d14625c1fc3691061f0_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_library_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack_library(value0, add(headStart, 0))\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n // overflow, if x > (maxValue - y)\n if gt(x, sub(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, y)) { panic_error_0x11() }\n\n sum := add(x, y)\n }\n\n function checked_exp_helper(_power, _base, exponent, max) -> power, base {\n power := _power\n base := _base\n for { } gt(exponent, 1) {}\n {\n // overflow check for base * base\n if gt(base, div(max, base)) { panic_error_0x11() }\n if and(exponent, 1)\n {\n // No checks for power := mul(power, base) needed, because the check\n // for base * base above is sufficient, since:\n // |power| <= base (proof by induction) and thus:\n // |power * base| <= base * base <= max <= |min| (for signed)\n // (this is equally true for signed and unsigned exp)\n power := mul(power, base)\n }\n base := mul(base, base)\n exponent := shift_right_1_unsigned(exponent)\n }\n }\n\n function checked_exp_t_uint256_t_uint8(base, exponent) -> power {\n base := cleanup_t_uint256(base)\n exponent := cleanup_t_uint8(exponent)\n\n power := checked_exp_unsigned(base, exponent, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n\n }\n\n function checked_exp_t_uint8_t_uint8(base, exponent) -> power {\n base := cleanup_t_uint8(base)\n exponent := cleanup_t_uint8(exponent)\n\n power := checked_exp_unsigned(base, exponent, 0xff)\n\n }\n\n function checked_exp_unsigned(base, exponent, max) -> power {\n // This function currently cannot be inlined because of the\n // \"leave\" statements. We have to improve the optimizer.\n\n // Note that 0**0 == 1\n if iszero(exponent) { power := 1 leave }\n if iszero(base) { power := 0 leave }\n\n // Specializations for small bases\n switch base\n // 0 is handled above\n case 1 { power := 1 leave }\n case 2\n {\n if gt(exponent, 255) { panic_error_0x11() }\n power := exp(2, exponent)\n if gt(power, max) { panic_error_0x11() }\n leave\n }\n if or(\n and(lt(base, 11), lt(exponent, 78)),\n and(lt(base, 307), lt(exponent, 32))\n )\n {\n power := exp(base, exponent)\n if gt(power, max) { panic_error_0x11() }\n leave\n }\n\n power, base := checked_exp_helper(1, base, exponent, max)\n\n if gt(power, div(max, base)) { panic_error_0x11() }\n power := mul(power, base)\n }\n\n function checked_sub_t_uint256(x, y) -> diff {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n if lt(x, y) { panic_error_0x11() }\n\n diff := sub(x, y)\n }\n\n function checked_sub_t_uint8(x, y) -> diff {\n x := cleanup_t_uint8(x)\n y := cleanup_t_uint8(y)\n\n if lt(x, y) { panic_error_0x11() }\n\n diff := sub(x, y)\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function cleanup_t_bytes1(value) -> cleaned {\n cleaned := and(value, 0xff00000000000000000000000000000000000000000000000000000000000000)\n }\n\n function cleanup_t_bytes16(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffff00000000000000000000000000000000)\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function cleanup_t_bytes4(value) -> cleaned {\n cleaned := and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000)\n }\n\n function cleanup_t_int256(value) -> cleaned {\n cleaned := value\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function cleanup_t_uint8(value) -> cleaned {\n cleaned := and(value, 0xff)\n }\n\n function mod_t_uint256(x, y) -> r {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n if iszero(y) { panic_error_0x12() }\n r := mod(x, y)\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function panic_error_0x12() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n\n function shift_right_1_unsigned(value) -> newValue {\n newValue :=\n\n shr(1, value)\n\n }\n\n function store_literal_in_memory_2e15b38e7493d9bd63c0bf8828f1dcc8ef1e85e302f80d14625c1fc3691061f0(memPtr) {\n\n mstore(add(memPtr, 0), \"Overflow encountered ! \")\n\n }\n\n function validator_revert_t_bool(value) {\n if iszero(eq(value, cleanup_t_bool(value))) { revert(0, 0) }\n }\n\n function validator_revert_t_bytes1(value) {\n if iszero(eq(value, cleanup_t_bytes1(value))) { revert(0, 0) }\n }\n\n function validator_revert_t_bytes32(value) {\n if iszero(eq(value, cleanup_t_bytes32(value))) { revert(0, 0) }\n }\n\n function validator_revert_t_int256(value) {\n if iszero(eq(value, cleanup_t_int256(value))) { revert(0, 0) }\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function validator_revert_t_uint8(value) {\n if iszero(eq(value, cleanup_t_uint8(value))) { revert(0, 0) }\n }\n\n}\n",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "73000000000000000000000000000000000000000030146080604052600436106101155760003560e01c8063592e629a116100ac578063bbb8c18e1161007b578063bbb8c18e1461035a578063c1bb0e261461038a578063cec4a8f8146103ba578063e078c717146103ea578063e70b1b5b1461041a57610115565b8063592e629a1461029a578063a1ffbdff146102ca578063a7ad613d146102fa578063b9ec148e1461032a57610115565b806341c23d8f116100e857806341c23d8f146101da5780635240ea7a1461020a57806354c2f0921461023a578063567765211461026a57610115565b806318fed50a1461011a5780631ccb22681461014a578063234fc8961461017a5780633301740b146101aa575b600080fd5b610134600480360381019061012f91906107f2565b61044a565b60405161014191906109ca565b60405180910390f35b610164600480360381019061015f9190610880565b61045d565b6040516101719190610a05565b60405180910390f35b610194600480360381019061018f91906108bc565b61048b565b6040516101a19190610a05565b60405180910390f35b6101c460048036038101906101bf91906107f2565b6104b2565b6040516101d191906109ca565b60405180910390f35b6101f460048036038101906101ef9190610857565b6104bc565b6040516102019190610a05565b60405180910390f35b610224600480360381019061021f9190610880565b6104d5565b6040516102319190610979565b60405180910390f35b610254600480360381019061024f91906107f2565b6104f8565b6040516102619190610994565b60405180910390f35b610284600480360381019061027f91906107f2565b610529565b6040516102919190610994565b60405180910390f35b6102b460048036038101906102af919061081b565b610533565b6040516102c19190610979565b60405180910390f35b6102e460048036038101906102df9190610880565b610556565b6040516102f19190610a05565b60405180910390f35b610314600480360381019061030f919061077a565b610584565b60405161032191906109af565b60405180910390f35b610344600480360381019061033f91906107b6565b610591565b60405161035191906109af565b60405180910390f35b610374600480360381019061036f91906108bc565b610648565b6040516103819190610a05565b60405180910390f35b6103a4600480360381019061039f9190610857565b61066f565b6040516103b19190610a05565b60405180910390f35b6103d460048036038101906103cf91906107f2565b610687565b6040516103e19190610994565b60405180910390f35b61040460048036038101906103ff91906108bc565b61069a565b6040516104119190610979565b60405180910390f35b610434600480360381019061042f91906108bc565b6106d3565b6040516104419190610a05565b60405180910390f35b60008060e083901b905080915050919050565b600081156104745760018303831760005260206000f35b6001836104819190610c24565b8317905092915050565b600081156104a2576001831b841860005260206000f35b826001901b841890509392505050565b6000819050919050565b60006001826104cb9190610a31565b8219169050919050565b600081156104ea576001831660005260206000f35b600180841614905092915050565b6000807001000000000000000000000000000000008360001c61051b9190610d47565b90508060801b915050919050565b6000819050919050565b60008115610548576001831660005260206000f35b600180841614905092915050565b6000811561056d5760018303831660005260206000f35b60018361057a9190610c24565b8316905092915050565b6000818316905092915050565b600060ff8260026105a29190610ada565b106105e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d9906109e5565b60405180910390fd5b600060018360026105f39190610b25565b6105fd9190610c58565b60f81b905060008360086106119190610c58565b60ff16827effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901c90508085169250505092915050565b6000811561065f576001831b841760005260206000f35b826001901b841790509392505050565b600060018261067e9190610a31565b82179050919050565b600080608083901b905080915050919050565b600081156106b1578260011b841660005260206000f35b6000836001901b851614156106c75760006106ca565b60015b90509392505050565b600081156106eb576001831b19841660005260206000f35b826001901b19841690509392505050565b60008135905061070b81610e0c565b92915050565b60008135905061072081610e23565b92915050565b60008135905061073581610e3a565b92915050565b60008135905061074a81610e51565b92915050565b60008135905061075f81610e68565b92915050565b60008135905061077481610e7f565b92915050565b6000806040838503121561078d57600080fd5b600061079b85828601610711565b92505060206107ac85828601610711565b9150509250929050565b600080604083850312156107c957600080fd5b60006107d785828601610711565b92505060206107e885828601610765565b9150509250929050565b60006020828403121561080457600080fd5b600061081284828501610726565b91505092915050565b6000806040838503121561082e57600080fd5b600061083c8582860161073b565b925050602061084d858286016106fc565b9150509250929050565b60006020828403121561086957600080fd5b600061087784828501610750565b91505092915050565b6000806040838503121561089357600080fd5b60006108a185828601610750565b92505060206108b2858286016106fc565b9150509250929050565b6000806000606084860312156108d157600080fd5b60006108df86828701610750565b93505060206108f086828701610750565b9250506040610901868287016106fc565b9150509250925092565b61091481610c8c565b82525050565b61092381610cc4565b82525050565b61093281610c98565b82525050565b61094181610cfa565b82525050565b6000610954601783610a20565b915061095f82610de3565b602082019050919050565b61097381610d30565b82525050565b600060208201905061098e600083018461090b565b92915050565b60006020820190506109a9600083018461091a565b92915050565b60006020820190506109c46000830184610929565b92915050565b60006020820190506109df6000830184610938565b92915050565b600060208201905081810360008301526109fe81610947565b9050919050565b6000602082019050610a1a600083018461096a565b92915050565b600082825260208201905092915050565b6000610a3c82610d30565b9150610a4783610d30565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610a7c57610a7b610d78565b5b828201905092915050565b6000808291508390505b6001851115610ad157808604811115610aad57610aac610d78565b5b6001851615610abc5780820291505b8081029050610aca85610dd6565b9450610a91565b94509492505050565b6000610ae582610d30565b9150610af083610d3a565b9250610b1d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610b51565b905092915050565b6000610b3082610d3a565b9150610b3b83610d3a565b9250610b4960ff8484610b51565b905092915050565b600082610b615760019050610c1d565b81610b6f5760009050610c1d565b8160018114610b855760028114610b8f57610bbe565b6001915050610c1d565b60ff841115610ba157610ba0610d78565b5b8360020a915084821115610bb857610bb7610d78565b5b50610c1d565b5060208310610133831016604e8410600b8410161715610bf35782820a905083811115610bee57610bed610d78565b5b610c1d565b610c008484846001610a87565b92509050818404811115610c1757610c16610d78565b5b81810290505b9392505050565b6000610c2f82610d30565b9150610c3a83610d30565b925082821015610c4d57610c4c610d78565b5b828203905092915050565b6000610c6382610d3a565b9150610c6e83610d3a565b925082821015610c8157610c80610d78565b5b828203905092915050565b60008115159050919050565b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b60007fffffffffffffffffffffffffffffffff0000000000000000000000000000000082169050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6000819050919050565b6000819050919050565b600060ff82169050919050565b6000610d5282610d30565b9150610d5d83610d30565b925082610d6d57610d6c610da7565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008160011c9050919050565b7f4f766572666c6f7720656e636f756e7465726564202120000000000000000000600082015250565b610e1581610c8c565b8114610e2057600080fd5b50565b610e2c81610c98565b8114610e3757600080fd5b50565b610e4381610cf0565b8114610e4e57600080fd5b50565b610e5a81610d26565b8114610e6557600080fd5b50565b610e7181610d30565b8114610e7c57600080fd5b50565b610e8881610d3a565b8114610e9357600080fd5b5056fea2646970667358221220e5a45cb21e3a7ac4c24df6194b5227a36b4c00079eab3223fcae70e09b22b68e64736f6c63430008010033",
"opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x115 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x592E629A GT PUSH2 0xAC JUMPI DUP1 PUSH4 0xBBB8C18E GT PUSH2 0x7B JUMPI DUP1 PUSH4 0xBBB8C18E EQ PUSH2 0x35A JUMPI DUP1 PUSH4 0xC1BB0E26 EQ PUSH2 0x38A JUMPI DUP1 PUSH4 0xCEC4A8F8 EQ PUSH2 0x3BA JUMPI DUP1 PUSH4 0xE078C717 EQ PUSH2 0x3EA JUMPI DUP1 PUSH4 0xE70B1B5B EQ PUSH2 0x41A JUMPI PUSH2 0x115 JUMP JUMPDEST DUP1 PUSH4 0x592E629A EQ PUSH2 0x29A JUMPI DUP1 PUSH4 0xA1FFBDFF EQ PUSH2 0x2CA JUMPI DUP1 PUSH4 0xA7AD613D EQ PUSH2 0x2FA JUMPI DUP1 PUSH4 0xB9EC148E EQ PUSH2 0x32A JUMPI PUSH2 0x115 JUMP JUMPDEST DUP1 PUSH4 0x41C23D8F GT PUSH2 0xE8 JUMPI DUP1 PUSH4 0x41C23D8F EQ PUSH2 0x1DA JUMPI DUP1 PUSH4 0x5240EA7A EQ PUSH2 0x20A JUMPI DUP1 PUSH4 0x54C2F092 EQ PUSH2 0x23A JUMPI DUP1 PUSH4 0x56776521 EQ PUSH2 0x26A JUMPI PUSH2 0x115 JUMP JUMPDEST DUP1 PUSH4 0x18FED50A EQ PUSH2 0x11A JUMPI DUP1 PUSH4 0x1CCB2268 EQ PUSH2 0x14A JUMPI DUP1 PUSH4 0x234FC896 EQ PUSH2 0x17A JUMPI DUP1 PUSH4 0x3301740B EQ PUSH2 0x1AA JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x134 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x12F SWAP2 SWAP1 PUSH2 0x7F2 JUMP JUMPDEST PUSH2 0x44A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x141 SWAP2 SWAP1 PUSH2 0x9CA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x164 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x15F SWAP2 SWAP1 PUSH2 0x880 JUMP JUMPDEST PUSH2 0x45D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x171 SWAP2 SWAP1 PUSH2 0xA05 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x194 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x18F SWAP2 SWAP1 PUSH2 0x8BC JUMP JUMPDEST PUSH2 0x48B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A1 SWAP2 SWAP1 PUSH2 0xA05 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1BF SWAP2 SWAP1 PUSH2 0x7F2 JUMP JUMPDEST PUSH2 0x4B2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D1 SWAP2 SWAP1 PUSH2 0x9CA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1EF SWAP2 SWAP1 PUSH2 0x857 JUMP JUMPDEST PUSH2 0x4BC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x201 SWAP2 SWAP1 PUSH2 0xA05 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x224 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x21F SWAP2 SWAP1 PUSH2 0x880 JUMP JUMPDEST PUSH2 0x4D5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x231 SWAP2 SWAP1 PUSH2 0x979 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x254 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x24F SWAP2 SWAP1 PUSH2 0x7F2 JUMP JUMPDEST PUSH2 0x4F8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x261 SWAP2 SWAP1 PUSH2 0x994 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x284 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x27F SWAP2 SWAP1 PUSH2 0x7F2 JUMP JUMPDEST PUSH2 0x529 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x291 SWAP2 SWAP1 PUSH2 0x994 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2B4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2AF SWAP2 SWAP1 PUSH2 0x81B JUMP JUMPDEST PUSH2 0x533 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2C1 SWAP2 SWAP1 PUSH2 0x979 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2E4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2DF SWAP2 SWAP1 PUSH2 0x880 JUMP JUMPDEST PUSH2 0x556 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2F1 SWAP2 SWAP1 PUSH2 0xA05 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x314 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x30F SWAP2 SWAP1 PUSH2 0x77A JUMP JUMPDEST PUSH2 0x584 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x321 SWAP2 SWAP1 PUSH2 0x9AF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x344 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x33F SWAP2 SWAP1 PUSH2 0x7B6 JUMP JUMPDEST PUSH2 0x591 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x351 SWAP2 SWAP1 PUSH2 0x9AF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x374 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x36F SWAP2 SWAP1 PUSH2 0x8BC JUMP JUMPDEST PUSH2 0x648 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x381 SWAP2 SWAP1 PUSH2 0xA05 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3A4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x39F SWAP2 SWAP1 PUSH2 0x857 JUMP JUMPDEST PUSH2 0x66F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3B1 SWAP2 SWAP1 PUSH2 0xA05 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3D4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3CF SWAP2 SWAP1 PUSH2 0x7F2 JUMP JUMPDEST PUSH2 0x687 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3E1 SWAP2 SWAP1 PUSH2 0x994 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x404 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3FF SWAP2 SWAP1 PUSH2 0x8BC JUMP JUMPDEST PUSH2 0x69A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x411 SWAP2 SWAP1 PUSH2 0x979 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x434 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x42F SWAP2 SWAP1 PUSH2 0x8BC JUMP JUMPDEST PUSH2 0x6D3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x441 SWAP2 SWAP1 PUSH2 0xA05 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 PUSH1 0xE0 DUP4 SWAP1 SHL SWAP1 POP DUP1 SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0x474 JUMPI PUSH1 0x1 DUP4 SUB DUP4 OR PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 RETURN JUMPDEST PUSH1 0x1 DUP4 PUSH2 0x481 SWAP2 SWAP1 PUSH2 0xC24 JUMP JUMPDEST DUP4 OR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0x4A2 JUMPI PUSH1 0x1 DUP4 SHL DUP5 XOR PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 RETURN JUMPDEST DUP3 PUSH1 0x1 SWAP1 SHL DUP5 XOR SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 PUSH2 0x4CB SWAP2 SWAP1 PUSH2 0xA31 JUMP JUMPDEST DUP3 NOT AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0x4EA JUMPI PUSH1 0x1 DUP4 AND PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 RETURN JUMPDEST PUSH1 0x1 DUP1 DUP5 AND EQ SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH17 0x100000000000000000000000000000000 DUP4 PUSH1 0x0 SHR PUSH2 0x51B SWAP2 SWAP1 PUSH2 0xD47 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x80 SHL SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0x548 JUMPI PUSH1 0x1 DUP4 AND PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 RETURN JUMPDEST PUSH1 0x1 DUP1 DUP5 AND EQ SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0x56D JUMPI PUSH1 0x1 DUP4 SUB DUP4 AND PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 RETURN JUMPDEST PUSH1 0x1 DUP4 PUSH2 0x57A SWAP2 SWAP1 PUSH2 0xC24 JUMP JUMPDEST DUP4 AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 PUSH1 0x2 PUSH2 0x5A2 SWAP2 SWAP1 PUSH2 0xADA JUMP JUMPDEST LT PUSH2 0x5E2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5D9 SWAP1 PUSH2 0x9E5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP4 PUSH1 0x2 PUSH2 0x5F3 SWAP2 SWAP1 PUSH2 0xB25 JUMP JUMPDEST PUSH2 0x5FD SWAP2 SWAP1 PUSH2 0xC58 JUMP JUMPDEST PUSH1 0xF8 SHL SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x8 PUSH2 0x611 SWAP2 SWAP1 PUSH2 0xC58 JUMP JUMPDEST PUSH1 0xFF AND DUP3 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SHR SWAP1 POP DUP1 DUP6 AND SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0x65F JUMPI PUSH1 0x1 DUP4 SHL DUP5 OR PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 RETURN JUMPDEST DUP3 PUSH1 0x1 SWAP1 SHL DUP5 OR SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 PUSH2 0x67E SWAP2 SWAP1 PUSH2 0xA31 JUMP JUMPDEST DUP3 OR SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x80 DUP4 SWAP1 SHL SWAP1 POP DUP1 SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0x6B1 JUMPI DUP3 PUSH1 0x1 SHL DUP5 AND PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 RETURN JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 SWAP1 SHL DUP6 AND EQ ISZERO PUSH2 0x6C7 JUMPI PUSH1 0x0 PUSH2 0x6CA JUMP JUMPDEST PUSH1 0x1 JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0x6EB JUMPI PUSH1 0x1 DUP4 SHL NOT DUP5 AND PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 RETURN JUMPDEST DUP3 PUSH1 0x1 SWAP1 SHL NOT DUP5 AND SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x70B DUP2 PUSH2 0xE0C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x720 DUP2 PUSH2 0xE23 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x735 DUP2 PUSH2 0xE3A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x74A DUP2 PUSH2 0xE51 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x75F DUP2 PUSH2 0xE68 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x774 DUP2 PUSH2 0xE7F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x78D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x79B DUP6 DUP3 DUP7 ADD PUSH2 0x711 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x7AC DUP6 DUP3 DUP7 ADD PUSH2 0x711 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x7C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x7D7 DUP6 DUP3 DUP7 ADD PUSH2 0x711 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x7E8 DUP6 DUP3 DUP7 ADD PUSH2 0x765 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x804 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x812 DUP5 DUP3 DUP6 ADD PUSH2 0x726 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x82E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x83C DUP6 DUP3 DUP7 ADD PUSH2 0x73B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x84D DUP6 DUP3 DUP7 ADD PUSH2 0x6FC JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x869 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x877 DUP5 DUP3 DUP6 ADD PUSH2 0x750 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x893 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x8A1 DUP6 DUP3 DUP7 ADD PUSH2 0x750 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x8B2 DUP6 DUP3 DUP7 ADD PUSH2 0x6FC JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x8D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x8DF DUP7 DUP3 DUP8 ADD PUSH2 0x750 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x8F0 DUP7 DUP3 DUP8 ADD PUSH2 0x750 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x901 DUP7 DUP3 DUP8 ADD PUSH2 0x6FC JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH2 0x914 DUP2 PUSH2 0xC8C JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x923 DUP2 PUSH2 0xCC4 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x932 DUP2 PUSH2 0xC98 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x941 DUP2 PUSH2 0xCFA JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x954 PUSH1 0x17 DUP4 PUSH2 0xA20 JUMP JUMPDEST SWAP2 POP PUSH2 0x95F DUP3 PUSH2 0xDE3 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x973 DUP2 PUSH2 0xD30 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x98E PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x90B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x9A9 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x91A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x9C4 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x929 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x9DF PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x938 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x9FE DUP2 PUSH2 0x947 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xA1A PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x96A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA3C DUP3 PUSH2 0xD30 JUMP JUMPDEST SWAP2 POP PUSH2 0xA47 DUP4 PUSH2 0xD30 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0xA7C JUMPI PUSH2 0xA7B PUSH2 0xD78 JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 SWAP2 POP DUP4 SWAP1 POP JUMPDEST PUSH1 0x1 DUP6 GT ISZERO PUSH2 0xAD1 JUMPI DUP1 DUP7 DIV DUP2 GT ISZERO PUSH2 0xAAD JUMPI PUSH2 0xAAC PUSH2 0xD78 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP6 AND ISZERO PUSH2 0xABC JUMPI DUP1 DUP3 MUL SWAP2 POP JUMPDEST DUP1 DUP2 MUL SWAP1 POP PUSH2 0xACA DUP6 PUSH2 0xDD6 JUMP JUMPDEST SWAP5 POP PUSH2 0xA91 JUMP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAE5 DUP3 PUSH2 0xD30 JUMP JUMPDEST SWAP2 POP PUSH2 0xAF0 DUP4 PUSH2 0xD3A JUMP JUMPDEST SWAP3 POP PUSH2 0xB1D PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP5 PUSH2 0xB51 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB30 DUP3 PUSH2 0xD3A JUMP JUMPDEST SWAP2 POP PUSH2 0xB3B DUP4 PUSH2 0xD3A JUMP JUMPDEST SWAP3 POP PUSH2 0xB49 PUSH1 0xFF DUP5 DUP5 PUSH2 0xB51 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0xB61 JUMPI PUSH1 0x1 SWAP1 POP PUSH2 0xC1D JUMP JUMPDEST DUP2 PUSH2 0xB6F JUMPI PUSH1 0x0 SWAP1 POP PUSH2 0xC1D JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0xB85 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0xB8F JUMPI PUSH2 0xBBE JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0xC1D JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0xBA1 JUMPI PUSH2 0xBA0 PUSH2 0xD78 JUMP JUMPDEST JUMPDEST DUP4 PUSH1 0x2 EXP SWAP2 POP DUP5 DUP3 GT ISZERO PUSH2 0xBB8 JUMPI PUSH2 0xBB7 PUSH2 0xD78 JUMP JUMPDEST JUMPDEST POP PUSH2 0xC1D JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0xBF3 JUMPI DUP3 DUP3 EXP SWAP1 POP DUP4 DUP2 GT ISZERO PUSH2 0xBEE JUMPI PUSH2 0xBED PUSH2 0xD78 JUMP JUMPDEST JUMPDEST PUSH2 0xC1D JUMP JUMPDEST PUSH2 0xC00 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0xA87 JUMP JUMPDEST SWAP3 POP SWAP1 POP DUP2 DUP5 DIV DUP2 GT ISZERO PUSH2 0xC17 JUMPI PUSH2 0xC16 PUSH2 0xD78 JUMP JUMPDEST JUMPDEST DUP2 DUP2 MUL SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC2F DUP3 PUSH2 0xD30 JUMP JUMPDEST SWAP2 POP PUSH2 0xC3A DUP4 PUSH2 0xD30 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0xC4D JUMPI PUSH2 0xC4C PUSH2 0xD78 JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC63 DUP3 PUSH2 0xD3A JUMP JUMPDEST SWAP2 POP PUSH2 0xC6E DUP4 PUSH2 0xD3A JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0xC81 JUMPI PUSH2 0xC80 PUSH2 0xD78 JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD52 DUP3 PUSH2 0xD30 JUMP JUMPDEST SWAP2 POP PUSH2 0xD5D DUP4 PUSH2 0xD30 JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0xD6D JUMPI PUSH2 0xD6C PUSH2 0xDA7 JUMP JUMPDEST JUMPDEST DUP3 DUP3 MOD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 SHR SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4F766572666C6F7720656E636F756E7465726564202120000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH2 0xE15 DUP2 PUSH2 0xC8C JUMP JUMPDEST DUP2 EQ PUSH2 0xE20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0xE2C DUP2 PUSH2 0xC98 JUMP JUMPDEST DUP2 EQ PUSH2 0xE37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0xE43 DUP2 PUSH2 0xCF0 JUMP JUMPDEST DUP2 EQ PUSH2 0xE4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0xE5A DUP2 PUSH2 0xD26 JUMP JUMPDEST DUP2 EQ PUSH2 0xE65 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0xE71 DUP2 PUSH2 0xD30 JUMP JUMPDEST DUP2 EQ PUSH2 0xE7C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0xE88 DUP2 PUSH2 0xD3A JUMP JUMPDEST DUP2 EQ PUSH2 0xE93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE5 LOG4 0x5C 0xB2 0x1E GASPRICE PUSH27 0xC4C24DF6194B5227A36B4C00079EAB3223FCAE70E09B22B68E6473 PUSH16 0x6C634300080100330000000000000000 ",
"sourceMap": "173:6567:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4533:150;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3293:302;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2178:320;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4422:105;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3743:101;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;199:274;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5961:185;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4017:110;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;479:273;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2548:304;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5213:119;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6431:296;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1445:293;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3901:99;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4137:165;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;805:551;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1835:302;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4533:150;4592:6;4610:11;4641:6;4624:5;:24;;4610:38;;4672:3;4658:18;;;4533:150;;;:::o;3293:302::-;3378:4;3398:12;3394:195;;;3479:1;3476;3472:9;3469:1;3466:16;3460:4;3453:30;3513:2;3507:4;3500:16;3435:95;3576:1;3572;:5;;;;:::i;:::-;3567:1;:11;3560:18;;3293:302;;;;:::o;2178:320::-;2256:4;2276:12;2272:197;;;2358:1;2355;2351:9;2348:1;2344:17;2338:4;2331:31;2392:2;2386:4;2379:16;2313:96;2456:1;2451;:6;;2446:1;:12;2439:19;;2178:320;;;;;:::o;4422:105::-;4482:6;4514:5;4500:20;;4422:105;;;:::o;3743:101::-;3802:4;3835:1;3831;:5;;;;:::i;:::-;3826:1;3825:2;:12;3818:19;;3743:101;;;:::o;199:274::-;262:4;282:12;278:189;;;357:1;354;350:9;344:4;337:23;390:2;384:4;377:16;319:88;455:1;449;445;:5;444:12;437:19;;199:274;;;;:::o;5961:185::-;6042:7;6061:10;6090:8;6079:6;6074:12;;:25;;;;:::i;:::-;6061:38;;6132:5;6116:23;;6109:30;;;5961:185;;;:::o;4017:110::-;4080:7;4114:5;4099:21;;4017:110;;;:::o;479:273::-;541:4;561:12;557:189;;;636:1;633;629:9;623:4;616:23;669:2;663:4;656:16;598:88;734:1;728;724;:5;723:12;716:19;;479:273;;;;:::o;2548:304::-;2625:4;2645:12;2641:196;;;2727:1;2724;2720:9;2717:1;2713:17;2707:4;2700:31;2761:2;2755:4;2748:16;2682:96;2824:1;2820;:5;;;;:::i;:::-;2815:1;:11;2808:18;;2548:304;;;;:::o;5213:119::-;5286:6;5320:5;5311:6;:14;5304:21;;5213:119;;;;:::o;6431:296::-;6519:6;6555:3;6550:2;6545:1;:7;;;;:::i;:::-;:13;6537:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;6596:12;6635:1;6630:2;6624:1;6618:14;;;;:::i;:::-;:18;;;;:::i;:::-;6611:26;;6596:41;;6647:11;6675:2;6671:1;:6;;;;:::i;:::-;6661:17;;:5;:17;;;;;6647:31;;6716:4;6711:2;:9;6704:16;;;;6431:296;;;;:::o;1445:293::-;1520:4;1540:12;1536:196;;;1621:1;1618;1614:9;1611:1;1608:16;1602:4;1595:30;1655:2;1649:4;1642:16;1577:95;1719:1;1714;:6;;1709:1;:12;1702:19;;1445:293;;;;;:::o;3901:99::-;3959:4;3991:1;3987;:5;;;;:::i;:::-;3982:1;:11;3975:18;;3901:99;;;:::o;4137:165::-;4199:7;4218:16;4254:6;4237:5;:24;;4218:43;;4286:8;4271:24;;;4137:165;;;:::o;805:551::-;882:4;902:12;898:452;;;984:1;981;977:9;974:1;970:17;964:4;957:31;1018:2;1012:4;1005:16;939:96;1323:1;1317;1312;:6;;1307:1;:12;:17;;:32;;1334:5;1307:32;;;1327:4;1307:32;1300:39;;805:551;;;;;:::o;1835:302::-;1912:4;1932:12;1928:203;;;2018:1;2015;2011:9;2007:14;2004:1;2000:22;1994:4;1987:36;2053:2;2047:4;2040:16;1969:101;2118:1;2113;:6;;2111:9;2107:1;:13;2100:20;;1835:302;;;;;:::o;7:133:1:-;;88:6;75:20;66:29;;104:30;128:5;104:30;:::i;:::-;56:84;;;;:::o;146:137::-;;229:6;216:20;207:29;;245:32;271:5;245:32;:::i;:::-;197:86;;;;:::o;289:139::-;;373:6;360:20;351:29;;389:33;416:5;389:33;:::i;:::-;341:87;;;;:::o;434:137::-;;517:6;504:20;495:29;;533:32;559:5;533:32;:::i;:::-;485:86;;;;:::o;577:139::-;;661:6;648:20;639:29;;677:33;704:5;677:33;:::i;:::-;629:87;;;;:::o;722:135::-;;804:6;791:20;782:29;;820:31;845:5;820:31;:::i;:::-;772:85;;;;:::o;863:403::-;;;986:2;974:9;965:7;961:23;957:32;954:2;;;1002:1;999;992:12;954:2;1045:1;1070:52;1114:7;1105:6;1094:9;1090:22;1070:52;:::i;:::-;1060:62;;1016:116;1171:2;1197:52;1241:7;1232:6;1221:9;1217:22;1197:52;:::i;:::-;1187:62;;1142:117;944:322;;;;;:::o;1272:401::-;;;1394:2;1382:9;1373:7;1369:23;1365:32;1362:2;;;1410:1;1407;1400:12;1362:2;1453:1;1478:52;1522:7;1513:6;1502:9;1498:22;1478:52;:::i;:::-;1468:62;;1424:116;1579:2;1605:51;1648:7;1639:6;1628:9;1624:22;1605:51;:::i;:::-;1595:61;;1550:116;1352:321;;;;;:::o;1679:262::-;;1787:2;1775:9;1766:7;1762:23;1758:32;1755:2;;;1803:1;1800;1793:12;1755:2;1846:1;1871:53;1916:7;1907:6;1896:9;1892:22;1871:53;:::i;:::-;1861:63;;1817:117;1745:196;;;;:::o;1947:399::-;;;2068:2;2056:9;2047:7;2043:23;2039:32;2036:2;;;2084:1;2081;2074:12;2036:2;2127:1;2152:52;2196:7;2187:6;2176:9;2172:22;2152:52;:::i;:::-;2142:62;;2098:116;2253:2;2279:50;2321:7;2312:6;2301:9;2297:22;2279:50;:::i;:::-;2269:60;;2224:115;2026:320;;;;;:::o;2352:262::-;;2460:2;2448:9;2439:7;2435:23;2431:32;2428:2;;;2476:1;2473;2466:12;2428:2;2519:1;2544:53;2589:7;2580:6;2569:9;2565:22;2544:53;:::i;:::-;2534:63;;2490:117;2418:196;;;;:::o;2620:401::-;;;2742:2;2730:9;2721:7;2717:23;2713:32;2710:2;;;2758:1;2755;2748:12;2710:2;2801:1;2826:53;2871:7;2862:6;2851:9;2847:22;2826:53;:::i;:::-;2816:63;;2772:117;2928:2;2954:50;2996:7;2987:6;2976:9;2972:22;2954:50;:::i;:::-;2944:60;;2899:115;2700:321;;;;;:::o;3027:546::-;;;;3166:2;3154:9;3145:7;3141:23;3137:32;3134:2;;;3182:1;3179;3172:12;3134:2;3225:1;3250:53;3295:7;3286:6;3275:9;3271:22;3250:53;:::i;:::-;3240:63;;3196:117;3352:2;3378:53;3423:7;3414:6;3403:9;3399:22;3378:53;:::i;:::-;3368:63;;3323:118;3480:2;3506:50;3548:7;3539:6;3528:9;3524:22;3506:50;:::i;:::-;3496:60;;3451:115;3124:449;;;;;:::o;3579:117::-;3668:21;3683:5;3668:21;:::i;:::-;3663:3;3656:34;3646:50;;:::o;3702:126::-;3797:24;3815:5;3797:24;:::i;:::-;3792:3;3785:37;3775:53;;:::o;3834:123::-;3927:23;3944:5;3927:23;:::i;:::-;3922:3;3915:36;3905:52;;:::o;3963:123::-;4056:23;4073:5;4056:23;:::i;:::-;4051:3;4044:36;4034:52;;:::o;4092:366::-;;4255:67;4319:2;4314:3;4255:67;:::i;:::-;4248:74;;4331:93;4420:3;4331:93;:::i;:::-;4449:2;4444:3;4440:12;4433:19;;4238:220;;;:::o;4464:126::-;4559:24;4577:5;4559:24;:::i;:::-;4554:3;4547:37;4537:53;;:::o;4596:226::-;;4729:2;4718:9;4714:18;4706:26;;4742:73;4812:1;4801:9;4797:17;4788:6;4742:73;:::i;:::-;4696:126;;;;:::o;4828:238::-;;4967:2;4956:9;4952:18;4944:26;;4980:79;5056:1;5045:9;5041:17;5032:6;4980:79;:::i;:::-;4934:132;;;;:::o;5072:234::-;;5209:2;5198:9;5194:18;5186:26;;5222:77;5296:1;5285:9;5281:17;5272:6;5222:77;:::i;:::-;5176:130;;;;:::o;5312:234::-;;5449:2;5438:9;5434:18;5426:26;;5462:77;5536:1;5525:9;5521:17;5512:6;5462:77;:::i;:::-;5416:130;;;;:::o;5552:419::-;;5756:2;5745:9;5741:18;5733:26;;5805:9;5799:4;5795:20;5791:1;5780:9;5776:17;5769:47;5833:131;5959:4;5833:131;:::i;:::-;5825:139;;5723:248;;;:::o;5977:238::-;;6116:2;6105:9;6101:18;6093:26;;6129:79;6205:1;6194:9;6190:17;6181:6;6129:79;:::i;:::-;6083:132;;;;:::o;6221:169::-;;6339:6;6334:3;6327:19;6379:4;6374:3;6370:14;6355:29;;6317:73;;;;:::o;6396:305::-;;6455:20;6473:1;6455:20;:::i;:::-;6450:25;;6489:20;6507:1;6489:20;:::i;:::-;6484:25;;6643:1;6575:66;6571:74;6568:1;6565:81;6562:2;;;6649:18;;:::i;:::-;6562:2;6693:1;6690;6686:9;6679:16;;6440:261;;;;:::o;6707:848::-;;;6799:6;6790:15;;6823:5;6814:14;;6837:712;6858:1;6848:8;6845:15;6837:712;;;6953:4;6948:3;6944:14;6938:4;6935:24;6932:2;;;6962:18;;:::i;:::-;6932:2;7012:1;7002:8;6998:16;6995:2;;;7427:4;7420:5;7416:16;7407:25;;6995:2;7477:4;7471;7467:15;7459:23;;7507:32;7530:8;7507:32;:::i;:::-;7495:44;;6837:712;;;6780:775;;;;;;;:::o;7561:281::-;;7643:23;7661:4;7643:23;:::i;:::-;7635:31;;7687:25;7703:8;7687:25;:::i;:::-;7675:37;;7731:104;7768:66;7758:8;7752:4;7731:104;:::i;:::-;7722:113;;7625:217;;;;:::o;7848:215::-;;7928:21;7944:4;7928:21;:::i;:::-;7920:29;;7970:25;7986:8;7970:25;:::i;:::-;7958:37;;8014:42;8051:4;8041:8;8035:4;8014:42;:::i;:::-;8005:51;;7910:153;;;;:::o;8069:1073::-;;8314:8;8304:2;;8335:1;8326:10;;8337:5;;8304:2;8363:4;8353:2;;8380:1;8371:10;;8382:5;;8353:2;8449:4;8497:1;8492:27;;;;8533:1;8528:191;;;;8442:277;;8492:27;8510:1;8501:10;;8512:5;;;8528:191;8573:3;8563:8;8560:17;8557:2;;;8580:18;;:::i;:::-;8557:2;8629:8;8626:1;8622:16;8613:25;;8664:3;8657:5;8654:14;8651:2;;;8671:18;;:::i;:::-;8651:2;8704:5;;;8442:277;;8828:2;8818:8;8815:16;8809:3;8803:4;8800:13;8796:36;8778:2;8768:8;8765:16;8760:2;8754:4;8751:12;8747:35;8731:111;8728:2;;;8884:8;8878:4;8874:19;8865:28;;8919:3;8912:5;8909:14;8906:2;;;8926:18;;:::i;:::-;8906:2;8959:5;;8728:2;8999:42;9037:3;9027:8;9021:4;9018:1;8999:42;:::i;:::-;8984:57;;;;9073:4;9068:3;9064:14;9057:5;9054:25;9051:2;;;9082:18;;:::i;:::-;9051:2;9131:4;9124:5;9120:16;9111:25;;8129:1013;;;;;;:::o;9148:191::-;;9208:20;9226:1;9208:20;:::i;:::-;9203:25;;9242:20;9260:1;9242:20;:::i;:::-;9237:25;;9281:1;9278;9275:8;9272:2;;;9286:18;;:::i;:::-;9272:2;9331:1;9328;9324:9;9316:17;;9193:146;;;;:::o;9345:185::-;;9403:18;9419:1;9403:18;:::i;:::-;9398:23;;9435:18;9451:1;9435:18;:::i;:::-;9430:23;;9472:1;9469;9466:8;9463:2;;;9477:18;;:::i;:::-;9463:2;9522:1;9519;9515:9;9507:17;;9388:142;;;;:::o;9536:90::-;;9613:5;9606:13;9599:21;9588:32;;9578:48;;;:::o;9632:149::-;;9708:66;9701:5;9697:78;9686:89;;9676:105;;;:::o;9787:150::-;;9864:66;9857:5;9853:78;9842:89;;9832:105;;;:::o;9943:77::-;;10009:5;9998:16;;9988:32;;;:::o;10026:149::-;;10102:66;10095:5;10091:78;10080:89;;10070:105;;;:::o;10181:76::-;;10246:5;10235:16;;10225:32;;;:::o;10263:77::-;;10329:5;10318:16;;10308:32;;;:::o;10346:86::-;;10421:4;10414:5;10410:16;10399:27;;10389:43;;;:::o;10438:176::-;;10487:20;10505:1;10487:20;:::i;:::-;10482:25;;10521:20;10539:1;10521:20;:::i;:::-;10516:25;;10560:1;10550:2;;10565:18;;:::i;:::-;10550:2;10606:1;10603;10599:9;10594:14;;10472:142;;;;:::o;10620:180::-;10668:77;10665:1;10658:88;10765:4;10762:1;10755:15;10789:4;10786:1;10779:15;10806:180;10854:77;10851:1;10844:88;10951:4;10948:1;10941:15;10975:4;10972:1;10965:15;10992:102;;11081:5;11078:1;11074:13;11053:34;;11043:51;;;:::o;11100:173::-;11240:25;11236:1;11228:6;11224:14;11217:49;11206:67;:::o;11279:116::-;11349:21;11364:5;11349:21;:::i;:::-;11342:5;11339:32;11329:2;;11385:1;11382;11375:12;11329:2;11319:76;:::o;11401:120::-;11473:23;11490:5;11473:23;:::i;:::-;11466:5;11463:34;11453:2;;11511:1;11508;11501:12;11453:2;11443:78;:::o;11527:122::-;11600:24;11618:5;11600:24;:::i;:::-;11593:5;11590:35;11580:2;;11639:1;11636;11629:12;11580:2;11570:79;:::o;11655:120::-;11727:23;11744:5;11727:23;:::i;:::-;11720:5;11717:34;11707:2;;11765:1;11762;11755:12;11707:2;11697:78;:::o;11781:122::-;11854:24;11872:5;11854:24;:::i;:::-;11847:5;11844:35;11834:2;;11893:1;11890;11883:12;11834:2;11824:79;:::o;11909:118::-;11980:22;11996:5;11980:22;:::i;:::-;11973:5;11970:33;11960:2;;12017:1;12014;12007:12;11960:2;11950:77;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "757600",
"executionCost": "817",
"totalCost": "758417"
},
"external": {
"andingWithMask(bytes1,bytes1)": "infinite",
"getFirst4Bytes(bytes32)": "682",
"getFirstHalfBytes(bytes32)": "681",
"getFirstNBytes(bytes1,uint8)": "infinite",
"getLast4Bytes(bytes32)": "638",
"getLastHalfBytes(bytes32)": "680",
"getLastHalfBytesTest(bytes32)": "infinite",
"isNthBitSet(uint256,uint256,bool)": "infinite",
"isOdd(int256,bool)": "infinite",
"isOdd(uint256,bool)": "infinite",
"isolateRightmost0Bit(uint256)": "infinite",
"rightPropagateRightmost1Bit(uint256,bool)": "infinite",
"setNthBit(uint256,uint256,bool)": "infinite",
"toggleNthBit(uint256,uint256,bool)": "infinite",
"toggleRightmost1Bit(uint256,bool)": "infinite",
"turnOnRightmost0Bit(uint256)": "infinite",
"unsetNthBit(uint256,uint256,bool)": "infinite"
}
},
"methodIdentifiers": {
"andingWithMask(bytes1,bytes1)": "a7ad613d",
"getFirst4Bytes(bytes32)": "3301740b",
"getFirstHalfBytes(bytes32)": "56776521",
"getFirstNBytes(bytes1,uint8)": "b9ec148e",
"getLast4Bytes(bytes32)": "18fed50a",
"getLastHalfBytes(bytes32)": "cec4a8f8",
"getLastHalfBytesTest(bytes32)": "54c2f092",
"isNthBitSet(uint256,uint256,bool)": "e078c717",
"isOdd(int256,bool)": "592e629a",
"isOdd(uint256,bool)": "5240ea7a",
"isolateRightmost0Bit(uint256)": "41c23d8f",
"rightPropagateRightmost1Bit(uint256,bool)": "1ccb2268",
"setNthBit(uint256,uint256,bool)": "bbb8c18e",
"toggleNthBit(uint256,uint256,bool)": "234fc896",
"toggleRightmost1Bit(uint256,bool)": "a1ffbdff",
"turnOnRightmost0Bit(uint256)": "c1bb0e26",
"unsetNthBit(uint256,uint256,bool)": "e70b1b5b"
}
},
"abi": [
{
"inputs": [
{
"internalType": "bytes1",
"name": "_value",
"type": "bytes1"
},
{
"internalType": "bytes1",
"name": "_mask",
"type": "bytes1"
}
],
"name": "andingWithMask",
"outputs": [
{
"internalType": "bytes1",
"name": "",
"type": "bytes1"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_data",
"type": "bytes32"
}
],
"name": "getFirst4Bytes",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_data",
"type": "bytes32"
}
],
"name": "getFirstHalfBytes",
"outputs": [
{
"internalType": "bytes16",
"name": "",
"type": "bytes16"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes1",
"name": "_x",
"type": "bytes1"
},
{
"internalType": "uint8",
"name": "_n",
"type": "uint8"
}
],
"name": "getFirstNBytes",
"outputs": [
{
"internalType": "bytes1",
"name": "",
"type": "bytes1"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_data",
"type": "bytes32"
}
],
"name": "getLast4Bytes",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_data",
"type": "bytes32"
}
],
"name": "getLastHalfBytes",
"outputs": [
{
"internalType": "bytes16",
"name": "",
"type": "bytes16"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_value",
"type": "bytes32"
}
],
"name": "getLastHalfBytesTest",
"outputs": [
{
"internalType": "bytes16",
"name": "",
"type": "bytes16"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "x",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "n",
"type": "uint256"
},
{
"internalType": "bool",
"name": "assemblyMode",
"type": "bool"
}
],
"name": "isNthBitSet",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "x",
"type": "uint256"
},
{
"internalType": "bool",
"name": "assemblyMode",
"type": "bool"
}
],
"name": "isOdd",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "int256",
"name": "x",
"type": "int256"
},
{
"internalType": "bool",
"name": "assemblyMode",
"type": "bool"
}
],
"name": "isOdd",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "x",
"type": "uint256"
}
],
"name": "isolateRightmost0Bit",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "x",
"type": "uint256"
},
{
"internalType": "bool",
"name": "assemblyMode",
"type": "bool"
}
],
"name": "rightPropagateRightmost1Bit",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "x",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "n",
"type": "uint256"
},
{
"internalType": "bool",
"name": "assemblyMode",
"type": "bool"
}
],
"name": "setNthBit",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "x",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "n",
"type": "uint256"
},
{
"internalType": "bool",
"name": "assemblyMode",
"type": "bool"
}
],
"name": "toggleNthBit",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "x",
"type": "uint256"
},
{
"internalType": "bool",
"name": "assemblyMode",
"type": "bool"
}
],
"name": "toggleRightmost1Bit",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "x",
"type": "uint256"
}
],
"name": "turnOnRightmost0Bit",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "x",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "n",
"type": "uint256"
},
{
"internalType": "bool",
"name": "assemblyMode",
"type": "bool"
}
],
"name": "unsetNthBit",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "pure",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.1+commit.df193b15"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "bytes1",
"name": "_value",
"type": "bytes1"
},
{
"internalType": "bytes1",
"name": "_mask",
"type": "bytes1"
}
],
"name": "andingWithMask",
"outputs": [
{
"internalType": "bytes1",
"name": "",
"type": "bytes1"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_data",
"type": "bytes32"
}
],
"name": "getFirst4Bytes",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_data",
"type": "bytes32"
}
],
"name": "getFirstHalfBytes",
"outputs": [
{
"internalType": "bytes16",
"name": "",
"type": "bytes16"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes1",
"name": "_x",
"type": "bytes1"
},
{
"internalType": "uint8",
"name": "_n",
"type": "uint8"
}
],
"name": "getFirstNBytes",
"outputs": [
{
"internalType": "bytes1",
"name": "",
"type": "bytes1"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_data",
"type": "bytes32"
}
],
"name": "getLast4Bytes",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_data",
"type": "bytes32"
}
],
"name": "getLastHalfBytes",
"outputs": [
{
"internalType": "bytes16",
"name": "",
"type": "bytes16"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_value",
"type": "bytes32"
}
],
"name": "getLastHalfBytesTest",
"outputs": [
{
"internalType": "bytes16",
"name": "",
"type": "bytes16"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "x",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "n",
"type": "uint256"
},
{
"internalType": "bool",
"name": "assemblyMode",
"type": "bool"
}
],
"name": "isNthBitSet",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "x",
"type": "uint256"
},
{
"internalType": "bool",
"name": "assemblyMode",
"type": "bool"
}
],
"name": "isOdd",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "int256",
"name": "x",
"type": "int256"
},
{
"internalType": "bool",
"name": "assemblyMode",
"type": "bool"
}
],
"name": "isOdd",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "x",
"type": "uint256"
}
],
"name": "isolateRightmost0Bit",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "x",
"type": "uint256"
},
{
"internalType": "bool",
"name": "assemblyMode",
"type": "bool"
}
],
"name": "rightPropagateRightmost1Bit",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "x",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "n",
"type": "uint256"
},
{
"internalType": "bool",
"name": "assemblyMode",
"type": "bool"
}
],
"name": "setNthBit",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "x",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "n",
"type": "uint256"
},
{
"internalType": "bool",
"name": "assemblyMode",
"type": "bool"
}
],
"name": "toggleNthBit",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "x",
"type": "uint256"
},
{
"internalType": "bool",
"name": "assemblyMode",
"type": "bool"
}
],
"name": "toggleRightmost1Bit",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "x",
"type": "uint256"
}
],
"name": "turnOnRightmost0Bit",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "x",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "n",
"type": "uint256"
},
{
"internalType": "bool",
"name": "assemblyMode",
"type": "bool"
}
],
"name": "unsetNthBit",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "pure",
"type": "function"
}
],
"devdoc": {
"author": "Jean Cavallera (CJ42)",
"details": "most functions use low-level Assembly",
"kind": "dev",
"methods": {},
"title": "A Bytes Utility Library for Solidity Contracts",
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {
"isNthBitSet(uint256,uint256,bool)": {
"notice": "#2.1 Test if the n-th bit is set."
},
"isolateRightmost0Bit(uint256)": {
"notice": "#9. Isolate the rightmost 0-bit."
},
"rightPropagateRightmost1Bit(uint256,bool)": {
"notice": "#8. Right propagate the rightmost 1-bit."
},
"setNthBit(uint256,uint256,bool)": {
"notice": "#3 Set the n-th bit."
},
"toggleNthBit(uint256,uint256,bool)": {
"notice": "#5 Toggle the n-th bit"
},
"toggleRightmost1Bit(uint256,bool)": {
"notice": "#6 Turn off the rightmost 1-bit"
},
"turnOnRightmost0Bit(uint256)": {
"notice": "#10. Turn on the rightmost 0-bit."
},
"unsetNthBit(uint256,uint256,bool)": {
"notice": "#4 Unset the n-th bit."
}
},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/BytesUtils.sol": "BytesUtils"
},
"evmVersion": "istanbul",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/BytesUtils.sol": {
"keccak256": "0x436b1a89ff509cb0ba55f7537a61d0531249cafe2d97d604d946691cbab611c0",
"urls": [
"bzz-raw://f5e6a1e316dabb12b8b8b2a24210d32b97e1287db44fe092f25d9a82410823ff",
"dweb:/ipfs/QmSQkYDv8m2NmiTU8uyhkjw5QWRLEeJRbjcLuzHi9LpA36"
]
}
},
"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": {
"linkReferences": {},
"object": "6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea264697066735822122011f3b93d43c0ab6e707399115310d44a6882ee232eb19ded3a74bd41b4b6cf7b64736f6c63430007000033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3F DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GT RETURN 0xB9 RETURNDATASIZE NUMBER 0xC0 0xAB PUSH15 0x707399115310D44A6882EE232EB19D 0xED GASPRICE PUSH21 0xBD41B4B6CF7B64736F6C6343000700003300000000 ",
"sourceMap": "27:34:0:-:0;;;42:16;;;;;;;;;;27:34;;;;;;"
},
"deployedBytecode": {
"immutableReferences": {},
"linkReferences": {},
"object": "6080604052600080fdfea264697066735822122011f3b93d43c0ab6e707399115310d44a6882ee232eb19ded3a74bd41b4b6cf7b64736f6c63430007000033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GT RETURN 0xB9 RETURNDATASIZE NUMBER 0xC0 0xAB PUSH15 0x707399115310D44A6882EE232EB19D 0xED GASPRICE PUSH21 0xBD41B4B6CF7B64736F6C6343000700003300000000 ",
"sourceMap": "27:34:0:-:0;;;;;"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "12600",
"executionCost": "66",
"totalCost": "12666"
}
},
"methodIdentifiers": {}
},
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
}
]
}
{
"compiler": {
"version": "0.7.0+commit.9e61f92b"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/draft.sol": "C"
},
"evmVersion": "istanbul",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/draft.sol": {
"keccak256": "0x82fd4c0302002ab79b83005550edc0aa066786d86044c17b14a849537942ce18",
"urls": [
"bzz-raw://be9ed935f15dc53ad9dc20e434c7fcbf233533712dad0bd08b9e4058a4ab7377",
"dweb:/ipfs/QmZSELBMwa8TwjCKUC8Ryrh8F7Eu2kkAwbudNohfuJ8PyB"
]
}
},
"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": {
"linkReferences": {},
"object": "6080604052348015600f57600080fd5b506101008061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063e8397c3214602d575b600080fd5b60336035565b005b60006040516041906062565b604051809103906000f080158015605c573d6000803e3d6000fd5b50905050565b605c8061006f8339019056fe6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea264697066735822122011f3b93d43c0ab6e707399115310d44a6882ee232eb19ded3a74bd41b4b6cf7b64736f6c63430007000033a26469706673582212202c6cb55bff2ba3f992de95cb2e4f4dd2e354c1410350490e37bc57c556a99b2f64736f6c63430007000033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x100 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 0xE8397C32 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x33 PUSH1 0x35 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x41 SWAP1 PUSH1 0x62 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH1 0x5C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP1 POP POP JUMP JUMPDEST PUSH1 0x5C DUP1 PUSH2 0x6F DUP4 CODECOPY ADD SWAP1 JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3F DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GT RETURN 0xB9 RETURNDATASIZE NUMBER 0xC0 0xAB PUSH15 0x707399115310D44A6882EE232EB19D 0xED GASPRICE PUSH21 0xBD41B4B6CF7B64736F6C63430007000033A2646970 PUSH7 0x73582212202C6C 0xB5 JUMPDEST SELFDESTRUCT 0x2B LOG3 0xF9 SWAP3 0xDE SWAP6 0xCB 0x2E 0x4F 0x4D 0xD2 0xE3 SLOAD 0xC1 COINBASE SUB POP 0x49 0xE CALLDATACOPY 0xBC JUMPI 0xC5 JUMP 0xA9 SWAP12 0x2F PUSH5 0x736F6C6343 STOP SMOD STOP STOP CALLER ",
"sourceMap": "65:85:0:-:0;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"immutableReferences": {},
"linkReferences": {},
"object": "6080604052348015600f57600080fd5b506004361060285760003560e01c8063e8397c3214602d575b600080fd5b60336035565b005b60006040516041906062565b604051809103906000f080158015605c573d6000803e3d6000fd5b50905050565b605c8061006f8339019056fe6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea264697066735822122011f3b93d43c0ab6e707399115310d44a6882ee232eb19ded3a74bd41b4b6cf7b64736f6c63430007000033a26469706673582212202c6cb55bff2ba3f992de95cb2e4f4dd2e354c1410350490e37bc57c556a99b2f64736f6c63430007000033",
"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 0xE8397C32 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x33 PUSH1 0x35 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x41 SWAP1 PUSH1 0x62 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH1 0x5C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP1 POP POP JUMP JUMPDEST PUSH1 0x5C DUP1 PUSH2 0x6F DUP4 CODECOPY ADD SWAP1 JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3F DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GT RETURN 0xB9 RETURNDATASIZE NUMBER 0xC0 0xAB PUSH15 0x707399115310D44A6882EE232EB19D 0xED GASPRICE PUSH21 0xBD41B4B6CF7B64736F6C63430007000033A2646970 PUSH7 0x73582212202C6C 0xB5 JUMPDEST SELFDESTRUCT 0x2B LOG3 0xF9 SWAP3 0xDE SWAP6 0xCB 0x2E 0x4F 0x4D 0xD2 0xE3 SLOAD 0xC1 COINBASE SUB POP 0x49 0xE CALLDATACOPY 0xBC JUMPI 0xC5 JUMP 0xA9 SWAP12 0x2F PUSH5 0x736F6C6343 STOP SMOD STOP STOP CALLER ",
"sourceMap": "65:85:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;86:58;;;:::i;:::-;;;126:3;132:7;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;126:13;;86:58;:::o;-1:-1:-1:-;;;;;;;;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "51200",
"executionCost": "99",
"totalCost": "51299"
},
"external": {
"tryDeploying()": "infinite"
}
},
"methodIdentifiers": {
"tryDeploying()": "e8397c32"
}
},
"abi": [
{
"inputs": [],
"name": "tryDeploying",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.7.0+commit.9e61f92b"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [],
"name": "tryDeploying",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/draft.sol": "D"
},
"evmVersion": "istanbul",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/draft.sol": {
"keccak256": "0x82fd4c0302002ab79b83005550edc0aa066786d86044c17b14a849537942ce18",
"urls": [
"bzz-raw://be9ed935f15dc53ad9dc20e434c7fcbf233533712dad0bd08b9e4058a4ab7377",
"dweb:/ipfs/QmZSELBMwa8TwjCKUC8Ryrh8F7Eu2kkAwbudNohfuJ8PyB"
]
}
},
"version": 1
}
pragma solidity ^0.4.24;
contract BasicToken {
uint256 totalSupply_;
mapping(address => uint256) balances;
constructor(uint256 _initialSupply) public {
totalSupply_ = _initialSupply;
balances[msg.sender] = _initialSupply;
}
function totalSupply() public view returns (uint256) {
return totalSupply_;
}
function transfer(address _to, uint256 _value) public returns (bool) {
require(_to != address(0));
require(_value <= balances[msg.sender]);
balances[msg.sender] = balances[msg.sender] - _value;
balances[_to] = balances[_to] + _value;
return true;
}
function balanceOf(address _owner) public view returns (uint256) {
return balances[_owner];
}
}
pragma solidity ^0.8.0;
// test
/// @title A Bytes Utility Library for Solidity Contracts
/// @author Jean Cavallera (CJ42)
/// @dev most functions use low-level Assembly
library BytesUtils {
function isOdd(uint x, bool assemblyMode) public pure returns (bool) {
if (assemblyMode) {
assembly {
mstore(0x00, and(x, 1))
return(0x00, 32)
}
} else {
return (x & 1) == 1;
}
}
function isOdd(int x, bool assemblyMode) public pure returns (bool) {
if (assemblyMode) {
assembly {
mstore(0x00, and(x, 1))
return(0x00, 32)
}
} else {
return (x & 1) == 1;
}
}
/// #2.1 Test if the n-th bit is set.
function isNthBitSet(uint x, uint n, bool assemblyMode) public pure returns (bool) {
if (assemblyMode) {
assembly {
mstore(0x00, and(x, shl(1, n)))
return(0x00, 32)
}
} else {
// if the nth bit is set:
// -> anding will eliminate all the bits EXCEPT the nth bit (so will return a number)
// else:
// -> anding will eliminate ALL the bits (so will return 0)
return x & (1 << n) != 0 ? true : false;
}
}
// TODO: isNthBitSet for signed integers
/// #3 Set the n-th bit.
function setNthBit(uint x, uint n, bool assemblyMode) public pure returns (uint) {
if (assemblyMode) {
assembly {
mstore(0x00, or(x, shl(n, 1)))
return(0x00, 32)
}
} else {
return x | (1 << n);
}
}
// TODO: setNthBitSet for signed integers
/// #4 Unset the n-th bit.
function unsetNthBit(uint x, uint n, bool assemblyMode) public pure returns (uint) {
if (assemblyMode) {
assembly {
mstore(0x00, and(x, not(shl(n, 1))))
return(0x00, 32)
}
} else {
return x & ~(1 << n);
}
}
/// #5 Toggle the n-th bit
function toggleNthBit(uint x, uint n, bool assemblyMode) public pure returns (uint) {
if (assemblyMode) {
assembly {
mstore(0x00, xor(x, shl(n, 1)))
return(0x00, 32)
}
} else {
return x ^ (1 << n);
}
}
/// #6 Turn off the rightmost 1-bit
function toggleRightmost1Bit(uint x, bool assemblyMode) public pure returns (uint) {
if (assemblyMode) {
assembly {
mstore(0x00, and(x, sub(x, 1)))
return(0x00, 32)
}
} else {
return x & (x - 1);
}
}
/// #7. Isolate the rightmost 1-bit.
// function isolateRightmostBit(uint x) public pure returns (uint) {
// }
/// #8. Right propagate the rightmost 1-bit.
// TODO: this does not always return the expected result. Need more deep dive
// NOTE: Beaware for 'x' = 0, all the bits will be turned to 1.
// it will then overflow and return the biggest uint possible (2²⁵⁶-1)
function rightPropagateRightmost1Bit(uint x, bool assemblyMode) public pure returns (uint) {
if (assemblyMode) {
assembly {
mstore(0x00, or(x, sub(x, 1)))
return(0x00, 32)
}
} else {
return x | (x - 1);
}
}
// TODO: rightPropagateRightmostBit for signed integers
/// #9. Isolate the rightmost 0-bit.
// TODO: assembly mode
function isolateRightmost0Bit(uint x) public pure returns (uint) {
return ~x & (x + 1);
}
/// #10. Turn on the rightmost 0-bit.
function turnOnRightmost0Bit(uint x) public pure returns (uint) {
return x | (x + 1);
}
function getFirstHalfBytes(bytes32 _data) public pure returns (bytes16) {
return bytes16(_data);
}
function getLastHalfBytes(bytes32 _data) public pure returns (bytes16) {
bytes32 lastHalf = _data << uint256(8 * 16);
return bytes16(lastHalf);
}
// test data: 0xcafecafe4d1a35a74cb8def4342a0b7edf1a39083c98f47dd22d0560844b2045
// returns: 0xcafecafe
function getFirst4Bytes(bytes32 _data) public pure returns (bytes4) {
return bytes4(_data);
}
function getLast4Bytes(bytes32 _data) public pure returns (bytes4) {
bytes32 end = _data << uint256(8 * 28);
return bytes4(end);
}
// TODO:
// - first n bytes
// - last n bytes
//
// We want to keep this part | discard this part
// | |
// V V
// 1011 0101
// decimal | hex | binary
// ------- | ---- | ---------
// value: 181 | 0xb5 | 1011 0101
// mask: 248 | 0xf8 | 1111 1000
// --------------------------
// result: 176 | 0xb0 | 1011 0000
//
function andingWithMask(bytes1 _value, bytes1 _mask) public pure returns(bytes1) {
return _value & _mask;
}
// Not working (WIP)
// --------------------------------------------------------
// value: 0xcafecafecafecafecafecafecafecafe12345678901234567890123456789012
// mask: 0x3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE00000000000000000000000000000000
// should return: just the 'cafe' part
// not working yet
// function getFirstHalfBytesTest(bytes32 _value) public pure returns(bytes16) {
// bytes16 nOnes = bytes16(uint128(2 ** 16 - 1));
// bytes16 _mask = nOnes >> (8 - 16);
// bytes32 result = _value & _mask;
// return bytes16(result);
// }
// not working yet
function getLastHalfBytesTest(
bytes32 _value
) public pure returns (bytes16) {
uint lastN = uint(_value) % (2 ** 128);
return bytes16(uint128(lastN));
}
/*
function getFirstNBytes(
bytes32 _x,
uint8 _n
) public pure returns (bytes4) {
bytes32 nOnes = bytes32(2 ** _n - 1);
bytes32 mask = nOnes >> (256 - _n); // Total 8 bits
return _x & mask;
}
*/
// not working
function getFirstNBytes(
bytes1 _x,
uint8 _n
) public pure returns (bytes1) {
require(2 ** _n < 255, "Overflow encountered ! ");
bytes1 nOnes = bytes1(uint8(2) ** _n - 1);
bytes1 mask = nOnes >> (8 - _n); // Total 8 bits
return _x & mask;
}
}
// SPDX-License-Identifier: Apache-2.0
pragma solidity ^0.8.0;
contract BasicKeyManagerTest {
function _getPermissions(address _address) public view returns (bytes memory) {
bytes memory sample = new bytes(2);
sample[0] = 0xff;
sample[1] = 0xf7;
return sample;
}
function _verifyPermission(address _address, bytes1 _allowedPermission) public returns(bool) {
// convert dynamic bytes array to byte value of fix length
bytes memory fetchedPermissions = _getPermissions(_address);
bytes32 permissions;
assembly {
permissions := mload(0xa0) // memory pointer
}
uint result = uint(permissions & _allowedPermission);
if (result == uint8(_allowedPermission)) {
return true;
} else {
return false;
}
}
// 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
// 0xffff000000000000000000000000000000000000000000000000000000000000
// 0x000000000000000000000000000000000000000000000000000000000000ffff
function test(bytes1 _allowedPermission) public pure returns (bytes2) {
return _allowedPermission << uint8(2);
}
function hasPermission(bytes2 _permissions, bytes2 _allowedPermission) public returns (bool) {
bytes2 result = _permissions & _allowedPermission;
if (result != 0) {
return true;
} else {
return false;
}
}
function _verifyPermission(bytes2 _permissions, bytes2 _allowedPermission) public returns(bool) {
require(
uint16(_allowedPermission) & (uint16(_allowedPermission)-1) == 0,
"Trying to check more than one permission"
);
return (_permissions & _allowedPermission) != 0 ? true : false;
}
function _verifyMultiplePermissions(bytes2 _permissions, bytes2 _allowedPermission) public returns(bool) {
bytes2 result = _permissions & _allowedPermission;
if (result == _allowedPermission) {
return true;
} else {
return false;
}
}
function _findPermissionsNotSet(bytes2 _initialCheck, bytes2 _previousResult) public returns (bytes2) {
return _initialCheck ^ _previousResult;
}
}
// SPDX-License-Identifier: Apache-2.0
pragma solidity >=0.7.0 <=0.9.0;
contract SimpleContract {
uint number;
string name;
constructor() {
number = 5;
name = "Simple Contract Name";
}
function sumTwoNumbersPlusFive(uint _a, uint _b) public pure returns(uint) {
return _a + _b;
}
function getNumber() public view returns (uint) {
return number;
}
function setNumber(uint _newNumber) public {
number = _newNumber;
}
function getName() public view returns (string memory) {
return name;
}
function setName(string memory _name) public {
name = _name;
}
function something() public returns(uint) {
function(uint, uint) internal returns(uint) addNumbers = sumTwoNumbersPlusFive;
uint result = addNumbers(1,2);
return result;
}
}
pragma solidity ^0.8.0;
contract Tokensale {
uint hardcap = 10000 ether;
function Tokensale() {}
function fetchCap() public view returns(uint) {
return hardcap;
}
}
contract Presale is Tokensale {
uint hardcap = 1000 ether;
function Presale() Tokensale() {}
}
This file has been truncated, but you can view the full file.
{
"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": {
"linkReferences": {},
"object": "608060405234801561001057600080fd5b5060008090505b60016020038110156101265760026021826020811061003257fe5b01546021836020811061004157fe5b015460405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831061009c5780518252602082019150602081019050602083039250610079565b6001836020036101000a038019825116818451168082178552505050505050905001915050602060405180830381855afa1580156100de573d6000803e3d6000fd5b5050506040513d60208110156100f357600080fd5b81019080805190602001909291905050506021600183016020811061011457fe5b01819055508080600101915050610017565b506117bd80620001376000396000f3fe60806040526004361061003f5760003560e01c806301ffc9a71461004457806322895118146100b6578063621fd130146101e3578063c5f2892f14610273575b600080fd5b34801561005057600080fd5b5061009c6004803603602081101561006757600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916906020019092919050505061029e565b604051808215151515815260200191505060405180910390f35b6101e1600480360360808110156100cc57600080fd5b81019080803590602001906401000000008111156100e957600080fd5b8201836020820111156100fb57600080fd5b8035906020019184600183028401116401000000008311171561011d57600080fd5b90919293919293908035906020019064010000000081111561013e57600080fd5b82018360208201111561015057600080fd5b8035906020019184600183028401116401000000008311171561017257600080fd5b90919293919293908035906020019064010000000081111561019357600080fd5b8201836020820111156101a557600080fd5b803590602001918460018302840111640100000000831117156101c757600080fd5b909192939192939080359060200190929190505050610370565b005b3480156101ef57600080fd5b506101f8610fd0565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561023857808201518184015260208101905061021d565b50505050905090810190601f1680156102655780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561027f57600080fd5b50610288610fe2565b6040518082815260200191505060405180910390f35b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061036957507f85640907000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b603087879050146103cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806116ec6026913960400191505060405180910390fd5b60208585905014610428576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806116836036913960400191505060405180910390fd5b60608383905014610484576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018061175f6029913960400191505060405180910390fd5b670de0b6b3a76400003410156104e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806117396026913960400191505060405180910390fd5b6000633b9aca0034816104f457fe5b061461054b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806116b96033913960400191505060405180910390fd5b6000633b9aca00348161055a57fe5b04905067ffffffffffffffff80168111156105c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806117126027913960400191505060405180910390fd5b60606105cb82611314565b90507f649bbc62d0e31342afea4e5cd82d4049e7e1ee912fc0889aa790803be39038c589898989858a8a610600602054611314565b60405180806020018060200180602001806020018060200186810386528e8e82818152602001925080828437600081840152601f19601f82011690508083019250505086810385528c8c82818152602001925080828437600081840152601f19601f82011690508083019250505086810384528a818151815260200191508051906020019080838360005b838110156106a657808201518184015260208101905061068b565b50505050905090810190601f1680156106d35780820380516001836020036101000a031916815260200191505b508681038352898982818152602001925080828437600081840152601f19601f820116905080830192505050868103825287818151815260200191508051906020019080838360005b8381101561073757808201518184015260208101905061071c565b50505050905090810190601f1680156107645780820380516001836020036101000a031916815260200191505b509d505050505050505050505050505060405180910390a1600060028a8a600060801b6040516020018084848082843780830192505050826fffffffffffffffffffffffffffffffff19166fffffffffffffffffffffffffffffffff1916815260100193505050506040516020818303038152906040526040518082805190602001908083835b6020831061080e57805182526020820191506020810190506020830392506107eb565b6001836020036101000a038019825116818451168082178552505050505050905001915050602060405180830381855afa158015610850573d6000803e3d6000fd5b5050506040513d602081101561086557600080fd5b8101908080519060200190929190505050905060006002808888600090604092610891939291906115da565b6040516020018083838082843780830192505050925050506040516020818303038152906040526040518082805190602001908083835b602083106108eb57805182526020820191506020810190506020830392506108c8565b6001836020036101000a038019825116818451168082178552505050505050905001915050602060405180830381855afa15801561092d573d6000803e3d6000fd5b5050506040513d602081101561094257600080fd5b81019080805190602001909291905
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.)

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