Skip to content

Instantly share code, notes, and snippets.

@diansadulloh
Created May 11, 2025 03:51
Show Gist options
  • Save diansadulloh/651136be049cb04d29c4cce26c4ab957 to your computer and use it in GitHub Desktop.
Save diansadulloh/651136be049cb04d29c4cce26c4ab957 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.20+commit.a1b79de6.js&optimize=false&runs=200&gist=
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)
pragma solidity ^0.8.20;
import {Context} from "../utils/Context.sol";
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* The initial owner is set to the address provided by the deployer. This can
* later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
/**
* @dev The caller account is not authorized to perform an operation.
*/
error OwnableUnauthorizedAccount(address account);
/**
* @dev The owner is not a valid owner account. (eg. `address(0)`)
*/
error OwnableInvalidOwner(address owner);
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the address provided by the deployer as the initial owner.
*/
constructor(address initialOwner) {
if (initialOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(initialOwner);
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/
function _checkOwner() internal view virtual {
if (owner() != _msgSender()) {
revert OwnableUnauthorizedAccount(_msgSender());
}
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby disabling any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
if (newOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC6093.sol)
pragma solidity ^0.8.20;
/**
* @dev Standard ERC-20 Errors
* Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.
*/
interface IERC20Errors {
/**
* @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.
* @param sender Address whose tokens are being transferred.
* @param balance Current balance for the interacting account.
* @param needed Minimum amount required to perform a transfer.
*/
error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);
/**
* @dev Indicates a failure with the token `sender`. Used in transfers.
* @param sender Address whose tokens are being transferred.
*/
error ERC20InvalidSender(address sender);
/**
* @dev Indicates a failure with the token `receiver`. Used in transfers.
* @param receiver Address to which tokens are being transferred.
*/
error ERC20InvalidReceiver(address receiver);
/**
* @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.
* @param spender Address that may be allowed to operate on tokens without being their owner.
* @param allowance Amount of tokens a `spender` is allowed to operate with.
* @param needed Minimum amount required to perform a transfer.
*/
error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);
/**
* @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
* @param approver Address initiating an approval operation.
*/
error ERC20InvalidApprover(address approver);
/**
* @dev Indicates a failure with the `spender` to be approved. Used in approvals.
* @param spender Address that may be allowed to operate on tokens without being their owner.
*/
error ERC20InvalidSpender(address spender);
}
/**
* @dev Standard ERC-721 Errors
* Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.
*/
interface IERC721Errors {
/**
* @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.
* Used in balance queries.
* @param owner Address of the current owner of a token.
*/
error ERC721InvalidOwner(address owner);
/**
* @dev Indicates a `tokenId` whose `owner` is the zero address.
* @param tokenId Identifier number of a token.
*/
error ERC721NonexistentToken(uint256 tokenId);
/**
* @dev Indicates an error related to the ownership over a particular token. Used in transfers.
* @param sender Address whose tokens are being transferred.
* @param tokenId Identifier number of a token.
* @param owner Address of the current owner of a token.
*/
error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);
/**
* @dev Indicates a failure with the token `sender`. Used in transfers.
* @param sender Address whose tokens are being transferred.
*/
error ERC721InvalidSender(address sender);
/**
* @dev Indicates a failure with the token `receiver`. Used in transfers.
* @param receiver Address to which tokens are being transferred.
*/
error ERC721InvalidReceiver(address receiver);
/**
* @dev Indicates a failure with the `operator`’s approval. Used in transfers.
* @param operator Address that may be allowed to operate on tokens without being their owner.
* @param tokenId Identifier number of a token.
*/
error ERC721InsufficientApproval(address operator, uint256 tokenId);
/**
* @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
* @param approver Address initiating an approval operation.
*/
error ERC721InvalidApprover(address approver);
/**
* @dev Indicates a failure with the `operator` to be approved. Used in approvals.
* @param operator Address that may be allowed to operate on tokens without being their owner.
*/
error ERC721InvalidOperator(address operator);
}
/**
* @dev Standard ERC-1155 Errors
* Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.
*/
interface IERC1155Errors {
/**
* @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.
* @param sender Address whose tokens are being transferred.
* @param balance Current balance for the interacting account.
* @param needed Minimum amount required to perform a transfer.
* @param tokenId Identifier number of a token.
*/
error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);
/**
* @dev Indicates a failure with the token `sender`. Used in transfers.
* @param sender Address whose tokens are being transferred.
*/
error ERC1155InvalidSender(address sender);
/**
* @dev Indicates a failure with the token `receiver`. Used in transfers.
* @param receiver Address to which tokens are being transferred.
*/
error ERC1155InvalidReceiver(address receiver);
/**
* @dev Indicates a failure with the `operator`’s approval. Used in transfers.
* @param operator Address that may be allowed to operate on tokens without being their owner.
* @param owner Address of the current owner of a token.
*/
error ERC1155MissingApprovalForAll(address operator, address owner);
/**
* @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
* @param approver Address initiating an approval operation.
*/
error ERC1155InvalidApprover(address approver);
/**
* @dev Indicates a failure with the `operator` to be approved. Used in approvals.
* @param operator Address that may be allowed to operate on tokens without being their owner.
*/
error ERC1155InvalidOperator(address operator);
/**
* @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.
* Used in batch transfers.
* @param idsLength Length of the array of token identifiers
* @param valuesLength Length of the array of token amounts
*/
error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC20/ERC20.sol)
pragma solidity ^0.8.20;
import {IERC20} from "./IERC20.sol";
import {IERC20Metadata} from "./extensions/IERC20Metadata.sol";
import {Context} from "../../utils/Context.sol";
import {IERC20Errors} from "../../interfaces/draft-IERC6093.sol";
/**
* @dev Implementation of the {IERC20} interface.
*
* This implementation is agnostic to the way tokens are created. This means
* that a supply mechanism has to be added in a derived contract using {_mint}.
*
* TIP: For a detailed writeup see our guide
* https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
* to implement supply mechanisms].
*
* The default value of {decimals} is 18. To change this, you should override
* this function so it returns a different value.
*
* We have followed general OpenZeppelin Contracts guidelines: functions revert
* instead returning `false` on failure. This behavior is nonetheless
* conventional and does not conflict with the expectations of ERC-20
* applications.
*/
abstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {
mapping(address account => uint256) private _balances;
mapping(address account => mapping(address spender => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
/**
* @dev Sets the values for {name} and {symbol}.
*
* Both values are immutable: they can only be set once during construction.
*/
constructor(string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
/**
* @dev Returns the name of the token.
*/
function name() public view virtual returns (string memory) {
return _name;
}
/**
* @dev Returns the symbol of the token, usually a shorter version of the
* name.
*/
function symbol() public view virtual returns (string memory) {
return _symbol;
}
/**
* @dev Returns the number of decimals used to get its user representation.
* For example, if `decimals` equals `2`, a balance of `505` tokens should
* be displayed to a user as `5.05` (`505 / 10 ** 2`).
*
* Tokens usually opt for a value of 18, imitating the relationship between
* Ether and Wei. This is the default value returned by this function, unless
* it's overridden.
*
* NOTE: This information is only used for _display_ purposes: it in
* no way affects any of the arithmetic of the contract, including
* {IERC20-balanceOf} and {IERC20-transfer}.
*/
function decimals() public view virtual returns (uint8) {
return 18;
}
/**
* @dev See {IERC20-totalSupply}.
*/
function totalSupply() public view virtual returns (uint256) {
return _totalSupply;
}
/**
* @dev See {IERC20-balanceOf}.
*/
function balanceOf(address account) public view virtual returns (uint256) {
return _balances[account];
}
/**
* @dev See {IERC20-transfer}.
*
* Requirements:
*
* - `to` cannot be the zero address.
* - the caller must have a balance of at least `value`.
*/
function transfer(address to, uint256 value) public virtual returns (bool) {
address owner = _msgSender();
_transfer(owner, to, value);
return true;
}
/**
* @dev See {IERC20-allowance}.
*/
function allowance(address owner, address spender) public view virtual returns (uint256) {
return _allowances[owner][spender];
}
/**
* @dev See {IERC20-approve}.
*
* NOTE: If `value` is the maximum `uint256`, the allowance is not updated on
* `transferFrom`. This is semantically equivalent to an infinite approval.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function approve(address spender, uint256 value) public virtual returns (bool) {
address owner = _msgSender();
_approve(owner, spender, value);
return true;
}
/**
* @dev See {IERC20-transferFrom}.
*
* Skips emitting an {Approval} event indicating an allowance update. This is not
* required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].
*
* NOTE: Does not update the allowance if the current allowance
* is the maximum `uint256`.
*
* Requirements:
*
* - `from` and `to` cannot be the zero address.
* - `from` must have a balance of at least `value`.
* - the caller must have allowance for ``from``'s tokens of at least
* `value`.
*/
function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {
address spender = _msgSender();
_spendAllowance(from, spender, value);
_transfer(from, to, value);
return true;
}
/**
* @dev Moves a `value` amount of tokens from `from` to `to`.
*
* This internal function is equivalent to {transfer}, and can be used to
* e.g. implement automatic token fees, slashing mechanisms, etc.
*
* Emits a {Transfer} event.
*
* NOTE: This function is not virtual, {_update} should be overridden instead.
*/
function _transfer(address from, address to, uint256 value) internal {
if (from == address(0)) {
revert ERC20InvalidSender(address(0));
}
if (to == address(0)) {
revert ERC20InvalidReceiver(address(0));
}
_update(from, to, value);
}
/**
* @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`
* (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding
* this function.
*
* Emits a {Transfer} event.
*/
function _update(address from, address to, uint256 value) internal virtual {
if (from == address(0)) {
// Overflow check required: The rest of the code assumes that totalSupply never overflows
_totalSupply += value;
} else {
uint256 fromBalance = _balances[from];
if (fromBalance < value) {
revert ERC20InsufficientBalance(from, fromBalance, value);
}
unchecked {
// Overflow not possible: value <= fromBalance <= totalSupply.
_balances[from] = fromBalance - value;
}
}
if (to == address(0)) {
unchecked {
// Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.
_totalSupply -= value;
}
} else {
unchecked {
// Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.
_balances[to] += value;
}
}
emit Transfer(from, to, value);
}
/**
* @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).
* Relies on the `_update` mechanism
*
* Emits a {Transfer} event with `from` set to the zero address.
*
* NOTE: This function is not virtual, {_update} should be overridden instead.
*/
function _mint(address account, uint256 value) internal {
if (account == address(0)) {
revert ERC20InvalidReceiver(address(0));
}
_update(address(0), account, value);
}
/**
* @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.
* Relies on the `_update` mechanism.
*
* Emits a {Transfer} event with `to` set to the zero address.
*
* NOTE: This function is not virtual, {_update} should be overridden instead
*/
function _burn(address account, uint256 value) internal {
if (account == address(0)) {
revert ERC20InvalidSender(address(0));
}
_update(account, address(0), value);
}
/**
* @dev Sets `value` as the allowance of `spender` over the `owner`'s tokens.
*
* This internal function is equivalent to `approve`, and can be used to
* e.g. set automatic allowances for certain subsystems, etc.
*
* Emits an {Approval} event.
*
* Requirements:
*
* - `owner` cannot be the zero address.
* - `spender` cannot be the zero address.
*
* Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.
*/
function _approve(address owner, address spender, uint256 value) internal {
_approve(owner, spender, value, true);
}
/**
* @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.
*
* By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by
* `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any
* `Approval` event during `transferFrom` operations.
*
* Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to
* true using the following override:
*
* ```solidity
* function _approve(address owner, address spender, uint256 value, bool) internal virtual override {
* super._approve(owner, spender, value, true);
* }
* ```
*
* Requirements are the same as {_approve}.
*/
function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {
if (owner == address(0)) {
revert ERC20InvalidApprover(address(0));
}
if (spender == address(0)) {
revert ERC20InvalidSpender(address(0));
}
_allowances[owner][spender] = value;
if (emitEvent) {
emit Approval(owner, spender, value);
}
}
/**
* @dev Updates `owner`'s allowance for `spender` based on spent `value`.
*
* Does not update the allowance value in case of infinite allowance.
* Revert if not enough allowance is available.
*
* Does not emit an {Approval} event.
*/
function _spendAllowance(address owner, address spender, uint256 value) internal virtual {
uint256 currentAllowance = allowance(owner, spender);
if (currentAllowance < type(uint256).max) {
if (currentAllowance < value) {
revert ERC20InsufficientAllowance(spender, currentAllowance, value);
}
unchecked {
_approve(owner, spender, currentAllowance - value, false);
}
}
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/extensions/IERC20Metadata.sol)
pragma solidity ^0.8.20;
import {IERC20} from "../IERC20.sol";
/**
* @dev Interface for the optional metadata functions from the ERC-20 standard.
*/
interface IERC20Metadata is IERC20 {
/**
* @dev Returns the name of the token.
*/
function name() external view returns (string memory);
/**
* @dev Returns the symbol of the token.
*/
function symbol() external view returns (string memory);
/**
* @dev Returns the decimals places of the token.
*/
function decimals() external view returns (uint8);
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)
pragma solidity ^0.8.20;
/**
* @dev Interface of the ERC-20 standard as defined in the ERC.
*/
interface IERC20 {
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
/**
* @dev Returns the value of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the value of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves a `value` amount of tokens from the caller's account to `to`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address to, uint256 value) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets a `value` amount of tokens as the allowance of `spender` over the
* caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 value) external returns (bool);
/**
* @dev Moves a `value` amount of tokens from `from` to `to` using the
* allowance mechanism. `value` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(address from, address to, uint256 value) external returns (bool);
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)
pragma solidity ^0.8.20;
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
function _contextSuffixLength() internal view virtual returns (uint256) {
return 0;
}
}
// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity >=0.5.0;
/// @title Callback for IUniswapV3PoolActions#swap
/// @notice Any contract that calls IUniswapV3PoolActions#swap must implement this interface
interface IUniswapV3SwapCallback {
/// @notice Called to `msg.sender` after executing a swap via IUniswapV3Pool#swap.
/// @dev In the implementation you must pay the pool tokens owed for the swap.
/// The caller of this method must be checked to be a UniswapV3Pool deployed by the canonical UniswapV3Factory.
/// amount0Delta and amount1Delta can both be 0 if no tokens were swapped.
/// @param amount0Delta The amount of token0 that was sent (negative) or must be received (positive) by the pool by
/// the end of the swap. If positive, the callback must send that amount of token0 to the pool.
/// @param amount1Delta The amount of token1 that was sent (negative) or must be received (positive) by the pool by
/// the end of the swap. If positive, the callback must send that amount of token1 to the pool.
/// @param data Any data passed through by the caller via the IUniswapV3PoolActions#swap call
function uniswapV3SwapCallback(
int256 amount0Delta,
int256 amount1Delta,
bytes calldata data
) external;
}
// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity >=0.7.5;
pragma abicoder v2;
import '@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol';
/// @title Router token swapping functionality
/// @notice Functions for swapping tokens via Uniswap V3
interface ISwapRouter is IUniswapV3SwapCallback {
struct ExactInputSingleParams {
address tokenIn;
address tokenOut;
uint24 fee;
address recipient;
uint256 deadline;
uint256 amountIn;
uint256 amountOutMinimum;
uint160 sqrtPriceLimitX96;
}
/// @notice Swaps `amountIn` of one token for as much as possible of another token
/// @param params The parameters necessary for the swap, encoded as `ExactInputSingleParams` in calldata
/// @return amountOut The amount of the received token
function exactInputSingle(ExactInputSingleParams calldata params) external payable returns (uint256 amountOut);
struct ExactInputParams {
bytes path;
address recipient;
uint256 deadline;
uint256 amountIn;
uint256 amountOutMinimum;
}
/// @notice Swaps `amountIn` of one token for as much as possible of another along the specified path
/// @param params The parameters necessary for the multi-hop swap, encoded as `ExactInputParams` in calldata
/// @return amountOut The amount of the received token
function exactInput(ExactInputParams calldata params) external payable returns (uint256 amountOut);
struct ExactOutputSingleParams {
address tokenIn;
address tokenOut;
uint24 fee;
address recipient;
uint256 deadline;
uint256 amountOut;
uint256 amountInMaximum;
uint160 sqrtPriceLimitX96;
}
/// @notice Swaps as little as possible of one token for `amountOut` of another token
/// @param params The parameters necessary for the swap, encoded as `ExactOutputSingleParams` in calldata
/// @return amountIn The amount of the input token
function exactOutputSingle(ExactOutputSingleParams calldata params) external payable returns (uint256 amountIn);
struct ExactOutputParams {
bytes path;
address recipient;
uint256 deadline;
uint256 amountOut;
uint256 amountInMaximum;
}
/// @notice Swaps as little as possible of one token for `amountOut` of another along the specified path (reversed)
/// @param params The parameters necessary for the multi-hop swap, encoded as `ExactOutputParams` in calldata
/// @return amountIn The amount of the input token
function exactOutput(ExactOutputParams calldata params) external payable returns (uint256 amountIn);
}
{
"overrides": [
{
"files": "*.sol",
"options": {
"printWidth": 80,
"tabWidth": 4,
"useTabs": false,
"singleQuote": false,
"bracketSpacing": false
}
},
{
"files": "*.yml",
"options": {}
},
{
"files": "*.yaml",
"options": {}
},
{
"files": "*.toml",
"options": {}
},
{
"files": "*.json",
"options": {}
},
{
"files": "*.js",
"options": {}
},
{
"files": "*.ts",
"options": {}
}
]
}
REMIX DEFAULT WORKSPACE
Remix default workspace is present when:
i. Remix loads for the very first time
ii. A new workspace is created with 'Default' template
iii. There are no files existing in the File Explorer
This workspace contains 3 directories:
1. 'contracts': Holds three contracts with increasing levels of complexity.
2. 'scripts': Contains four typescript files to deploy a contract. It is explained below.
3. 'tests': Contains one Solidity test file for 'Ballot' contract & one JS test file for 'Storage' contract.
SCRIPTS
The 'scripts' folder has four typescript files which help to deploy the 'Storage' contract using 'web3.js' and 'ethers.js' libraries.
For the deployment of any other contract, just update the contract name from 'Storage' to the desired contract and provide constructor arguments accordingly
in the file `deploy_with_ethers.ts` or `deploy_with_web3.ts`
In the 'tests' folder there is a script containing Mocha-Chai unit tests for 'Storage' contract.
To run a script, right click on file name in the file explorer and click 'Run'. Remember, Solidity file must already be compiled.
Output from script will appear in remix terminal.
Please note, require/import is supported in a limited manner for Remix supported modules.
For now, modules supported by Remix are ethers, web3, swarmgw, chai, multihashes, remix and hardhat only for hardhat.ethers object/plugin.
For unsupported modules, an error like this will be thrown: '<module_name> module require is not supported by Remix IDE' will be shown.
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.8.2 <0.9.0;
/**
* @title Storage
* @dev Store & retrieve value in a variable
* @custom:dev-run-script ./scripts/deploy_with_ethers.ts
*/
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;
import "hardhat/console.sol";
/**
* @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() {
console.log("Owner contract deployed by:", msg.sender);
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 {
require(newOwner != address(0), "New owner should not be the zero address");
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 {
// This declares a new complex type which will
// be used for variables later.
// It will represent a single voter.
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
}
// This is a type for a single 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;
// This declares a state variable that
// stores a 'Voter' struct for each possible address.
mapping(address => Voter) public voters;
// A dynamically-sized array of 'Proposal' structs.
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 each of the provided proposal names,
// create a new proposal object and add it
// to the end of the array.
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) external {
// 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 == chairperson,
"Only chairperson can give right to vote."
);
require(
!voters[voter].voted,
"The voter already voted."
);
require(voters[voter].weight == 0, "Voter already has the right to vote.");
voters[voter].weight = 1;
}
/**
* @dev Delegate your vote to the voter 'to'.
* @param to address to which vote is delegated
*/
function delegate(address to) external {
// assigns reference
Voter storage sender = voters[msg.sender];
require(sender.weight != 0, "You have no right to vote");
require(!sender.voted, "You already voted.");
require(to != msg.sender, "Self-delegation is disallowed.");
// Forward the delegation as long as
// 'to' also delegated.
// In general, such loops are very dangerous,
// because if they run too long, they might
// need more gas than is available in a block.
// In this case, the delegation will not be executed,
// but in other situations, such loops might
// cause a contract to get "stuck" completely.
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.");
}
Voter storage delegate_ = voters[to];
// Voters cannot delegate to accounts that cannot vote.
require(delegate_.weight >= 1);
// Since 'sender' is a reference, this
// modifies 'voters[msg.sender]'.
sender.voted = true;
sender.delegate = 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) external {
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() external view
returns (bytes32 winnerName_)
{
winnerName_ = proposals[winningProposal()].name;
}
}
{
"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
},
"goerli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {
"@_1124": {
"entryPoint": null,
"id": 1124,
"parameterSlots": 6,
"returnSlots": 0
},
"@_336": {
"entryPoint": null,
"id": 336,
"parameterSlots": 2,
"returnSlots": 0
},
"@_50": {
"entryPoint": null,
"id": 50,
"parameterSlots": 1,
"returnSlots": 0
},
"@_transferOwnership_146": {
"entryPoint": 666,
"id": 146,
"parameterSlots": 1,
"returnSlots": 0
},
"abi_decode_t_address_fromMemory": {
"entryPoint": 940,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_addresst_addresst_addresst_addresst_addresst_address_fromMemory": {
"entryPoint": 962,
"id": null,
"parameterSlots": 2,
"returnSlots": 6
},
"abi_encode_t_address_to_t_address_fromStack": {
"entryPoint": 1954,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
"entryPoint": 1971,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"allocate_unbounded": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
},
"array_dataslot_t_string_storage": {
"entryPoint": 1266,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_length_t_string_memory_ptr": {
"entryPoint": 1114,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"clean_up_bytearray_end_slots_t_string_storage": {
"entryPoint": 1575,
"id": null,
"parameterSlots": 3,
"returnSlots": 0
},
"cleanup_t_address": {
"entryPoint": 896,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint160": {
"entryPoint": 865,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint256": {
"entryPoint": 1396,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"clear_storage_range_t_bytes1": {
"entryPoint": 1537,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"convert_t_uint256_to_t_uint256": {
"entryPoint": 1414,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage": {
"entryPoint": 1726,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"divide_by_32_ceil": {
"entryPoint": 1284,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"extract_byte_array_length": {
"entryPoint": 1214,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"extract_used_part_and_set_length_of_short_byte_array": {
"entryPoint": 1697,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"identity": {
"entryPoint": 1405,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"mask_bytes_dynamic": {
"entryPoint": 1667,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"panic_error_0x22": {
"entryPoint": 1169,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x41": {
"entryPoint": 1124,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"prepare_store_t_uint256": {
"entryPoint": 1453,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": {
"entryPoint": 861,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"shift_left_dynamic": {
"entryPoint": 1299,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"shift_right_unsigned_dynamic": {
"entryPoint": 1655,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"storage_set_to_zero_t_uint256": {
"entryPoint": 1509,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"update_byte_slice_dynamic32": {
"entryPoint": 1311,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"update_storage_value_t_uint256_to_t_uint256": {
"entryPoint": 1462,
"id": null,
"parameterSlots": 3,
"returnSlots": 0
},
"validator_revert_t_address": {
"entryPoint": 915,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"zero_value_for_split_t_uint256": {
"entryPoint": 1505,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:7561:9",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "47:35:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "57:19:9",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "73:2:9",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "67:5:9"
},
"nodeType": "YulFunctionCall",
"src": "67:9:9"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "57:6:9"
}
]
}
]
},
"name": "allocate_unbounded",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "40:6:9",
"type": ""
}
],
"src": "7:75:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "177:28:9",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "194:1:9",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "197:1:9",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "187:6:9"
},
"nodeType": "YulFunctionCall",
"src": "187:12:9"
},
"nodeType": "YulExpressionStatement",
"src": "187:12:9"
}
]
},
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulFunctionDefinition",
"src": "88:117:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "300:28:9",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "317:1:9",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "320:1:9",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "310:6:9"
},
"nodeType": "YulFunctionCall",
"src": "310:12:9"
},
"nodeType": "YulExpressionStatement",
"src": "310:12:9"
}
]
},
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulFunctionDefinition",
"src": "211:117:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "379:81:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "389:65:9",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "404:5:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "411:42:9",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "400:3:9"
},
"nodeType": "YulFunctionCall",
"src": "400:54:9"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "389:7:9"
}
]
}
]
},
"name": "cleanup_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "361:5:9",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "371:7:9",
"type": ""
}
],
"src": "334:126:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "511:51:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "521:35:9",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "550:5:9"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "532:17:9"
},
"nodeType": "YulFunctionCall",
"src": "532:24:9"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "521:7:9"
}
]
}
]
},
"name": "cleanup_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "493:5:9",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "503:7:9",
"type": ""
}
],
"src": "466:96:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "611:79:9",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "668:16:9",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "677:1:9",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "680:1:9",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "670:6:9"
},
"nodeType": "YulFunctionCall",
"src": "670:12:9"
},
"nodeType": "YulExpressionStatement",
"src": "670:12:9"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "634:5:9"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "659:5:9"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "641:17:9"
},
"nodeType": "YulFunctionCall",
"src": "641:24:9"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "631:2:9"
},
"nodeType": "YulFunctionCall",
"src": "631:35:9"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "624:6:9"
},
"nodeType": "YulFunctionCall",
"src": "624:43:9"
},
"nodeType": "YulIf",
"src": "621:63:9"
}
]
},
"name": "validator_revert_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "604:5:9",
"type": ""
}
],
"src": "568:122:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "759:80:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "769:22:9",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "784:6:9"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "778:5:9"
},
"nodeType": "YulFunctionCall",
"src": "778:13:9"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "769:5:9"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "827:5:9"
}
],
"functionName": {
"name": "validator_revert_t_address",
"nodeType": "YulIdentifier",
"src": "800:26:9"
},
"nodeType": "YulFunctionCall",
"src": "800:33:9"
},
"nodeType": "YulExpressionStatement",
"src": "800:33:9"
}
]
},
"name": "abi_decode_t_address_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "737:6:9",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "745:3:9",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "753:5:9",
"type": ""
}
],
"src": "696:143:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1007:972:9",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1054:83:9",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "1056:77:9"
},
"nodeType": "YulFunctionCall",
"src": "1056:79:9"
},
"nodeType": "YulExpressionStatement",
"src": "1056:79:9"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1028:7:9"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1037:9:9"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1024:3:9"
},
"nodeType": "YulFunctionCall",
"src": "1024:23:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1049:3:9",
"type": "",
"value": "192"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "1020:3:9"
},
"nodeType": "YulFunctionCall",
"src": "1020:33:9"
},
"nodeType": "YulIf",
"src": "1017:120:9"
},
{
"nodeType": "YulBlock",
"src": "1147:128:9",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1162:15:9",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "1176:1:9",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1166:6:9",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "1191:74:9",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1237:9:9"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1248:6:9"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1233:3:9"
},
"nodeType": "YulFunctionCall",
"src": "1233:22:9"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1257:7:9"
}
],
"functionName": {
"name": "abi_decode_t_address_fromMemory",
"nodeType": "YulIdentifier",
"src": "1201:31:9"
},
"nodeType": "YulFunctionCall",
"src": "1201:64:9"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1191:6:9"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "1285:129:9",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1300:16:9",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "1314:2:9",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1304:6:9",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "1330:74:9",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1376:9:9"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1387:6:9"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1372:3:9"
},
"nodeType": "YulFunctionCall",
"src": "1372:22:9"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1396:7:9"
}
],
"functionName": {
"name": "abi_decode_t_address_fromMemory",
"nodeType": "YulIdentifier",
"src": "1340:31:9"
},
"nodeType": "YulFunctionCall",
"src": "1340:64:9"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "1330:6:9"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "1424:129:9",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1439:16:9",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "1453:2:9",
"type": "",
"value": "64"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1443:6:9",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "1469:74:9",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1515:9:9"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1526:6:9"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1511:3:9"
},
"nodeType": "YulFunctionCall",
"src": "1511:22:9"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1535:7:9"
}
],
"functionName": {
"name": "abi_decode_t_address_fromMemory",
"nodeType": "YulIdentifier",
"src": "1479:31:9"
},
"nodeType": "YulFunctionCall",
"src": "1479:64:9"
},
"variableNames": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "1469:6:9"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "1563:129:9",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1578:16:9",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "1592:2:9",
"type": "",
"value": "96"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1582:6:9",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "1608:74:9",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1654:9:9"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1665:6:9"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1650:3:9"
},
"nodeType": "YulFunctionCall",
"src": "1650:22:9"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1674:7:9"
}
],
"functionName": {
"name": "abi_decode_t_address_fromMemory",
"nodeType": "YulIdentifier",
"src": "1618:31:9"
},
"nodeType": "YulFunctionCall",
"src": "1618:64:9"
},
"variableNames": [
{
"name": "value3",
"nodeType": "YulIdentifier",
"src": "1608:6:9"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "1702:130:9",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1717:17:9",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "1731:3:9",
"type": "",
"value": "128"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1721:6:9",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "1748:74:9",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1794:9:9"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1805:6:9"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1790:3:9"
},
"nodeType": "YulFunctionCall",
"src": "1790:22:9"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1814:7:9"
}
],
"functionName": {
"name": "abi_decode_t_address_fromMemory",
"nodeType": "YulIdentifier",
"src": "1758:31:9"
},
"nodeType": "YulFunctionCall",
"src": "1758:64:9"
},
"variableNames": [
{
"name": "value4",
"nodeType": "YulIdentifier",
"src": "1748:6:9"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "1842:130:9",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1857:17:9",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "1871:3:9",
"type": "",
"value": "160"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1861:6:9",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "1888:74:9",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1934:9:9"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1945:6:9"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1930:3:9"
},
"nodeType": "YulFunctionCall",
"src": "1930:22:9"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1954:7:9"
}
],
"functionName": {
"name": "abi_decode_t_address_fromMemory",
"nodeType": "YulIdentifier",
"src": "1898:31:9"
},
"nodeType": "YulFunctionCall",
"src": "1898:64:9"
},
"variableNames": [
{
"name": "value5",
"nodeType": "YulIdentifier",
"src": "1888:6:9"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_addresst_addresst_addresst_addresst_address_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "937:9:9",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "948:7:9",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "960:6:9",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "968:6:9",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "976:6:9",
"type": ""
},
{
"name": "value3",
"nodeType": "YulTypedName",
"src": "984:6:9",
"type": ""
},
{
"name": "value4",
"nodeType": "YulTypedName",
"src": "992:6:9",
"type": ""
},
{
"name": "value5",
"nodeType": "YulTypedName",
"src": "1000:6:9",
"type": ""
}
],
"src": "845:1134:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2044:40:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2055:22:9",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2071:5:9"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "2065:5:9"
},
"nodeType": "YulFunctionCall",
"src": "2065:12:9"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2055:6:9"
}
]
}
]
},
"name": "array_length_t_string_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2027:5:9",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "2037:6:9",
"type": ""
}
],
"src": "1985:99:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2118:152:9",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2135:1:9",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2138:77:9",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2128:6:9"
},
"nodeType": "YulFunctionCall",
"src": "2128:88:9"
},
"nodeType": "YulExpressionStatement",
"src": "2128:88:9"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2232:1:9",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2235:4:9",
"type": "",
"value": "0x41"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2225:6:9"
},
"nodeType": "YulFunctionCall",
"src": "2225:15:9"
},
"nodeType": "YulExpressionStatement",
"src": "2225:15:9"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2256:1:9",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2259:4:9",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "2249:6:9"
},
"nodeType": "YulFunctionCall",
"src": "2249:15:9"
},
"nodeType": "YulExpressionStatement",
"src": "2249:15:9"
}
]
},
"name": "panic_error_0x41",
"nodeType": "YulFunctionDefinition",
"src": "2090:180:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2304:152:9",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2321:1:9",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2324:77:9",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2314:6:9"
},
"nodeType": "YulFunctionCall",
"src": "2314:88:9"
},
"nodeType": "YulExpressionStatement",
"src": "2314:88:9"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2418:1:9",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2421:4:9",
"type": "",
"value": "0x22"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2411:6:9"
},
"nodeType": "YulFunctionCall",
"src": "2411:15:9"
},
"nodeType": "YulExpressionStatement",
"src": "2411:15:9"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2442:1:9",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2445:4:9",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "2435:6:9"
},
"nodeType": "YulFunctionCall",
"src": "2435:15:9"
},
"nodeType": "YulExpressionStatement",
"src": "2435:15:9"
}
]
},
"name": "panic_error_0x22",
"nodeType": "YulFunctionDefinition",
"src": "2276:180:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2513:269:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2523:22:9",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "2537:4:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2543:1:9",
"type": "",
"value": "2"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "2533:3:9"
},
"nodeType": "YulFunctionCall",
"src": "2533:12:9"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2523:6:9"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "2554:38:9",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "2584:4:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2590:1:9",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "2580:3:9"
},
"nodeType": "YulFunctionCall",
"src": "2580:12:9"
},
"variables": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulTypedName",
"src": "2558:18:9",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "2631:51:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2645:27:9",
"value": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2659:6:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2667:4:9",
"type": "",
"value": "0x7f"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "2655:3:9"
},
"nodeType": "YulFunctionCall",
"src": "2655:17:9"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2645:6:9"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "2611:18:9"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "2604:6:9"
},
"nodeType": "YulFunctionCall",
"src": "2604:26:9"
},
"nodeType": "YulIf",
"src": "2601:81:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2734:42:9",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x22",
"nodeType": "YulIdentifier",
"src": "2748:16:9"
},
"nodeType": "YulFunctionCall",
"src": "2748:18:9"
},
"nodeType": "YulExpressionStatement",
"src": "2748:18:9"
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "2698:18:9"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2721:6:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2729:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "2718:2:9"
},
"nodeType": "YulFunctionCall",
"src": "2718:14:9"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "2695:2:9"
},
"nodeType": "YulFunctionCall",
"src": "2695:38:9"
},
"nodeType": "YulIf",
"src": "2692:84:9"
}
]
},
"name": "extract_byte_array_length",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "2497:4:9",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "2506:6:9",
"type": ""
}
],
"src": "2462:320:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2842:87:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2852:11:9",
"value": {
"name": "ptr",
"nodeType": "YulIdentifier",
"src": "2860:3:9"
},
"variableNames": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "2852:4:9"
}
]
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2880:1:9",
"type": "",
"value": "0"
},
{
"name": "ptr",
"nodeType": "YulIdentifier",
"src": "2883:3:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2873:6:9"
},
"nodeType": "YulFunctionCall",
"src": "2873:14:9"
},
"nodeType": "YulExpressionStatement",
"src": "2873:14:9"
},
{
"nodeType": "YulAssignment",
"src": "2896:26:9",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2914:1:9",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2917:4:9",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "keccak256",
"nodeType": "YulIdentifier",
"src": "2904:9:9"
},
"nodeType": "YulFunctionCall",
"src": "2904:18:9"
},
"variableNames": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "2896:4:9"
}
]
}
]
},
"name": "array_dataslot_t_string_storage",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "ptr",
"nodeType": "YulTypedName",
"src": "2829:3:9",
"type": ""
}
],
"returnVariables": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "2837:4:9",
"type": ""
}
],
"src": "2788:141:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2979:49:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2989:33:9",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3007:5:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3014:2:9",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3003:3:9"
},
"nodeType": "YulFunctionCall",
"src": "3003:14:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3019:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "2999:3:9"
},
"nodeType": "YulFunctionCall",
"src": "2999:23:9"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "2989:6:9"
}
]
}
]
},
"name": "divide_by_32_ceil",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2962:5:9",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nodeType": "YulTypedName",
"src": "2972:6:9",
"type": ""
}
],
"src": "2935:93:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3087:54:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3097:37:9",
"value": {
"arguments": [
{
"name": "bits",
"nodeType": "YulIdentifier",
"src": "3122:4:9"
},
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3128:5:9"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "3118:3:9"
},
"nodeType": "YulFunctionCall",
"src": "3118:16:9"
},
"variableNames": [
{
"name": "newValue",
"nodeType": "YulIdentifier",
"src": "3097:8:9"
}
]
}
]
},
"name": "shift_left_dynamic",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "bits",
"nodeType": "YulTypedName",
"src": "3062:4:9",
"type": ""
},
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3068:5:9",
"type": ""
}
],
"returnVariables": [
{
"name": "newValue",
"nodeType": "YulTypedName",
"src": "3078:8:9",
"type": ""
}
],
"src": "3034:107:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3223:317:9",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "3233:35:9",
"value": {
"arguments": [
{
"name": "shiftBytes",
"nodeType": "YulIdentifier",
"src": "3254:10:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3266:1:9",
"type": "",
"value": "8"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "3250:3:9"
},
"nodeType": "YulFunctionCall",
"src": "3250:18:9"
},
"variables": [
{
"name": "shiftBits",
"nodeType": "YulTypedName",
"src": "3237:9:9",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "3277:109:9",
"value": {
"arguments": [
{
"name": "shiftBits",
"nodeType": "YulIdentifier",
"src": "3308:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3319:66:9",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "shift_left_dynamic",
"nodeType": "YulIdentifier",
"src": "3289:18:9"
},
"nodeType": "YulFunctionCall",
"src": "3289:97:9"
},
"variables": [
{
"name": "mask",
"nodeType": "YulTypedName",
"src": "3281:4:9",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "3395:51:9",
"value": {
"arguments": [
{
"name": "shiftBits",
"nodeType": "YulIdentifier",
"src": "3426:9:9"
},
{
"name": "toInsert",
"nodeType": "YulIdentifier",
"src": "3437:8:9"
}
],
"functionName": {
"name": "shift_left_dynamic",
"nodeType": "YulIdentifier",
"src": "3407:18:9"
},
"nodeType": "YulFunctionCall",
"src": "3407:39:9"
},
"variableNames": [
{
"name": "toInsert",
"nodeType": "YulIdentifier",
"src": "3395:8:9"
}
]
},
{
"nodeType": "YulAssignment",
"src": "3455:30:9",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3468:5:9"
},
{
"arguments": [
{
"name": "mask",
"nodeType": "YulIdentifier",
"src": "3479:4:9"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "3475:3:9"
},
"nodeType": "YulFunctionCall",
"src": "3475:9:9"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "3464:3:9"
},
"nodeType": "YulFunctionCall",
"src": "3464:21:9"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3455:5:9"
}
]
},
{
"nodeType": "YulAssignment",
"src": "3494:40:9",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3507:5:9"
},
{
"arguments": [
{
"name": "toInsert",
"nodeType": "YulIdentifier",
"src": "3518:8:9"
},
{
"name": "mask",
"nodeType": "YulIdentifier",
"src": "3528:4:9"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "3514:3:9"
},
"nodeType": "YulFunctionCall",
"src": "3514:19:9"
}
],
"functionName": {
"name": "or",
"nodeType": "YulIdentifier",
"src": "3504:2:9"
},
"nodeType": "YulFunctionCall",
"src": "3504:30:9"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "3494:6:9"
}
]
}
]
},
"name": "update_byte_slice_dynamic32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3184:5:9",
"type": ""
},
{
"name": "shiftBytes",
"nodeType": "YulTypedName",
"src": "3191:10:9",
"type": ""
},
{
"name": "toInsert",
"nodeType": "YulTypedName",
"src": "3203:8:9",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nodeType": "YulTypedName",
"src": "3216:6:9",
"type": ""
}
],
"src": "3147:393:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3591:32:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3601:16:9",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "3612:5:9"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "3601:7:9"
}
]
}
]
},
"name": "cleanup_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3573:5:9",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "3583:7:9",
"type": ""
}
],
"src": "3546:77:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3661:28:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3671:12:9",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "3678:5:9"
},
"variableNames": [
{
"name": "ret",
"nodeType": "YulIdentifier",
"src": "3671:3:9"
}
]
}
]
},
"name": "identity",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3647:5:9",
"type": ""
}
],
"returnVariables": [
{
"name": "ret",
"nodeType": "YulTypedName",
"src": "3657:3:9",
"type": ""
}
],
"src": "3629:60:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3755:82:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3765:66:9",
"value": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3823:5:9"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "3805:17:9"
},
"nodeType": "YulFunctionCall",
"src": "3805:24:9"
}
],
"functionName": {
"name": "identity",
"nodeType": "YulIdentifier",
"src": "3796:8:9"
},
"nodeType": "YulFunctionCall",
"src": "3796:34:9"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "3778:17:9"
},
"nodeType": "YulFunctionCall",
"src": "3778:53:9"
},
"variableNames": [
{
"name": "converted",
"nodeType": "YulIdentifier",
"src": "3765:9:9"
}
]
}
]
},
"name": "convert_t_uint256_to_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3735:5:9",
"type": ""
}
],
"returnVariables": [
{
"name": "converted",
"nodeType": "YulTypedName",
"src": "3745:9:9",
"type": ""
}
],
"src": "3695:142:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3890:28:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3900:12:9",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "3907:5:9"
},
"variableNames": [
{
"name": "ret",
"nodeType": "YulIdentifier",
"src": "3900:3:9"
}
]
}
]
},
"name": "prepare_store_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3876:5:9",
"type": ""
}
],
"returnVariables": [
{
"name": "ret",
"nodeType": "YulTypedName",
"src": "3886:3:9",
"type": ""
}
],
"src": "3843:75:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4000:193:9",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "4010:63:9",
"value": {
"arguments": [
{
"name": "value_0",
"nodeType": "YulIdentifier",
"src": "4065:7:9"
}
],
"functionName": {
"name": "convert_t_uint256_to_t_uint256",
"nodeType": "YulIdentifier",
"src": "4034:30:9"
},
"nodeType": "YulFunctionCall",
"src": "4034:39:9"
},
"variables": [
{
"name": "convertedValue_0",
"nodeType": "YulTypedName",
"src": "4014:16:9",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "4089:4:9"
},
{
"arguments": [
{
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "4129:4:9"
}
],
"functionName": {
"name": "sload",
"nodeType": "YulIdentifier",
"src": "4123:5:9"
},
"nodeType": "YulFunctionCall",
"src": "4123:11:9"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "4136:6:9"
},
{
"arguments": [
{
"name": "convertedValue_0",
"nodeType": "YulIdentifier",
"src": "4168:16:9"
}
],
"functionName": {
"name": "prepare_store_t_uint256",
"nodeType": "YulIdentifier",
"src": "4144:23:9"
},
"nodeType": "YulFunctionCall",
"src": "4144:41:9"
}
],
"functionName": {
"name": "update_byte_slice_dynamic32",
"nodeType": "YulIdentifier",
"src": "4095:27:9"
},
"nodeType": "YulFunctionCall",
"src": "4095:91:9"
}
],
"functionName": {
"name": "sstore",
"nodeType": "YulIdentifier",
"src": "4082:6:9"
},
"nodeType": "YulFunctionCall",
"src": "4082:105:9"
},
"nodeType": "YulExpressionStatement",
"src": "4082:105:9"
}
]
},
"name": "update_storage_value_t_uint256_to_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "slot",
"nodeType": "YulTypedName",
"src": "3977:4:9",
"type": ""
},
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "3983:6:9",
"type": ""
},
{
"name": "value_0",
"nodeType": "YulTypedName",
"src": "3991:7:9",
"type": ""
}
],
"src": "3924:269:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4248:24:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4258:8:9",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "4265:1:9",
"type": "",
"value": "0"
},
"variableNames": [
{
"name": "ret",
"nodeType": "YulIdentifier",
"src": "4258:3:9"
}
]
}
]
},
"name": "zero_value_for_split_t_uint256",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "ret",
"nodeType": "YulTypedName",
"src": "4244:3:9",
"type": ""
}
],
"src": "4199:73:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4331:136:9",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "4341:46:9",
"value": {
"arguments": [],
"functionName": {
"name": "zero_value_for_split_t_uint256",
"nodeType": "YulIdentifier",
"src": "4355:30:9"
},
"nodeType": "YulFunctionCall",
"src": "4355:32:9"
},
"variables": [
{
"name": "zero_0",
"nodeType": "YulTypedName",
"src": "4345:6:9",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "4440:4:9"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "4446:6:9"
},
{
"name": "zero_0",
"nodeType": "YulIdentifier",
"src": "4454:6:9"
}
],
"functionName": {
"name": "update_storage_value_t_uint256_to_t_uint256",
"nodeType": "YulIdentifier",
"src": "4396:43:9"
},
"nodeType": "YulFunctionCall",
"src": "4396:65:9"
},
"nodeType": "YulExpressionStatement",
"src": "4396:65:9"
}
]
},
"name": "storage_set_to_zero_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "slot",
"nodeType": "YulTypedName",
"src": "4317:4:9",
"type": ""
},
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "4323:6:9",
"type": ""
}
],
"src": "4278:189:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4523:136:9",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "4590:63:9",
"statements": [
{
"expression": {
"arguments": [
{
"name": "start",
"nodeType": "YulIdentifier",
"src": "4634:5:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4641:1:9",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "storage_set_to_zero_t_uint256",
"nodeType": "YulIdentifier",
"src": "4604:29:9"
},
"nodeType": "YulFunctionCall",
"src": "4604:39:9"
},
"nodeType": "YulExpressionStatement",
"src": "4604:39:9"
}
]
},
"condition": {
"arguments": [
{
"name": "start",
"nodeType": "YulIdentifier",
"src": "4543:5:9"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "4550:3:9"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "4540:2:9"
},
"nodeType": "YulFunctionCall",
"src": "4540:14:9"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "4555:26:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4557:22:9",
"value": {
"arguments": [
{
"name": "start",
"nodeType": "YulIdentifier",
"src": "4570:5:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4577:1:9",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4566:3:9"
},
"nodeType": "YulFunctionCall",
"src": "4566:13:9"
},
"variableNames": [
{
"name": "start",
"nodeType": "YulIdentifier",
"src": "4557:5:9"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "4537:2:9",
"statements": []
},
"src": "4533:120:9"
}
]
},
"name": "clear_storage_range_t_bytes1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "start",
"nodeType": "YulTypedName",
"src": "4511:5:9",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "4518:3:9",
"type": ""
}
],
"src": "4473:186:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4744:464:9",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "4770:431:9",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "4784:54:9",
"value": {
"arguments": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "4832:5:9"
}
],
"functionName": {
"name": "array_dataslot_t_string_storage",
"nodeType": "YulIdentifier",
"src": "4800:31:9"
},
"nodeType": "YulFunctionCall",
"src": "4800:38:9"
},
"variables": [
{
"name": "dataArea",
"nodeType": "YulTypedName",
"src": "4788:8:9",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "4851:63:9",
"value": {
"arguments": [
{
"name": "dataArea",
"nodeType": "YulIdentifier",
"src": "4874:8:9"
},
{
"arguments": [
{
"name": "startIndex",
"nodeType": "YulIdentifier",
"src": "4902:10:9"
}
],
"functionName": {
"name": "divide_by_32_ceil",
"nodeType": "YulIdentifier",
"src": "4884:17:9"
},
"nodeType": "YulFunctionCall",
"src": "4884:29:9"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4870:3:9"
},
"nodeType": "YulFunctionCall",
"src": "4870:44:9"
},
"variables": [
{
"name": "deleteStart",
"nodeType": "YulTypedName",
"src": "4855:11:9",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "5071:27:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5073:23:9",
"value": {
"name": "dataArea",
"nodeType": "YulIdentifier",
"src": "5088:8:9"
},
"variableNames": [
{
"name": "deleteStart",
"nodeType": "YulIdentifier",
"src": "5073:11:9"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "startIndex",
"nodeType": "YulIdentifier",
"src": "5055:10:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5067:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "5052:2:9"
},
"nodeType": "YulFunctionCall",
"src": "5052:18:9"
},
"nodeType": "YulIf",
"src": "5049:49:9"
},
{
"expression": {
"arguments": [
{
"name": "deleteStart",
"nodeType": "YulIdentifier",
"src": "5140:11:9"
},
{
"arguments": [
{
"name": "dataArea",
"nodeType": "YulIdentifier",
"src": "5157:8:9"
},
{
"arguments": [
{
"name": "len",
"nodeType": "YulIdentifier",
"src": "5185:3:9"
}
],
"functionName": {
"name": "divide_by_32_ceil",
"nodeType": "YulIdentifier",
"src": "5167:17:9"
},
"nodeType": "YulFunctionCall",
"src": "5167:22:9"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5153:3:9"
},
"nodeType": "YulFunctionCall",
"src": "5153:37:9"
}
],
"functionName": {
"name": "clear_storage_range_t_bytes1",
"nodeType": "YulIdentifier",
"src": "5111:28:9"
},
"nodeType": "YulFunctionCall",
"src": "5111:80:9"
},
"nodeType": "YulExpressionStatement",
"src": "5111:80:9"
}
]
},
"condition": {
"arguments": [
{
"name": "len",
"nodeType": "YulIdentifier",
"src": "4761:3:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4766:2:9",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "4758:2:9"
},
"nodeType": "YulFunctionCall",
"src": "4758:11:9"
},
"nodeType": "YulIf",
"src": "4755:446:9"
}
]
},
"name": "clean_up_bytearray_end_slots_t_string_storage",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "array",
"nodeType": "YulTypedName",
"src": "4720:5:9",
"type": ""
},
{
"name": "len",
"nodeType": "YulTypedName",
"src": "4727:3:9",
"type": ""
},
{
"name": "startIndex",
"nodeType": "YulTypedName",
"src": "4732:10:9",
"type": ""
}
],
"src": "4665:543:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5277:54:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5287:37:9",
"value": {
"arguments": [
{
"name": "bits",
"nodeType": "YulIdentifier",
"src": "5312:4:9"
},
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "5318:5:9"
}
],
"functionName": {
"name": "shr",
"nodeType": "YulIdentifier",
"src": "5308:3:9"
},
"nodeType": "YulFunctionCall",
"src": "5308:16:9"
},
"variableNames": [
{
"name": "newValue",
"nodeType": "YulIdentifier",
"src": "5287:8:9"
}
]
}
]
},
"name": "shift_right_unsigned_dynamic",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "bits",
"nodeType": "YulTypedName",
"src": "5252:4:9",
"type": ""
},
{
"name": "value",
"nodeType": "YulTypedName",
"src": "5258:5:9",
"type": ""
}
],
"returnVariables": [
{
"name": "newValue",
"nodeType": "YulTypedName",
"src": "5268:8:9",
"type": ""
}
],
"src": "5214:117:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5388:118:9",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "5398:68:9",
"value": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5447:1:9",
"type": "",
"value": "8"
},
{
"name": "bytes",
"nodeType": "YulIdentifier",
"src": "5450:5:9"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "5443:3:9"
},
"nodeType": "YulFunctionCall",
"src": "5443:13:9"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5462:1:9",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "5458:3:9"
},
"nodeType": "YulFunctionCall",
"src": "5458:6:9"
}
],
"functionName": {
"name": "shift_right_unsigned_dynamic",
"nodeType": "YulIdentifier",
"src": "5414:28:9"
},
"nodeType": "YulFunctionCall",
"src": "5414:51:9"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "5410:3:9"
},
"nodeType": "YulFunctionCall",
"src": "5410:56:9"
},
"variables": [
{
"name": "mask",
"nodeType": "YulTypedName",
"src": "5402:4:9",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "5475:25:9",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "5489:4:9"
},
{
"name": "mask",
"nodeType": "YulIdentifier",
"src": "5495:4:9"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "5485:3:9"
},
"nodeType": "YulFunctionCall",
"src": "5485:15:9"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "5475:6:9"
}
]
}
]
},
"name": "mask_bytes_dynamic",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "5365:4:9",
"type": ""
},
{
"name": "bytes",
"nodeType": "YulTypedName",
"src": "5371:5:9",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nodeType": "YulTypedName",
"src": "5381:6:9",
"type": ""
}
],
"src": "5337:169:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5592:214:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5725:37:9",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "5752:4:9"
},
{
"name": "len",
"nodeType": "YulIdentifier",
"src": "5758:3:9"
}
],
"functionName": {
"name": "mask_bytes_dynamic",
"nodeType": "YulIdentifier",
"src": "5733:18:9"
},
"nodeType": "YulFunctionCall",
"src": "5733:29:9"
},
"variableNames": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "5725:4:9"
}
]
},
{
"nodeType": "YulAssignment",
"src": "5771:29:9",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "5782:4:9"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5792:1:9",
"type": "",
"value": "2"
},
{
"name": "len",
"nodeType": "YulIdentifier",
"src": "5795:3:9"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "5788:3:9"
},
"nodeType": "YulFunctionCall",
"src": "5788:11:9"
}
],
"functionName": {
"name": "or",
"nodeType": "YulIdentifier",
"src": "5779:2:9"
},
"nodeType": "YulFunctionCall",
"src": "5779:21:9"
},
"variableNames": [
{
"name": "used",
"nodeType": "YulIdentifier",
"src": "5771:4:9"
}
]
}
]
},
"name": "extract_used_part_and_set_length_of_short_byte_array",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "5573:4:9",
"type": ""
},
{
"name": "len",
"nodeType": "YulTypedName",
"src": "5579:3:9",
"type": ""
}
],
"returnVariables": [
{
"name": "used",
"nodeType": "YulTypedName",
"src": "5587:4:9",
"type": ""
}
],
"src": "5511:295:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5903:1303:9",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "5914:51:9",
"value": {
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "5961:3:9"
}
],
"functionName": {
"name": "array_length_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "5928:32:9"
},
"nodeType": "YulFunctionCall",
"src": "5928:37:9"
},
"variables": [
{
"name": "newLen",
"nodeType": "YulTypedName",
"src": "5918:6:9",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "6050:22:9",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "6052:16:9"
},
"nodeType": "YulFunctionCall",
"src": "6052:18:9"
},
"nodeType": "YulExpressionStatement",
"src": "6052:18:9"
}
]
},
"condition": {
"arguments": [
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "6022:6:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6030:18:9",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "6019:2:9"
},
"nodeType": "YulFunctionCall",
"src": "6019:30:9"
},
"nodeType": "YulIf",
"src": "6016:56:9"
},
{
"nodeType": "YulVariableDeclaration",
"src": "6082:52:9",
"value": {
"arguments": [
{
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "6128:4:9"
}
],
"functionName": {
"name": "sload",
"nodeType": "YulIdentifier",
"src": "6122:5:9"
},
"nodeType": "YulFunctionCall",
"src": "6122:11:9"
}
],
"functionName": {
"name": "extract_byte_array_length",
"nodeType": "YulIdentifier",
"src": "6096:25:9"
},
"nodeType": "YulFunctionCall",
"src": "6096:38:9"
},
"variables": [
{
"name": "oldLen",
"nodeType": "YulTypedName",
"src": "6086:6:9",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "6227:4:9"
},
{
"name": "oldLen",
"nodeType": "YulIdentifier",
"src": "6233:6:9"
},
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "6241:6:9"
}
],
"functionName": {
"name": "clean_up_bytearray_end_slots_t_string_storage",
"nodeType": "YulIdentifier",
"src": "6181:45:9"
},
"nodeType": "YulFunctionCall",
"src": "6181:67:9"
},
"nodeType": "YulExpressionStatement",
"src": "6181:67:9"
},
{
"nodeType": "YulVariableDeclaration",
"src": "6258:18:9",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "6275:1:9",
"type": "",
"value": "0"
},
"variables": [
{
"name": "srcOffset",
"nodeType": "YulTypedName",
"src": "6262:9:9",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "6286:17:9",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "6299:4:9",
"type": "",
"value": "0x20"
},
"variableNames": [
{
"name": "srcOffset",
"nodeType": "YulIdentifier",
"src": "6286:9:9"
}
]
},
{
"cases": [
{
"body": {
"nodeType": "YulBlock",
"src": "6350:611:9",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "6364:37:9",
"value": {
"arguments": [
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "6383:6:9"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6395:4:9",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "6391:3:9"
},
"nodeType": "YulFunctionCall",
"src": "6391:9:9"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "6379:3:9"
},
"nodeType": "YulFunctionCall",
"src": "6379:22:9"
},
"variables": [
{
"name": "loopEnd",
"nodeType": "YulTypedName",
"src": "6368:7:9",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "6415:51:9",
"value": {
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "6461:4:9"
}
],
"functionName": {
"name": "array_dataslot_t_string_storage",
"nodeType": "YulIdentifier",
"src": "6429:31:9"
},
"nodeType": "YulFunctionCall",
"src": "6429:37:9"
},
"variables": [
{
"name": "dstPtr",
"nodeType": "YulTypedName",
"src": "6419:6:9",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "6479:10:9",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "6488:1:9",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "6483:1:9",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "6547:163:9",
"statements": [
{
"expression": {
"arguments": [
{
"name": "dstPtr",
"nodeType": "YulIdentifier",
"src": "6572:6:9"
},
{
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "6590:3:9"
},
{
"name": "srcOffset",
"nodeType": "YulIdentifier",
"src": "6595:9:9"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6586:3:9"
},
"nodeType": "YulFunctionCall",
"src": "6586:19:9"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "6580:5:9"
},
"nodeType": "YulFunctionCall",
"src": "6580:26:9"
}
],
"functionName": {
"name": "sstore",
"nodeType": "YulIdentifier",
"src": "6565:6:9"
},
"nodeType": "YulFunctionCall",
"src": "6565:42:9"
},
"nodeType": "YulExpressionStatement",
"src": "6565:42:9"
},
{
"nodeType": "YulAssignment",
"src": "6624:24:9",
"value": {
"arguments": [
{
"name": "dstPtr",
"nodeType": "YulIdentifier",
"src": "6638:6:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6646:1:9",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6634:3:9"
},
"nodeType": "YulFunctionCall",
"src": "6634:14:9"
},
"variableNames": [
{
"name": "dstPtr",
"nodeType": "YulIdentifier",
"src": "6624:6:9"
}
]
},
{
"nodeType": "YulAssignment",
"src": "6665:31:9",
"value": {
"arguments": [
{
"name": "srcOffset",
"nodeType": "YulIdentifier",
"src": "6682:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6693:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6678:3:9"
},
"nodeType": "YulFunctionCall",
"src": "6678:18:9"
},
"variableNames": [
{
"name": "srcOffset",
"nodeType": "YulIdentifier",
"src": "6665:9:9"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "6513:1:9"
},
{
"name": "loopEnd",
"nodeType": "YulIdentifier",
"src": "6516:7:9"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "6510:2:9"
},
"nodeType": "YulFunctionCall",
"src": "6510:14:9"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "6525:21:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6527:17:9",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "6536:1:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6539:4:9",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6532:3:9"
},
"nodeType": "YulFunctionCall",
"src": "6532:12:9"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "6527:1:9"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "6506:3:9",
"statements": []
},
"src": "6502:208:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6746:156:9",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "6764:43:9",
"value": {
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "6791:3:9"
},
{
"name": "srcOffset",
"nodeType": "YulIdentifier",
"src": "6796:9:9"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6787:3:9"
},
"nodeType": "YulFunctionCall",
"src": "6787:19:9"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "6781:5:9"
},
"nodeType": "YulFunctionCall",
"src": "6781:26:9"
},
"variables": [
{
"name": "lastValue",
"nodeType": "YulTypedName",
"src": "6768:9:9",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "dstPtr",
"nodeType": "YulIdentifier",
"src": "6831:6:9"
},
{
"arguments": [
{
"name": "lastValue",
"nodeType": "YulIdentifier",
"src": "6858:9:9"
},
{
"arguments": [
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "6873:6:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6881:4:9",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "6869:3:9"
},
"nodeType": "YulFunctionCall",
"src": "6869:17:9"
}
],
"functionName": {
"name": "mask_bytes_dynamic",
"nodeType": "YulIdentifier",
"src": "6839:18:9"
},
"nodeType": "YulFunctionCall",
"src": "6839:48:9"
}
],
"functionName": {
"name": "sstore",
"nodeType": "YulIdentifier",
"src": "6824:6:9"
},
"nodeType": "YulFunctionCall",
"src": "6824:64:9"
},
"nodeType": "YulExpressionStatement",
"src": "6824:64:9"
}
]
},
"condition": {
"arguments": [
{
"name": "loopEnd",
"nodeType": "YulIdentifier",
"src": "6729:7:9"
},
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "6738:6:9"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "6726:2:9"
},
"nodeType": "YulFunctionCall",
"src": "6726:19:9"
},
"nodeType": "YulIf",
"src": "6723:179:9"
},
{
"expression": {
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "6922:4:9"
},
{
"arguments": [
{
"arguments": [
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "6936:6:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6944:1:9",
"type": "",
"value": "2"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "6932:3:9"
},
"nodeType": "YulFunctionCall",
"src": "6932:14:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6948:1:9",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6928:3:9"
},
"nodeType": "YulFunctionCall",
"src": "6928:22:9"
}
],
"functionName": {
"name": "sstore",
"nodeType": "YulIdentifier",
"src": "6915:6:9"
},
"nodeType": "YulFunctionCall",
"src": "6915:36:9"
},
"nodeType": "YulExpressionStatement",
"src": "6915:36:9"
}
]
},
"nodeType": "YulCase",
"src": "6343:618:9",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "6348:1:9",
"type": "",
"value": "1"
}
},
{
"body": {
"nodeType": "YulBlock",
"src": "6978:222:9",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "6992:14:9",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "7005:1:9",
"type": "",
"value": "0"
},
"variables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "6996:5:9",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "7029:67:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7047:35:9",
"value": {
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "7066:3:9"
},
{
"name": "srcOffset",
"nodeType": "YulIdentifier",
"src": "7071:9:9"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7062:3:9"
},
"nodeType": "YulFunctionCall",
"src": "7062:19:9"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "7056:5:9"
},
"nodeType": "YulFunctionCall",
"src": "7056:26:9"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "7047:5:9"
}
]
}
]
},
"condition": {
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "7022:6:9"
},
"nodeType": "YulIf",
"src": "7019:77:9"
},
{
"expression": {
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "7116:4:9"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "7175:5:9"
},
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "7182:6:9"
}
],
"functionName": {
"name": "extract_used_part_and_set_length_of_short_byte_array",
"nodeType": "YulIdentifier",
"src": "7122:52:9"
},
"nodeType": "YulFunctionCall",
"src": "7122:67:9"
}
],
"functionName": {
"name": "sstore",
"nodeType": "YulIdentifier",
"src": "7109:6:9"
},
"nodeType": "YulFunctionCall",
"src": "7109:81:9"
},
"nodeType": "YulExpressionStatement",
"src": "7109:81:9"
}
]
},
"nodeType": "YulCase",
"src": "6970:230:9",
"value": "default"
}
],
"expression": {
"arguments": [
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "6323:6:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6331:2:9",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "6320:2:9"
},
"nodeType": "YulFunctionCall",
"src": "6320:14:9"
},
"nodeType": "YulSwitch",
"src": "6313:887:9"
}
]
},
"name": "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "slot",
"nodeType": "YulTypedName",
"src": "5892:4:9",
"type": ""
},
{
"name": "src",
"nodeType": "YulTypedName",
"src": "5898:3:9",
"type": ""
}
],
"src": "5811:1395:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7277:53:9",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7294:3:9"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "7317:5:9"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "7299:17:9"
},
"nodeType": "YulFunctionCall",
"src": "7299:24:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7287:6:9"
},
"nodeType": "YulFunctionCall",
"src": "7287:37:9"
},
"nodeType": "YulExpressionStatement",
"src": "7287:37:9"
}
]
},
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "7265:5:9",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "7272:3:9",
"type": ""
}
],
"src": "7212:118:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7434:124:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7444:26:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7456:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7467:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7452:3:9"
},
"nodeType": "YulFunctionCall",
"src": "7452:18:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "7444:4:9"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "7524:6:9"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7537:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7548:1:9",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7533:3:9"
},
"nodeType": "YulFunctionCall",
"src": "7533:17:9"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "7480:43:9"
},
"nodeType": "YulFunctionCall",
"src": "7480:71:9"
},
"nodeType": "YulExpressionStatement",
"src": "7480:71:9"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "7406:9:9",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "7418:6:9",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "7429:4:9",
"type": ""
}
],
"src": "7336:222:9"
}
]
},
"contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_addresst_addresst_addresst_addresst_addresst_address_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5 {\n if slt(sub(dataEnd, headStart), 192) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 128\n\n value4 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 160\n\n value5 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\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 array_dataslot_t_string_storage(ptr) -> data {\n data := ptr\n\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n\n }\n\n function divide_by_32_ceil(value) -> result {\n result := div(add(value, 31), 32)\n }\n\n function shift_left_dynamic(bits, value) -> newValue {\n newValue :=\n\n shl(bits, value)\n\n }\n\n function update_byte_slice_dynamic32(value, shiftBytes, toInsert) -> result {\n let shiftBits := mul(shiftBytes, 8)\n let mask := shift_left_dynamic(shiftBits, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n toInsert := shift_left_dynamic(shiftBits, toInsert)\n value := and(value, not(mask))\n result := or(value, and(toInsert, mask))\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint256_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_uint256(value)))\n }\n\n function prepare_store_t_uint256(value) -> ret {\n ret := value\n }\n\n function update_storage_value_t_uint256_to_t_uint256(slot, offset, value_0) {\n let convertedValue_0 := convert_t_uint256_to_t_uint256(value_0)\n sstore(slot, update_byte_slice_dynamic32(sload(slot), offset, prepare_store_t_uint256(convertedValue_0)))\n }\n\n function zero_value_for_split_t_uint256() -> ret {\n ret := 0\n }\n\n function storage_set_to_zero_t_uint256(slot, offset) {\n let zero_0 := zero_value_for_split_t_uint256()\n update_storage_value_t_uint256_to_t_uint256(slot, offset, zero_0)\n }\n\n function clear_storage_range_t_bytes1(start, end) {\n for {} lt(start, end) { start := add(start, 1) }\n {\n storage_set_to_zero_t_uint256(start, 0)\n }\n }\n\n function clean_up_bytearray_end_slots_t_string_storage(array, len, startIndex) {\n\n if gt(len, 31) {\n let dataArea := array_dataslot_t_string_storage(array)\n let deleteStart := add(dataArea, divide_by_32_ceil(startIndex))\n // If we are clearing array to be short byte array, we want to clear only data starting from array data area.\n if lt(startIndex, 32) { deleteStart := dataArea }\n clear_storage_range_t_bytes1(deleteStart, add(dataArea, divide_by_32_ceil(len)))\n }\n\n }\n\n function shift_right_unsigned_dynamic(bits, value) -> newValue {\n newValue :=\n\n shr(bits, value)\n\n }\n\n function mask_bytes_dynamic(data, bytes) -> result {\n let mask := not(shift_right_unsigned_dynamic(mul(8, bytes), not(0)))\n result := and(data, mask)\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used {\n // we want to save only elements that are part of the array after resizing\n // others should be set to zero\n data := mask_bytes_dynamic(data, len)\n used := or(data, mul(2, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src) {\n\n let newLen := array_length_t_string_memory_ptr(src)\n // Make sure array length is sane\n if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n\n let oldLen := extract_byte_array_length(sload(slot))\n\n // potentially truncate data\n clean_up_bytearray_end_slots_t_string_storage(slot, oldLen, newLen)\n\n let srcOffset := 0\n\n srcOffset := 0x20\n\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(0x1f))\n\n let dstPtr := array_dataslot_t_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, 0x20) } {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, 32)\n }\n if lt(loopEnd, newLen) {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, mask_bytes_dynamic(lastValue, and(newLen, 0x1f)))\n }\n sstore(slot, add(mul(newLen, 2), 1))\n }\n default {\n let value := 0\n if newLen {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n}\n",
"id": 9,
"language": "Yul",
"name": "#utility.yul"
}
],
"linkReferences": {},
"object": "608060405234801562000010575f80fd5b5060405162003241380380620032418339818101604052810190620000369190620003c2565b806040518060400160405280601581526020017f466964656c776569737320436f726520496e64657800000000000000000000008152506040518060400160405280600481526020017f46574349000000000000000000000000000000000000000000000000000000008152508160039081620000b49190620006be565b508060049081620000c69190620006be565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200013c575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620001339190620007b3565b60405180910390fd5b6200014d816200029a60201b60201c565b508560065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508460075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508360085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505050620007ce565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6200038c8262000361565b9050919050565b6200039e8162000380565b8114620003a9575f80fd5b50565b5f81519050620003bc8162000393565b92915050565b5f805f805f8060c08789031215620003df57620003de6200035d565b5b5f620003ee89828a01620003ac565b96505060206200040189828a01620003ac565b95505060406200041489828a01620003ac565b94505060606200042789828a01620003ac565b93505060806200043a89828a01620003ac565b92505060a06200044d89828a01620003ac565b9150509295509295509295565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620004d657607f821691505b602082108103620004ec57620004eb62000491565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620005507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000513565b6200055c868362000513565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620005a6620005a06200059a8462000574565b6200057d565b62000574565b9050919050565b5f819050919050565b620005c18362000586565b620005d9620005d082620005ad565b8484546200051f565b825550505050565b5f90565b620005ef620005e1565b620005fc818484620005b6565b505050565b5b818110156200062357620006175f82620005e5565b60018101905062000602565b5050565b601f82111562000672576200063c81620004f2565b620006478462000504565b8101602085101562000657578190505b6200066f620006668562000504565b83018262000601565b50505b505050565b5f82821c905092915050565b5f620006945f198460080262000677565b1980831691505092915050565b5f620006ae838362000683565b9150826002028217905092915050565b620006c9826200045a565b67ffffffffffffffff811115620006e557620006e462000464565b5b620006f18254620004be565b620006fe82828562000627565b5f60209050601f83116001811462000734575f84156200071f578287015190505b6200072b8582620006a1565b8655506200079a565b601f1984166200074486620004f2565b5f5b828110156200076d5784890151825560018201915060208501945060208101905062000746565b868310156200078d578489015162000789601f89168262000683565b8355505b6001600288020188555050505b505050505050565b620007ad8162000380565b82525050565b5f602082019050620007c85f830184620007a2565b92915050565b612a6580620007dc5f395ff3fe608060405234801561000f575f80fd5b5060043610610140575f3560e01c8063715018a6116100b6578063c31c9c071161007a578063c31c9c0714610354578063db006a7514610372578063dd1b9c4a1461038e578063dd62ed3e146103ac578063e74b981b146103dc578063f2fde38b146103f857610140565b8063715018a6146102c25780638da5cb5b146102cc57806395d89b41146102ea578063a0712d6814610308578063a9059cbb1461032457610140565b80633e413bee116101085780633e413bee146101fe578063412736571461021c57806346904840146102385780634aa07e64146102565780635ad182d31461027457806370a082311461029257610140565b806306fdde0314610144578063095ea7b31461016257806318160ddd1461019257806323b872dd146101b0578063313ce567146101e0575b5f80fd5b61014c610414565b6040516101599190611ea9565b60405180910390f35b61017c60048036038101906101779190611f5a565b6104a4565b6040516101899190611fb2565b60405180910390f35b61019a6104c6565b6040516101a79190611fda565b60405180910390f35b6101ca60048036038101906101c59190611ff3565b6104cf565b6040516101d79190611fb2565b60405180910390f35b6101e86104fd565b6040516101f5919061205e565b60405180910390f35b610206610505565b60405161021391906120d2565b60405180910390f35b610236600480360381019061023191906120eb565b61052a565b005b6102406105e3565b60405161024d9190612125565b60405180910390f35b61025e610608565b60405161026b91906120d2565b60405180910390f35b61027c61062d565b60405161028991906120d2565b60405180910390f35b6102ac60048036038101906102a791906120eb565b610652565b6040516102b99190611fda565b60405180910390f35b6102ca610697565b005b6102d46106aa565b6040516102e19190612125565b60405180910390f35b6102f26106d2565b6040516102ff9190611ea9565b60405180910390f35b610322600480360381019061031d919061213e565b610762565b005b61033e60048036038101906103399190611f5a565b610950565b60405161034b9190611fb2565b60405180910390f35b61035c610972565b6040516103699190612189565b60405180910390f35b61038c6004803603810190610387919061213e565b610997565b005b610396610d9e565b6040516103a391906121bf565b60405180910390f35b6103c660048036038101906103c191906121d8565b610da4565b6040516103d39190611fda565b60405180910390f35b6103f660048036038101906103f191906120eb565b610e26565b005b610412600480360381019061040d91906120eb565b610edf565b005b60606003805461042390612243565b80601f016020809104026020016040519081016040528092919081815260200182805461044f90612243565b801561049a5780601f106104715761010080835404028352916020019161049a565b820191905f5260205f20905b81548152906001019060200180831161047d57829003601f168201915b5050505050905090565b5f806104ae610f63565b90506104bb818585610f6a565b600191505092915050565b5f600254905090565b5f806104d9610f63565b90506104e6858285610f7c565b6104f185858561100f565b60019150509392505050565b5f6012905090565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6105326110ff565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036105a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610597906122bd565b60405180910390fd5b8060095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61069f6110ff565b6106a85f611186565b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546106e190612243565b80601f016020809104026020016040519081016040528092919081815260200182805461070d90612243565b80156107585780601f1061072f57610100808354040283529160200191610758565b820191905f5260205f20905b81548152906001019060200180831161073b57829003601f168201915b5050505050905090565b5f81116107a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079b90612325565b60405180910390fd5b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b815260040161080293929190612343565b6020604051808303815f875af115801561081e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061084291906123a2565b610881576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087890612417565b60405180910390fd5b5f60646046836108919190612462565b61089b91906124d0565b90505f60466028836108ad9190612462565b6108b791906124d0565b90505f6046601e846108c99190612462565b6108d391906124d0565b905061090060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611249565b61092b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682611249565b5f64e8d4a510008561093d9190612462565b905061094933826115a2565b5050505050565b5f8061095a610f63565b905061096781858561100f565b600191505092915050565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b806109a133610652565b10156109e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d99061254a565b60405180910390fd5b6109ec3382611621565b5f64e8d4a51000826109fe91906124d0565b9050610a2a60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166116a0565b610a5460075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166116a0565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610aaf9190612125565b602060405180830381865afa158015610aca573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aee919061257c565b905081811015610b33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2a906125f1565b60405180910390fd5b5f6064600184610b439190612462565b610b4d91906124d0565b90505f8184610b5c919061260f565b905060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610bba929190612642565b6020604051808303815f875af1158015610bd6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bfa91906123a2565b610c39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c30906126b3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff16600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015610c9557505f82115b15610d975760085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401610d17929190612642565b6020604051808303815f875af1158015610d33573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d5791906123a2565b610d96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8d9061271b565b60405180910390fd5b5b5050505050565b610bb881565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610e2e6110ff565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9390612783565b60405180910390fd5b80600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610ee76110ff565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f57575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610f4e9190612125565b60405180910390fd5b610f6081611186565b50565b5f33905090565b610f778383836001611a37565b505050565b5f610f878484610da4565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156110095781811015610ffa578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401610ff1939291906127a1565b60405180910390fd5b61100884848484035f611a37565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361107f575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016110769190612125565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110ef575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016110e69190612125565b60405180910390fd5b6110fa838383611c06565b505050565b611107610f63565b73ffffffffffffffffffffffffffffffffffffffff166111256106aa565b73ffffffffffffffffffffffffffffffffffffffff161461118457611148610f63565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161117b9190612125565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f81031561159e5760085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165f6040518363ffffffff1660e01b81526004016112ce92919061280f565b6020604051808303815f875af11580156112ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061130e91906123a2565b61134d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134490612880565b60405180910390fd5b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016113ca929190612642565b6020604051808303815f875af11580156113e6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061140a91906123a2565b611449576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611440906128e8565b60405180910390fd5b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663414bf38960405180610100016040528060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001610bb862ffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff1681526020014281526020018481526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b815260040161155c91906129e2565b6020604051808303815f875af1158015611578573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061159c919061257c565b505b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611612575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016116099190612125565b60405180910390fd5b61161d5f8383611c06565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611691575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016116889190612125565b60405180910390fd5b61169c825f83611c06565b5050565b5f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016116da9190612125565b602060405180830381865afa1580156116f5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611719919061257c565b90505f81036117285750611a34565b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165f6040518363ffffffff1660e01b815260040161178492919061280f565b6020604051808303815f875af11580156117a0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117c491906123a2565b611803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fa90612880565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161185f929190612642565b6020604051808303815f875af115801561187b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061189f91906123a2565b6118de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d5906128e8565b60405180910390fd5b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663414bf3896040518061010001604052808573ffffffffffffffffffffffffffffffffffffffff16815260200160085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001610bb862ffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff1681526020014281526020018481526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b81526004016119f191906129e2565b6020604051808303815f875af1158015611a0d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a31919061257c565b50505b50565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611aa7575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401611a9e9190612125565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b17575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401611b0e9190612125565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015611c00578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051611bf79190611fda565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c56578060025f828254611c4a91906129fc565b92505081905550611d24565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611cdf578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401611cd6939291906127a1565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d6b578060025f8282540392505081905550611db5565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e129190611fda565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611e56578082015181840152602081019050611e3b565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611e7b82611e1f565b611e858185611e29565b9350611e95818560208601611e39565b611e9e81611e61565b840191505092915050565b5f6020820190508181035f830152611ec18184611e71565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611ef682611ecd565b9050919050565b611f0681611eec565b8114611f10575f80fd5b50565b5f81359050611f2181611efd565b92915050565b5f819050919050565b611f3981611f27565b8114611f43575f80fd5b50565b5f81359050611f5481611f30565b92915050565b5f8060408385031215611f7057611f6f611ec9565b5b5f611f7d85828601611f13565b9250506020611f8e85828601611f46565b9150509250929050565b5f8115159050919050565b611fac81611f98565b82525050565b5f602082019050611fc55f830184611fa3565b92915050565b611fd481611f27565b82525050565b5f602082019050611fed5f830184611fcb565b92915050565b5f805f6060848603121561200a57612009611ec9565b5b5f61201786828701611f13565b935050602061202886828701611f13565b925050604061203986828701611f46565b9150509250925092565b5f60ff82169050919050565b61205881612043565b82525050565b5f6020820190506120715f83018461204f565b92915050565b5f819050919050565b5f61209a61209561209084611ecd565b612077565b611ecd565b9050919050565b5f6120ab82612080565b9050919050565b5f6120bc826120a1565b9050919050565b6120cc816120b2565b82525050565b5f6020820190506120e55f8301846120c3565b92915050565b5f60208284031215612100576120ff611ec9565b5b5f61210d84828501611f13565b91505092915050565b61211f81611eec565b82525050565b5f6020820190506121385f830184612116565b92915050565b5f6020828403121561215357612152611ec9565b5b5f61216084828501611f46565b91505092915050565b5f612173826120a1565b9050919050565b61218381612169565b82525050565b5f60208201905061219c5f83018461217a565b92915050565b5f62ffffff82169050919050565b6121b9816121a2565b82525050565b5f6020820190506121d25f8301846121b0565b92915050565b5f80604083850312156121ee576121ed611ec9565b5b5f6121fb85828601611f13565b925050602061220c85828601611f13565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061225a57607f821691505b60208210810361226d5761226c612216565b5b50919050565b7f496e76616c696420726f757465720000000000000000000000000000000000005f82015250565b5f6122a7600e83611e29565b91506122b282612273565b602082019050919050565b5f6020820190508181035f8301526122d48161229b565b9050919050565b7f416d6f756e74206d757374206265203e203000000000000000000000000000005f82015250565b5f61230f601283611e29565b915061231a826122db565b602082019050919050565b5f6020820190508181035f83015261233c81612303565b9050919050565b5f6060820190506123565f830186612116565b6123636020830185612116565b6123706040830184611fcb565b949350505050565b61238181611f98565b811461238b575f80fd5b50565b5f8151905061239c81612378565b92915050565b5f602082840312156123b7576123b6611ec9565b5b5f6123c48482850161238e565b91505092915050565b7f5472616e73666572206661696c656400000000000000000000000000000000005f82015250565b5f612401600f83611e29565b915061240c826123cd565b602082019050919050565b5f6020820190508181035f83015261242e816123f5565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61246c82611f27565b915061247783611f27565b925082820261248581611f27565b9150828204841483151761249c5761249b612435565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6124da82611f27565b91506124e583611f27565b9250826124f5576124f46124a3565b5b828204905092915050565b7f496e73756666696369656e7420465743490000000000000000000000000000005f82015250565b5f612534601183611e29565b915061253f82612500565b602082019050919050565b5f6020820190508181035f83015261256181612528565b9050919050565b5f8151905061257681611f30565b92915050565b5f6020828403121561259157612590611ec9565b5b5f61259e84828501612568565b91505092915050565b7f496e73756666696369656e7420555344430000000000000000000000000000005f82015250565b5f6125db601183611e29565b91506125e6826125a7565b602082019050919050565b5f6020820190508181035f830152612608816125cf565b9050919050565b5f61261982611f27565b915061262483611f27565b925082820390508181111561263c5761263b612435565b5b92915050565b5f6040820190506126555f830185612116565b6126626020830184611fcb565b9392505050565b7f55534443207472616e73666572206661696c65640000000000000000000000005f82015250565b5f61269d601483611e29565b91506126a882612669565b602082019050919050565b5f6020820190508181035f8301526126ca81612691565b9050919050565b7f466565207472616e73666572206661696c6564000000000000000000000000005f82015250565b5f612705601383611e29565b9150612710826126d1565b602082019050919050565b5f6020820190508181035f830152612732816126f9565b9050919050565b7f496e76616c6964206164647265737300000000000000000000000000000000005f82015250565b5f61276d600f83611e29565b915061277882612739565b602082019050919050565b5f6020820190508181035f83015261279a81612761565b9050919050565b5f6060820190506127b45f830186612116565b6127c16020830185611fcb565b6127ce6040830184611fcb565b949350505050565b5f819050919050565b5f6127f96127f46127ef846127d6565b612077565b611f27565b9050919050565b612809816127df565b82525050565b5f6040820190506128225f830185612116565b61282f6020830184612800565b9392505050565b7f526573657420617070726f7665206661696c65640000000000000000000000005f82015250565b5f61286a601483611e29565b915061287582612836565b602082019050919050565b5f6020820190508181035f8301526128978161285e565b9050919050565b7f417070726f7665206661696c65640000000000000000000000000000000000005f82015250565b5f6128d2600e83611e29565b91506128dd8261289e565b602082019050919050565b5f6020820190508181035f8301526128ff816128c6565b9050919050565b61290f81611eec565b82525050565b61291e816121a2565b82525050565b61292d81611f27565b82525050565b61293c81611ecd565b82525050565b61010082015f8201516129575f850182612906565b50602082015161296a6020850182612906565b50604082015161297d6040850182612915565b5060608201516129906060850182612906565b5060808201516129a36080850182612924565b5060a08201516129b660a0850182612924565b5060c08201516129c960c0850182612924565b5060e08201516129dc60e0850182612933565b50505050565b5f610100820190506129f65f830184612942565b92915050565b5f612a0682611f27565b9150612a1183611f27565b9250828201905080821115612a2957612a28612435565b5b9291505056fea26469706673582212201ff31236184462700372e4d8e631aea728b1ddc8002742a410336b2d6206ca3564736f6c63430008140033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x10 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x3241 CODESIZE SUB DUP1 PUSH3 0x3241 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH3 0x36 SWAP2 SWAP1 PUSH3 0x3C2 JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x15 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x466964656C776569737320436F726520496E6465780000000000000000000000 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4657434900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 PUSH1 0x3 SWAP1 DUP2 PUSH3 0xB4 SWAP2 SWAP1 PUSH3 0x6BE JUMP JUMPDEST POP DUP1 PUSH1 0x4 SWAP1 DUP2 PUSH3 0xC6 SWAP2 SWAP1 PUSH3 0x6BE JUMP JUMPDEST POP POP POP PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0x13C JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x133 SWAP2 SWAP1 PUSH3 0x7B3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x14D DUP2 PUSH3 0x29A PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP DUP6 PUSH1 0x6 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP5 PUSH1 0x7 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP4 PUSH1 0x8 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP3 PUSH1 0x9 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH1 0xA PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP POP POP POP POP POP PUSH3 0x7CE JUMP JUMPDEST PUSH0 PUSH1 0x5 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x5 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x38C DUP3 PUSH3 0x361 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x39E DUP2 PUSH3 0x380 JUMP JUMPDEST DUP2 EQ PUSH3 0x3A9 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH3 0x3BC DUP2 PUSH3 0x393 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH3 0x3DF JUMPI PUSH3 0x3DE PUSH3 0x35D JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x3EE DUP10 DUP3 DUP11 ADD PUSH3 0x3AC JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 PUSH3 0x401 DUP10 DUP3 DUP11 ADD PUSH3 0x3AC JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 PUSH3 0x414 DUP10 DUP3 DUP11 ADD PUSH3 0x3AC JUMP JUMPDEST SWAP5 POP POP PUSH1 0x60 PUSH3 0x427 DUP10 DUP3 DUP11 ADD PUSH3 0x3AC JUMP JUMPDEST SWAP4 POP POP PUSH1 0x80 PUSH3 0x43A DUP10 DUP3 DUP11 ADD PUSH3 0x3AC JUMP JUMPDEST SWAP3 POP POP PUSH1 0xA0 PUSH3 0x44D DUP10 DUP3 DUP11 ADD PUSH3 0x3AC JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH3 0x4D6 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x4EC JUMPI PUSH3 0x4EB PUSH3 0x491 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP DUP2 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 PUSH1 0x1F DUP4 ADD DIV SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 SHL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x8 DUP4 MUL PUSH3 0x550 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH3 0x513 JUMP JUMPDEST PUSH3 0x55C DUP7 DUP4 PUSH3 0x513 JUMP JUMPDEST SWAP6 POP DUP1 NOT DUP5 AND SWAP4 POP DUP1 DUP7 AND DUP5 OR SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x5A6 PUSH3 0x5A0 PUSH3 0x59A DUP5 PUSH3 0x574 JUMP JUMPDEST PUSH3 0x57D JUMP JUMPDEST PUSH3 0x574 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x5C1 DUP4 PUSH3 0x586 JUMP JUMPDEST PUSH3 0x5D9 PUSH3 0x5D0 DUP3 PUSH3 0x5AD JUMP JUMPDEST DUP5 DUP5 SLOAD PUSH3 0x51F JUMP JUMPDEST DUP3 SSTORE POP POP POP POP JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH3 0x5EF PUSH3 0x5E1 JUMP JUMPDEST PUSH3 0x5FC DUP2 DUP5 DUP5 PUSH3 0x5B6 JUMP JUMPDEST POP POP POP JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x623 JUMPI PUSH3 0x617 PUSH0 DUP3 PUSH3 0x5E5 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH3 0x602 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH3 0x672 JUMPI PUSH3 0x63C DUP2 PUSH3 0x4F2 JUMP JUMPDEST PUSH3 0x647 DUP5 PUSH3 0x504 JUMP JUMPDEST DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH3 0x657 JUMPI DUP2 SWAP1 POP JUMPDEST PUSH3 0x66F PUSH3 0x666 DUP6 PUSH3 0x504 JUMP JUMPDEST DUP4 ADD DUP3 PUSH3 0x601 JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 DUP3 DUP3 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x694 PUSH0 NOT DUP5 PUSH1 0x8 MUL PUSH3 0x677 JUMP JUMPDEST NOT DUP1 DUP4 AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x6AE DUP4 DUP4 PUSH3 0x683 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0x2 MUL DUP3 OR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x6C9 DUP3 PUSH3 0x45A JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x6E5 JUMPI PUSH3 0x6E4 PUSH3 0x464 JUMP JUMPDEST JUMPDEST PUSH3 0x6F1 DUP3 SLOAD PUSH3 0x4BE JUMP JUMPDEST PUSH3 0x6FE DUP3 DUP3 DUP6 PUSH3 0x627 JUMP JUMPDEST PUSH0 PUSH1 0x20 SWAP1 POP PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH3 0x734 JUMPI PUSH0 DUP5 ISZERO PUSH3 0x71F JUMPI DUP3 DUP8 ADD MLOAD SWAP1 POP JUMPDEST PUSH3 0x72B DUP6 DUP3 PUSH3 0x6A1 JUMP JUMPDEST DUP7 SSTORE POP PUSH3 0x79A JUMP JUMPDEST PUSH1 0x1F NOT DUP5 AND PUSH3 0x744 DUP7 PUSH3 0x4F2 JUMP JUMPDEST PUSH0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x76D JUMPI DUP5 DUP10 ADD MLOAD DUP3 SSTORE PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP6 ADD SWAP5 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH3 0x746 JUMP JUMPDEST DUP7 DUP4 LT ISZERO PUSH3 0x78D JUMPI DUP5 DUP10 ADD MLOAD PUSH3 0x789 PUSH1 0x1F DUP10 AND DUP3 PUSH3 0x683 JUMP JUMPDEST DUP4 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP9 MUL ADD DUP9 SSTORE POP POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH3 0x7AD DUP2 PUSH3 0x380 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x7C8 PUSH0 DUP4 ADD DUP5 PUSH3 0x7A2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2A65 DUP1 PUSH3 0x7DC PUSH0 CODECOPY PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x140 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x715018A6 GT PUSH2 0xB6 JUMPI DUP1 PUSH4 0xC31C9C07 GT PUSH2 0x7A JUMPI DUP1 PUSH4 0xC31C9C07 EQ PUSH2 0x354 JUMPI DUP1 PUSH4 0xDB006A75 EQ PUSH2 0x372 JUMPI DUP1 PUSH4 0xDD1B9C4A EQ PUSH2 0x38E JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x3AC JUMPI DUP1 PUSH4 0xE74B981B EQ PUSH2 0x3DC JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x3F8 JUMPI PUSH2 0x140 JUMP JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x2C2 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x2CC JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x2EA JUMPI DUP1 PUSH4 0xA0712D68 EQ PUSH2 0x308 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x324 JUMPI PUSH2 0x140 JUMP JUMPDEST DUP1 PUSH4 0x3E413BEE GT PUSH2 0x108 JUMPI DUP1 PUSH4 0x3E413BEE EQ PUSH2 0x1FE JUMPI DUP1 PUSH4 0x41273657 EQ PUSH2 0x21C JUMPI DUP1 PUSH4 0x46904840 EQ PUSH2 0x238 JUMPI DUP1 PUSH4 0x4AA07E64 EQ PUSH2 0x256 JUMPI DUP1 PUSH4 0x5AD182D3 EQ PUSH2 0x274 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x292 JUMPI PUSH2 0x140 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x144 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x162 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x192 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1B0 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1E0 JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x14C PUSH2 0x414 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x159 SWAP2 SWAP1 PUSH2 0x1EA9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x17C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x177 SWAP2 SWAP1 PUSH2 0x1F5A JUMP JUMPDEST PUSH2 0x4A4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x189 SWAP2 SWAP1 PUSH2 0x1FB2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x19A PUSH2 0x4C6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A7 SWAP2 SWAP1 PUSH2 0x1FDA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1CA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1C5 SWAP2 SWAP1 PUSH2 0x1FF3 JUMP JUMPDEST PUSH2 0x4CF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D7 SWAP2 SWAP1 PUSH2 0x1FB2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1E8 PUSH2 0x4FD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F5 SWAP2 SWAP1 PUSH2 0x205E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x206 PUSH2 0x505 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x213 SWAP2 SWAP1 PUSH2 0x20D2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x236 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x231 SWAP2 SWAP1 PUSH2 0x20EB JUMP JUMPDEST PUSH2 0x52A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x240 PUSH2 0x5E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x24D SWAP2 SWAP1 PUSH2 0x2125 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x25E PUSH2 0x608 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x26B SWAP2 SWAP1 PUSH2 0x20D2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x27C PUSH2 0x62D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x289 SWAP2 SWAP1 PUSH2 0x20D2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2AC PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2A7 SWAP2 SWAP1 PUSH2 0x20EB JUMP JUMPDEST PUSH2 0x652 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2B9 SWAP2 SWAP1 PUSH2 0x1FDA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2CA PUSH2 0x697 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2D4 PUSH2 0x6AA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E1 SWAP2 SWAP1 PUSH2 0x2125 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2F2 PUSH2 0x6D2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2FF SWAP2 SWAP1 PUSH2 0x1EA9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x322 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x31D SWAP2 SWAP1 PUSH2 0x213E JUMP JUMPDEST PUSH2 0x762 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x33E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x339 SWAP2 SWAP1 PUSH2 0x1F5A JUMP JUMPDEST PUSH2 0x950 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x34B SWAP2 SWAP1 PUSH2 0x1FB2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x35C PUSH2 0x972 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x369 SWAP2 SWAP1 PUSH2 0x2189 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x38C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x387 SWAP2 SWAP1 PUSH2 0x213E JUMP JUMPDEST PUSH2 0x997 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x396 PUSH2 0xD9E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3A3 SWAP2 SWAP1 PUSH2 0x21BF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3C6 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3C1 SWAP2 SWAP1 PUSH2 0x21D8 JUMP JUMPDEST PUSH2 0xDA4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3D3 SWAP2 SWAP1 PUSH2 0x1FDA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3F6 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3F1 SWAP2 SWAP1 PUSH2 0x20EB JUMP JUMPDEST PUSH2 0xE26 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x412 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x40D SWAP2 SWAP1 PUSH2 0x20EB JUMP JUMPDEST PUSH2 0xEDF JUMP JUMPDEST STOP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x423 SWAP1 PUSH2 0x2243 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x44F SWAP1 PUSH2 0x2243 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x49A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x471 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x49A JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x47D JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x4AE PUSH2 0xF63 JUMP JUMPDEST SWAP1 POP PUSH2 0x4BB DUP2 DUP6 DUP6 PUSH2 0xF6A JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x2 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x4D9 PUSH2 0xF63 JUMP JUMPDEST SWAP1 POP PUSH2 0x4E6 DUP6 DUP3 DUP6 PUSH2 0xF7C JUMP JUMPDEST PUSH2 0x4F1 DUP6 DUP6 DUP6 PUSH2 0x100F JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x12 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x8 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x532 PUSH2 0x10FF JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x5A0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x597 SWAP1 PUSH2 0x22BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x9 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0xA PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x7 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x69F PUSH2 0x10FF JUMP JUMPDEST PUSH2 0x6A8 PUSH0 PUSH2 0x1186 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH1 0x5 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x6E1 SWAP1 PUSH2 0x2243 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x70D SWAP1 PUSH2 0x2243 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x758 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x72F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x758 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x73B JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP2 GT PUSH2 0x7A4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x79B SWAP1 PUSH2 0x2325 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x8 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x23B872DD CALLER ADDRESS DUP5 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x802 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2343 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x81E JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x842 SWAP2 SWAP1 PUSH2 0x23A2 JUMP JUMPDEST PUSH2 0x881 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x878 SWAP1 PUSH2 0x2417 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0x64 PUSH1 0x46 DUP4 PUSH2 0x891 SWAP2 SWAP1 PUSH2 0x2462 JUMP JUMPDEST PUSH2 0x89B SWAP2 SWAP1 PUSH2 0x24D0 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH1 0x46 PUSH1 0x28 DUP4 PUSH2 0x8AD SWAP2 SWAP1 PUSH2 0x2462 JUMP JUMPDEST PUSH2 0x8B7 SWAP2 SWAP1 PUSH2 0x24D0 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH1 0x46 PUSH1 0x1E DUP5 PUSH2 0x8C9 SWAP2 SWAP1 PUSH2 0x2462 JUMP JUMPDEST PUSH2 0x8D3 SWAP2 SWAP1 PUSH2 0x24D0 JUMP JUMPDEST SWAP1 POP PUSH2 0x900 PUSH1 0x6 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH2 0x1249 JUMP JUMPDEST PUSH2 0x92B PUSH1 0x7 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH2 0x1249 JUMP JUMPDEST PUSH0 PUSH5 0xE8D4A51000 DUP6 PUSH2 0x93D SWAP2 SWAP1 PUSH2 0x2462 JUMP JUMPDEST SWAP1 POP PUSH2 0x949 CALLER DUP3 PUSH2 0x15A2 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x95A PUSH2 0xF63 JUMP JUMPDEST SWAP1 POP PUSH2 0x967 DUP2 DUP6 DUP6 PUSH2 0x100F JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x9 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST DUP1 PUSH2 0x9A1 CALLER PUSH2 0x652 JUMP JUMPDEST LT ISZERO PUSH2 0x9E2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9D9 SWAP1 PUSH2 0x254A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x9EC CALLER DUP3 PUSH2 0x1621 JUMP JUMPDEST PUSH0 PUSH5 0xE8D4A51000 DUP3 PUSH2 0x9FE SWAP2 SWAP1 PUSH2 0x24D0 JUMP JUMPDEST SWAP1 POP PUSH2 0xA2A PUSH1 0x6 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x16A0 JUMP JUMPDEST PUSH2 0xA54 PUSH1 0x7 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x16A0 JUMP JUMPDEST PUSH0 PUSH1 0x8 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAAF SWAP2 SWAP1 PUSH2 0x2125 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xACA JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xAEE SWAP2 SWAP1 PUSH2 0x257C JUMP JUMPDEST SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0xB33 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB2A SWAP1 PUSH2 0x25F1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0x64 PUSH1 0x1 DUP5 PUSH2 0xB43 SWAP2 SWAP1 PUSH2 0x2462 JUMP JUMPDEST PUSH2 0xB4D SWAP2 SWAP1 PUSH2 0x24D0 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 DUP5 PUSH2 0xB5C SWAP2 SWAP1 PUSH2 0x260F JUMP JUMPDEST SWAP1 POP PUSH1 0x8 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB CALLER DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBBA SWAP3 SWAP2 SWAP1 PUSH2 0x2642 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBD6 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xBFA SWAP2 SWAP1 PUSH2 0x23A2 JUMP JUMPDEST PUSH2 0xC39 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC30 SWAP1 PUSH2 0x26B3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0xA PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO DUP1 ISZERO PUSH2 0xC95 JUMPI POP PUSH0 DUP3 GT JUMPDEST ISZERO PUSH2 0xD97 JUMPI PUSH1 0x8 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB PUSH1 0xA PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD17 SWAP3 SWAP2 SWAP1 PUSH2 0x2642 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD33 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD57 SWAP2 SWAP1 PUSH2 0x23A2 JUMP JUMPDEST PUSH2 0xD96 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD8D SWAP1 PUSH2 0x271B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0xBB8 DUP2 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xE2E PUSH2 0x10FF JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xE9C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE93 SWAP1 PUSH2 0x2783 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0xA PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH2 0xEE7 PUSH2 0x10FF JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xF57 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF4E SWAP2 SWAP1 PUSH2 0x2125 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xF60 DUP2 PUSH2 0x1186 JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0xF77 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1A37 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xF87 DUP5 DUP5 PUSH2 0xDA4 JUMP JUMPDEST SWAP1 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 LT ISZERO PUSH2 0x1009 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0xFFA JUMPI DUP3 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH32 0xFB8F41B200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xFF1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x27A1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1008 DUP5 DUP5 DUP5 DUP5 SUB PUSH0 PUSH2 0x1A37 JUMP JUMPDEST JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x107F JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1076 SWAP2 SWAP1 PUSH2 0x2125 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x10EF JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10E6 SWAP2 SWAP1 PUSH2 0x2125 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x10FA DUP4 DUP4 DUP4 PUSH2 0x1C06 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x1107 PUSH2 0xF63 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1125 PUSH2 0x6AA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1184 JUMPI PUSH2 0x1148 PUSH2 0xF63 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x117B SWAP2 SWAP1 PUSH2 0x2125 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH0 PUSH1 0x5 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x5 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH0 DUP2 SUB ISZERO PUSH2 0x159E JUMPI PUSH1 0x8 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x95EA7B3 PUSH1 0x9 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH0 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x12CE SWAP3 SWAP2 SWAP1 PUSH2 0x280F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x12EA JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x130E SWAP2 SWAP1 PUSH2 0x23A2 JUMP JUMPDEST PUSH2 0x134D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1344 SWAP1 PUSH2 0x2880 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x8 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x95EA7B3 PUSH1 0x9 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x13CA SWAP3 SWAP2 SWAP1 PUSH2 0x2642 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x13E6 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x140A SWAP2 SWAP1 PUSH2 0x23A2 JUMP JUMPDEST PUSH2 0x1449 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1440 SWAP1 PUSH2 0x28E8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x9 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x414BF389 PUSH1 0x40 MLOAD DUP1 PUSH2 0x100 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x8 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xBB8 PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD TIMESTAMP DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x155C SWAP2 SWAP1 PUSH2 0x29E2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1578 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x159C SWAP2 SWAP1 PUSH2 0x257C JUMP JUMPDEST POP JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1612 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1609 SWAP2 SWAP1 PUSH2 0x2125 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x161D PUSH0 DUP4 DUP4 PUSH2 0x1C06 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1691 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1688 SWAP2 SWAP1 PUSH2 0x2125 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x169C DUP3 PUSH0 DUP4 PUSH2 0x1C06 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x16DA SWAP2 SWAP1 PUSH2 0x2125 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x16F5 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1719 SWAP2 SWAP1 PUSH2 0x257C JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 SUB PUSH2 0x1728 JUMPI POP PUSH2 0x1A34 JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x95EA7B3 PUSH1 0x9 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH0 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1784 SWAP3 SWAP2 SWAP1 PUSH2 0x280F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x17A0 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x17C4 SWAP2 SWAP1 PUSH2 0x23A2 JUMP JUMPDEST PUSH2 0x1803 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x17FA SWAP1 PUSH2 0x2880 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x95EA7B3 PUSH1 0x9 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x185F SWAP3 SWAP2 SWAP1 PUSH2 0x2642 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x187B JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x189F SWAP2 SWAP1 PUSH2 0x23A2 JUMP JUMPDEST PUSH2 0x18DE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x18D5 SWAP1 PUSH2 0x28E8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x9 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x414BF389 PUSH1 0x40 MLOAD DUP1 PUSH2 0x100 ADD PUSH1 0x40 MSTORE DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x8 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xBB8 PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD TIMESTAMP DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19F1 SWAP2 SWAP1 PUSH2 0x29E2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1A0D JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A31 SWAP2 SWAP1 PUSH2 0x257C JUMP JUMPDEST POP POP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1AA7 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0xE602DF0500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A9E SWAP2 SWAP1 PUSH2 0x2125 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1B17 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x94280D6200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1B0E SWAP2 SWAP1 PUSH2 0x2125 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP1 ISZERO PUSH2 0x1C00 JUMPI DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD PUSH2 0x1BF7 SWAP2 SWAP1 PUSH2 0x1FDA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1C56 JUMPI DUP1 PUSH1 0x2 PUSH0 DUP3 DUP3 SLOAD PUSH2 0x1C4A SWAP2 SWAP1 PUSH2 0x29FC JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0x1D24 JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0x1CDF JUMPI DUP4 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH32 0xE450D38C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1CD6 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x27A1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP2 SUB PUSH0 DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP POP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1D6B JUMPI DUP1 PUSH1 0x2 PUSH0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0x1DB5 JUMP JUMPDEST DUP1 PUSH0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0x1E12 SWAP2 SWAP1 PUSH2 0x1FDA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1E56 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x1E3B JUMP JUMPDEST PUSH0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x1E7B DUP3 PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x1E85 DUP2 DUP6 PUSH2 0x1E29 JUMP JUMPDEST SWAP4 POP PUSH2 0x1E95 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1E39 JUMP JUMPDEST PUSH2 0x1E9E DUP2 PUSH2 0x1E61 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x1EC1 DUP2 DUP5 PUSH2 0x1E71 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x1EF6 DUP3 PUSH2 0x1ECD JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1F06 DUP2 PUSH2 0x1EEC JUMP JUMPDEST DUP2 EQ PUSH2 0x1F10 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1F21 DUP2 PUSH2 0x1EFD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1F39 DUP2 PUSH2 0x1F27 JUMP JUMPDEST DUP2 EQ PUSH2 0x1F43 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1F54 DUP2 PUSH2 0x1F30 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1F70 JUMPI PUSH2 0x1F6F PUSH2 0x1EC9 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x1F7D DUP6 DUP3 DUP7 ADD PUSH2 0x1F13 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x1F8E DUP6 DUP3 DUP7 ADD PUSH2 0x1F46 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1FAC DUP2 PUSH2 0x1F98 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1FC5 PUSH0 DUP4 ADD DUP5 PUSH2 0x1FA3 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1FD4 DUP2 PUSH2 0x1F27 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1FED PUSH0 DUP4 ADD DUP5 PUSH2 0x1FCB JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x200A JUMPI PUSH2 0x2009 PUSH2 0x1EC9 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x2017 DUP7 DUP3 DUP8 ADD PUSH2 0x1F13 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x2028 DUP7 DUP3 DUP8 ADD PUSH2 0x1F13 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x2039 DUP7 DUP3 DUP8 ADD PUSH2 0x1F46 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2058 DUP2 PUSH2 0x2043 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2071 PUSH0 DUP4 ADD DUP5 PUSH2 0x204F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x209A PUSH2 0x2095 PUSH2 0x2090 DUP5 PUSH2 0x1ECD JUMP JUMPDEST PUSH2 0x2077 JUMP JUMPDEST PUSH2 0x1ECD JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x20AB DUP3 PUSH2 0x2080 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x20BC DUP3 PUSH2 0x20A1 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x20CC DUP2 PUSH2 0x20B2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x20E5 PUSH0 DUP4 ADD DUP5 PUSH2 0x20C3 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2100 JUMPI PUSH2 0x20FF PUSH2 0x1EC9 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x210D DUP5 DUP3 DUP6 ADD PUSH2 0x1F13 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x211F DUP2 PUSH2 0x1EEC JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2138 PUSH0 DUP4 ADD DUP5 PUSH2 0x2116 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2153 JUMPI PUSH2 0x2152 PUSH2 0x1EC9 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x2160 DUP5 DUP3 DUP6 ADD PUSH2 0x1F46 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x2173 DUP3 PUSH2 0x20A1 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2183 DUP2 PUSH2 0x2169 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x219C PUSH0 DUP4 ADD DUP5 PUSH2 0x217A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0xFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x21B9 DUP2 PUSH2 0x21A2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x21D2 PUSH0 DUP4 ADD DUP5 PUSH2 0x21B0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x21EE JUMPI PUSH2 0x21ED PUSH2 0x1EC9 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x21FB DUP6 DUP3 DUP7 ADD PUSH2 0x1F13 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x220C DUP6 DUP3 DUP7 ADD PUSH2 0x1F13 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x225A JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x226D JUMPI PUSH2 0x226C PUSH2 0x2216 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x496E76616C696420726F75746572000000000000000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x22A7 PUSH1 0xE DUP4 PUSH2 0x1E29 JUMP JUMPDEST SWAP2 POP PUSH2 0x22B2 DUP3 PUSH2 0x2273 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x22D4 DUP2 PUSH2 0x229B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x416D6F756E74206D757374206265203E20300000000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x230F PUSH1 0x12 DUP4 PUSH2 0x1E29 JUMP JUMPDEST SWAP2 POP PUSH2 0x231A DUP3 PUSH2 0x22DB JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x233C DUP2 PUSH2 0x2303 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x2356 PUSH0 DUP4 ADD DUP7 PUSH2 0x2116 JUMP JUMPDEST PUSH2 0x2363 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2116 JUMP JUMPDEST PUSH2 0x2370 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x1FCB JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x2381 DUP2 PUSH2 0x1F98 JUMP JUMPDEST DUP2 EQ PUSH2 0x238B JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x239C DUP2 PUSH2 0x2378 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x23B7 JUMPI PUSH2 0x23B6 PUSH2 0x1EC9 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x23C4 DUP5 DUP3 DUP6 ADD PUSH2 0x238E JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x5472616E73666572206661696C65640000000000000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x2401 PUSH1 0xF DUP4 PUSH2 0x1E29 JUMP JUMPDEST SWAP2 POP PUSH2 0x240C DUP3 PUSH2 0x23CD JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x242E DUP2 PUSH2 0x23F5 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x246C DUP3 PUSH2 0x1F27 JUMP JUMPDEST SWAP2 POP PUSH2 0x2477 DUP4 PUSH2 0x1F27 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0x2485 DUP2 PUSH2 0x1F27 JUMP JUMPDEST SWAP2 POP DUP3 DUP3 DIV DUP5 EQ DUP4 ISZERO OR PUSH2 0x249C JUMPI PUSH2 0x249B PUSH2 0x2435 JUMP JUMPDEST JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x24DA DUP3 PUSH2 0x1F27 JUMP JUMPDEST SWAP2 POP PUSH2 0x24E5 DUP4 PUSH2 0x1F27 JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x24F5 JUMPI PUSH2 0x24F4 PUSH2 0x24A3 JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x496E73756666696369656E742046574349000000000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x2534 PUSH1 0x11 DUP4 PUSH2 0x1E29 JUMP JUMPDEST SWAP2 POP PUSH2 0x253F DUP3 PUSH2 0x2500 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x2561 DUP2 PUSH2 0x2528 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x2576 DUP2 PUSH2 0x1F30 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2591 JUMPI PUSH2 0x2590 PUSH2 0x1EC9 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x259E DUP5 DUP3 DUP6 ADD PUSH2 0x2568 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x496E73756666696369656E742055534443000000000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x25DB PUSH1 0x11 DUP4 PUSH2 0x1E29 JUMP JUMPDEST SWAP2 POP PUSH2 0x25E6 DUP3 PUSH2 0x25A7 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x2608 DUP2 PUSH2 0x25CF JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x2619 DUP3 PUSH2 0x1F27 JUMP JUMPDEST SWAP2 POP PUSH2 0x2624 DUP4 PUSH2 0x1F27 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0x263C JUMPI PUSH2 0x263B PUSH2 0x2435 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x2655 PUSH0 DUP4 ADD DUP6 PUSH2 0x2116 JUMP JUMPDEST PUSH2 0x2662 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1FCB JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x55534443207472616E73666572206661696C6564000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x269D PUSH1 0x14 DUP4 PUSH2 0x1E29 JUMP JUMPDEST SWAP2 POP PUSH2 0x26A8 DUP3 PUSH2 0x2669 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x26CA DUP2 PUSH2 0x2691 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x466565207472616E73666572206661696C656400000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x2705 PUSH1 0x13 DUP4 PUSH2 0x1E29 JUMP JUMPDEST SWAP2 POP PUSH2 0x2710 DUP3 PUSH2 0x26D1 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x2732 DUP2 PUSH2 0x26F9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x496E76616C696420616464726573730000000000000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x276D PUSH1 0xF DUP4 PUSH2 0x1E29 JUMP JUMPDEST SWAP2 POP PUSH2 0x2778 DUP3 PUSH2 0x2739 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x279A DUP2 PUSH2 0x2761 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x27B4 PUSH0 DUP4 ADD DUP7 PUSH2 0x2116 JUMP JUMPDEST PUSH2 0x27C1 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x1FCB JUMP JUMPDEST PUSH2 0x27CE PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x1FCB JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x27F9 PUSH2 0x27F4 PUSH2 0x27EF DUP5 PUSH2 0x27D6 JUMP JUMPDEST PUSH2 0x2077 JUMP JUMPDEST PUSH2 0x1F27 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2809 DUP2 PUSH2 0x27DF JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x2822 PUSH0 DUP4 ADD DUP6 PUSH2 0x2116 JUMP JUMPDEST PUSH2 0x282F PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2800 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x526573657420617070726F7665206661696C6564000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x286A PUSH1 0x14 DUP4 PUSH2 0x1E29 JUMP JUMPDEST SWAP2 POP PUSH2 0x2875 DUP3 PUSH2 0x2836 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x2897 DUP2 PUSH2 0x285E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x417070726F7665206661696C6564000000000000000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x28D2 PUSH1 0xE DUP4 PUSH2 0x1E29 JUMP JUMPDEST SWAP2 POP PUSH2 0x28DD DUP3 PUSH2 0x289E JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x28FF DUP2 PUSH2 0x28C6 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x290F DUP2 PUSH2 0x1EEC JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x291E DUP2 PUSH2 0x21A2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x292D DUP2 PUSH2 0x1F27 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x293C DUP2 PUSH2 0x1ECD JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x100 DUP3 ADD PUSH0 DUP3 ADD MLOAD PUSH2 0x2957 PUSH0 DUP6 ADD DUP3 PUSH2 0x2906 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x296A PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x2906 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x297D PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x2915 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x2990 PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x2906 JUMP JUMPDEST POP PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x29A3 PUSH1 0x80 DUP6 ADD DUP3 PUSH2 0x2924 JUMP JUMPDEST POP PUSH1 0xA0 DUP3 ADD MLOAD PUSH2 0x29B6 PUSH1 0xA0 DUP6 ADD DUP3 PUSH2 0x2924 JUMP JUMPDEST POP PUSH1 0xC0 DUP3 ADD MLOAD PUSH2 0x29C9 PUSH1 0xC0 DUP6 ADD DUP3 PUSH2 0x2924 JUMP JUMPDEST POP PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0x29DC PUSH1 0xE0 DUP6 ADD DUP3 PUSH2 0x2933 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x100 DUP3 ADD SWAP1 POP PUSH2 0x29F6 PUSH0 DUP4 ADD DUP5 PUSH2 0x2942 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x2A06 DUP3 PUSH2 0x1F27 JUMP JUMPDEST SWAP2 POP PUSH2 0x2A11 DUP4 PUSH2 0x1F27 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x2A29 JUMPI PUSH2 0x2A28 PUSH2 0x2435 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x1F RETURN SLT CALLDATASIZE XOR PREVRANDAO PUSH3 0x700372 0xE4 0xD8 0xE6 BALANCE 0xAE 0xA7 0x28 0xB1 0xDD 0xC8 STOP 0x27 TIMESTAMP LOG4 LT CALLER PUSH12 0x2D6206CA3564736F6C634300 ADDMOD EQ STOP CALLER ",
"sourceMap": "237:3815:8:-:0;;;501:429;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;728:12;1582:113:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1656:5;1648;:13;;;;;;:::i;:::-;;1681:7;1671;:17;;;;;;:::i;:::-;;1582:113;;1297:1:0;1273:26;;:12;:26;;;1269:95;;1350:1;1322:31;;;;;;;;;;;:::i;:::-;;;;;;;;1269:95;1373:32;1392:12;1373:18;;;:32;;:::i;:::-;1225:187;767:6:8::2;752:5;;:22;;;;;;;;;;;;;;;;;;800:7;784:6;;:24;;;;;;;;;;;;;;;;;;832:5;818:4;;:20;;;;;;;;;;;;;;;;;;873:11;848:10;;:37;;;;;;;;;;;;;;;;;;910:13;895:12;;:28;;;;;;;;;;;;;;;;;;501:429:::0;;;;;;237:3815;;2912:187:0;2985:16;3004:6;;;;;;;;;;;2985:25;;3029:8;3020:6;;:17;;;;;;;;;;;;;;;;;;3083:8;3052:40;;3073:8;3052:40;;;;;;;;;;;;2975:124;2912:187;:::o;88:117:9:-;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:143::-;753:5;784:6;778:13;769:22;;800:33;827:5;800:33;:::i;:::-;696:143;;;;:::o;845:1134::-;960:6;968;976;984;992;1000;1049:3;1037:9;1028:7;1024:23;1020:33;1017:120;;;1056:79;;:::i;:::-;1017:120;1176:1;1201:64;1257:7;1248:6;1237:9;1233:22;1201:64;:::i;:::-;1191:74;;1147:128;1314:2;1340:64;1396:7;1387:6;1376:9;1372:22;1340:64;:::i;:::-;1330:74;;1285:129;1453:2;1479:64;1535:7;1526:6;1515:9;1511:22;1479:64;:::i;:::-;1469:74;;1424:129;1592:2;1618:64;1674:7;1665:6;1654:9;1650:22;1618:64;:::i;:::-;1608:74;;1563:129;1731:3;1758:64;1814:7;1805:6;1794:9;1790:22;1758:64;:::i;:::-;1748:74;;1702:130;1871:3;1898:64;1954:7;1945:6;1934:9;1930:22;1898:64;:::i;:::-;1888:74;;1842:130;845:1134;;;;;;;;:::o;1985:99::-;2037:6;2071:5;2065:12;2055:22;;1985:99;;;:::o;2090:180::-;2138:77;2135:1;2128:88;2235:4;2232:1;2225:15;2259:4;2256:1;2249:15;2276:180;2324:77;2321:1;2314:88;2421:4;2418:1;2411:15;2445:4;2442:1;2435:15;2462:320;2506:6;2543:1;2537:4;2533:12;2523:22;;2590:1;2584:4;2580:12;2611:18;2601:81;;2667:4;2659:6;2655:17;2645:27;;2601:81;2729:2;2721:6;2718:14;2698:18;2695:38;2692:84;;2748:18;;:::i;:::-;2692:84;2513:269;2462:320;;;:::o;2788:141::-;2837:4;2860:3;2852:11;;2883:3;2880:1;2873:14;2917:4;2914:1;2904:18;2896:26;;2788:141;;;:::o;2935:93::-;2972:6;3019:2;3014;3007:5;3003:14;2999:23;2989:33;;2935:93;;;:::o;3034:107::-;3078:8;3128:5;3122:4;3118:16;3097:37;;3034:107;;;;:::o;3147:393::-;3216:6;3266:1;3254:10;3250:18;3289:97;3319:66;3308:9;3289:97;:::i;:::-;3407:39;3437:8;3426:9;3407:39;:::i;:::-;3395:51;;3479:4;3475:9;3468:5;3464:21;3455:30;;3528:4;3518:8;3514:19;3507:5;3504:30;3494:40;;3223:317;;3147:393;;;;;:::o;3546:77::-;3583:7;3612:5;3601:16;;3546:77;;;:::o;3629:60::-;3657:3;3678:5;3671:12;;3629:60;;;:::o;3695:142::-;3745:9;3778:53;3796:34;3805:24;3823:5;3805:24;:::i;:::-;3796:34;:::i;:::-;3778:53;:::i;:::-;3765:66;;3695:142;;;:::o;3843:75::-;3886:3;3907:5;3900:12;;3843:75;;;:::o;3924:269::-;4034:39;4065:7;4034:39;:::i;:::-;4095:91;4144:41;4168:16;4144:41;:::i;:::-;4136:6;4129:4;4123:11;4095:91;:::i;:::-;4089:4;4082:105;4000:193;3924:269;;;:::o;4199:73::-;4244:3;4199:73;:::o;4278:189::-;4355:32;;:::i;:::-;4396:65;4454:6;4446;4440:4;4396:65;:::i;:::-;4331:136;4278:189;;:::o;4473:186::-;4533:120;4550:3;4543:5;4540:14;4533:120;;;4604:39;4641:1;4634:5;4604:39;:::i;:::-;4577:1;4570:5;4566:13;4557:22;;4533:120;;;4473:186;;:::o;4665:543::-;4766:2;4761:3;4758:11;4755:446;;;4800:38;4832:5;4800:38;:::i;:::-;4884:29;4902:10;4884:29;:::i;:::-;4874:8;4870:44;5067:2;5055:10;5052:18;5049:49;;;5088:8;5073:23;;5049:49;5111:80;5167:22;5185:3;5167:22;:::i;:::-;5157:8;5153:37;5140:11;5111:80;:::i;:::-;4770:431;;4755:446;4665:543;;;:::o;5214:117::-;5268:8;5318:5;5312:4;5308:16;5287:37;;5214:117;;;;:::o;5337:169::-;5381:6;5414:51;5462:1;5458:6;5450:5;5447:1;5443:13;5414:51;:::i;:::-;5410:56;5495:4;5489;5485:15;5475:25;;5388:118;5337:169;;;;:::o;5511:295::-;5587:4;5733:29;5758:3;5752:4;5733:29;:::i;:::-;5725:37;;5795:3;5792:1;5788:11;5782:4;5779:21;5771:29;;5511:295;;;;:::o;5811:1395::-;5928:37;5961:3;5928:37;:::i;:::-;6030:18;6022:6;6019:30;6016:56;;;6052:18;;:::i;:::-;6016:56;6096:38;6128:4;6122:11;6096:38;:::i;:::-;6181:67;6241:6;6233;6227:4;6181:67;:::i;:::-;6275:1;6299:4;6286:17;;6331:2;6323:6;6320:14;6348:1;6343:618;;;;7005:1;7022:6;7019:77;;;7071:9;7066:3;7062:19;7056:26;7047:35;;7019:77;7122:67;7182:6;7175:5;7122:67;:::i;:::-;7116:4;7109:81;6978:222;6313:887;;6343:618;6395:4;6391:9;6383:6;6379:22;6429:37;6461:4;6429:37;:::i;:::-;6488:1;6502:208;6516:7;6513:1;6510:14;6502:208;;;6595:9;6590:3;6586:19;6580:26;6572:6;6565:42;6646:1;6638:6;6634:14;6624:24;;6693:2;6682:9;6678:18;6665:31;;6539:4;6536:1;6532:12;6527:17;;6502:208;;;6738:6;6729:7;6726:19;6723:179;;;6796:9;6791:3;6787:19;6781:26;6839:48;6881:4;6873:6;6869:17;6858:9;6839:48;:::i;:::-;6831:6;6824:64;6746:156;6723:179;6948:1;6944;6936:6;6932:14;6928:22;6922:4;6915:36;6350:611;;;6313:887;;5903:1303;;;5811:1395;;:::o;7212:118::-;7299:24;7317:5;7299:24;:::i;:::-;7294:3;7287:37;7212:118;;:::o;7336:222::-;7429:4;7467:2;7456:9;7452:18;7444:26;;7480:71;7548:1;7537:9;7533:17;7524:6;7480:71;:::i;:::-;7336:222;;;;:::o;237:3815:8:-;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@POOL_FEE_1073": {
"entryPoint": 3486,
"id": 1073,
"parameterSlots": 0,
"returnSlots": 0
},
"@_approve_690": {
"entryPoint": 3946,
"id": 690,
"parameterSlots": 3,
"returnSlots": 0
},
"@_approve_750": {
"entryPoint": 6711,
"id": 750,
"parameterSlots": 4,
"returnSlots": 0
},
"@_burn_672": {
"entryPoint": 5665,
"id": 672,
"parameterSlots": 2,
"returnSlots": 0
},
"@_checkOwner_84": {
"entryPoint": 4351,
"id": 84,
"parameterSlots": 0,
"returnSlots": 0
},
"@_mint_639": {
"entryPoint": 5538,
"id": 639,
"parameterSlots": 2,
"returnSlots": 0
},
"@_msgSender_915": {
"entryPoint": 3939,
"id": 915,
"parameterSlots": 0,
"returnSlots": 1
},
"@_spendAllowance_798": {
"entryPoint": 3964,
"id": 798,
"parameterSlots": 3,
"returnSlots": 0
},
"@_swapToUSDC_1435": {
"entryPoint": 5792,
"id": 1435,
"parameterSlots": 1,
"returnSlots": 0
},
"@_swapUSDCto_1363": {
"entryPoint": 4681,
"id": 1363,
"parameterSlots": 2,
"returnSlots": 0
},
"@_transferOwnership_146": {
"entryPoint": 4486,
"id": 146,
"parameterSlots": 1,
"returnSlots": 0
},
"@_transfer_529": {
"entryPoint": 4111,
"id": 529,
"parameterSlots": 3,
"returnSlots": 0
},
"@_update_606": {
"entryPoint": 7174,
"id": 606,
"parameterSlots": 3,
"returnSlots": 0
},
"@allowance_426": {
"entryPoint": 3492,
"id": 426,
"parameterSlots": 2,
"returnSlots": 1
},
"@approve_450": {
"entryPoint": 1188,
"id": 450,
"parameterSlots": 2,
"returnSlots": 1
},
"@balanceOf_385": {
"entryPoint": 1618,
"id": 385,
"parameterSlots": 1,
"returnSlots": 1
},
"@cbBTC_1059": {
"entryPoint": 1581,
"id": 1059,
"parameterSlots": 0,
"returnSlots": 0
},
"@decimals_363": {
"entryPoint": 1277,
"id": 363,
"parameterSlots": 0,
"returnSlots": 1
},
"@feeRecipient_1070": {
"entryPoint": 1507,
"id": 1070,
"parameterSlots": 0,
"returnSlots": 0
},
"@mint_1200": {
"entryPoint": 1890,
"id": 1200,
"parameterSlots": 1,
"returnSlots": 0
},
"@name_345": {
"entryPoint": 1044,
"id": 345,
"parameterSlots": 0,
"returnSlots": 1
},
"@owner_67": {
"entryPoint": 1706,
"id": 67,
"parameterSlots": 0,
"returnSlots": 1
},
"@redeem_1299": {
"entryPoint": 2455,
"id": 1299,
"parameterSlots": 1,
"returnSlots": 0
},
"@renounceOwnership_98": {
"entryPoint": 1687,
"id": 98,
"parameterSlots": 0,
"returnSlots": 0
},
"@setFeeRecipient_1457": {
"entryPoint": 3622,
"id": 1457,
"parameterSlots": 1,
"returnSlots": 0
},
"@setSwapRouter_1481": {
"entryPoint": 1322,
"id": 1481,
"parameterSlots": 1,
"returnSlots": 0
},
"@swapRouter_1068": {
"entryPoint": 2418,
"id": 1068,
"parameterSlots": 0,
"returnSlots": 0
},
"@symbol_354": {
"entryPoint": 1746,
"id": 354,
"parameterSlots": 0,
"returnSlots": 1
},
"@totalSupply_372": {
"entryPoint": 1222,
"id": 372,
"parameterSlots": 0,
"returnSlots": 1
},
"@transferFrom_482": {
"entryPoint": 1231,
"id": 482,
"parameterSlots": 3,
"returnSlots": 1
},
"@transferOwnership_126": {
"entryPoint": 3807,
"id": 126,
"parameterSlots": 1,
"returnSlots": 0
},
"@transfer_409": {
"entryPoint": 2384,
"id": 409,
"parameterSlots": 2,
"returnSlots": 1
},
"@usdc_1065": {
"entryPoint": 1285,
"id": 1065,
"parameterSlots": 0,
"returnSlots": 0
},
"@wstETH_1062": {
"entryPoint": 1544,
"id": 1062,
"parameterSlots": 0,
"returnSlots": 0
},
"abi_decode_t_address": {
"entryPoint": 7955,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_bool_fromMemory": {
"entryPoint": 9102,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_uint256": {
"entryPoint": 8006,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_uint256_fromMemory": {
"entryPoint": 9576,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_address": {
"entryPoint": 8427,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_addresst_address": {
"entryPoint": 8664,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_decode_tuple_t_addresst_addresst_uint256": {
"entryPoint": 8179,
"id": null,
"parameterSlots": 2,
"returnSlots": 3
},
"abi_decode_tuple_t_addresst_uint256": {
"entryPoint": 8026,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_decode_tuple_t_bool_fromMemory": {
"entryPoint": 9122,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_uint256": {
"entryPoint": 8510,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_uint256_fromMemory": {
"entryPoint": 9596,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_address_to_t_address": {
"entryPoint": 10502,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_address_to_t_address_fromStack": {
"entryPoint": 8470,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_bool_to_t_bool_fromStack": {
"entryPoint": 8099,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_contract$_IERC20_$877_to_t_address_fromStack": {
"entryPoint": 8387,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_contract$_ISwapRouter_$1047_to_t_address_fromStack": {
"entryPoint": 8570,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_rational_0_by_1_to_t_uint256_fromStack": {
"entryPoint": 10240,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack": {
"entryPoint": 7793,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_stringliteral_01c242f1c806840acb94ec05d87d4647010419c53a053a581e0026b3f6467dbb_to_t_string_memory_ptr_fromStack": {
"entryPoint": 8963,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_032fb3428477d66798bdf7801f58a252d723dc1362b9dfac5726f85f81cca815_to_t_string_memory_ptr_fromStack": {
"entryPoint": 9873,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226_to_t_string_memory_ptr_fromStack": {
"entryPoint": 10081,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_1c5bea35094fe394a8479878da42b451f251ca6f87f8c43cfd0f68b273722981_to_t_string_memory_ptr_fromStack": {
"entryPoint": 10334,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_25adaa6d082ce15f901e0d8a3d393e7462ef9edf2e6bc8321fa14d1615b6fc51_to_t_string_memory_ptr_fromStack": {
"entryPoint": 9205,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_5ce83e457e48ac9624285a3c527b5c2f9ccbef788eaf8b73a2271dc0a760bc56_to_t_string_memory_ptr_fromStack": {
"entryPoint": 9977,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_6d6dda2f12e5f220efe63a7b0b5b9f247fd5190be76928866b7d7de36e3af6b2_to_t_string_memory_ptr_fromStack": {
"entryPoint": 9679,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_894c45cdacdbd00f70cf0de394f039255fedfdb9b0f57bdf73c557235f0cae5c_to_t_string_memory_ptr_fromStack": {
"entryPoint": 10438,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_cd97d2d12d01a00521d9f362b2a47de33f789d340363daf546d42fd4c88afc78_to_t_string_memory_ptr_fromStack": {
"entryPoint": 8859,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_fe04d911e50fed7a8d87119b8245a4fe3d1680a0c0585e9b8d520c80ad21c380_to_t_string_memory_ptr_fromStack": {
"entryPoint": 9512,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_struct$_ExactInputSingleParams_$971_memory_ptr_to_t_struct$_ExactInputSingleParams_$971_memory_ptr_fromStack": {
"entryPoint": 10562,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_uint160_to_t_uint160": {
"entryPoint": 10547,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_uint24_to_t_uint24": {
"entryPoint": 10517,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_uint24_to_t_uint24_fromStack": {
"entryPoint": 8624,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_uint256_to_t_uint256": {
"entryPoint": 10532,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_uint256_to_t_uint256_fromStack": {
"entryPoint": 8139,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_uint8_to_t_uint8_fromStack": {
"entryPoint": 8271,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
"entryPoint": 8485,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed": {
"entryPoint": 9027,
"id": null,
"parameterSlots": 4,
"returnSlots": 1
},
"abi_encode_tuple_t_address_t_rational_0_by_1__to_t_address_t_uint256__fromStack_reversed": {
"entryPoint": 10255,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed": {
"entryPoint": 9794,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed": {
"entryPoint": 10145,
"id": null,
"parameterSlots": 4,
"returnSlots": 1
},
"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
"entryPoint": 8114,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_contract$_IERC20_$877__to_t_address__fromStack_reversed": {
"entryPoint": 8402,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_contract$_ISwapRouter_$1047__to_t_address__fromStack_reversed": {
"entryPoint": 8585,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 7849,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_01c242f1c806840acb94ec05d87d4647010419c53a053a581e0026b3f6467dbb__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 8997,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_032fb3428477d66798bdf7801f58a252d723dc1362b9dfac5726f85f81cca815__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 9907,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 10115,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_1c5bea35094fe394a8479878da42b451f251ca6f87f8c43cfd0f68b273722981__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 10368,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_25adaa6d082ce15f901e0d8a3d393e7462ef9edf2e6bc8321fa14d1615b6fc51__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 9239,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_5ce83e457e48ac9624285a3c527b5c2f9ccbef788eaf8b73a2271dc0a760bc56__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 10011,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_6d6dda2f12e5f220efe63a7b0b5b9f247fd5190be76928866b7d7de36e3af6b2__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 9713,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_894c45cdacdbd00f70cf0de394f039255fedfdb9b0f57bdf73c557235f0cae5c__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 10472,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_cd97d2d12d01a00521d9f362b2a47de33f789d340363daf546d42fd4c88afc78__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 8893,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_fe04d911e50fed7a8d87119b8245a4fe3d1680a0c0585e9b8d520c80ad21c380__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 9546,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_struct$_ExactInputSingleParams_$971_memory_ptr__to_t_struct$_ExactInputSingleParams_$971_memory_ptr__fromStack_reversed": {
"entryPoint": 10722,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_uint24__to_t_uint24__fromStack_reversed": {
"entryPoint": 8639,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
"entryPoint": 8154,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed": {
"entryPoint": 8286,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"allocate_unbounded": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
},
"array_length_t_string_memory_ptr": {
"entryPoint": 7711,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_storeLengthForEncoding_t_string_memory_ptr_fromStack": {
"entryPoint": 7721,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_add_t_uint256": {
"entryPoint": 10748,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_div_t_uint256": {
"entryPoint": 9424,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_mul_t_uint256": {
"entryPoint": 9314,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_sub_t_uint256": {
"entryPoint": 9743,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"cleanup_t_address": {
"entryPoint": 7916,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_bool": {
"entryPoint": 8088,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_rational_0_by_1": {
"entryPoint": 10198,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint160": {
"entryPoint": 7885,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint24": {
"entryPoint": 8610,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint256": {
"entryPoint": 7975,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint8": {
"entryPoint": 8259,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"convert_t_contract$_IERC20_$877_to_t_address": {
"entryPoint": 8370,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"convert_t_contract$_ISwapRouter_$1047_to_t_address": {
"entryPoint": 8553,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"convert_t_rational_0_by_1_to_t_uint256": {
"entryPoint": 10207,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"convert_t_uint160_to_t_address": {
"entryPoint": 8353,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"convert_t_uint160_to_t_uint160": {
"entryPoint": 8320,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"copy_memory_to_memory_with_cleanup": {
"entryPoint": 7737,
"id": null,
"parameterSlots": 3,
"returnSlots": 0
},
"extract_byte_array_length": {
"entryPoint": 8771,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"identity": {
"entryPoint": 8311,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"panic_error_0x11": {
"entryPoint": 9269,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x12": {
"entryPoint": 9379,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x22": {
"entryPoint": 8726,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": {
"entryPoint": 7881,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"round_up_to_mul_of_32": {
"entryPoint": 7777,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"store_literal_in_memory_01c242f1c806840acb94ec05d87d4647010419c53a053a581e0026b3f6467dbb": {
"entryPoint": 8923,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_032fb3428477d66798bdf7801f58a252d723dc1362b9dfac5726f85f81cca815": {
"entryPoint": 9833,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226": {
"entryPoint": 10041,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_1c5bea35094fe394a8479878da42b451f251ca6f87f8c43cfd0f68b273722981": {
"entryPoint": 10294,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_25adaa6d082ce15f901e0d8a3d393e7462ef9edf2e6bc8321fa14d1615b6fc51": {
"entryPoint": 9165,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_5ce83e457e48ac9624285a3c527b5c2f9ccbef788eaf8b73a2271dc0a760bc56": {
"entryPoint": 9937,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_6d6dda2f12e5f220efe63a7b0b5b9f247fd5190be76928866b7d7de36e3af6b2": {
"entryPoint": 9639,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_894c45cdacdbd00f70cf0de394f039255fedfdb9b0f57bdf73c557235f0cae5c": {
"entryPoint": 10398,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_cd97d2d12d01a00521d9f362b2a47de33f789d340363daf546d42fd4c88afc78": {
"entryPoint": 8819,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_fe04d911e50fed7a8d87119b8245a4fe3d1680a0c0585e9b8d520c80ad21c380": {
"entryPoint": 9472,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_address": {
"entryPoint": 7933,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_bool": {
"entryPoint": 9080,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_uint256": {
"entryPoint": 7984,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:25570:9",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "66:40:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "77:22:9",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "93:5:9"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "87:5:9"
},
"nodeType": "YulFunctionCall",
"src": "87:12:9"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "77:6:9"
}
]
}
]
},
"name": "array_length_t_string_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "49:5:9",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "59:6:9",
"type": ""
}
],
"src": "7:99:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "208:73:9",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "225:3:9"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "230:6:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "218:6:9"
},
"nodeType": "YulFunctionCall",
"src": "218:19:9"
},
"nodeType": "YulExpressionStatement",
"src": "218:19:9"
},
{
"nodeType": "YulAssignment",
"src": "246:29:9",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "265:3:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "270:4:9",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "261:3:9"
},
"nodeType": "YulFunctionCall",
"src": "261:14:9"
},
"variableNames": [
{
"name": "updated_pos",
"nodeType": "YulIdentifier",
"src": "246:11:9"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "180:3:9",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "185:6:9",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nodeType": "YulTypedName",
"src": "196:11:9",
"type": ""
}
],
"src": "112:169:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "349:184:9",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "359:10:9",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "368:1:9",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "363:1:9",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "428:63:9",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "453:3:9"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "458:1:9"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "449:3:9"
},
"nodeType": "YulFunctionCall",
"src": "449:11:9"
},
{
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "472:3:9"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "477:1:9"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "468:3:9"
},
"nodeType": "YulFunctionCall",
"src": "468:11:9"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "462:5:9"
},
"nodeType": "YulFunctionCall",
"src": "462:18:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "442:6:9"
},
"nodeType": "YulFunctionCall",
"src": "442:39:9"
},
"nodeType": "YulExpressionStatement",
"src": "442:39:9"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "389:1:9"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "392:6:9"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "386:2:9"
},
"nodeType": "YulFunctionCall",
"src": "386:13:9"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "400:19:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "402:15:9",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "411:1:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "414:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "407:3:9"
},
"nodeType": "YulFunctionCall",
"src": "407:10:9"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "402:1:9"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "382:3:9",
"statements": []
},
"src": "378:113:9"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "511:3:9"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "516:6:9"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "507:3:9"
},
"nodeType": "YulFunctionCall",
"src": "507:16:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "525:1:9",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "500:6:9"
},
"nodeType": "YulFunctionCall",
"src": "500:27:9"
},
"nodeType": "YulExpressionStatement",
"src": "500:27:9"
}
]
},
"name": "copy_memory_to_memory_with_cleanup",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "331:3:9",
"type": ""
},
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "336:3:9",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "341:6:9",
"type": ""
}
],
"src": "287:246:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "587:54:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "597:38:9",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "615:5:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "622:2:9",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "611:3:9"
},
"nodeType": "YulFunctionCall",
"src": "611:14:9"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "631:2:9",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "627:3:9"
},
"nodeType": "YulFunctionCall",
"src": "627:7:9"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "607:3:9"
},
"nodeType": "YulFunctionCall",
"src": "607:28:9"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "597:6:9"
}
]
}
]
},
"name": "round_up_to_mul_of_32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "570:5:9",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nodeType": "YulTypedName",
"src": "580:6:9",
"type": ""
}
],
"src": "539:102:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "739:285:9",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "749:53:9",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "796:5:9"
}
],
"functionName": {
"name": "array_length_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "763:32:9"
},
"nodeType": "YulFunctionCall",
"src": "763:39:9"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "753:6:9",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "811:78:9",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "877:3:9"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "882:6:9"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "818:58:9"
},
"nodeType": "YulFunctionCall",
"src": "818:71:9"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "811:3:9"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "937:5:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "944:4:9",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "933:3:9"
},
"nodeType": "YulFunctionCall",
"src": "933:16:9"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "951:3:9"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "956:6:9"
}
],
"functionName": {
"name": "copy_memory_to_memory_with_cleanup",
"nodeType": "YulIdentifier",
"src": "898:34:9"
},
"nodeType": "YulFunctionCall",
"src": "898:65:9"
},
"nodeType": "YulExpressionStatement",
"src": "898:65:9"
},
{
"nodeType": "YulAssignment",
"src": "972:46:9",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "983:3:9"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1010:6:9"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nodeType": "YulIdentifier",
"src": "988:21:9"
},
"nodeType": "YulFunctionCall",
"src": "988:29:9"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "979:3:9"
},
"nodeType": "YulFunctionCall",
"src": "979:39:9"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "972:3:9"
}
]
}
]
},
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "720:5:9",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "727:3:9",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "735:3:9",
"type": ""
}
],
"src": "647:377:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1148:195:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1158:26:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1170:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1181:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1166:3:9"
},
"nodeType": "YulFunctionCall",
"src": "1166:18:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1158:4:9"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1205:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1216:1:9",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1201:3:9"
},
"nodeType": "YulFunctionCall",
"src": "1201:17:9"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1224:4:9"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1230:9:9"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1220:3:9"
},
"nodeType": "YulFunctionCall",
"src": "1220:20:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1194:6:9"
},
"nodeType": "YulFunctionCall",
"src": "1194:47:9"
},
"nodeType": "YulExpressionStatement",
"src": "1194:47:9"
},
{
"nodeType": "YulAssignment",
"src": "1250:86:9",
"value": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1322:6:9"
},
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1331:4:9"
}
],
"functionName": {
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "1258:63:9"
},
"nodeType": "YulFunctionCall",
"src": "1258:78:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1250:4:9"
}
]
}
]
},
"name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1120:9:9",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1132:6:9",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1143:4:9",
"type": ""
}
],
"src": "1030:313:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1389:35:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1399:19:9",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1415:2:9",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1409:5:9"
},
"nodeType": "YulFunctionCall",
"src": "1409:9:9"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "1399:6:9"
}
]
}
]
},
"name": "allocate_unbounded",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "1382:6:9",
"type": ""
}
],
"src": "1349:75:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1519:28:9",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1536:1:9",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1539:1:9",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1529:6:9"
},
"nodeType": "YulFunctionCall",
"src": "1529:12:9"
},
"nodeType": "YulExpressionStatement",
"src": "1529:12:9"
}
]
},
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulFunctionDefinition",
"src": "1430:117:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1642:28:9",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1659:1:9",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1662:1:9",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1652:6:9"
},
"nodeType": "YulFunctionCall",
"src": "1652:12:9"
},
"nodeType": "YulExpressionStatement",
"src": "1652:12:9"
}
]
},
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulFunctionDefinition",
"src": "1553:117:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1721:81:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1731:65:9",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1746:5:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1753:42:9",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "1742:3:9"
},
"nodeType": "YulFunctionCall",
"src": "1742:54:9"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "1731:7:9"
}
]
}
]
},
"name": "cleanup_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1703:5:9",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "1713:7:9",
"type": ""
}
],
"src": "1676:126:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1853:51:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1863:35:9",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1892:5:9"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "1874:17:9"
},
"nodeType": "YulFunctionCall",
"src": "1874:24:9"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "1863:7:9"
}
]
}
]
},
"name": "cleanup_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1835:5:9",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "1845:7:9",
"type": ""
}
],
"src": "1808:96:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1953:79:9",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2010:16:9",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2019:1:9",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2022:1:9",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "2012:6:9"
},
"nodeType": "YulFunctionCall",
"src": "2012:12:9"
},
"nodeType": "YulExpressionStatement",
"src": "2012:12:9"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1976:5:9"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2001:5:9"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "1983:17:9"
},
"nodeType": "YulFunctionCall",
"src": "1983:24:9"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "1973:2:9"
},
"nodeType": "YulFunctionCall",
"src": "1973:35:9"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "1966:6:9"
},
"nodeType": "YulFunctionCall",
"src": "1966:43:9"
},
"nodeType": "YulIf",
"src": "1963:63:9"
}
]
},
"name": "validator_revert_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1946:5:9",
"type": ""
}
],
"src": "1910:122:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2090:87:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2100:29:9",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2122:6:9"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "2109:12:9"
},
"nodeType": "YulFunctionCall",
"src": "2109:20:9"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2100:5:9"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2165:5:9"
}
],
"functionName": {
"name": "validator_revert_t_address",
"nodeType": "YulIdentifier",
"src": "2138:26:9"
},
"nodeType": "YulFunctionCall",
"src": "2138:33:9"
},
"nodeType": "YulExpressionStatement",
"src": "2138:33:9"
}
]
},
"name": "abi_decode_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2068:6:9",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "2076:3:9",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2084:5:9",
"type": ""
}
],
"src": "2038:139:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2228:32:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2238:16:9",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "2249:5:9"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "2238:7:9"
}
]
}
]
},
"name": "cleanup_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2210:5:9",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "2220:7:9",
"type": ""
}
],
"src": "2183:77:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2309:79:9",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2366:16:9",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2375:1:9",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2378:1:9",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "2368:6:9"
},
"nodeType": "YulFunctionCall",
"src": "2368:12:9"
},
"nodeType": "YulExpressionStatement",
"src": "2368:12:9"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2332:5:9"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2357:5:9"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "2339:17:9"
},
"nodeType": "YulFunctionCall",
"src": "2339:24:9"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "2329:2:9"
},
"nodeType": "YulFunctionCall",
"src": "2329:35:9"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "2322:6:9"
},
"nodeType": "YulFunctionCall",
"src": "2322:43:9"
},
"nodeType": "YulIf",
"src": "2319:63:9"
}
]
},
"name": "validator_revert_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2302:5:9",
"type": ""
}
],
"src": "2266:122:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2446:87:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2456:29:9",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2478:6:9"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "2465:12:9"
},
"nodeType": "YulFunctionCall",
"src": "2465:20:9"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2456:5:9"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2521:5:9"
}
],
"functionName": {
"name": "validator_revert_t_uint256",
"nodeType": "YulIdentifier",
"src": "2494:26:9"
},
"nodeType": "YulFunctionCall",
"src": "2494:33:9"
},
"nodeType": "YulExpressionStatement",
"src": "2494:33:9"
}
]
},
"name": "abi_decode_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2424:6:9",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "2432:3:9",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2440:5:9",
"type": ""
}
],
"src": "2394:139:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2622:391:9",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2668:83:9",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "2670:77:9"
},
"nodeType": "YulFunctionCall",
"src": "2670:79:9"
},
"nodeType": "YulExpressionStatement",
"src": "2670:79:9"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2643:7:9"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2652:9:9"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "2639:3:9"
},
"nodeType": "YulFunctionCall",
"src": "2639:23:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2664:2:9",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "2635:3:9"
},
"nodeType": "YulFunctionCall",
"src": "2635:32:9"
},
"nodeType": "YulIf",
"src": "2632:119:9"
},
{
"nodeType": "YulBlock",
"src": "2761:117:9",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2776:15:9",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "2790:1:9",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2780:6:9",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "2805:63:9",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2840:9:9"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2851:6:9"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2836:3:9"
},
"nodeType": "YulFunctionCall",
"src": "2836:22:9"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2860:7:9"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nodeType": "YulIdentifier",
"src": "2815:20:9"
},
"nodeType": "YulFunctionCall",
"src": "2815:53:9"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2805:6:9"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "2888:118:9",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2903:16:9",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "2917:2:9",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2907:6:9",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "2933:63:9",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2968:9:9"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2979:6:9"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2964:3:9"
},
"nodeType": "YulFunctionCall",
"src": "2964:22:9"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2988:7:9"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "2943:20:9"
},
"nodeType": "YulFunctionCall",
"src": "2943:53:9"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "2933:6:9"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "2584:9:9",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "2595:7:9",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "2607:6:9",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "2615:6:9",
"type": ""
}
],
"src": "2539:474:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3061:48:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3071:32:9",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3096:5:9"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "3089:6:9"
},
"nodeType": "YulFunctionCall",
"src": "3089:13:9"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "3082:6:9"
},
"nodeType": "YulFunctionCall",
"src": "3082:21:9"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "3071:7:9"
}
]
}
]
},
"name": "cleanup_t_bool",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3043:5:9",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "3053:7:9",
"type": ""
}
],
"src": "3019:90:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3174:50:9",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3191:3:9"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3211:5:9"
}
],
"functionName": {
"name": "cleanup_t_bool",
"nodeType": "YulIdentifier",
"src": "3196:14:9"
},
"nodeType": "YulFunctionCall",
"src": "3196:21:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3184:6:9"
},
"nodeType": "YulFunctionCall",
"src": "3184:34:9"
},
"nodeType": "YulExpressionStatement",
"src": "3184:34:9"
}
]
},
"name": "abi_encode_t_bool_to_t_bool_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3162:5:9",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "3169:3:9",
"type": ""
}
],
"src": "3115:109:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3322:118:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3332:26:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3344:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3355:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3340:3:9"
},
"nodeType": "YulFunctionCall",
"src": "3340:18:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "3332:4:9"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "3406:6:9"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3419:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3430:1:9",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3415:3:9"
},
"nodeType": "YulFunctionCall",
"src": "3415:17:9"
}
],
"functionName": {
"name": "abi_encode_t_bool_to_t_bool_fromStack",
"nodeType": "YulIdentifier",
"src": "3368:37:9"
},
"nodeType": "YulFunctionCall",
"src": "3368:65:9"
},
"nodeType": "YulExpressionStatement",
"src": "3368:65:9"
}
]
},
"name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "3294:9:9",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "3306:6:9",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "3317:4:9",
"type": ""
}
],
"src": "3230:210:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3511:53:9",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3528:3:9"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3551:5:9"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "3533:17:9"
},
"nodeType": "YulFunctionCall",
"src": "3533:24:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3521:6:9"
},
"nodeType": "YulFunctionCall",
"src": "3521:37:9"
},
"nodeType": "YulExpressionStatement",
"src": "3521:37:9"
}
]
},
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3499:5:9",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "3506:3:9",
"type": ""
}
],
"src": "3446:118:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3668:124:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3678:26:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3690:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3701:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3686:3:9"
},
"nodeType": "YulFunctionCall",
"src": "3686:18:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "3678:4:9"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "3758:6:9"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3771:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3782:1:9",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3767:3:9"
},
"nodeType": "YulFunctionCall",
"src": "3767:17:9"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "3714:43:9"
},
"nodeType": "YulFunctionCall",
"src": "3714:71:9"
},
"nodeType": "YulExpressionStatement",
"src": "3714:71:9"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "3640:9:9",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "3652:6:9",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "3663:4:9",
"type": ""
}
],
"src": "3570:222:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3898:519:9",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "3944:83:9",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "3946:77:9"
},
"nodeType": "YulFunctionCall",
"src": "3946:79:9"
},
"nodeType": "YulExpressionStatement",
"src": "3946:79:9"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "3919:7:9"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3928:9:9"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "3915:3:9"
},
"nodeType": "YulFunctionCall",
"src": "3915:23:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3940:2:9",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "3911:3:9"
},
"nodeType": "YulFunctionCall",
"src": "3911:32:9"
},
"nodeType": "YulIf",
"src": "3908:119:9"
},
{
"nodeType": "YulBlock",
"src": "4037:117:9",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "4052:15:9",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "4066:1:9",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "4056:6:9",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "4081:63:9",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4116:9:9"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "4127:6:9"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4112:3:9"
},
"nodeType": "YulFunctionCall",
"src": "4112:22:9"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "4136:7:9"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nodeType": "YulIdentifier",
"src": "4091:20:9"
},
"nodeType": "YulFunctionCall",
"src": "4091:53:9"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "4081:6:9"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "4164:118:9",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "4179:16:9",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "4193:2:9",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "4183:6:9",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "4209:63:9",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4244:9:9"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "4255:6:9"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4240:3:9"
},
"nodeType": "YulFunctionCall",
"src": "4240:22:9"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "4264:7:9"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nodeType": "YulIdentifier",
"src": "4219:20:9"
},
"nodeType": "YulFunctionCall",
"src": "4219:53:9"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "4209:6:9"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "4292:118:9",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "4307:16:9",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "4321:2:9",
"type": "",
"value": "64"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "4311:6:9",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "4337:63:9",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4372:9:9"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "4383:6:9"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4368:3:9"
},
"nodeType": "YulFunctionCall",
"src": "4368:22:9"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "4392:7:9"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "4347:20:9"
},
"nodeType": "YulFunctionCall",
"src": "4347:53:9"
},
"variableNames": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "4337:6:9"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_addresst_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "3852:9:9",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "3863:7:9",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "3875:6:9",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "3883:6:9",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "3891:6:9",
"type": ""
}
],
"src": "3798:619:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4466:43:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4476:27:9",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4491:5:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4498:4:9",
"type": "",
"value": "0xff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "4487:3:9"
},
"nodeType": "YulFunctionCall",
"src": "4487:16:9"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "4476:7:9"
}
]
}
]
},
"name": "cleanup_t_uint8",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4448:5:9",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "4458:7:9",
"type": ""
}
],
"src": "4423:86:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4576:51:9",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4593:3:9"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4614:5:9"
}
],
"functionName": {
"name": "cleanup_t_uint8",
"nodeType": "YulIdentifier",
"src": "4598:15:9"
},
"nodeType": "YulFunctionCall",
"src": "4598:22:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4586:6:9"
},
"nodeType": "YulFunctionCall",
"src": "4586:35:9"
},
"nodeType": "YulExpressionStatement",
"src": "4586:35:9"
}
]
},
"name": "abi_encode_t_uint8_to_t_uint8_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4564:5:9",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "4571:3:9",
"type": ""
}
],
"src": "4515:112:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4727:120:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4737:26:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4749:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4760:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4745:3:9"
},
"nodeType": "YulFunctionCall",
"src": "4745:18:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "4737:4:9"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "4813:6:9"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4826:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4837:1:9",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4822:3:9"
},
"nodeType": "YulFunctionCall",
"src": "4822:17:9"
}
],
"functionName": {
"name": "abi_encode_t_uint8_to_t_uint8_fromStack",
"nodeType": "YulIdentifier",
"src": "4773:39:9"
},
"nodeType": "YulFunctionCall",
"src": "4773:67:9"
},
"nodeType": "YulExpressionStatement",
"src": "4773:67:9"
}
]
},
"name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "4699:9:9",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "4711:6:9",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "4722:4:9",
"type": ""
}
],
"src": "4633:214:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4885:28:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4895:12:9",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "4902:5:9"
},
"variableNames": [
{
"name": "ret",
"nodeType": "YulIdentifier",
"src": "4895:3:9"
}
]
}
]
},
"name": "identity",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4871:5:9",
"type": ""
}
],
"returnVariables": [
{
"name": "ret",
"nodeType": "YulTypedName",
"src": "4881:3:9",
"type": ""
}
],
"src": "4853:60:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4979:82:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4989:66:9",
"value": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "5047:5:9"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "5029:17:9"
},
"nodeType": "YulFunctionCall",
"src": "5029:24:9"
}
],
"functionName": {
"name": "identity",
"nodeType": "YulIdentifier",
"src": "5020:8:9"
},
"nodeType": "YulFunctionCall",
"src": "5020:34:9"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "5002:17:9"
},
"nodeType": "YulFunctionCall",
"src": "5002:53:9"
},
"variableNames": [
{
"name": "converted",
"nodeType": "YulIdentifier",
"src": "4989:9:9"
}
]
}
]
},
"name": "convert_t_uint160_to_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4959:5:9",
"type": ""
}
],
"returnVariables": [
{
"name": "converted",
"nodeType": "YulTypedName",
"src": "4969:9:9",
"type": ""
}
],
"src": "4919:142:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5127:66:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5137:50:9",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "5181:5:9"
}
],
"functionName": {
"name": "convert_t_uint160_to_t_uint160",
"nodeType": "YulIdentifier",
"src": "5150:30:9"
},
"nodeType": "YulFunctionCall",
"src": "5150:37:9"
},
"variableNames": [
{
"name": "converted",
"nodeType": "YulIdentifier",
"src": "5137:9:9"
}
]
}
]
},
"name": "convert_t_uint160_to_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "5107:5:9",
"type": ""
}
],
"returnVariables": [
{
"name": "converted",
"nodeType": "YulTypedName",
"src": "5117:9:9",
"type": ""
}
],
"src": "5067:126:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5273:66:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5283:50:9",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "5327:5:9"
}
],
"functionName": {
"name": "convert_t_uint160_to_t_address",
"nodeType": "YulIdentifier",
"src": "5296:30:9"
},
"nodeType": "YulFunctionCall",
"src": "5296:37:9"
},
"variableNames": [
{
"name": "converted",
"nodeType": "YulIdentifier",
"src": "5283:9:9"
}
]
}
]
},
"name": "convert_t_contract$_IERC20_$877_to_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "5253:5:9",
"type": ""
}
],
"returnVariables": [
{
"name": "converted",
"nodeType": "YulTypedName",
"src": "5263:9:9",
"type": ""
}
],
"src": "5199:140:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5424:80:9",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5441:3:9"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "5491:5:9"
}
],
"functionName": {
"name": "convert_t_contract$_IERC20_$877_to_t_address",
"nodeType": "YulIdentifier",
"src": "5446:44:9"
},
"nodeType": "YulFunctionCall",
"src": "5446:51:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5434:6:9"
},
"nodeType": "YulFunctionCall",
"src": "5434:64:9"
},
"nodeType": "YulExpressionStatement",
"src": "5434:64:9"
}
]
},
"name": "abi_encode_t_contract$_IERC20_$877_to_t_address_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "5412:5:9",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "5419:3:9",
"type": ""
}
],
"src": "5345:159:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5622:138:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5632:26:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5644:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5655:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5640:3:9"
},
"nodeType": "YulFunctionCall",
"src": "5640:18:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "5632:4:9"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "5726:6:9"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5739:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5750:1:9",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5735:3:9"
},
"nodeType": "YulFunctionCall",
"src": "5735:17:9"
}
],
"functionName": {
"name": "abi_encode_t_contract$_IERC20_$877_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "5668:57:9"
},
"nodeType": "YulFunctionCall",
"src": "5668:85:9"
},
"nodeType": "YulExpressionStatement",
"src": "5668:85:9"
}
]
},
"name": "abi_encode_tuple_t_contract$_IERC20_$877__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "5594:9:9",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "5606:6:9",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "5617:4:9",
"type": ""
}
],
"src": "5510:250:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5832:263:9",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "5878:83:9",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "5880:77:9"
},
"nodeType": "YulFunctionCall",
"src": "5880:79:9"
},
"nodeType": "YulExpressionStatement",
"src": "5880:79:9"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "5853:7:9"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5862:9:9"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "5849:3:9"
},
"nodeType": "YulFunctionCall",
"src": "5849:23:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5874:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "5845:3:9"
},
"nodeType": "YulFunctionCall",
"src": "5845:32:9"
},
"nodeType": "YulIf",
"src": "5842:119:9"
},
{
"nodeType": "YulBlock",
"src": "5971:117:9",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "5986:15:9",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "6000:1:9",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "5990:6:9",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "6015:63:9",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6050:9:9"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "6061:6:9"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6046:3:9"
},
"nodeType": "YulFunctionCall",
"src": "6046:22:9"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "6070:7:9"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nodeType": "YulIdentifier",
"src": "6025:20:9"
},
"nodeType": "YulFunctionCall",
"src": "6025:53:9"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "6015:6:9"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "5802:9:9",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "5813:7:9",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "5825:6:9",
"type": ""
}
],
"src": "5766:329:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6166:53:9",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6183:3:9"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "6206:5:9"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "6188:17:9"
},
"nodeType": "YulFunctionCall",
"src": "6188:24:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6176:6:9"
},
"nodeType": "YulFunctionCall",
"src": "6176:37:9"
},
"nodeType": "YulExpressionStatement",
"src": "6176:37:9"
}
]
},
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "6154:5:9",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "6161:3:9",
"type": ""
}
],
"src": "6101:118:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6323:124:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6333:26:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6345:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6356:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6341:3:9"
},
"nodeType": "YulFunctionCall",
"src": "6341:18:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "6333:4:9"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "6413:6:9"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6426:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6437:1:9",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6422:3:9"
},
"nodeType": "YulFunctionCall",
"src": "6422:17:9"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "6369:43:9"
},
"nodeType": "YulFunctionCall",
"src": "6369:71:9"
},
"nodeType": "YulExpressionStatement",
"src": "6369:71:9"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "6295:9:9",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "6307:6:9",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "6318:4:9",
"type": ""
}
],
"src": "6225:222:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6519:263:9",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "6565:83:9",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "6567:77:9"
},
"nodeType": "YulFunctionCall",
"src": "6567:79:9"
},
"nodeType": "YulExpressionStatement",
"src": "6567:79:9"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "6540:7:9"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6549:9:9"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "6536:3:9"
},
"nodeType": "YulFunctionCall",
"src": "6536:23:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6561:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "6532:3:9"
},
"nodeType": "YulFunctionCall",
"src": "6532:32:9"
},
"nodeType": "YulIf",
"src": "6529:119:9"
},
{
"nodeType": "YulBlock",
"src": "6658:117:9",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "6673:15:9",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "6687:1:9",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "6677:6:9",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "6702:63:9",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6737:9:9"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "6748:6:9"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6733:3:9"
},
"nodeType": "YulFunctionCall",
"src": "6733:22:9"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "6757:7:9"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "6712:20:9"
},
"nodeType": "YulFunctionCall",
"src": "6712:53:9"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "6702:6:9"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "6489:9:9",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "6500:7:9",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "6512:6:9",
"type": ""
}
],
"src": "6453:329:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6868:66:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6878:50:9",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "6922:5:9"
}
],
"functionName": {
"name": "convert_t_uint160_to_t_address",
"nodeType": "YulIdentifier",
"src": "6891:30:9"
},
"nodeType": "YulFunctionCall",
"src": "6891:37:9"
},
"variableNames": [
{
"name": "converted",
"nodeType": "YulIdentifier",
"src": "6878:9:9"
}
]
}
]
},
"name": "convert_t_contract$_ISwapRouter_$1047_to_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "6848:5:9",
"type": ""
}
],
"returnVariables": [
{
"name": "converted",
"nodeType": "YulTypedName",
"src": "6858:9:9",
"type": ""
}
],
"src": "6788:146:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7025:86:9",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7042:3:9"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "7098:5:9"
}
],
"functionName": {
"name": "convert_t_contract$_ISwapRouter_$1047_to_t_address",
"nodeType": "YulIdentifier",
"src": "7047:50:9"
},
"nodeType": "YulFunctionCall",
"src": "7047:57:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7035:6:9"
},
"nodeType": "YulFunctionCall",
"src": "7035:70:9"
},
"nodeType": "YulExpressionStatement",
"src": "7035:70:9"
}
]
},
"name": "abi_encode_t_contract$_ISwapRouter_$1047_to_t_address_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "7013:5:9",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "7020:3:9",
"type": ""
}
],
"src": "6940:171:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7235:144:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7245:26:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7257:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7268:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7253:3:9"
},
"nodeType": "YulFunctionCall",
"src": "7253:18:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "7245:4:9"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "7345:6:9"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7358:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7369:1:9",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7354:3:9"
},
"nodeType": "YulFunctionCall",
"src": "7354:17:9"
}
],
"functionName": {
"name": "abi_encode_t_contract$_ISwapRouter_$1047_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "7281:63:9"
},
"nodeType": "YulFunctionCall",
"src": "7281:91:9"
},
"nodeType": "YulExpressionStatement",
"src": "7281:91:9"
}
]
},
"name": "abi_encode_tuple_t_contract$_ISwapRouter_$1047__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "7207:9:9",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "7219:6:9",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "7230:4:9",
"type": ""
}
],
"src": "7117:262:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7429:47:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7439:31:9",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "7454:5:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7461:8:9",
"type": "",
"value": "0xffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "7450:3:9"
},
"nodeType": "YulFunctionCall",
"src": "7450:20:9"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "7439:7:9"
}
]
}
]
},
"name": "cleanup_t_uint24",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "7411:5:9",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "7421:7:9",
"type": ""
}
],
"src": "7385:91:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7545:52:9",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7562:3:9"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "7584:5:9"
}
],
"functionName": {
"name": "cleanup_t_uint24",
"nodeType": "YulIdentifier",
"src": "7567:16:9"
},
"nodeType": "YulFunctionCall",
"src": "7567:23:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7555:6:9"
},
"nodeType": "YulFunctionCall",
"src": "7555:36:9"
},
"nodeType": "YulExpressionStatement",
"src": "7555:36:9"
}
]
},
"name": "abi_encode_t_uint24_to_t_uint24_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "7533:5:9",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "7540:3:9",
"type": ""
}
],
"src": "7482:115:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7699:122:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7709:26:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7721:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7732:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7717:3:9"
},
"nodeType": "YulFunctionCall",
"src": "7717:18:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "7709:4:9"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "7787:6:9"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7800:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7811:1:9",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7796:3:9"
},
"nodeType": "YulFunctionCall",
"src": "7796:17:9"
}
],
"functionName": {
"name": "abi_encode_t_uint24_to_t_uint24_fromStack",
"nodeType": "YulIdentifier",
"src": "7745:41:9"
},
"nodeType": "YulFunctionCall",
"src": "7745:69:9"
},
"nodeType": "YulExpressionStatement",
"src": "7745:69:9"
}
]
},
"name": "abi_encode_tuple_t_uint24__to_t_uint24__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "7671:9:9",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "7683:6:9",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "7694:4:9",
"type": ""
}
],
"src": "7603:218:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7910:391:9",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "7956:83:9",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "7958:77:9"
},
"nodeType": "YulFunctionCall",
"src": "7958:79:9"
},
"nodeType": "YulExpressionStatement",
"src": "7958:79:9"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "7931:7:9"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7940:9:9"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "7927:3:9"
},
"nodeType": "YulFunctionCall",
"src": "7927:23:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7952:2:9",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "7923:3:9"
},
"nodeType": "YulFunctionCall",
"src": "7923:32:9"
},
"nodeType": "YulIf",
"src": "7920:119:9"
},
{
"nodeType": "YulBlock",
"src": "8049:117:9",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "8064:15:9",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "8078:1:9",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "8068:6:9",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "8093:63:9",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8128:9:9"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "8139:6:9"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8124:3:9"
},
"nodeType": "YulFunctionCall",
"src": "8124:22:9"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "8148:7:9"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nodeType": "YulIdentifier",
"src": "8103:20:9"
},
"nodeType": "YulFunctionCall",
"src": "8103:53:9"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "8093:6:9"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "8176:118:9",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "8191:16:9",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "8205:2:9",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "8195:6:9",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "8221:63:9",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8256:9:9"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "8267:6:9"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8252:3:9"
},
"nodeType": "YulFunctionCall",
"src": "8252:22:9"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "8276:7:9"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nodeType": "YulIdentifier",
"src": "8231:20:9"
},
"nodeType": "YulFunctionCall",
"src": "8231:53:9"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "8221:6:9"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "7872:9:9",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "7883:7:9",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "7895:6:9",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "7903:6:9",
"type": ""
}
],
"src": "7827:474:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8335:152:9",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8352:1:9",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8355:77:9",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8345:6:9"
},
"nodeType": "YulFunctionCall",
"src": "8345:88:9"
},
"nodeType": "YulExpressionStatement",
"src": "8345:88:9"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8449:1:9",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8452:4:9",
"type": "",
"value": "0x22"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8442:6:9"
},
"nodeType": "YulFunctionCall",
"src": "8442:15:9"
},
"nodeType": "YulExpressionStatement",
"src": "8442:15:9"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8473:1:9",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8476:4:9",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "8466:6:9"
},
"nodeType": "YulFunctionCall",
"src": "8466:15:9"
},
"nodeType": "YulExpressionStatement",
"src": "8466:15:9"
}
]
},
"name": "panic_error_0x22",
"nodeType": "YulFunctionDefinition",
"src": "8307:180:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8544:269:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "8554:22:9",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "8568:4:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8574:1:9",
"type": "",
"value": "2"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "8564:3:9"
},
"nodeType": "YulFunctionCall",
"src": "8564:12:9"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "8554:6:9"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "8585:38:9",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "8615:4:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8621:1:9",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "8611:3:9"
},
"nodeType": "YulFunctionCall",
"src": "8611:12:9"
},
"variables": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulTypedName",
"src": "8589:18:9",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "8662:51:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "8676:27:9",
"value": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "8690:6:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8698:4:9",
"type": "",
"value": "0x7f"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "8686:3:9"
},
"nodeType": "YulFunctionCall",
"src": "8686:17:9"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "8676:6:9"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "8642:18:9"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "8635:6:9"
},
"nodeType": "YulFunctionCall",
"src": "8635:26:9"
},
"nodeType": "YulIf",
"src": "8632:81:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8765:42:9",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x22",
"nodeType": "YulIdentifier",
"src": "8779:16:9"
},
"nodeType": "YulFunctionCall",
"src": "8779:18:9"
},
"nodeType": "YulExpressionStatement",
"src": "8779:18:9"
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "8729:18:9"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "8752:6:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8760:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "8749:2:9"
},
"nodeType": "YulFunctionCall",
"src": "8749:14:9"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "8726:2:9"
},
"nodeType": "YulFunctionCall",
"src": "8726:38:9"
},
"nodeType": "YulIf",
"src": "8723:84:9"
}
]
},
"name": "extract_byte_array_length",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "8528:4:9",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "8537:6:9",
"type": ""
}
],
"src": "8493:320:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8925:58:9",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "8947:6:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8955:1:9",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8943:3:9"
},
"nodeType": "YulFunctionCall",
"src": "8943:14:9"
},
{
"hexValue": "496e76616c696420726f75746572",
"kind": "string",
"nodeType": "YulLiteral",
"src": "8959:16:9",
"type": "",
"value": "Invalid router"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8936:6:9"
},
"nodeType": "YulFunctionCall",
"src": "8936:40:9"
},
"nodeType": "YulExpressionStatement",
"src": "8936:40:9"
}
]
},
"name": "store_literal_in_memory_cd97d2d12d01a00521d9f362b2a47de33f789d340363daf546d42fd4c88afc78",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "8917:6:9",
"type": ""
}
],
"src": "8819:164:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9135:220:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9145:74:9",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9211:3:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9216:2:9",
"type": "",
"value": "14"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "9152:58:9"
},
"nodeType": "YulFunctionCall",
"src": "9152:67:9"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9145:3:9"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9317:3:9"
}
],
"functionName": {
"name": "store_literal_in_memory_cd97d2d12d01a00521d9f362b2a47de33f789d340363daf546d42fd4c88afc78",
"nodeType": "YulIdentifier",
"src": "9228:88:9"
},
"nodeType": "YulFunctionCall",
"src": "9228:93:9"
},
"nodeType": "YulExpressionStatement",
"src": "9228:93:9"
},
{
"nodeType": "YulAssignment",
"src": "9330:19:9",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9341:3:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9346:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9337:3:9"
},
"nodeType": "YulFunctionCall",
"src": "9337:12:9"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "9330:3:9"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_cd97d2d12d01a00521d9f362b2a47de33f789d340363daf546d42fd4c88afc78_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "9123:3:9",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "9131:3:9",
"type": ""
}
],
"src": "8989:366:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9532:248:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9542:26:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9554:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9565:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9550:3:9"
},
"nodeType": "YulFunctionCall",
"src": "9550:18:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "9542:4:9"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9589:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9600:1:9",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9585:3:9"
},
"nodeType": "YulFunctionCall",
"src": "9585:17:9"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "9608:4:9"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9614:9:9"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "9604:3:9"
},
"nodeType": "YulFunctionCall",
"src": "9604:20:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "9578:6:9"
},
"nodeType": "YulFunctionCall",
"src": "9578:47:9"
},
"nodeType": "YulExpressionStatement",
"src": "9578:47:9"
},
{
"nodeType": "YulAssignment",
"src": "9634:139:9",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "9768:4:9"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_cd97d2d12d01a00521d9f362b2a47de33f789d340363daf546d42fd4c88afc78_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "9642:124:9"
},
"nodeType": "YulFunctionCall",
"src": "9642:131:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "9634:4:9"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_cd97d2d12d01a00521d9f362b2a47de33f789d340363daf546d42fd4c88afc78__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "9512:9:9",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "9527:4:9",
"type": ""
}
],
"src": "9361:419:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9892:62:9",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "9914:6:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9922:1:9",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9910:3:9"
},
"nodeType": "YulFunctionCall",
"src": "9910:14:9"
},
{
"hexValue": "416d6f756e74206d757374206265203e2030",
"kind": "string",
"nodeType": "YulLiteral",
"src": "9926:20:9",
"type": "",
"value": "Amount must be > 0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "9903:6:9"
},
"nodeType": "YulFunctionCall",
"src": "9903:44:9"
},
"nodeType": "YulExpressionStatement",
"src": "9903:44:9"
}
]
},
"name": "store_literal_in_memory_01c242f1c806840acb94ec05d87d4647010419c53a053a581e0026b3f6467dbb",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "9884:6:9",
"type": ""
}
],
"src": "9786:168:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10106:220:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "10116:74:9",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10182:3:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10187:2:9",
"type": "",
"value": "18"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "10123:58:9"
},
"nodeType": "YulFunctionCall",
"src": "10123:67:9"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10116:3:9"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10288:3:9"
}
],
"functionName": {
"name": "store_literal_in_memory_01c242f1c806840acb94ec05d87d4647010419c53a053a581e0026b3f6467dbb",
"nodeType": "YulIdentifier",
"src": "10199:88:9"
},
"nodeType": "YulFunctionCall",
"src": "10199:93:9"
},
"nodeType": "YulExpressionStatement",
"src": "10199:93:9"
},
{
"nodeType": "YulAssignment",
"src": "10301:19:9",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10312:3:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10317:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10308:3:9"
},
"nodeType": "YulFunctionCall",
"src": "10308:12:9"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "10301:3:9"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_01c242f1c806840acb94ec05d87d4647010419c53a053a581e0026b3f6467dbb_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "10094:3:9",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "10102:3:9",
"type": ""
}
],
"src": "9960:366:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10503:248:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "10513:26:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10525:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10536:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10521:3:9"
},
"nodeType": "YulFunctionCall",
"src": "10521:18:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "10513:4:9"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10560:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10571:1:9",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10556:3:9"
},
"nodeType": "YulFunctionCall",
"src": "10556:17:9"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "10579:4:9"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10585:9:9"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "10575:3:9"
},
"nodeType": "YulFunctionCall",
"src": "10575:20:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "10549:6:9"
},
"nodeType": "YulFunctionCall",
"src": "10549:47:9"
},
"nodeType": "YulExpressionStatement",
"src": "10549:47:9"
},
{
"nodeType": "YulAssignment",
"src": "10605:139:9",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "10739:4:9"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_01c242f1c806840acb94ec05d87d4647010419c53a053a581e0026b3f6467dbb_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "10613:124:9"
},
"nodeType": "YulFunctionCall",
"src": "10613:131:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "10605:4:9"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_01c242f1c806840acb94ec05d87d4647010419c53a053a581e0026b3f6467dbb__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "10483:9:9",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "10498:4:9",
"type": ""
}
],
"src": "10332:419:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10911:288:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "10921:26:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10933:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10944:2:9",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10929:3:9"
},
"nodeType": "YulFunctionCall",
"src": "10929:18:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "10921:4:9"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "11001:6:9"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11014:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11025:1:9",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11010:3:9"
},
"nodeType": "YulFunctionCall",
"src": "11010:17:9"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "10957:43:9"
},
"nodeType": "YulFunctionCall",
"src": "10957:71:9"
},
"nodeType": "YulExpressionStatement",
"src": "10957:71:9"
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "11082:6:9"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11095:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11106:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11091:3:9"
},
"nodeType": "YulFunctionCall",
"src": "11091:18:9"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "11038:43:9"
},
"nodeType": "YulFunctionCall",
"src": "11038:72:9"
},
"nodeType": "YulExpressionStatement",
"src": "11038:72:9"
},
{
"expression": {
"arguments": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "11164:6:9"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11177:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11188:2:9",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11173:3:9"
},
"nodeType": "YulFunctionCall",
"src": "11173:18:9"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "11120:43:9"
},
"nodeType": "YulFunctionCall",
"src": "11120:72:9"
},
"nodeType": "YulExpressionStatement",
"src": "11120:72:9"
}
]
},
"name": "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "10867:9:9",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "10879:6:9",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "10887:6:9",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "10895:6:9",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "10906:4:9",
"type": ""
}
],
"src": "10757:442:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11245:76:9",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "11299:16:9",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11308:1:9",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11311:1:9",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "11301:6:9"
},
"nodeType": "YulFunctionCall",
"src": "11301:12:9"
},
"nodeType": "YulExpressionStatement",
"src": "11301:12:9"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "11268:5:9"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "11290:5:9"
}
],
"functionName": {
"name": "cleanup_t_bool",
"nodeType": "YulIdentifier",
"src": "11275:14:9"
},
"nodeType": "YulFunctionCall",
"src": "11275:21:9"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "11265:2:9"
},
"nodeType": "YulFunctionCall",
"src": "11265:32:9"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "11258:6:9"
},
"nodeType": "YulFunctionCall",
"src": "11258:40:9"
},
"nodeType": "YulIf",
"src": "11255:60:9"
}
]
},
"name": "validator_revert_t_bool",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "11238:5:9",
"type": ""
}
],
"src": "11205:116:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11387:77:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "11397:22:9",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "11412:6:9"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "11406:5:9"
},
"nodeType": "YulFunctionCall",
"src": "11406:13:9"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "11397:5:9"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "11452:5:9"
}
],
"functionName": {
"name": "validator_revert_t_bool",
"nodeType": "YulIdentifier",
"src": "11428:23:9"
},
"nodeType": "YulFunctionCall",
"src": "11428:30:9"
},
"nodeType": "YulExpressionStatement",
"src": "11428:30:9"
}
]
},
"name": "abi_decode_t_bool_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "11365:6:9",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "11373:3:9",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "11381:5:9",
"type": ""
}
],
"src": "11327:137:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11544:271:9",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "11590:83:9",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "11592:77:9"
},
"nodeType": "YulFunctionCall",
"src": "11592:79:9"
},
"nodeType": "YulExpressionStatement",
"src": "11592:79:9"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "11565:7:9"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11574:9:9"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "11561:3:9"
},
"nodeType": "YulFunctionCall",
"src": "11561:23:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11586:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "11557:3:9"
},
"nodeType": "YulFunctionCall",
"src": "11557:32:9"
},
"nodeType": "YulIf",
"src": "11554:119:9"
},
{
"nodeType": "YulBlock",
"src": "11683:125:9",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "11698:15:9",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "11712:1:9",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "11702:6:9",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "11727:71:9",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11770:9:9"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "11781:6:9"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11766:3:9"
},
"nodeType": "YulFunctionCall",
"src": "11766:22:9"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "11790:7:9"
}
],
"functionName": {
"name": "abi_decode_t_bool_fromMemory",
"nodeType": "YulIdentifier",
"src": "11737:28:9"
},
"nodeType": "YulFunctionCall",
"src": "11737:61:9"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "11727:6:9"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_bool_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "11514:9:9",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "11525:7:9",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "11537:6:9",
"type": ""
}
],
"src": "11470:345:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11927:59:9",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "11949:6:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11957:1:9",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11945:3:9"
},
"nodeType": "YulFunctionCall",
"src": "11945:14:9"
},
{
"hexValue": "5472616e73666572206661696c6564",
"kind": "string",
"nodeType": "YulLiteral",
"src": "11961:17:9",
"type": "",
"value": "Transfer failed"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "11938:6:9"
},
"nodeType": "YulFunctionCall",
"src": "11938:41:9"
},
"nodeType": "YulExpressionStatement",
"src": "11938:41:9"
}
]
},
"name": "store_literal_in_memory_25adaa6d082ce15f901e0d8a3d393e7462ef9edf2e6bc8321fa14d1615b6fc51",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "11919:6:9",
"type": ""
}
],
"src": "11821:165:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "12138:220:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "12148:74:9",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "12214:3:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12219:2:9",
"type": "",
"value": "15"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "12155:58:9"
},
"nodeType": "YulFunctionCall",
"src": "12155:67:9"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "12148:3:9"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "12320:3:9"
}
],
"functionName": {
"name": "store_literal_in_memory_25adaa6d082ce15f901e0d8a3d393e7462ef9edf2e6bc8321fa14d1615b6fc51",
"nodeType": "YulIdentifier",
"src": "12231:88:9"
},
"nodeType": "YulFunctionCall",
"src": "12231:93:9"
},
"nodeType": "YulExpressionStatement",
"src": "12231:93:9"
},
{
"nodeType": "YulAssignment",
"src": "12333:19:9",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "12344:3:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12349:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "12340:3:9"
},
"nodeType": "YulFunctionCall",
"src": "12340:12:9"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "12333:3:9"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_25adaa6d082ce15f901e0d8a3d393e7462ef9edf2e6bc8321fa14d1615b6fc51_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "12126:3:9",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "12134:3:9",
"type": ""
}
],
"src": "11992:366:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "12535:248:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "12545:26:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "12557:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12568:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "12553:3:9"
},
"nodeType": "YulFunctionCall",
"src": "12553:18:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "12545:4:9"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "12592:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12603:1:9",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "12588:3:9"
},
"nodeType": "YulFunctionCall",
"src": "12588:17:9"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "12611:4:9"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "12617:9:9"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "12607:3:9"
},
"nodeType": "YulFunctionCall",
"src": "12607:20:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "12581:6:9"
},
"nodeType": "YulFunctionCall",
"src": "12581:47:9"
},
"nodeType": "YulExpressionStatement",
"src": "12581:47:9"
},
{
"nodeType": "YulAssignment",
"src": "12637:139:9",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "12771:4:9"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_25adaa6d082ce15f901e0d8a3d393e7462ef9edf2e6bc8321fa14d1615b6fc51_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "12645:124:9"
},
"nodeType": "YulFunctionCall",
"src": "12645:131:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "12637:4:9"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_25adaa6d082ce15f901e0d8a3d393e7462ef9edf2e6bc8321fa14d1615b6fc51__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "12515:9:9",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "12530:4:9",
"type": ""
}
],
"src": "12364:419:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "12817:152:9",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12834:1:9",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12837:77:9",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "12827:6:9"
},
"nodeType": "YulFunctionCall",
"src": "12827:88:9"
},
"nodeType": "YulExpressionStatement",
"src": "12827:88:9"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12931:1:9",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12934:4:9",
"type": "",
"value": "0x11"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "12924:6:9"
},
"nodeType": "YulFunctionCall",
"src": "12924:15:9"
},
"nodeType": "YulExpressionStatement",
"src": "12924:15:9"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12955:1:9",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12958:4:9",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "12948:6:9"
},
"nodeType": "YulFunctionCall",
"src": "12948:15:9"
},
"nodeType": "YulExpressionStatement",
"src": "12948:15:9"
}
]
},
"name": "panic_error_0x11",
"nodeType": "YulFunctionDefinition",
"src": "12789:180:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "13023:362:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "13033:25:9",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "13056:1:9"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "13038:17:9"
},
"nodeType": "YulFunctionCall",
"src": "13038:20:9"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "13033:1:9"
}
]
},
{
"nodeType": "YulAssignment",
"src": "13067:25:9",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "13090:1:9"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "13072:17:9"
},
"nodeType": "YulFunctionCall",
"src": "13072:20:9"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "13067:1:9"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "13101:28:9",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "13124:1:9"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "13127:1:9"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "13120:3:9"
},
"nodeType": "YulFunctionCall",
"src": "13120:9:9"
},
"variables": [
{
"name": "product_raw",
"nodeType": "YulTypedName",
"src": "13105:11:9",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "13138:41:9",
"value": {
"arguments": [
{
"name": "product_raw",
"nodeType": "YulIdentifier",
"src": "13167:11:9"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "13149:17:9"
},
"nodeType": "YulFunctionCall",
"src": "13149:30:9"
},
"variableNames": [
{
"name": "product",
"nodeType": "YulIdentifier",
"src": "13138:7:9"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "13356:22:9",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "13358:16:9"
},
"nodeType": "YulFunctionCall",
"src": "13358:18:9"
},
"nodeType": "YulExpressionStatement",
"src": "13358:18:9"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "13289:1:9"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "13282:6:9"
},
"nodeType": "YulFunctionCall",
"src": "13282:9:9"
},
{
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "13312:1:9"
},
{
"arguments": [
{
"name": "product",
"nodeType": "YulIdentifier",
"src": "13319:7:9"
},
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "13328:1:9"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "13315:3:9"
},
"nodeType": "YulFunctionCall",
"src": "13315:15:9"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "13309:2:9"
},
"nodeType": "YulFunctionCall",
"src": "13309:22:9"
}
],
"functionName": {
"name": "or",
"nodeType": "YulIdentifier",
"src": "13262:2:9"
},
"nodeType": "YulFunctionCall",
"src": "13262:83:9"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "13242:6:9"
},
"nodeType": "YulFunctionCall",
"src": "13242:113:9"
},
"nodeType": "YulIf",
"src": "13239:139:9"
}
]
},
"name": "checked_mul_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "13006:1:9",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "13009:1:9",
"type": ""
}
],
"returnVariables": [
{
"name": "product",
"nodeType": "YulTypedName",
"src": "13015:7:9",
"type": ""
}
],
"src": "12975:410:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "13419:152:9",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13436:1:9",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13439:77:9",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "13429:6:9"
},
"nodeType": "YulFunctionCall",
"src": "13429:88:9"
},
"nodeType": "YulExpressionStatement",
"src": "13429:88:9"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13533:1:9",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13536:4:9",
"type": "",
"value": "0x12"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "13526:6:9"
},
"nodeType": "YulFunctionCall",
"src": "13526:15:9"
},
"nodeType": "YulExpressionStatement",
"src": "13526:15:9"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13557:1:9",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13560:4:9",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "13550:6:9"
},
"nodeType": "YulFunctionCall",
"src": "13550:15:9"
},
"nodeType": "YulExpressionStatement",
"src": "13550:15:9"
}
]
},
"name": "panic_error_0x12",
"nodeType": "YulFunctionDefinition",
"src": "13391:180:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "13619:143:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "13629:25:9",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "13652:1:9"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "13634:17:9"
},
"nodeType": "YulFunctionCall",
"src": "13634:20:9"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "13629:1:9"
}
]
},
{
"nodeType": "YulAssignment",
"src": "13663:25:9",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "13686:1:9"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "13668:17:9"
},
"nodeType": "YulFunctionCall",
"src": "13668:20:9"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "13663:1:9"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "13710:22:9",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x12",
"nodeType": "YulIdentifier",
"src": "13712:16:9"
},
"nodeType": "YulFunctionCall",
"src": "13712:18:9"
},
"nodeType": "YulExpressionStatement",
"src": "13712:18:9"
}
]
},
"condition": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "13707:1:9"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "13700:6:9"
},
"nodeType": "YulFunctionCall",
"src": "13700:9:9"
},
"nodeType": "YulIf",
"src": "13697:35:9"
},
{
"nodeType": "YulAssignment",
"src": "13742:14:9",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "13751:1:9"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "13754:1:9"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "13747:3:9"
},
"nodeType": "YulFunctionCall",
"src": "13747:9:9"
},
"variableNames": [
{
"name": "r",
"nodeType": "YulIdentifier",
"src": "13742:1:9"
}
]
}
]
},
"name": "checked_div_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "13608:1:9",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "13611:1:9",
"type": ""
}
],
"returnVariables": [
{
"name": "r",
"nodeType": "YulTypedName",
"src": "13617:1:9",
"type": ""
}
],
"src": "13577:185:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "13874:61:9",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "13896:6:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13904:1:9",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "13892:3:9"
},
"nodeType": "YulFunctionCall",
"src": "13892:14:9"
},
{
"hexValue": "496e73756666696369656e742046574349",
"kind": "string",
"nodeType": "YulLiteral",
"src": "13908:19:9",
"type": "",
"value": "Insufficient FWCI"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "13885:6:9"
},
"nodeType": "YulFunctionCall",
"src": "13885:43:9"
},
"nodeType": "YulExpressionStatement",
"src": "13885:43:9"
}
]
},
"name": "store_literal_in_memory_fe04d911e50fed7a8d87119b8245a4fe3d1680a0c0585e9b8d520c80ad21c380",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "13866:6:9",
"type": ""
}
],
"src": "13768:167:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "14087:220:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "14097:74:9",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "14163:3:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14168:2:9",
"type": "",
"value": "17"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "14104:58:9"
},
"nodeType": "YulFunctionCall",
"src": "14104:67:9"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "14097:3:9"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "14269:3:9"
}
],
"functionName": {
"name": "store_literal_in_memory_fe04d911e50fed7a8d87119b8245a4fe3d1680a0c0585e9b8d520c80ad21c380",
"nodeType": "YulIdentifier",
"src": "14180:88:9"
},
"nodeType": "YulFunctionCall",
"src": "14180:93:9"
},
"nodeType": "YulExpressionStatement",
"src": "14180:93:9"
},
{
"nodeType": "YulAssignment",
"src": "14282:19:9",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "14293:3:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14298:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "14289:3:9"
},
"nodeType": "YulFunctionCall",
"src": "14289:12:9"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "14282:3:9"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_fe04d911e50fed7a8d87119b8245a4fe3d1680a0c0585e9b8d520c80ad21c380_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "14075:3:9",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "14083:3:9",
"type": ""
}
],
"src": "13941:366:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "14484:248:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "14494:26:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "14506:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14517:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "14502:3:9"
},
"nodeType": "YulFunctionCall",
"src": "14502:18:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "14494:4:9"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "14541:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14552:1:9",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "14537:3:9"
},
"nodeType": "YulFunctionCall",
"src": "14537:17:9"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "14560:4:9"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "14566:9:9"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "14556:3:9"
},
"nodeType": "YulFunctionCall",
"src": "14556:20:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "14530:6:9"
},
"nodeType": "YulFunctionCall",
"src": "14530:47:9"
},
"nodeType": "YulExpressionStatement",
"src": "14530:47:9"
},
{
"nodeType": "YulAssignment",
"src": "14586:139:9",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "14720:4:9"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_fe04d911e50fed7a8d87119b8245a4fe3d1680a0c0585e9b8d520c80ad21c380_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "14594:124:9"
},
"nodeType": "YulFunctionCall",
"src": "14594:131:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "14586:4:9"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_fe04d911e50fed7a8d87119b8245a4fe3d1680a0c0585e9b8d520c80ad21c380__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "14464:9:9",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "14479:4:9",
"type": ""
}
],
"src": "14313:419:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "14801:80:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "14811:22:9",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "14826:6:9"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "14820:5:9"
},
"nodeType": "YulFunctionCall",
"src": "14820:13:9"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "14811:5:9"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "14869:5:9"
}
],
"functionName": {
"name": "validator_revert_t_uint256",
"nodeType": "YulIdentifier",
"src": "14842:26:9"
},
"nodeType": "YulFunctionCall",
"src": "14842:33:9"
},
"nodeType": "YulExpressionStatement",
"src": "14842:33:9"
}
]
},
"name": "abi_decode_t_uint256_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "14779:6:9",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "14787:3:9",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "14795:5:9",
"type": ""
}
],
"src": "14738:143:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "14964:274:9",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "15010:83:9",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "15012:77:9"
},
"nodeType": "YulFunctionCall",
"src": "15012:79:9"
},
"nodeType": "YulExpressionStatement",
"src": "15012:79:9"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "14985:7:9"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "14994:9:9"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "14981:3:9"
},
"nodeType": "YulFunctionCall",
"src": "14981:23:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15006:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "14977:3:9"
},
"nodeType": "YulFunctionCall",
"src": "14977:32:9"
},
"nodeType": "YulIf",
"src": "14974:119:9"
},
{
"nodeType": "YulBlock",
"src": "15103:128:9",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "15118:15:9",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "15132:1:9",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "15122:6:9",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "15147:74:9",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "15193:9:9"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "15204:6:9"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "15189:3:9"
},
"nodeType": "YulFunctionCall",
"src": "15189:22:9"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "15213:7:9"
}
],
"functionName": {
"name": "abi_decode_t_uint256_fromMemory",
"nodeType": "YulIdentifier",
"src": "15157:31:9"
},
"nodeType": "YulFunctionCall",
"src": "15157:64:9"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "15147:6:9"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "14934:9:9",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "14945:7:9",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "14957:6:9",
"type": ""
}
],
"src": "14887:351:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "15350:61:9",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "15372:6:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15380:1:9",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "15368:3:9"
},
"nodeType": "YulFunctionCall",
"src": "15368:14:9"
},
{
"hexValue": "496e73756666696369656e742055534443",
"kind": "string",
"nodeType": "YulLiteral",
"src": "15384:19:9",
"type": "",
"value": "Insufficient USDC"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "15361:6:9"
},
"nodeType": "YulFunctionCall",
"src": "15361:43:9"
},
"nodeType": "YulExpressionStatement",
"src": "15361:43:9"
}
]
},
"name": "store_literal_in_memory_6d6dda2f12e5f220efe63a7b0b5b9f247fd5190be76928866b7d7de36e3af6b2",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "15342:6:9",
"type": ""
}
],
"src": "15244:167:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "15563:220:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "15573:74:9",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "15639:3:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15644:2:9",
"type": "",
"value": "17"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "15580:58:9"
},
"nodeType": "YulFunctionCall",
"src": "15580:67:9"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "15573:3:9"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "15745:3:9"
}
],
"functionName": {
"name": "store_literal_in_memory_6d6dda2f12e5f220efe63a7b0b5b9f247fd5190be76928866b7d7de36e3af6b2",
"nodeType": "YulIdentifier",
"src": "15656:88:9"
},
"nodeType": "YulFunctionCall",
"src": "15656:93:9"
},
"nodeType": "YulExpressionStatement",
"src": "15656:93:9"
},
{
"nodeType": "YulAssignment",
"src": "15758:19:9",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "15769:3:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15774:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "15765:3:9"
},
"nodeType": "YulFunctionCall",
"src": "15765:12:9"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "15758:3:9"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_6d6dda2f12e5f220efe63a7b0b5b9f247fd5190be76928866b7d7de36e3af6b2_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "15551:3:9",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "15559:3:9",
"type": ""
}
],
"src": "15417:366:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "15960:248:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "15970:26:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "15982:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15993:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "15978:3:9"
},
"nodeType": "YulFunctionCall",
"src": "15978:18:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "15970:4:9"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "16017:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16028:1:9",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "16013:3:9"
},
"nodeType": "YulFunctionCall",
"src": "16013:17:9"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "16036:4:9"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "16042:9:9"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "16032:3:9"
},
"nodeType": "YulFunctionCall",
"src": "16032:20:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "16006:6:9"
},
"nodeType": "YulFunctionCall",
"src": "16006:47:9"
},
"nodeType": "YulExpressionStatement",
"src": "16006:47:9"
},
{
"nodeType": "YulAssignment",
"src": "16062:139:9",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "16196:4:9"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_6d6dda2f12e5f220efe63a7b0b5b9f247fd5190be76928866b7d7de36e3af6b2_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "16070:124:9"
},
"nodeType": "YulFunctionCall",
"src": "16070:131:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "16062:4:9"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_6d6dda2f12e5f220efe63a7b0b5b9f247fd5190be76928866b7d7de36e3af6b2__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "15940:9:9",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "15955:4:9",
"type": ""
}
],
"src": "15789:419:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "16259:149:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "16269:25:9",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "16292:1:9"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "16274:17:9"
},
"nodeType": "YulFunctionCall",
"src": "16274:20:9"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "16269:1:9"
}
]
},
{
"nodeType": "YulAssignment",
"src": "16303:25:9",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "16326:1:9"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "16308:17:9"
},
"nodeType": "YulFunctionCall",
"src": "16308:20:9"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "16303:1:9"
}
]
},
{
"nodeType": "YulAssignment",
"src": "16337:17:9",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "16349:1:9"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "16352:1:9"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "16345:3:9"
},
"nodeType": "YulFunctionCall",
"src": "16345:9:9"
},
"variableNames": [
{
"name": "diff",
"nodeType": "YulIdentifier",
"src": "16337:4:9"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "16379:22:9",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "16381:16:9"
},
"nodeType": "YulFunctionCall",
"src": "16381:18:9"
},
"nodeType": "YulExpressionStatement",
"src": "16381:18:9"
}
]
},
"condition": {
"arguments": [
{
"name": "diff",
"nodeType": "YulIdentifier",
"src": "16370:4:9"
},
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "16376:1:9"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "16367:2:9"
},
"nodeType": "YulFunctionCall",
"src": "16367:11:9"
},
"nodeType": "YulIf",
"src": "16364:37:9"
}
]
},
"name": "checked_sub_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "16245:1:9",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "16248:1:9",
"type": ""
}
],
"returnVariables": [
{
"name": "diff",
"nodeType": "YulTypedName",
"src": "16254:4:9",
"type": ""
}
],
"src": "16214:194:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "16540:206:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "16550:26:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "16562:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16573:2:9",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "16558:3:9"
},
"nodeType": "YulFunctionCall",
"src": "16558:18:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "16550:4:9"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "16630:6:9"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "16643:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16654:1:9",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "16639:3:9"
},
"nodeType": "YulFunctionCall",
"src": "16639:17:9"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "16586:43:9"
},
"nodeType": "YulFunctionCall",
"src": "16586:71:9"
},
"nodeType": "YulExpressionStatement",
"src": "16586:71:9"
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "16711:6:9"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "16724:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16735:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "16720:3:9"
},
"nodeType": "YulFunctionCall",
"src": "16720:18:9"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "16667:43:9"
},
"nodeType": "YulFunctionCall",
"src": "16667:72:9"
},
"nodeType": "YulExpressionStatement",
"src": "16667:72:9"
}
]
},
"name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "16504:9:9",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "16516:6:9",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "16524:6:9",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "16535:4:9",
"type": ""
}
],
"src": "16414:332:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "16858:64:9",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "16880:6:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16888:1:9",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "16876:3:9"
},
"nodeType": "YulFunctionCall",
"src": "16876:14:9"
},
{
"hexValue": "55534443207472616e73666572206661696c6564",
"kind": "string",
"nodeType": "YulLiteral",
"src": "16892:22:9",
"type": "",
"value": "USDC transfer failed"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "16869:6:9"
},
"nodeType": "YulFunctionCall",
"src": "16869:46:9"
},
"nodeType": "YulExpressionStatement",
"src": "16869:46:9"
}
]
},
"name": "store_literal_in_memory_032fb3428477d66798bdf7801f58a252d723dc1362b9dfac5726f85f81cca815",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "16850:6:9",
"type": ""
}
],
"src": "16752:170:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "17074:220:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "17084:74:9",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "17150:3:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17155:2:9",
"type": "",
"value": "20"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "17091:58:9"
},
"nodeType": "YulFunctionCall",
"src": "17091:67:9"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "17084:3:9"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "17256:3:9"
}
],
"functionName": {
"name": "store_literal_in_memory_032fb3428477d66798bdf7801f58a252d723dc1362b9dfac5726f85f81cca815",
"nodeType": "YulIdentifier",
"src": "17167:88:9"
},
"nodeType": "YulFunctionCall",
"src": "17167:93:9"
},
"nodeType": "YulExpressionStatement",
"src": "17167:93:9"
},
{
"nodeType": "YulAssignment",
"src": "17269:19:9",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "17280:3:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17285:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "17276:3:9"
},
"nodeType": "YulFunctionCall",
"src": "17276:12:9"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "17269:3:9"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_032fb3428477d66798bdf7801f58a252d723dc1362b9dfac5726f85f81cca815_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "17062:3:9",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "17070:3:9",
"type": ""
}
],
"src": "16928:366:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "17471:248:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "17481:26:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "17493:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17504:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "17489:3:9"
},
"nodeType": "YulFunctionCall",
"src": "17489:18:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "17481:4:9"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "17528:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17539:1:9",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "17524:3:9"
},
"nodeType": "YulFunctionCall",
"src": "17524:17:9"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "17547:4:9"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "17553:9:9"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "17543:3:9"
},
"nodeType": "YulFunctionCall",
"src": "17543:20:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "17517:6:9"
},
"nodeType": "YulFunctionCall",
"src": "17517:47:9"
},
"nodeType": "YulExpressionStatement",
"src": "17517:47:9"
},
{
"nodeType": "YulAssignment",
"src": "17573:139:9",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "17707:4:9"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_032fb3428477d66798bdf7801f58a252d723dc1362b9dfac5726f85f81cca815_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "17581:124:9"
},
"nodeType": "YulFunctionCall",
"src": "17581:131:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "17573:4:9"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_032fb3428477d66798bdf7801f58a252d723dc1362b9dfac5726f85f81cca815__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "17451:9:9",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "17466:4:9",
"type": ""
}
],
"src": "17300:419:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "17831:63:9",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "17853:6:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17861:1:9",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "17849:3:9"
},
"nodeType": "YulFunctionCall",
"src": "17849:14:9"
},
{
"hexValue": "466565207472616e73666572206661696c6564",
"kind": "string",
"nodeType": "YulLiteral",
"src": "17865:21:9",
"type": "",
"value": "Fee transfer failed"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "17842:6:9"
},
"nodeType": "YulFunctionCall",
"src": "17842:45:9"
},
"nodeType": "YulExpressionStatement",
"src": "17842:45:9"
}
]
},
"name": "store_literal_in_memory_5ce83e457e48ac9624285a3c527b5c2f9ccbef788eaf8b73a2271dc0a760bc56",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "17823:6:9",
"type": ""
}
],
"src": "17725:169:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "18046:220:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "18056:74:9",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "18122:3:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "18127:2:9",
"type": "",
"value": "19"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "18063:58:9"
},
"nodeType": "YulFunctionCall",
"src": "18063:67:9"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "18056:3:9"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "18228:3:9"
}
],
"functionName": {
"name": "store_literal_in_memory_5ce83e457e48ac9624285a3c527b5c2f9ccbef788eaf8b73a2271dc0a760bc56",
"nodeType": "YulIdentifier",
"src": "18139:88:9"
},
"nodeType": "YulFunctionCall",
"src": "18139:93:9"
},
"nodeType": "YulExpressionStatement",
"src": "18139:93:9"
},
{
"nodeType": "YulAssignment",
"src": "18241:19:9",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "18252:3:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "18257:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "18248:3:9"
},
"nodeType": "YulFunctionCall",
"src": "18248:12:9"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "18241:3:9"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_5ce83e457e48ac9624285a3c527b5c2f9ccbef788eaf8b73a2271dc0a760bc56_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "18034:3:9",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "18042:3:9",
"type": ""
}
],
"src": "17900:366:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "18443:248:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "18453:26:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "18465:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "18476:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "18461:3:9"
},
"nodeType": "YulFunctionCall",
"src": "18461:18:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "18453:4:9"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "18500:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "18511:1:9",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "18496:3:9"
},
"nodeType": "YulFunctionCall",
"src": "18496:17:9"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "18519:4:9"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "18525:9:9"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "18515:3:9"
},
"nodeType": "YulFunctionCall",
"src": "18515:20:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "18489:6:9"
},
"nodeType": "YulFunctionCall",
"src": "18489:47:9"
},
"nodeType": "YulExpressionStatement",
"src": "18489:47:9"
},
{
"nodeType": "YulAssignment",
"src": "18545:139:9",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "18679:4:9"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_5ce83e457e48ac9624285a3c527b5c2f9ccbef788eaf8b73a2271dc0a760bc56_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "18553:124:9"
},
"nodeType": "YulFunctionCall",
"src": "18553:131:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "18545:4:9"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_5ce83e457e48ac9624285a3c527b5c2f9ccbef788eaf8b73a2271dc0a760bc56__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "18423:9:9",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "18438:4:9",
"type": ""
}
],
"src": "18272:419:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "18803:59:9",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "18825:6:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "18833:1:9",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "18821:3:9"
},
"nodeType": "YulFunctionCall",
"src": "18821:14:9"
},
{
"hexValue": "496e76616c69642061646472657373",
"kind": "string",
"nodeType": "YulLiteral",
"src": "18837:17:9",
"type": "",
"value": "Invalid address"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "18814:6:9"
},
"nodeType": "YulFunctionCall",
"src": "18814:41:9"
},
"nodeType": "YulExpressionStatement",
"src": "18814:41:9"
}
]
},
"name": "store_literal_in_memory_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "18795:6:9",
"type": ""
}
],
"src": "18697:165:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "19014:220:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "19024:74:9",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "19090:3:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "19095:2:9",
"type": "",
"value": "15"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "19031:58:9"
},
"nodeType": "YulFunctionCall",
"src": "19031:67:9"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "19024:3:9"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "19196:3:9"
}
],
"functionName": {
"name": "store_literal_in_memory_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226",
"nodeType": "YulIdentifier",
"src": "19107:88:9"
},
"nodeType": "YulFunctionCall",
"src": "19107:93:9"
},
"nodeType": "YulExpressionStatement",
"src": "19107:93:9"
},
{
"nodeType": "YulAssignment",
"src": "19209:19:9",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "19220:3:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "19225:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "19216:3:9"
},
"nodeType": "YulFunctionCall",
"src": "19216:12:9"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "19209:3:9"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "19002:3:9",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "19010:3:9",
"type": ""
}
],
"src": "18868:366:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "19411:248:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "19421:26:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "19433:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "19444:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "19429:3:9"
},
"nodeType": "YulFunctionCall",
"src": "19429:18:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "19421:4:9"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "19468:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "19479:1:9",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "19464:3:9"
},
"nodeType": "YulFunctionCall",
"src": "19464:17:9"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "19487:4:9"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "19493:9:9"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "19483:3:9"
},
"nodeType": "YulFunctionCall",
"src": "19483:20:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "19457:6:9"
},
"nodeType": "YulFunctionCall",
"src": "19457:47:9"
},
"nodeType": "YulExpressionStatement",
"src": "19457:47:9"
},
{
"nodeType": "YulAssignment",
"src": "19513:139:9",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "19647:4:9"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "19521:124:9"
},
"nodeType": "YulFunctionCall",
"src": "19521:131:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "19513:4:9"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "19391:9:9",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "19406:4:9",
"type": ""
}
],
"src": "19240:419:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "19819:288:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "19829:26:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "19841:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "19852:2:9",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "19837:3:9"
},
"nodeType": "YulFunctionCall",
"src": "19837:18:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "19829:4:9"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "19909:6:9"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "19922:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "19933:1:9",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "19918:3:9"
},
"nodeType": "YulFunctionCall",
"src": "19918:17:9"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "19865:43:9"
},
"nodeType": "YulFunctionCall",
"src": "19865:71:9"
},
"nodeType": "YulExpressionStatement",
"src": "19865:71:9"
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "19990:6:9"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "20003:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "20014:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "19999:3:9"
},
"nodeType": "YulFunctionCall",
"src": "19999:18:9"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "19946:43:9"
},
"nodeType": "YulFunctionCall",
"src": "19946:72:9"
},
"nodeType": "YulExpressionStatement",
"src": "19946:72:9"
},
{
"expression": {
"arguments": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "20072:6:9"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "20085:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "20096:2:9",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "20081:3:9"
},
"nodeType": "YulFunctionCall",
"src": "20081:18:9"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "20028:43:9"
},
"nodeType": "YulFunctionCall",
"src": "20028:72:9"
},
"nodeType": "YulExpressionStatement",
"src": "20028:72:9"
}
]
},
"name": "abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "19775:9:9",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "19787:6:9",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "19795:6:9",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "19803:6:9",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "19814:4:9",
"type": ""
}
],
"src": "19665:442:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "20166:32:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "20176:16:9",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "20187:5:9"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "20176:7:9"
}
]
}
]
},
"name": "cleanup_t_rational_0_by_1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "20148:5:9",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "20158:7:9",
"type": ""
}
],
"src": "20113:85:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "20272:90:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "20282:74:9",
"value": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "20348:5:9"
}
],
"functionName": {
"name": "cleanup_t_rational_0_by_1",
"nodeType": "YulIdentifier",
"src": "20322:25:9"
},
"nodeType": "YulFunctionCall",
"src": "20322:32:9"
}
],
"functionName": {
"name": "identity",
"nodeType": "YulIdentifier",
"src": "20313:8:9"
},
"nodeType": "YulFunctionCall",
"src": "20313:42:9"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "20295:17:9"
},
"nodeType": "YulFunctionCall",
"src": "20295:61:9"
},
"variableNames": [
{
"name": "converted",
"nodeType": "YulIdentifier",
"src": "20282:9:9"
}
]
}
]
},
"name": "convert_t_rational_0_by_1_to_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "20252:5:9",
"type": ""
}
],
"returnVariables": [
{
"name": "converted",
"nodeType": "YulTypedName",
"src": "20262:9:9",
"type": ""
}
],
"src": "20204:158:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "20441:74:9",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "20458:3:9"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "20502:5:9"
}
],
"functionName": {
"name": "convert_t_rational_0_by_1_to_t_uint256",
"nodeType": "YulIdentifier",
"src": "20463:38:9"
},
"nodeType": "YulFunctionCall",
"src": "20463:45:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "20451:6:9"
},
"nodeType": "YulFunctionCall",
"src": "20451:58:9"
},
"nodeType": "YulExpressionStatement",
"src": "20451:58:9"
}
]
},
"name": "abi_encode_t_rational_0_by_1_to_t_uint256_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "20429:5:9",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "20436:3:9",
"type": ""
}
],
"src": "20368:147:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "20655:214:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "20665:26:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "20677:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "20688:2:9",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "20673:3:9"
},
"nodeType": "YulFunctionCall",
"src": "20673:18:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "20665:4:9"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "20745:6:9"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "20758:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "20769:1:9",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "20754:3:9"
},
"nodeType": "YulFunctionCall",
"src": "20754:17:9"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "20701:43:9"
},
"nodeType": "YulFunctionCall",
"src": "20701:71:9"
},
"nodeType": "YulExpressionStatement",
"src": "20701:71:9"
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "20834:6:9"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "20847:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "20858:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "20843:3:9"
},
"nodeType": "YulFunctionCall",
"src": "20843:18:9"
}
],
"functionName": {
"name": "abi_encode_t_rational_0_by_1_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "20782:51:9"
},
"nodeType": "YulFunctionCall",
"src": "20782:80:9"
},
"nodeType": "YulExpressionStatement",
"src": "20782:80:9"
}
]
},
"name": "abi_encode_tuple_t_address_t_rational_0_by_1__to_t_address_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "20619:9:9",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "20631:6:9",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "20639:6:9",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "20650:4:9",
"type": ""
}
],
"src": "20521:348:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "20981:64:9",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "21003:6:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "21011:1:9",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "20999:3:9"
},
"nodeType": "YulFunctionCall",
"src": "20999:14:9"
},
{
"hexValue": "526573657420617070726f7665206661696c6564",
"kind": "string",
"nodeType": "YulLiteral",
"src": "21015:22:9",
"type": "",
"value": "Reset approve failed"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "20992:6:9"
},
"nodeType": "YulFunctionCall",
"src": "20992:46:9"
},
"nodeType": "YulExpressionStatement",
"src": "20992:46:9"
}
]
},
"name": "store_literal_in_memory_1c5bea35094fe394a8479878da42b451f251ca6f87f8c43cfd0f68b273722981",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "20973:6:9",
"type": ""
}
],
"src": "20875:170:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "21197:220:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "21207:74:9",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "21273:3:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "21278:2:9",
"type": "",
"value": "20"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "21214:58:9"
},
"nodeType": "YulFunctionCall",
"src": "21214:67:9"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "21207:3:9"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "21379:3:9"
}
],
"functionName": {
"name": "store_literal_in_memory_1c5bea35094fe394a8479878da42b451f251ca6f87f8c43cfd0f68b273722981",
"nodeType": "YulIdentifier",
"src": "21290:88:9"
},
"nodeType": "YulFunctionCall",
"src": "21290:93:9"
},
"nodeType": "YulExpressionStatement",
"src": "21290:93:9"
},
{
"nodeType": "YulAssignment",
"src": "21392:19:9",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "21403:3:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "21408:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "21399:3:9"
},
"nodeType": "YulFunctionCall",
"src": "21399:12:9"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "21392:3:9"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_1c5bea35094fe394a8479878da42b451f251ca6f87f8c43cfd0f68b273722981_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "21185:3:9",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "21193:3:9",
"type": ""
}
],
"src": "21051:366:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "21594:248:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "21604:26:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "21616:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "21627:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "21612:3:9"
},
"nodeType": "YulFunctionCall",
"src": "21612:18:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "21604:4:9"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "21651:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "21662:1:9",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "21647:3:9"
},
"nodeType": "YulFunctionCall",
"src": "21647:17:9"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "21670:4:9"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "21676:9:9"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "21666:3:9"
},
"nodeType": "YulFunctionCall",
"src": "21666:20:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "21640:6:9"
},
"nodeType": "YulFunctionCall",
"src": "21640:47:9"
},
"nodeType": "YulExpressionStatement",
"src": "21640:47:9"
},
{
"nodeType": "YulAssignment",
"src": "21696:139:9",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "21830:4:9"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_1c5bea35094fe394a8479878da42b451f251ca6f87f8c43cfd0f68b273722981_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "21704:124:9"
},
"nodeType": "YulFunctionCall",
"src": "21704:131:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "21696:4:9"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_1c5bea35094fe394a8479878da42b451f251ca6f87f8c43cfd0f68b273722981__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "21574:9:9",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "21589:4:9",
"type": ""
}
],
"src": "21423:419:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "21954:58:9",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "21976:6:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "21984:1:9",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "21972:3:9"
},
"nodeType": "YulFunctionCall",
"src": "21972:14:9"
},
{
"hexValue": "417070726f7665206661696c6564",
"kind": "string",
"nodeType": "YulLiteral",
"src": "21988:16:9",
"type": "",
"value": "Approve failed"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "21965:6:9"
},
"nodeType": "YulFunctionCall",
"src": "21965:40:9"
},
"nodeType": "YulExpressionStatement",
"src": "21965:40:9"
}
]
},
"name": "store_literal_in_memory_894c45cdacdbd00f70cf0de394f039255fedfdb9b0f57bdf73c557235f0cae5c",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "21946:6:9",
"type": ""
}
],
"src": "21848:164:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "22164:220:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "22174:74:9",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "22240:3:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "22245:2:9",
"type": "",
"value": "14"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "22181:58:9"
},
"nodeType": "YulFunctionCall",
"src": "22181:67:9"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "22174:3:9"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "22346:3:9"
}
],
"functionName": {
"name": "store_literal_in_memory_894c45cdacdbd00f70cf0de394f039255fedfdb9b0f57bdf73c557235f0cae5c",
"nodeType": "YulIdentifier",
"src": "22257:88:9"
},
"nodeType": "YulFunctionCall",
"src": "22257:93:9"
},
"nodeType": "YulExpressionStatement",
"src": "22257:93:9"
},
{
"nodeType": "YulAssignment",
"src": "22359:19:9",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "22370:3:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "22375:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "22366:3:9"
},
"nodeType": "YulFunctionCall",
"src": "22366:12:9"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "22359:3:9"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_894c45cdacdbd00f70cf0de394f039255fedfdb9b0f57bdf73c557235f0cae5c_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "22152:3:9",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "22160:3:9",
"type": ""
}
],
"src": "22018:366:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "22561:248:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "22571:26:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "22583:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "22594:2:9",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "22579:3:9"
},
"nodeType": "YulFunctionCall",
"src": "22579:18:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "22571:4:9"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "22618:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "22629:1:9",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "22614:3:9"
},
"nodeType": "YulFunctionCall",
"src": "22614:17:9"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "22637:4:9"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "22643:9:9"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "22633:3:9"
},
"nodeType": "YulFunctionCall",
"src": "22633:20:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "22607:6:9"
},
"nodeType": "YulFunctionCall",
"src": "22607:47:9"
},
"nodeType": "YulExpressionStatement",
"src": "22607:47:9"
},
{
"nodeType": "YulAssignment",
"src": "22663:139:9",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "22797:4:9"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_894c45cdacdbd00f70cf0de394f039255fedfdb9b0f57bdf73c557235f0cae5c_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "22671:124:9"
},
"nodeType": "YulFunctionCall",
"src": "22671:131:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "22663:4:9"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_894c45cdacdbd00f70cf0de394f039255fedfdb9b0f57bdf73c557235f0cae5c__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "22541:9:9",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "22556:4:9",
"type": ""
}
],
"src": "22390:419:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "22870:53:9",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "22887:3:9"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "22910:5:9"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "22892:17:9"
},
"nodeType": "YulFunctionCall",
"src": "22892:24:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "22880:6:9"
},
"nodeType": "YulFunctionCall",
"src": "22880:37:9"
},
"nodeType": "YulExpressionStatement",
"src": "22880:37:9"
}
]
},
"name": "abi_encode_t_address_to_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "22858:5:9",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "22865:3:9",
"type": ""
}
],
"src": "22815:108:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "22982:52:9",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "22999:3:9"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "23021:5:9"
}
],
"functionName": {
"name": "cleanup_t_uint24",
"nodeType": "YulIdentifier",
"src": "23004:16:9"
},
"nodeType": "YulFunctionCall",
"src": "23004:23:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "22992:6:9"
},
"nodeType": "YulFunctionCall",
"src": "22992:36:9"
},
"nodeType": "YulExpressionStatement",
"src": "22992:36:9"
}
]
},
"name": "abi_encode_t_uint24_to_t_uint24",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "22970:5:9",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "22977:3:9",
"type": ""
}
],
"src": "22929:105:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "23095:53:9",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "23112:3:9"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "23135:5:9"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "23117:17:9"
},
"nodeType": "YulFunctionCall",
"src": "23117:24:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "23105:6:9"
},
"nodeType": "YulFunctionCall",
"src": "23105:37:9"
},
"nodeType": "YulExpressionStatement",
"src": "23105:37:9"
}
]
},
"name": "abi_encode_t_uint256_to_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "23083:5:9",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "23090:3:9",
"type": ""
}
],
"src": "23040:108:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "23209:53:9",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "23226:3:9"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "23249:5:9"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "23231:17:9"
},
"nodeType": "YulFunctionCall",
"src": "23231:24:9"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "23219:6:9"
},
"nodeType": "YulFunctionCall",
"src": "23219:37:9"
},
"nodeType": "YulExpressionStatement",
"src": "23219:37:9"
}
]
},
"name": "abi_encode_t_uint160_to_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "23197:5:9",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "23204:3:9",
"type": ""
}
],
"src": "23154:108:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "23506:1479:9",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "23516:28:9",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "23532:3:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "23537:6:9",
"type": "",
"value": "0x0100"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "23528:3:9"
},
"nodeType": "YulFunctionCall",
"src": "23528:16:9"
},
"variables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "23520:4:9",
"type": ""
}
]
},
{
"nodeType": "YulBlock",
"src": "23554:167:9",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "23592:43:9",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "23622:5:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "23629:4:9",
"type": "",
"value": "0x00"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "23618:3:9"
},
"nodeType": "YulFunctionCall",
"src": "23618:16:9"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "23612:5:9"
},
"nodeType": "YulFunctionCall",
"src": "23612:23:9"
},
"variables": [
{
"name": "memberValue0",
"nodeType": "YulTypedName",
"src": "23596:12:9",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "memberValue0",
"nodeType": "YulIdentifier",
"src": "23682:12:9"
},
{
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "23700:3:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "23705:4:9",
"type": "",
"value": "0x00"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "23696:3:9"
},
"nodeType": "YulFunctionCall",
"src": "23696:14:9"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address",
"nodeType": "YulIdentifier",
"src": "23648:33:9"
},
"nodeType": "YulFunctionCall",
"src": "23648:63:9"
},
"nodeType": "YulExpressionStatement",
"src": "23648:63:9"
}
]
},
{
"nodeType": "YulBlock",
"src": "23731:168:9",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "23770:43:9",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "23800:5:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "23807:4:9",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "23796:3:9"
},
"nodeType": "YulFunctionCall",
"src": "23796:16:9"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "23790:5:9"
},
"nodeType": "YulFunctionCall",
"src": "23790:23:9"
},
"variables": [
{
"name": "memberValue0",
"nodeType": "YulTypedName",
"src": "23774:12:9",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "memberValue0",
"nodeType": "YulIdentifier",
"src": "23860:12:9"
},
{
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "23878:3:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "23883:4:9",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "23874:3:9"
},
"nodeType": "YulFunctionCall",
"src": "23874:14:9"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address",
"nodeType": "YulIdentifier",
"src": "23826:33:9"
},
"nodeType": "YulFunctionCall",
"src": "23826:63:9"
},
"nodeType": "YulExpressionStatement",
"src": "23826:63:9"
}
]
},
{
"nodeType": "YulBlock",
"src": "23909:161:9",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "23943:43:9",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "23973:5:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "23980:4:9",
"type": "",
"value": "0x40"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "23969:3:9"
},
"nodeType": "YulFunctionCall",
"src": "23969:16:9"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "23963:5:9"
},
"nodeType": "YulFunctionCall",
"src": "23963:23:9"
},
"variables": [
{
"name": "memberValue0",
"nodeType": "YulTypedName",
"src": "23947:12:9",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "memberValue0",
"nodeType": "YulIdentifier",
"src": "24031:12:9"
},
{
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "24049:3:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "24054:4:9",
"type": "",
"value": "0x40"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "24045:3:9"
},
"nodeType": "YulFunctionCall",
"src": "24045:14:9"
}
],
"functionName": {
"name": "abi_encode_t_uint24_to_t_uint24",
"nodeType": "YulIdentifier",
"src": "23999:31:9"
},
"nodeType": "YulFunctionCall",
"src": "23999:61:9"
},
"nodeType": "YulExpressionStatement",
"src": "23999:61:9"
}
]
},
{
"nodeType": "YulBlock",
"src": "24080:169:9",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "24120:43:9",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "24150:5:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "24157:4:9",
"type": "",
"value": "0x60"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "24146:3:9"
},
"nodeType": "YulFunctionCall",
"src": "24146:16:9"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "24140:5:9"
},
"nodeType": "YulFunctionCall",
"src": "24140:23:9"
},
"variables": [
{
"name": "memberValue0",
"nodeType": "YulTypedName",
"src": "24124:12:9",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "memberValue0",
"nodeType": "YulIdentifier",
"src": "24210:12:9"
},
{
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "24228:3:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "24233:4:9",
"type": "",
"value": "0x60"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "24224:3:9"
},
"nodeType": "YulFunctionCall",
"src": "24224:14:9"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address",
"nodeType": "YulIdentifier",
"src": "24176:33:9"
},
"nodeType": "YulFunctionCall",
"src": "24176:63:9"
},
"nodeType": "YulExpressionStatement",
"src": "24176:63:9"
}
]
},
{
"nodeType": "YulBlock",
"src": "24259:168:9",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "24298:43:9",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "24328:5:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "24335:4:9",
"type": "",
"value": "0x80"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "24324:3:9"
},
"nodeType": "YulFunctionCall",
"src": "24324:16:9"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "24318:5:9"
},
"nodeType": "YulFunctionCall",
"src": "24318:23:9"
},
"variables": [
{
"name": "memberValue0",
"nodeType": "YulTypedName",
"src": "24302:12:9",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "memberValue0",
"nodeType": "YulIdentifier",
"src": "24388:12:9"
},
{
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "24406:3:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "24411:4:9",
"type": "",
"value": "0x80"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "24402:3:9"
},
"nodeType": "YulFunctionCall",
"src": "24402:14:9"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256",
"nodeType": "YulIdentifier",
"src": "24354:33:9"
},
"nodeType": "YulFunctionCall",
"src": "24354:63:9"
},
"nodeType": "YulExpressionStatement",
"src": "24354:63:9"
}
]
},
{
"nodeType": "YulBlock",
"src": "24437:168:9",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "24476:43:9",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "24506:5:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "24513:4:9",
"type": "",
"value": "0xa0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "24502:3:9"
},
"nodeType": "YulFunctionCall",
"src": "24502:16:9"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "24496:5:9"
},
"nodeType": "YulFunctionCall",
"src": "24496:23:9"
},
"variables": [
{
"name": "memberValue0",
"nodeType": "YulTypedName",
"src": "24480:12:9",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "memberValue0",
"nodeType": "YulIdentifier",
"src": "24566:12:9"
},
{
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "24584:3:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "24589:4:9",
"type": "",
"value": "0xa0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "24580:3:9"
},
"nodeType": "YulFunctionCall",
"src": "24580:14:9"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256",
"nodeType": "YulIdentifier",
"src": "24532:33:9"
},
"nodeType": "YulFunctionCall",
"src": "24532:63:9"
},
"nodeType": "YulExpressionStatement",
"src": "24532:63:9"
}
]
},
{
"nodeType": "YulBlock",
"src": "24615:176:9",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "24662:43:9",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "24692:5:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "24699:4:9",
"type": "",
"value": "0xc0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "24688:3:9"
},
"nodeType": "YulFunctionCall",
"src": "24688:16:9"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "24682:5:9"
},
"nodeType": "YulFunctionCall",
"src": "24682:23:9"
},
"variables": [
{
"name": "memberValue0",
"nodeType": "YulTypedName",
"src": "24666:12:9",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "memberValue0",
"nodeType": "YulIdentifier",
"src": "24752:12:9"
},
{
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "24770:3:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "24775:4:9",
"type": "",
"value": "0xc0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "24766:3:9"
},
"nodeType": "YulFunctionCall",
"src": "24766:14:9"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256",
"nodeType": "YulIdentifier",
"src": "24718:33:9"
},
"nodeType": "YulFunctionCall",
"src": "24718:63:9"
},
"nodeType": "YulExpressionStatement",
"src": "24718:63:9"
}
]
},
{
"nodeType": "YulBlock",
"src": "24801:177:9",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "24849:43:9",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "24879:5:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "24886:4:9",
"type": "",
"value": "0xe0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "24875:3:9"
},
"nodeType": "YulFunctionCall",
"src": "24875:16:9"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "24869:5:9"
},
"nodeType": "YulFunctionCall",
"src": "24869:23:9"
},
"variables": [
{
"name": "memberValue0",
"nodeType": "YulTypedName",
"src": "24853:12:9",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "memberValue0",
"nodeType": "YulIdentifier",
"src": "24939:12:9"
},
{
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "24957:3:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "24962:4:9",
"type": "",
"value": "0xe0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "24953:3:9"
},
"nodeType": "YulFunctionCall",
"src": "24953:14:9"
}
],
"functionName": {
"name": "abi_encode_t_uint160_to_t_uint160",
"nodeType": "YulIdentifier",
"src": "24905:33:9"
},
"nodeType": "YulFunctionCall",
"src": "24905:63:9"
},
"nodeType": "YulExpressionStatement",
"src": "24905:63:9"
}
]
}
]
},
"name": "abi_encode_t_struct$_ExactInputSingleParams_$971_memory_ptr_to_t_struct$_ExactInputSingleParams_$971_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "23493:5:9",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "23500:3:9",
"type": ""
}
],
"src": "23362:1623:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "25167:203:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "25177:27:9",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "25189:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "25200:3:9",
"type": "",
"value": "256"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "25185:3:9"
},
"nodeType": "YulFunctionCall",
"src": "25185:19:9"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "25177:4:9"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "25336:6:9"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "25349:9:9"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "25360:1:9",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "25345:3:9"
},
"nodeType": "YulFunctionCall",
"src": "25345:17:9"
}
],
"functionName": {
"name": "abi_encode_t_struct$_ExactInputSingleParams_$971_memory_ptr_to_t_struct$_ExactInputSingleParams_$971_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "25214:121:9"
},
"nodeType": "YulFunctionCall",
"src": "25214:149:9"
},
"nodeType": "YulExpressionStatement",
"src": "25214:149:9"
}
]
},
"name": "abi_encode_tuple_t_struct$_ExactInputSingleParams_$971_memory_ptr__to_t_struct$_ExactInputSingleParams_$971_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "25139:9:9",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "25151:6:9",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "25162:4:9",
"type": ""
}
],
"src": "24991:379:9"
},
{
"body": {
"nodeType": "YulBlock",
"src": "25420:147:9",
"statements": [
{
"nodeType": "YulAssignment",
"src": "25430:25:9",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "25453:1:9"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "25435:17:9"
},
"nodeType": "YulFunctionCall",
"src": "25435:20:9"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "25430:1:9"
}
]
},
{
"nodeType": "YulAssignment",
"src": "25464:25:9",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "25487:1:9"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "25469:17:9"
},
"nodeType": "YulFunctionCall",
"src": "25469:20:9"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "25464:1:9"
}
]
},
{
"nodeType": "YulAssignment",
"src": "25498:16:9",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "25509:1:9"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "25512:1:9"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "25505:3:9"
},
"nodeType": "YulFunctionCall",
"src": "25505:9:9"
},
"variableNames": [
{
"name": "sum",
"nodeType": "YulIdentifier",
"src": "25498:3:9"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "25538:22:9",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "25540:16:9"
},
"nodeType": "YulFunctionCall",
"src": "25540:18:9"
},
"nodeType": "YulExpressionStatement",
"src": "25540:18:9"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "25530:1:9"
},
{
"name": "sum",
"nodeType": "YulIdentifier",
"src": "25533:3:9"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "25527:2:9"
},
"nodeType": "YulFunctionCall",
"src": "25527:10:9"
},
"nodeType": "YulIf",
"src": "25524:36:9"
}
]
},
"name": "checked_add_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "25407:1:9",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "25410:1:9",
"type": ""
}
],
"returnVariables": [
{
"name": "sum",
"nodeType": "YulTypedName",
"src": "25416:3:9",
"type": ""
}
],
"src": "25376:191:9"
}
]
},
"contents": "{\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\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 copy_memory_to_memory_with_cleanup(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 mstore(add(dst, length), 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_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_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0, tail)\n\n }\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint8(value) -> cleaned {\n cleaned := and(value, 0xff)\n }\n\n function abi_encode_t_uint8_to_t_uint8_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint8(value))\n }\n\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint8_to_t_uint8_fromStack(value0, add(headStart, 0))\n\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint160_to_t_uint160(value) -> converted {\n converted := cleanup_t_uint160(identity(cleanup_t_uint160(value)))\n }\n\n function convert_t_uint160_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_uint160(value)\n }\n\n function convert_t_contract$_IERC20_$877_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_address(value)\n }\n\n function abi_encode_t_contract$_IERC20_$877_to_t_address_fromStack(value, pos) {\n mstore(pos, convert_t_contract$_IERC20_$877_to_t_address(value))\n }\n\n function abi_encode_tuple_t_contract$_IERC20_$877__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_contract$_IERC20_$877_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function convert_t_contract$_ISwapRouter_$1047_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_address(value)\n }\n\n function abi_encode_t_contract$_ISwapRouter_$1047_to_t_address_fromStack(value, pos) {\n mstore(pos, convert_t_contract$_ISwapRouter_$1047_to_t_address(value))\n }\n\n function abi_encode_tuple_t_contract$_ISwapRouter_$1047__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_contract$_ISwapRouter_$1047_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function cleanup_t_uint24(value) -> cleaned {\n cleaned := and(value, 0xffffff)\n }\n\n function abi_encode_t_uint24_to_t_uint24_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint24(value))\n }\n\n function abi_encode_tuple_t_uint24__to_t_uint24__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint24_to_t_uint24_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\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 store_literal_in_memory_cd97d2d12d01a00521d9f362b2a47de33f789d340363daf546d42fd4c88afc78(memPtr) {\n\n mstore(add(memPtr, 0), \"Invalid router\")\n\n }\n\n function abi_encode_t_stringliteral_cd97d2d12d01a00521d9f362b2a47de33f789d340363daf546d42fd4c88afc78_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 14)\n store_literal_in_memory_cd97d2d12d01a00521d9f362b2a47de33f789d340363daf546d42fd4c88afc78(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_cd97d2d12d01a00521d9f362b2a47de33f789d340363daf546d42fd4c88afc78__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_cd97d2d12d01a00521d9f362b2a47de33f789d340363daf546d42fd4c88afc78_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_01c242f1c806840acb94ec05d87d4647010419c53a053a581e0026b3f6467dbb(memPtr) {\n\n mstore(add(memPtr, 0), \"Amount must be > 0\")\n\n }\n\n function abi_encode_t_stringliteral_01c242f1c806840acb94ec05d87d4647010419c53a053a581e0026b3f6467dbb_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 18)\n store_literal_in_memory_01c242f1c806840acb94ec05d87d4647010419c53a053a581e0026b3f6467dbb(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_01c242f1c806840acb94ec05d87d4647010419c53a053a581e0026b3f6467dbb__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_01c242f1c806840acb94ec05d87d4647010419c53a053a581e0026b3f6467dbb_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n }\n\n function validator_revert_t_bool(value) {\n if iszero(eq(value, cleanup_t_bool(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bool_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_bool(value)\n }\n\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bool_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function store_literal_in_memory_25adaa6d082ce15f901e0d8a3d393e7462ef9edf2e6bc8321fa14d1615b6fc51(memPtr) {\n\n mstore(add(memPtr, 0), \"Transfer failed\")\n\n }\n\n function abi_encode_t_stringliteral_25adaa6d082ce15f901e0d8a3d393e7462ef9edf2e6bc8321fa14d1615b6fc51_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 15)\n store_literal_in_memory_25adaa6d082ce15f901e0d8a3d393e7462ef9edf2e6bc8321fa14d1615b6fc51(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_25adaa6d082ce15f901e0d8a3d393e7462ef9edf2e6bc8321fa14d1615b6fc51__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_25adaa6d082ce15f901e0d8a3d393e7462ef9edf2e6bc8321fa14d1615b6fc51_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function checked_mul_t_uint256(x, y) -> product {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n let product_raw := mul(x, y)\n product := cleanup_t_uint256(product_raw)\n\n // overflow, if x != 0 and y != product/x\n if iszero(\n or(\n iszero(x),\n eq(y, div(product, x))\n )\n ) { panic_error_0x11() }\n\n }\n\n function panic_error_0x12() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n\n function checked_div_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\n r := div(x, y)\n }\n\n function store_literal_in_memory_fe04d911e50fed7a8d87119b8245a4fe3d1680a0c0585e9b8d520c80ad21c380(memPtr) {\n\n mstore(add(memPtr, 0), \"Insufficient FWCI\")\n\n }\n\n function abi_encode_t_stringliteral_fe04d911e50fed7a8d87119b8245a4fe3d1680a0c0585e9b8d520c80ad21c380_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 17)\n store_literal_in_memory_fe04d911e50fed7a8d87119b8245a4fe3d1680a0c0585e9b8d520c80ad21c380(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_fe04d911e50fed7a8d87119b8245a4fe3d1680a0c0585e9b8d520c80ad21c380__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_fe04d911e50fed7a8d87119b8245a4fe3d1680a0c0585e9b8d520c80ad21c380_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_decode_t_uint256_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function store_literal_in_memory_6d6dda2f12e5f220efe63a7b0b5b9f247fd5190be76928866b7d7de36e3af6b2(memPtr) {\n\n mstore(add(memPtr, 0), \"Insufficient USDC\")\n\n }\n\n function abi_encode_t_stringliteral_6d6dda2f12e5f220efe63a7b0b5b9f247fd5190be76928866b7d7de36e3af6b2_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 17)\n store_literal_in_memory_6d6dda2f12e5f220efe63a7b0b5b9f247fd5190be76928866b7d7de36e3af6b2(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_6d6dda2f12e5f220efe63a7b0b5b9f247fd5190be76928866b7d7de36e3af6b2__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_6d6dda2f12e5f220efe63a7b0b5b9f247fd5190be76928866b7d7de36e3af6b2_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function checked_sub_t_uint256(x, y) -> diff {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n diff := sub(x, y)\n\n if gt(diff, x) { panic_error_0x11() }\n\n }\n\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n function store_literal_in_memory_032fb3428477d66798bdf7801f58a252d723dc1362b9dfac5726f85f81cca815(memPtr) {\n\n mstore(add(memPtr, 0), \"USDC transfer failed\")\n\n }\n\n function abi_encode_t_stringliteral_032fb3428477d66798bdf7801f58a252d723dc1362b9dfac5726f85f81cca815_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 20)\n store_literal_in_memory_032fb3428477d66798bdf7801f58a252d723dc1362b9dfac5726f85f81cca815(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_032fb3428477d66798bdf7801f58a252d723dc1362b9dfac5726f85f81cca815__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_032fb3428477d66798bdf7801f58a252d723dc1362b9dfac5726f85f81cca815_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_5ce83e457e48ac9624285a3c527b5c2f9ccbef788eaf8b73a2271dc0a760bc56(memPtr) {\n\n mstore(add(memPtr, 0), \"Fee transfer failed\")\n\n }\n\n function abi_encode_t_stringliteral_5ce83e457e48ac9624285a3c527b5c2f9ccbef788eaf8b73a2271dc0a760bc56_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 19)\n store_literal_in_memory_5ce83e457e48ac9624285a3c527b5c2f9ccbef788eaf8b73a2271dc0a760bc56(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_5ce83e457e48ac9624285a3c527b5c2f9ccbef788eaf8b73a2271dc0a760bc56__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_5ce83e457e48ac9624285a3c527b5c2f9ccbef788eaf8b73a2271dc0a760bc56_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226(memPtr) {\n\n mstore(add(memPtr, 0), \"Invalid address\")\n\n }\n\n function abi_encode_t_stringliteral_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 15)\n store_literal_in_memory_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226__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_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n }\n\n function cleanup_t_rational_0_by_1(value) -> cleaned {\n cleaned := value\n }\n\n function convert_t_rational_0_by_1_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_rational_0_by_1(value)))\n }\n\n function abi_encode_t_rational_0_by_1_to_t_uint256_fromStack(value, pos) {\n mstore(pos, convert_t_rational_0_by_1_to_t_uint256(value))\n }\n\n function abi_encode_tuple_t_address_t_rational_0_by_1__to_t_address_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_rational_0_by_1_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n function store_literal_in_memory_1c5bea35094fe394a8479878da42b451f251ca6f87f8c43cfd0f68b273722981(memPtr) {\n\n mstore(add(memPtr, 0), \"Reset approve failed\")\n\n }\n\n function abi_encode_t_stringliteral_1c5bea35094fe394a8479878da42b451f251ca6f87f8c43cfd0f68b273722981_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 20)\n store_literal_in_memory_1c5bea35094fe394a8479878da42b451f251ca6f87f8c43cfd0f68b273722981(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_1c5bea35094fe394a8479878da42b451f251ca6f87f8c43cfd0f68b273722981__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_1c5bea35094fe394a8479878da42b451f251ca6f87f8c43cfd0f68b273722981_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_894c45cdacdbd00f70cf0de394f039255fedfdb9b0f57bdf73c557235f0cae5c(memPtr) {\n\n mstore(add(memPtr, 0), \"Approve failed\")\n\n }\n\n function abi_encode_t_stringliteral_894c45cdacdbd00f70cf0de394f039255fedfdb9b0f57bdf73c557235f0cae5c_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 14)\n store_literal_in_memory_894c45cdacdbd00f70cf0de394f039255fedfdb9b0f57bdf73c557235f0cae5c(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_894c45cdacdbd00f70cf0de394f039255fedfdb9b0f57bdf73c557235f0cae5c__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_894c45cdacdbd00f70cf0de394f039255fedfdb9b0f57bdf73c557235f0cae5c_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_t_address_to_t_address(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_t_uint24_to_t_uint24(value, pos) {\n mstore(pos, cleanup_t_uint24(value))\n }\n\n function abi_encode_t_uint256_to_t_uint256(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_t_uint160_to_t_uint160(value, pos) {\n mstore(pos, cleanup_t_uint160(value))\n }\n\n // struct ISwapRouter.ExactInputSingleParams -> struct ISwapRouter.ExactInputSingleParams\n function abi_encode_t_struct$_ExactInputSingleParams_$971_memory_ptr_to_t_struct$_ExactInputSingleParams_$971_memory_ptr_fromStack(value, pos) {\n let tail := add(pos, 0x0100)\n\n {\n // tokenIn\n\n let memberValue0 := mload(add(value, 0x00))\n abi_encode_t_address_to_t_address(memberValue0, add(pos, 0x00))\n }\n\n {\n // tokenOut\n\n let memberValue0 := mload(add(value, 0x20))\n abi_encode_t_address_to_t_address(memberValue0, add(pos, 0x20))\n }\n\n {\n // fee\n\n let memberValue0 := mload(add(value, 0x40))\n abi_encode_t_uint24_to_t_uint24(memberValue0, add(pos, 0x40))\n }\n\n {\n // recipient\n\n let memberValue0 := mload(add(value, 0x60))\n abi_encode_t_address_to_t_address(memberValue0, add(pos, 0x60))\n }\n\n {\n // deadline\n\n let memberValue0 := mload(add(value, 0x80))\n abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0x80))\n }\n\n {\n // amountIn\n\n let memberValue0 := mload(add(value, 0xa0))\n abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0xa0))\n }\n\n {\n // amountOutMinimum\n\n let memberValue0 := mload(add(value, 0xc0))\n abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0xc0))\n }\n\n {\n // sqrtPriceLimitX96\n\n let memberValue0 := mload(add(value, 0xe0))\n abi_encode_t_uint160_to_t_uint160(memberValue0, add(pos, 0xe0))\n }\n\n }\n\n function abi_encode_tuple_t_struct$_ExactInputSingleParams_$971_memory_ptr__to_t_struct$_ExactInputSingleParams_$971_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 256)\n\n abi_encode_t_struct$_ExactInputSingleParams_$971_memory_ptr_to_t_struct$_ExactInputSingleParams_$971_memory_ptr_fromStack(value0, add(headStart, 0))\n\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n sum := add(x, y)\n\n if gt(x, sum) { panic_error_0x11() }\n\n }\n\n}\n",
"id": 9,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "608060405234801561000f575f80fd5b5060043610610140575f3560e01c8063715018a6116100b6578063c31c9c071161007a578063c31c9c0714610354578063db006a7514610372578063dd1b9c4a1461038e578063dd62ed3e146103ac578063e74b981b146103dc578063f2fde38b146103f857610140565b8063715018a6146102c25780638da5cb5b146102cc57806395d89b41146102ea578063a0712d6814610308578063a9059cbb1461032457610140565b80633e413bee116101085780633e413bee146101fe578063412736571461021c57806346904840146102385780634aa07e64146102565780635ad182d31461027457806370a082311461029257610140565b806306fdde0314610144578063095ea7b31461016257806318160ddd1461019257806323b872dd146101b0578063313ce567146101e0575b5f80fd5b61014c610414565b6040516101599190611ea9565b60405180910390f35b61017c60048036038101906101779190611f5a565b6104a4565b6040516101899190611fb2565b60405180910390f35b61019a6104c6565b6040516101a79190611fda565b60405180910390f35b6101ca60048036038101906101c59190611ff3565b6104cf565b6040516101d79190611fb2565b60405180910390f35b6101e86104fd565b6040516101f5919061205e565b60405180910390f35b610206610505565b60405161021391906120d2565b60405180910390f35b610236600480360381019061023191906120eb565b61052a565b005b6102406105e3565b60405161024d9190612125565b60405180910390f35b61025e610608565b60405161026b91906120d2565b60405180910390f35b61027c61062d565b60405161028991906120d2565b60405180910390f35b6102ac60048036038101906102a791906120eb565b610652565b6040516102b99190611fda565b60405180910390f35b6102ca610697565b005b6102d46106aa565b6040516102e19190612125565b60405180910390f35b6102f26106d2565b6040516102ff9190611ea9565b60405180910390f35b610322600480360381019061031d919061213e565b610762565b005b61033e60048036038101906103399190611f5a565b610950565b60405161034b9190611fb2565b60405180910390f35b61035c610972565b6040516103699190612189565b60405180910390f35b61038c6004803603810190610387919061213e565b610997565b005b610396610d9e565b6040516103a391906121bf565b60405180910390f35b6103c660048036038101906103c191906121d8565b610da4565b6040516103d39190611fda565b60405180910390f35b6103f660048036038101906103f191906120eb565b610e26565b005b610412600480360381019061040d91906120eb565b610edf565b005b60606003805461042390612243565b80601f016020809104026020016040519081016040528092919081815260200182805461044f90612243565b801561049a5780601f106104715761010080835404028352916020019161049a565b820191905f5260205f20905b81548152906001019060200180831161047d57829003601f168201915b5050505050905090565b5f806104ae610f63565b90506104bb818585610f6a565b600191505092915050565b5f600254905090565b5f806104d9610f63565b90506104e6858285610f7c565b6104f185858561100f565b60019150509392505050565b5f6012905090565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6105326110ff565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036105a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610597906122bd565b60405180910390fd5b8060095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61069f6110ff565b6106a85f611186565b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546106e190612243565b80601f016020809104026020016040519081016040528092919081815260200182805461070d90612243565b80156107585780601f1061072f57610100808354040283529160200191610758565b820191905f5260205f20905b81548152906001019060200180831161073b57829003601f168201915b5050505050905090565b5f81116107a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079b90612325565b60405180910390fd5b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b815260040161080293929190612343565b6020604051808303815f875af115801561081e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061084291906123a2565b610881576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087890612417565b60405180910390fd5b5f60646046836108919190612462565b61089b91906124d0565b90505f60466028836108ad9190612462565b6108b791906124d0565b90505f6046601e846108c99190612462565b6108d391906124d0565b905061090060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611249565b61092b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682611249565b5f64e8d4a510008561093d9190612462565b905061094933826115a2565b5050505050565b5f8061095a610f63565b905061096781858561100f565b600191505092915050565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b806109a133610652565b10156109e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d99061254a565b60405180910390fd5b6109ec3382611621565b5f64e8d4a51000826109fe91906124d0565b9050610a2a60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166116a0565b610a5460075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166116a0565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610aaf9190612125565b602060405180830381865afa158015610aca573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aee919061257c565b905081811015610b33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2a906125f1565b60405180910390fd5b5f6064600184610b439190612462565b610b4d91906124d0565b90505f8184610b5c919061260f565b905060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610bba929190612642565b6020604051808303815f875af1158015610bd6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bfa91906123a2565b610c39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c30906126b3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff16600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015610c9557505f82115b15610d975760085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401610d17929190612642565b6020604051808303815f875af1158015610d33573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d5791906123a2565b610d96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8d9061271b565b60405180910390fd5b5b5050505050565b610bb881565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610e2e6110ff565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9390612783565b60405180910390fd5b80600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610ee76110ff565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f57575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610f4e9190612125565b60405180910390fd5b610f6081611186565b50565b5f33905090565b610f778383836001611a37565b505050565b5f610f878484610da4565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156110095781811015610ffa578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401610ff1939291906127a1565b60405180910390fd5b61100884848484035f611a37565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361107f575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016110769190612125565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110ef575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016110e69190612125565b60405180910390fd5b6110fa838383611c06565b505050565b611107610f63565b73ffffffffffffffffffffffffffffffffffffffff166111256106aa565b73ffffffffffffffffffffffffffffffffffffffff161461118457611148610f63565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161117b9190612125565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f81031561159e5760085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165f6040518363ffffffff1660e01b81526004016112ce92919061280f565b6020604051808303815f875af11580156112ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061130e91906123a2565b61134d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134490612880565b60405180910390fd5b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016113ca929190612642565b6020604051808303815f875af11580156113e6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061140a91906123a2565b611449576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611440906128e8565b60405180910390fd5b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663414bf38960405180610100016040528060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001610bb862ffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff1681526020014281526020018481526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b815260040161155c91906129e2565b6020604051808303815f875af1158015611578573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061159c919061257c565b505b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611612575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016116099190612125565b60405180910390fd5b61161d5f8383611c06565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611691575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016116889190612125565b60405180910390fd5b61169c825f83611c06565b5050565b5f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016116da9190612125565b602060405180830381865afa1580156116f5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611719919061257c565b90505f81036117285750611a34565b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165f6040518363ffffffff1660e01b815260040161178492919061280f565b6020604051808303815f875af11580156117a0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117c491906123a2565b611803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fa90612880565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161185f929190612642565b6020604051808303815f875af115801561187b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061189f91906123a2565b6118de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d5906128e8565b60405180910390fd5b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663414bf3896040518061010001604052808573ffffffffffffffffffffffffffffffffffffffff16815260200160085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001610bb862ffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff1681526020014281526020018481526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b81526004016119f191906129e2565b6020604051808303815f875af1158015611a0d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a31919061257c565b50505b50565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611aa7575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401611a9e9190612125565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b17575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401611b0e9190612125565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015611c00578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051611bf79190611fda565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c56578060025f828254611c4a91906129fc565b92505081905550611d24565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611cdf578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401611cd6939291906127a1565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d6b578060025f8282540392505081905550611db5565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e129190611fda565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611e56578082015181840152602081019050611e3b565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611e7b82611e1f565b611e858185611e29565b9350611e95818560208601611e39565b611e9e81611e61565b840191505092915050565b5f6020820190508181035f830152611ec18184611e71565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611ef682611ecd565b9050919050565b611f0681611eec565b8114611f10575f80fd5b50565b5f81359050611f2181611efd565b92915050565b5f819050919050565b611f3981611f27565b8114611f43575f80fd5b50565b5f81359050611f5481611f30565b92915050565b5f8060408385031215611f7057611f6f611ec9565b5b5f611f7d85828601611f13565b9250506020611f8e85828601611f46565b9150509250929050565b5f8115159050919050565b611fac81611f98565b82525050565b5f602082019050611fc55f830184611fa3565b92915050565b611fd481611f27565b82525050565b5f602082019050611fed5f830184611fcb565b92915050565b5f805f6060848603121561200a57612009611ec9565b5b5f61201786828701611f13565b935050602061202886828701611f13565b925050604061203986828701611f46565b9150509250925092565b5f60ff82169050919050565b61205881612043565b82525050565b5f6020820190506120715f83018461204f565b92915050565b5f819050919050565b5f61209a61209561209084611ecd565b612077565b611ecd565b9050919050565b5f6120ab82612080565b9050919050565b5f6120bc826120a1565b9050919050565b6120cc816120b2565b82525050565b5f6020820190506120e55f8301846120c3565b92915050565b5f60208284031215612100576120ff611ec9565b5b5f61210d84828501611f13565b91505092915050565b61211f81611eec565b82525050565b5f6020820190506121385f830184612116565b92915050565b5f6020828403121561215357612152611ec9565b5b5f61216084828501611f46565b91505092915050565b5f612173826120a1565b9050919050565b61218381612169565b82525050565b5f60208201905061219c5f83018461217a565b92915050565b5f62ffffff82169050919050565b6121b9816121a2565b82525050565b5f6020820190506121d25f8301846121b0565b92915050565b5f80604083850312156121ee576121ed611ec9565b5b5f6121fb85828601611f13565b925050602061220c85828601611f13565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061225a57607f821691505b60208210810361226d5761226c612216565b5b50919050565b7f496e76616c696420726f757465720000000000000000000000000000000000005f82015250565b5f6122a7600e83611e29565b91506122b282612273565b602082019050919050565b5f6020820190508181035f8301526122d48161229b565b9050919050565b7f416d6f756e74206d757374206265203e203000000000000000000000000000005f82015250565b5f61230f601283611e29565b915061231a826122db565b602082019050919050565b5f6020820190508181035f83015261233c81612303565b9050919050565b5f6060820190506123565f830186612116565b6123636020830185612116565b6123706040830184611fcb565b949350505050565b61238181611f98565b811461238b575f80fd5b50565b5f8151905061239c81612378565b92915050565b5f602082840312156123b7576123b6611ec9565b5b5f6123c48482850161238e565b91505092915050565b7f5472616e73666572206661696c656400000000000000000000000000000000005f82015250565b5f612401600f83611e29565b915061240c826123cd565b602082019050919050565b5f6020820190508181035f83015261242e816123f5565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61246c82611f27565b915061247783611f27565b925082820261248581611f27565b9150828204841483151761249c5761249b612435565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6124da82611f27565b91506124e583611f27565b9250826124f5576124f46124a3565b5b828204905092915050565b7f496e73756666696369656e7420465743490000000000000000000000000000005f82015250565b5f612534601183611e29565b915061253f82612500565b602082019050919050565b5f6020820190508181035f83015261256181612528565b9050919050565b5f8151905061257681611f30565b92915050565b5f6020828403121561259157612590611ec9565b5b5f61259e84828501612568565b91505092915050565b7f496e73756666696369656e7420555344430000000000000000000000000000005f82015250565b5f6125db601183611e29565b91506125e6826125a7565b602082019050919050565b5f6020820190508181035f830152612608816125cf565b9050919050565b5f61261982611f27565b915061262483611f27565b925082820390508181111561263c5761263b612435565b5b92915050565b5f6040820190506126555f830185612116565b6126626020830184611fcb565b9392505050565b7f55534443207472616e73666572206661696c65640000000000000000000000005f82015250565b5f61269d601483611e29565b91506126a882612669565b602082019050919050565b5f6020820190508181035f8301526126ca81612691565b9050919050565b7f466565207472616e73666572206661696c6564000000000000000000000000005f82015250565b5f612705601383611e29565b9150612710826126d1565b602082019050919050565b5f6020820190508181035f830152612732816126f9565b9050919050565b7f496e76616c6964206164647265737300000000000000000000000000000000005f82015250565b5f61276d600f83611e29565b915061277882612739565b602082019050919050565b5f6020820190508181035f83015261279a81612761565b9050919050565b5f6060820190506127b45f830186612116565b6127c16020830185611fcb565b6127ce6040830184611fcb565b949350505050565b5f819050919050565b5f6127f96127f46127ef846127d6565b612077565b611f27565b9050919050565b612809816127df565b82525050565b5f6040820190506128225f830185612116565b61282f6020830184612800565b9392505050565b7f526573657420617070726f7665206661696c65640000000000000000000000005f82015250565b5f61286a601483611e29565b915061287582612836565b602082019050919050565b5f6020820190508181035f8301526128978161285e565b9050919050565b7f417070726f7665206661696c65640000000000000000000000000000000000005f82015250565b5f6128d2600e83611e29565b91506128dd8261289e565b602082019050919050565b5f6020820190508181035f8301526128ff816128c6565b9050919050565b61290f81611eec565b82525050565b61291e816121a2565b82525050565b61292d81611f27565b82525050565b61293c81611ecd565b82525050565b61010082015f8201516129575f850182612906565b50602082015161296a6020850182612906565b50604082015161297d6040850182612915565b5060608201516129906060850182612906565b5060808201516129a36080850182612924565b5060a08201516129b660a0850182612924565b5060c08201516129c960c0850182612924565b5060e08201516129dc60e0850182612933565b50505050565b5f610100820190506129f65f830184612942565b92915050565b5f612a0682611f27565b9150612a1183611f27565b9250828201905080821115612a2957612a28612435565b5b9291505056fea26469706673582212201ff31236184462700372e4d8e631aea728b1ddc8002742a410336b2d6206ca3564736f6c63430008140033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x140 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x715018A6 GT PUSH2 0xB6 JUMPI DUP1 PUSH4 0xC31C9C07 GT PUSH2 0x7A JUMPI DUP1 PUSH4 0xC31C9C07 EQ PUSH2 0x354 JUMPI DUP1 PUSH4 0xDB006A75 EQ PUSH2 0x372 JUMPI DUP1 PUSH4 0xDD1B9C4A EQ PUSH2 0x38E JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x3AC JUMPI DUP1 PUSH4 0xE74B981B EQ PUSH2 0x3DC JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x3F8 JUMPI PUSH2 0x140 JUMP JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x2C2 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x2CC JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x2EA JUMPI DUP1 PUSH4 0xA0712D68 EQ PUSH2 0x308 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x324 JUMPI PUSH2 0x140 JUMP JUMPDEST DUP1 PUSH4 0x3E413BEE GT PUSH2 0x108 JUMPI DUP1 PUSH4 0x3E413BEE EQ PUSH2 0x1FE JUMPI DUP1 PUSH4 0x41273657 EQ PUSH2 0x21C JUMPI DUP1 PUSH4 0x46904840 EQ PUSH2 0x238 JUMPI DUP1 PUSH4 0x4AA07E64 EQ PUSH2 0x256 JUMPI DUP1 PUSH4 0x5AD182D3 EQ PUSH2 0x274 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x292 JUMPI PUSH2 0x140 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x144 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x162 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x192 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1B0 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1E0 JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x14C PUSH2 0x414 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x159 SWAP2 SWAP1 PUSH2 0x1EA9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x17C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x177 SWAP2 SWAP1 PUSH2 0x1F5A JUMP JUMPDEST PUSH2 0x4A4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x189 SWAP2 SWAP1 PUSH2 0x1FB2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x19A PUSH2 0x4C6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A7 SWAP2 SWAP1 PUSH2 0x1FDA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1CA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1C5 SWAP2 SWAP1 PUSH2 0x1FF3 JUMP JUMPDEST PUSH2 0x4CF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D7 SWAP2 SWAP1 PUSH2 0x1FB2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1E8 PUSH2 0x4FD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F5 SWAP2 SWAP1 PUSH2 0x205E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x206 PUSH2 0x505 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x213 SWAP2 SWAP1 PUSH2 0x20D2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x236 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x231 SWAP2 SWAP1 PUSH2 0x20EB JUMP JUMPDEST PUSH2 0x52A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x240 PUSH2 0x5E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x24D SWAP2 SWAP1 PUSH2 0x2125 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x25E PUSH2 0x608 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x26B SWAP2 SWAP1 PUSH2 0x20D2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x27C PUSH2 0x62D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x289 SWAP2 SWAP1 PUSH2 0x20D2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2AC PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2A7 SWAP2 SWAP1 PUSH2 0x20EB JUMP JUMPDEST PUSH2 0x652 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2B9 SWAP2 SWAP1 PUSH2 0x1FDA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2CA PUSH2 0x697 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2D4 PUSH2 0x6AA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E1 SWAP2 SWAP1 PUSH2 0x2125 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2F2 PUSH2 0x6D2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2FF SWAP2 SWAP1 PUSH2 0x1EA9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x322 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x31D SWAP2 SWAP1 PUSH2 0x213E JUMP JUMPDEST PUSH2 0x762 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x33E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x339 SWAP2 SWAP1 PUSH2 0x1F5A JUMP JUMPDEST PUSH2 0x950 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x34B SWAP2 SWAP1 PUSH2 0x1FB2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x35C PUSH2 0x972 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x369 SWAP2 SWAP1 PUSH2 0x2189 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x38C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x387 SWAP2 SWAP1 PUSH2 0x213E JUMP JUMPDEST PUSH2 0x997 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x396 PUSH2 0xD9E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3A3 SWAP2 SWAP1 PUSH2 0x21BF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3C6 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3C1 SWAP2 SWAP1 PUSH2 0x21D8 JUMP JUMPDEST PUSH2 0xDA4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3D3 SWAP2 SWAP1 PUSH2 0x1FDA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3F6 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3F1 SWAP2 SWAP1 PUSH2 0x20EB JUMP JUMPDEST PUSH2 0xE26 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x412 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x40D SWAP2 SWAP1 PUSH2 0x20EB JUMP JUMPDEST PUSH2 0xEDF JUMP JUMPDEST STOP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x423 SWAP1 PUSH2 0x2243 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x44F SWAP1 PUSH2 0x2243 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x49A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x471 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x49A JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x47D JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x4AE PUSH2 0xF63 JUMP JUMPDEST SWAP1 POP PUSH2 0x4BB DUP2 DUP6 DUP6 PUSH2 0xF6A JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x2 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x4D9 PUSH2 0xF63 JUMP JUMPDEST SWAP1 POP PUSH2 0x4E6 DUP6 DUP3 DUP6 PUSH2 0xF7C JUMP JUMPDEST PUSH2 0x4F1 DUP6 DUP6 DUP6 PUSH2 0x100F JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x12 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x8 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x532 PUSH2 0x10FF JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x5A0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x597 SWAP1 PUSH2 0x22BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x9 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0xA PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x7 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x69F PUSH2 0x10FF JUMP JUMPDEST PUSH2 0x6A8 PUSH0 PUSH2 0x1186 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH1 0x5 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x6E1 SWAP1 PUSH2 0x2243 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x70D SWAP1 PUSH2 0x2243 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x758 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x72F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x758 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x73B JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP2 GT PUSH2 0x7A4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x79B SWAP1 PUSH2 0x2325 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x8 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x23B872DD CALLER ADDRESS DUP5 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x802 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2343 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x81E JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x842 SWAP2 SWAP1 PUSH2 0x23A2 JUMP JUMPDEST PUSH2 0x881 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x878 SWAP1 PUSH2 0x2417 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0x64 PUSH1 0x46 DUP4 PUSH2 0x891 SWAP2 SWAP1 PUSH2 0x2462 JUMP JUMPDEST PUSH2 0x89B SWAP2 SWAP1 PUSH2 0x24D0 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH1 0x46 PUSH1 0x28 DUP4 PUSH2 0x8AD SWAP2 SWAP1 PUSH2 0x2462 JUMP JUMPDEST PUSH2 0x8B7 SWAP2 SWAP1 PUSH2 0x24D0 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH1 0x46 PUSH1 0x1E DUP5 PUSH2 0x8C9 SWAP2 SWAP1 PUSH2 0x2462 JUMP JUMPDEST PUSH2 0x8D3 SWAP2 SWAP1 PUSH2 0x24D0 JUMP JUMPDEST SWAP1 POP PUSH2 0x900 PUSH1 0x6 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH2 0x1249 JUMP JUMPDEST PUSH2 0x92B PUSH1 0x7 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH2 0x1249 JUMP JUMPDEST PUSH0 PUSH5 0xE8D4A51000 DUP6 PUSH2 0x93D SWAP2 SWAP1 PUSH2 0x2462 JUMP JUMPDEST SWAP1 POP PUSH2 0x949 CALLER DUP3 PUSH2 0x15A2 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x95A PUSH2 0xF63 JUMP JUMPDEST SWAP1 POP PUSH2 0x967 DUP2 DUP6 DUP6 PUSH2 0x100F JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x9 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST DUP1 PUSH2 0x9A1 CALLER PUSH2 0x652 JUMP JUMPDEST LT ISZERO PUSH2 0x9E2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9D9 SWAP1 PUSH2 0x254A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x9EC CALLER DUP3 PUSH2 0x1621 JUMP JUMPDEST PUSH0 PUSH5 0xE8D4A51000 DUP3 PUSH2 0x9FE SWAP2 SWAP1 PUSH2 0x24D0 JUMP JUMPDEST SWAP1 POP PUSH2 0xA2A PUSH1 0x6 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x16A0 JUMP JUMPDEST PUSH2 0xA54 PUSH1 0x7 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x16A0 JUMP JUMPDEST PUSH0 PUSH1 0x8 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAAF SWAP2 SWAP1 PUSH2 0x2125 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xACA JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xAEE SWAP2 SWAP1 PUSH2 0x257C JUMP JUMPDEST SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0xB33 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB2A SWAP1 PUSH2 0x25F1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0x64 PUSH1 0x1 DUP5 PUSH2 0xB43 SWAP2 SWAP1 PUSH2 0x2462 JUMP JUMPDEST PUSH2 0xB4D SWAP2 SWAP1 PUSH2 0x24D0 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 DUP5 PUSH2 0xB5C SWAP2 SWAP1 PUSH2 0x260F JUMP JUMPDEST SWAP1 POP PUSH1 0x8 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB CALLER DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBBA SWAP3 SWAP2 SWAP1 PUSH2 0x2642 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBD6 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xBFA SWAP2 SWAP1 PUSH2 0x23A2 JUMP JUMPDEST PUSH2 0xC39 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC30 SWAP1 PUSH2 0x26B3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0xA PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO DUP1 ISZERO PUSH2 0xC95 JUMPI POP PUSH0 DUP3 GT JUMPDEST ISZERO PUSH2 0xD97 JUMPI PUSH1 0x8 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB PUSH1 0xA PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD17 SWAP3 SWAP2 SWAP1 PUSH2 0x2642 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD33 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD57 SWAP2 SWAP1 PUSH2 0x23A2 JUMP JUMPDEST PUSH2 0xD96 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD8D SWAP1 PUSH2 0x271B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0xBB8 DUP2 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xE2E PUSH2 0x10FF JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xE9C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE93 SWAP1 PUSH2 0x2783 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0xA PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH2 0xEE7 PUSH2 0x10FF JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xF57 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF4E SWAP2 SWAP1 PUSH2 0x2125 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xF60 DUP2 PUSH2 0x1186 JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0xF77 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1A37 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xF87 DUP5 DUP5 PUSH2 0xDA4 JUMP JUMPDEST SWAP1 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 LT ISZERO PUSH2 0x1009 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0xFFA JUMPI DUP3 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH32 0xFB8F41B200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xFF1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x27A1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1008 DUP5 DUP5 DUP5 DUP5 SUB PUSH0 PUSH2 0x1A37 JUMP JUMPDEST JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x107F JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1076 SWAP2 SWAP1 PUSH2 0x2125 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x10EF JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10E6 SWAP2 SWAP1 PUSH2 0x2125 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x10FA DUP4 DUP4 DUP4 PUSH2 0x1C06 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x1107 PUSH2 0xF63 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1125 PUSH2 0x6AA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1184 JUMPI PUSH2 0x1148 PUSH2 0xF63 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x117B SWAP2 SWAP1 PUSH2 0x2125 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH0 PUSH1 0x5 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x5 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH0 DUP2 SUB ISZERO PUSH2 0x159E JUMPI PUSH1 0x8 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x95EA7B3 PUSH1 0x9 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH0 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x12CE SWAP3 SWAP2 SWAP1 PUSH2 0x280F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x12EA JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x130E SWAP2 SWAP1 PUSH2 0x23A2 JUMP JUMPDEST PUSH2 0x134D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1344 SWAP1 PUSH2 0x2880 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x8 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x95EA7B3 PUSH1 0x9 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x13CA SWAP3 SWAP2 SWAP1 PUSH2 0x2642 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x13E6 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x140A SWAP2 SWAP1 PUSH2 0x23A2 JUMP JUMPDEST PUSH2 0x1449 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1440 SWAP1 PUSH2 0x28E8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x9 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x414BF389 PUSH1 0x40 MLOAD DUP1 PUSH2 0x100 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x8 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xBB8 PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD TIMESTAMP DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x155C SWAP2 SWAP1 PUSH2 0x29E2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1578 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x159C SWAP2 SWAP1 PUSH2 0x257C JUMP JUMPDEST POP JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1612 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1609 SWAP2 SWAP1 PUSH2 0x2125 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x161D PUSH0 DUP4 DUP4 PUSH2 0x1C06 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1691 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1688 SWAP2 SWAP1 PUSH2 0x2125 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x169C DUP3 PUSH0 DUP4 PUSH2 0x1C06 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x16DA SWAP2 SWAP1 PUSH2 0x2125 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x16F5 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1719 SWAP2 SWAP1 PUSH2 0x257C JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 SUB PUSH2 0x1728 JUMPI POP PUSH2 0x1A34 JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x95EA7B3 PUSH1 0x9 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH0 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1784 SWAP3 SWAP2 SWAP1 PUSH2 0x280F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x17A0 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x17C4 SWAP2 SWAP1 PUSH2 0x23A2 JUMP JUMPDEST PUSH2 0x1803 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x17FA SWAP1 PUSH2 0x2880 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x95EA7B3 PUSH1 0x9 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x185F SWAP3 SWAP2 SWAP1 PUSH2 0x2642 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x187B JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x189F SWAP2 SWAP1 PUSH2 0x23A2 JUMP JUMPDEST PUSH2 0x18DE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x18D5 SWAP1 PUSH2 0x28E8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x9 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x414BF389 PUSH1 0x40 MLOAD DUP1 PUSH2 0x100 ADD PUSH1 0x40 MSTORE DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x8 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xBB8 PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD TIMESTAMP DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19F1 SWAP2 SWAP1 PUSH2 0x29E2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1A0D JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A31 SWAP2 SWAP1 PUSH2 0x257C JUMP JUMPDEST POP POP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1AA7 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0xE602DF0500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A9E SWAP2 SWAP1 PUSH2 0x2125 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1B17 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x94280D6200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1B0E SWAP2 SWAP1 PUSH2 0x2125 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP1 ISZERO PUSH2 0x1C00 JUMPI DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD PUSH2 0x1BF7 SWAP2 SWAP1 PUSH2 0x1FDA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1C56 JUMPI DUP1 PUSH1 0x2 PUSH0 DUP3 DUP3 SLOAD PUSH2 0x1C4A SWAP2 SWAP1 PUSH2 0x29FC JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0x1D24 JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0x1CDF JUMPI DUP4 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH32 0xE450D38C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1CD6 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x27A1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP2 SUB PUSH0 DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP POP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1D6B JUMPI DUP1 PUSH1 0x2 PUSH0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0x1DB5 JUMP JUMPDEST DUP1 PUSH0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0x1E12 SWAP2 SWAP1 PUSH2 0x1FDA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1E56 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x1E3B JUMP JUMPDEST PUSH0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x1E7B DUP3 PUSH2 0x1E1F JUMP JUMPDEST PUSH2 0x1E85 DUP2 DUP6 PUSH2 0x1E29 JUMP JUMPDEST SWAP4 POP PUSH2 0x1E95 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1E39 JUMP JUMPDEST PUSH2 0x1E9E DUP2 PUSH2 0x1E61 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x1EC1 DUP2 DUP5 PUSH2 0x1E71 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x1EF6 DUP3 PUSH2 0x1ECD JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1F06 DUP2 PUSH2 0x1EEC JUMP JUMPDEST DUP2 EQ PUSH2 0x1F10 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1F21 DUP2 PUSH2 0x1EFD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1F39 DUP2 PUSH2 0x1F27 JUMP JUMPDEST DUP2 EQ PUSH2 0x1F43 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1F54 DUP2 PUSH2 0x1F30 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1F70 JUMPI PUSH2 0x1F6F PUSH2 0x1EC9 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x1F7D DUP6 DUP3 DUP7 ADD PUSH2 0x1F13 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x1F8E DUP6 DUP3 DUP7 ADD PUSH2 0x1F46 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1FAC DUP2 PUSH2 0x1F98 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1FC5 PUSH0 DUP4 ADD DUP5 PUSH2 0x1FA3 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1FD4 DUP2 PUSH2 0x1F27 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1FED PUSH0 DUP4 ADD DUP5 PUSH2 0x1FCB JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x200A JUMPI PUSH2 0x2009 PUSH2 0x1EC9 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x2017 DUP7 DUP3 DUP8 ADD PUSH2 0x1F13 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x2028 DUP7 DUP3 DUP8 ADD PUSH2 0x1F13 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x2039 DUP7 DUP3 DUP8 ADD PUSH2 0x1F46 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2058 DUP2 PUSH2 0x2043 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2071 PUSH0 DUP4 ADD DUP5 PUSH2 0x204F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x209A PUSH2 0x2095 PUSH2 0x2090 DUP5 PUSH2 0x1ECD JUMP JUMPDEST PUSH2 0x2077 JUMP JUMPDEST PUSH2 0x1ECD JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x20AB DUP3 PUSH2 0x2080 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x20BC DUP3 PUSH2 0x20A1 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x20CC DUP2 PUSH2 0x20B2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x20E5 PUSH0 DUP4 ADD DUP5 PUSH2 0x20C3 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2100 JUMPI PUSH2 0x20FF PUSH2 0x1EC9 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x210D DUP5 DUP3 DUP6 ADD PUSH2 0x1F13 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x211F DUP2 PUSH2 0x1EEC JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2138 PUSH0 DUP4 ADD DUP5 PUSH2 0x2116 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2153 JUMPI PUSH2 0x2152 PUSH2 0x1EC9 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x2160 DUP5 DUP3 DUP6 ADD PUSH2 0x1F46 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x2173 DUP3 PUSH2 0x20A1 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2183 DUP2 PUSH2 0x2169 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x219C PUSH0 DUP4 ADD DUP5 PUSH2 0x217A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0xFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x21B9 DUP2 PUSH2 0x21A2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x21D2 PUSH0 DUP4 ADD DUP5 PUSH2 0x21B0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x21EE JUMPI PUSH2 0x21ED PUSH2 0x1EC9 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x21FB DUP6 DUP3 DUP7 ADD PUSH2 0x1F13 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x220C DUP6 DUP3 DUP7 ADD PUSH2 0x1F13 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x225A JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x226D JUMPI PUSH2 0x226C PUSH2 0x2216 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x496E76616C696420726F75746572000000000000000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x22A7 PUSH1 0xE DUP4 PUSH2 0x1E29 JUMP JUMPDEST SWAP2 POP PUSH2 0x22B2 DUP3 PUSH2 0x2273 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x22D4 DUP2 PUSH2 0x229B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x416D6F756E74206D757374206265203E20300000000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x230F PUSH1 0x12 DUP4 PUSH2 0x1E29 JUMP JUMPDEST SWAP2 POP PUSH2 0x231A DUP3 PUSH2 0x22DB JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x233C DUP2 PUSH2 0x2303 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x2356 PUSH0 DUP4 ADD DUP7 PUSH2 0x2116 JUMP JUMPDEST PUSH2 0x2363 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2116 JUMP JUMPDEST PUSH2 0x2370 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x1FCB JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x2381 DUP2 PUSH2 0x1F98 JUMP JUMPDEST DUP2 EQ PUSH2 0x238B JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x239C DUP2 PUSH2 0x2378 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x23B7 JUMPI PUSH2 0x23B6 PUSH2 0x1EC9 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x23C4 DUP5 DUP3 DUP6 ADD PUSH2 0x238E JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x5472616E73666572206661696C65640000000000000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x2401 PUSH1 0xF DUP4 PUSH2 0x1E29 JUMP JUMPDEST SWAP2 POP PUSH2 0x240C DUP3 PUSH2 0x23CD JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x242E DUP2 PUSH2 0x23F5 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x246C DUP3 PUSH2 0x1F27 JUMP JUMPDEST SWAP2 POP PUSH2 0x2477 DUP4 PUSH2 0x1F27 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0x2485 DUP2 PUSH2 0x1F27 JUMP JUMPDEST SWAP2 POP DUP3 DUP3 DIV DUP5 EQ DUP4 ISZERO OR PUSH2 0x249C JUMPI PUSH2 0x249B PUSH2 0x2435 JUMP JUMPDEST JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x24DA DUP3 PUSH2 0x1F27 JUMP JUMPDEST SWAP2 POP PUSH2 0x24E5 DUP4 PUSH2 0x1F27 JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x24F5 JUMPI PUSH2 0x24F4 PUSH2 0x24A3 JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x496E73756666696369656E742046574349000000000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x2534 PUSH1 0x11 DUP4 PUSH2 0x1E29 JUMP JUMPDEST SWAP2 POP PUSH2 0x253F DUP3 PUSH2 0x2500 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x2561 DUP2 PUSH2 0x2528 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x2576 DUP2 PUSH2 0x1F30 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2591 JUMPI PUSH2 0x2590 PUSH2 0x1EC9 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x259E DUP5 DUP3 DUP6 ADD PUSH2 0x2568 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x496E73756666696369656E742055534443000000000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x25DB PUSH1 0x11 DUP4 PUSH2 0x1E29 JUMP JUMPDEST SWAP2 POP PUSH2 0x25E6 DUP3 PUSH2 0x25A7 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x2608 DUP2 PUSH2 0x25CF JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x2619 DUP3 PUSH2 0x1F27 JUMP JUMPDEST SWAP2 POP PUSH2 0x2624 DUP4 PUSH2 0x1F27 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0x263C JUMPI PUSH2 0x263B PUSH2 0x2435 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x2655 PUSH0 DUP4 ADD DUP6 PUSH2 0x2116 JUMP JUMPDEST PUSH2 0x2662 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1FCB JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x55534443207472616E73666572206661696C6564000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x269D PUSH1 0x14 DUP4 PUSH2 0x1E29 JUMP JUMPDEST SWAP2 POP PUSH2 0x26A8 DUP3 PUSH2 0x2669 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x26CA DUP2 PUSH2 0x2691 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x466565207472616E73666572206661696C656400000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x2705 PUSH1 0x13 DUP4 PUSH2 0x1E29 JUMP JUMPDEST SWAP2 POP PUSH2 0x2710 DUP3 PUSH2 0x26D1 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x2732 DUP2 PUSH2 0x26F9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x496E76616C696420616464726573730000000000000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x276D PUSH1 0xF DUP4 PUSH2 0x1E29 JUMP JUMPDEST SWAP2 POP PUSH2 0x2778 DUP3 PUSH2 0x2739 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x279A DUP2 PUSH2 0x2761 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x27B4 PUSH0 DUP4 ADD DUP7 PUSH2 0x2116 JUMP JUMPDEST PUSH2 0x27C1 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x1FCB JUMP JUMPDEST PUSH2 0x27CE PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x1FCB JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x27F9 PUSH2 0x27F4 PUSH2 0x27EF DUP5 PUSH2 0x27D6 JUMP JUMPDEST PUSH2 0x2077 JUMP JUMPDEST PUSH2 0x1F27 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2809 DUP2 PUSH2 0x27DF JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x2822 PUSH0 DUP4 ADD DUP6 PUSH2 0x2116 JUMP JUMPDEST PUSH2 0x282F PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2800 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x526573657420617070726F7665206661696C6564000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x286A PUSH1 0x14 DUP4 PUSH2 0x1E29 JUMP JUMPDEST SWAP2 POP PUSH2 0x2875 DUP3 PUSH2 0x2836 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x2897 DUP2 PUSH2 0x285E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x417070726F7665206661696C6564000000000000000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x28D2 PUSH1 0xE DUP4 PUSH2 0x1E29 JUMP JUMPDEST SWAP2 POP PUSH2 0x28DD DUP3 PUSH2 0x289E JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x28FF DUP2 PUSH2 0x28C6 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x290F DUP2 PUSH2 0x1EEC JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x291E DUP2 PUSH2 0x21A2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x292D DUP2 PUSH2 0x1F27 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x293C DUP2 PUSH2 0x1ECD JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x100 DUP3 ADD PUSH0 DUP3 ADD MLOAD PUSH2 0x2957 PUSH0 DUP6 ADD DUP3 PUSH2 0x2906 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x296A PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x2906 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x297D PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x2915 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x2990 PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x2906 JUMP JUMPDEST POP PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x29A3 PUSH1 0x80 DUP6 ADD DUP3 PUSH2 0x2924 JUMP JUMPDEST POP PUSH1 0xA0 DUP3 ADD MLOAD PUSH2 0x29B6 PUSH1 0xA0 DUP6 ADD DUP3 PUSH2 0x2924 JUMP JUMPDEST POP PUSH1 0xC0 DUP3 ADD MLOAD PUSH2 0x29C9 PUSH1 0xC0 DUP6 ADD DUP3 PUSH2 0x2924 JUMP JUMPDEST POP PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0x29DC PUSH1 0xE0 DUP6 ADD DUP3 PUSH2 0x2933 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x100 DUP3 ADD SWAP1 POP PUSH2 0x29F6 PUSH0 DUP4 ADD DUP5 PUSH2 0x2942 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x2A06 DUP3 PUSH2 0x1F27 JUMP JUMPDEST SWAP2 POP PUSH2 0x2A11 DUP4 PUSH2 0x1F27 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x2A29 JUMPI PUSH2 0x2A28 PUSH2 0x2435 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x1F RETURN SLT CALLDATASIZE XOR PREVRANDAO PUSH3 0x700372 0xE4 0xD8 0xE6 BALANCE 0xAE 0xA7 0x28 0xB1 0xDD 0xC8 STOP 0x27 TIMESTAMP LOG4 LT CALLER PUSH12 0x2D6206CA3564736F6C634300 ADDMOD EQ STOP CALLER ",
"sourceMap": "237:3815:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1760:89:2;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3979:186;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2830:97;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4757:244;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2688:82;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;353:18:8;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3877:173;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;414:27;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;323:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;294:19;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2985:116:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2293:101:0;;;:::i;:::-;;1638:85;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1962:93:2;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;937:582:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3296:178:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;379:29:8;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1526:706;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;448:38;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3532:140:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3703:168:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2543:215:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1760:89:2;1805:13;1837:5;1830:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1760:89;:::o;3979:186::-;4052:4;4068:13;4084:12;:10;:12::i;:::-;4068:28;;4106:31;4115:5;4122:7;4131:5;4106:8;:31::i;:::-;4154:4;4147:11;;;3979:186;;;;:::o;2830:97::-;2882:7;2908:12;;2901:19;;2830:97;:::o;4757:244::-;4844:4;4860:15;4878:12;:10;:12::i;:::-;4860:30;;4900:37;4916:4;4922:7;4931:5;4900:15;:37::i;:::-;4947:26;4957:4;4963:2;4967:5;4947:9;:26::i;:::-;4990:4;4983:11;;;4757:244;;;;;:::o;2688:82::-;2737:5;2761:2;2754:9;;2688:82;:::o;353:18:8:-;;;;;;;;;;;;;:::o;3877:173::-;1531:13:0;:11;:13::i;:::-;3977:1:8::1;3956:23;;:9;:23;;::::0;3948:50:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;4033:9;4008:10;;:35;;;;;;;;;;;;;;;;;;3877:173:::0;:::o;414:27::-;;;;;;;;;;;;;:::o;323:20::-;;;;;;;;;;;;;:::o;294:19::-;;;;;;;;;;;;;:::o;2985:116:2:-;3050:7;3076:9;:18;3086:7;3076:18;;;;;;;;;;;;;;;;3069:25;;2985:116;;;:::o;2293:101:0:-;1531:13;:11;:13::i;:::-;2357:30:::1;2384:1;2357:18;:30::i;:::-;2293:101::o:0;1638:85::-;1684:7;1710:6;;;;;;;;;;;1703:13;;1638:85;:::o;1962:93:2:-;2009:13;2041:7;2034:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1962:93;:::o;937:582:8:-;1011:1;998:10;:14;990:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;1053:4;;;;;;;;;;;:17;;;1071:10;1091:4;1098:10;1053:56;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1045:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;1140:20;1183:3;1177:2;1164:10;:15;;;;:::i;:::-;1163:23;;;;:::i;:::-;1140:46;;1197:20;1242:2;1236;1221:12;:17;;;;:::i;:::-;1220:24;;;;:::i;:::-;1197:47;;1254:22;1301:2;1295;1280:12;:17;;;;:::i;:::-;1279:24;;;;:::i;:::-;1254:49;;1314:32;1326:5;;;;;;;;;;;1333:12;1314:11;:32::i;:::-;1356:35;1368:6;;;;;;;;;;;1376:14;1356:11;:35::i;:::-;1402:18;1436:4;1423:10;:17;;;;:::i;:::-;1402:38;;1483:29;1489:10;1501;1483:5;:29::i;:::-;980:539;;;;937:582;:::o;3296:178:2:-;3365:4;3381:13;3397:12;:10;:12::i;:::-;3381:28;;3419:27;3429:5;3436:2;3440:5;3419:9;:27::i;:::-;3463:4;3456:11;;;3296:178;;;;:::o;379:29:8:-;;;;;;;;;;;;;:::o;1526:706::-;1614:10;1589:21;1599:10;1589:9;:21::i;:::-;:35;;1581:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;1656:29;1662:10;1674;1656:5;:29::i;:::-;1696:18;1730:4;1717:10;:17;;;;:::i;:::-;1696:38;;1745:18;1757:5;;;;;;;;;;;1745:11;:18::i;:::-;1773:19;1785:6;;;;;;;;;;;1773:11;:19::i;:::-;1803:17;1823:4;;;;;;;;;;;:14;;;1846:4;1823:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1803:49;;1883:10;1870:9;:23;;1862:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;1926:11;1959:3;1954:1;1941:10;:14;;;;:::i;:::-;1940:22;;;;:::i;:::-;1926:36;;1972:17;2005:3;1992:10;:16;;;;:::i;:::-;1972:36;;2027:4;;;;;;;;;;;:13;;;2041:10;2053:9;2027:36;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2019:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;2126:1;2102:26;;:12;;;;;;;;;;;:26;;;;:37;;;;;2138:1;2132:3;:7;2102:37;2098:128;;;2159:4;;;;;;;;;;;:13;;;2173:12;;;;;;;;;;;2187:3;2159:32;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2151:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;2098:128;1571:661;;;;1526:706;:::o;448:38::-;482:4;448:38;:::o;3532:140:2:-;3612:7;3638:11;:18;3650:5;3638:18;;;;;;;;;;;;;;;:27;3657:7;3638:27;;;;;;;;;;;;;;;;3631:34;;3532:140;;;;:::o;3703:168:8:-;1531:13:0;:11;:13::i;:::-;3807:1:8::1;3785:24;;:10;:24;;::::0;3777:52:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3854:10;3839:12;;:25;;;;;;;;;;;;;;;;;;3703:168:::0;:::o;2543:215:0:-;1531:13;:11;:13::i;:::-;2647:1:::1;2627:22;;:8;:22;;::::0;2623:91:::1;;2700:1;2672:31;;;;;;;;;;;:::i;:::-;;;;;;;;2623:91;2723:28;2742:8;2723:18;:28::i;:::-;2543:215:::0;:::o;656:96:5:-;709:7;735:10;728:17;;656:96;:::o;8707:128:2:-;8791:37;8800:5;8807:7;8816:5;8823:4;8791:8;:37::i;:::-;8707:128;;;:::o;10396:476::-;10495:24;10522:25;10532:5;10539:7;10522:9;:25::i;:::-;10495:52;;10580:17;10561:16;:36;10557:309;;;10636:5;10617:16;:24;10613:130;;;10695:7;10704:16;10722:5;10668:60;;;;;;;;;;;;;:::i;:::-;;;;;;;;10613:130;10784:57;10793:5;10800:7;10828:5;10809:16;:24;10835:5;10784:8;:57::i;:::-;10557:309;10485:387;10396:476;;;:::o;5374:300::-;5473:1;5457:18;;:4;:18;;;5453:86;;5525:1;5498:30;;;;;;;;;;;:::i;:::-;;;;;;;;5453:86;5566:1;5552:16;;:2;:16;;;5548:86;;5620:1;5591:32;;;;;;;;;;;:::i;:::-;;;;;;;;5548:86;5643:24;5651:4;5657:2;5661:5;5643:7;:24::i;:::-;5374:300;;;:::o;1796:162:0:-;1866:12;:10;:12::i;:::-;1855:23;;:7;:5;:7::i;:::-;:23;;;1851:101;;1928:12;:10;:12::i;:::-;1901:40;;;;;;;;;;;:::i;:::-;;;;;;;;1851:101;1796:162::o;2912:187::-;2985:16;3004:6;;;;;;;;;;;2985:25;;3029:8;3020:6;;:17;;;;;;;;;;;;;;;;;;3083:8;3052:40;;3073:8;3052:40;;;;;;;;;;;;2975:124;2912:187;:::o;2239:691:8:-;2330:1;2318:8;:13;2314:26;2333:7;2314:26;2358:4;;;;;;;;;;;:12;;;2379:10;;;;;;;;;;;2392:1;2358:36;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2350:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;2437:4;;;;;;;;;;;:12;;;2458:10;;;;;;;;;;;2471:8;2437:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2429:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;2510:10;;;;;;;;;;;:27;;;2551:362;;;;;;;;2621:4;;;;;;;;;;;2551:362;;;;;;2662:8;2551:362;;;;;;482:4;2551:362;;;;;;2739:4;2551:362;;;;;;2772:15;2551:362;;;;2815:8;2551:362;;;;2859:1;2551:362;;;;2897:1;2551:362;;;;;2510:413;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2239:691;;;:::o;7439:208:2:-;7528:1;7509:21;;:7;:21;;;7505:91;;7582:1;7553:32;;;;;;;;;;;:::i;:::-;;;;;;;;7505:91;7605:35;7621:1;7625:7;7634:5;7605:7;:35::i;:::-;7439:208;;:::o;7965:206::-;8054:1;8035:21;;:7;:21;;;8031:89;;8106:1;8079:30;;;;;;;;;;;:::i;:::-;;;;;;;;8031:89;8129:35;8137:7;8154:1;8158:5;8129:7;:35::i;:::-;7965:206;;:::o;2936:738:8:-;2992:16;3011:7;:17;;;3037:4;3011:32;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2992:51;;3069:1;3057:8;:13;3053:26;;3072:7;;;3053:26;3097:7;:15;;;3121:10;;;;;;;;;;;3134:1;3097:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3089:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;3179:7;:15;;;3203:10;;;;;;;;;;;3216:8;3179:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3171:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3255:10;;;;;;;;;;;:27;;;3296:361;;;;;;;;3366:7;3296:361;;;;;;3410:4;;;;;;;;;;;3296:361;;;;;;482:4;3296:361;;;;;;3483:4;3296:361;;;;;;3516:15;3296:361;;;;3559:8;3296:361;;;;3603:1;3296:361;;;;3641:1;3296:361;;;;;3255:412;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2982:692;2936:738;;:::o;9682:432:2:-;9811:1;9794:19;;:5;:19;;;9790:89;;9865:1;9836:32;;;;;;;;;;;:::i;:::-;;;;;;;;9790:89;9911:1;9892:21;;:7;:21;;;9888:90;;9964:1;9936:31;;;;;;;;;;;:::i;:::-;;;;;;;;9888:90;10017:5;9987:11;:18;9999:5;9987:18;;;;;;;;;;;;;;;:27;10006:7;9987:27;;;;;;;;;;;;;;;:35;;;;10036:9;10032:76;;;10082:7;10066:31;;10075:5;10066:31;;;10091:5;10066:31;;;;;;:::i;:::-;;;;;;;;10032:76;9682:432;;;;:::o;5989:1107::-;6094:1;6078:18;;:4;:18;;;6074:540;;6230:5;6214:12;;:21;;;;;;;:::i;:::-;;;;;;;;6074:540;;;6266:19;6288:9;:15;6298:4;6288:15;;;;;;;;;;;;;;;;6266:37;;6335:5;6321:11;:19;6317:115;;;6392:4;6398:11;6411:5;6367:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;6317:115;6584:5;6570:11;:19;6552:9;:15;6562:4;6552:15;;;;;;;;;;;;;;;:37;;;;6252:362;6074:540;6642:1;6628:16;;:2;:16;;;6624:425;;6807:5;6791:12;;:21;;;;;;;;;;;6624:425;;;7019:5;7002:9;:13;7012:2;7002:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;6624:425;7079:2;7064:25;;7073:4;7064:25;;;7083:5;7064:25;;;;;;:::i;:::-;;;;;;;;5989:1107;;;:::o;7:99:9:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:60::-;4881:3;4902:5;4895:12;;4853:60;;;:::o;4919:142::-;4969:9;5002:53;5020:34;5029:24;5047:5;5029:24;:::i;:::-;5020:34;:::i;:::-;5002:53;:::i;:::-;4989:66;;4919:142;;;:::o;5067:126::-;5117:9;5150:37;5181:5;5150:37;:::i;:::-;5137:50;;5067:126;;;:::o;5199:140::-;5263:9;5296:37;5327:5;5296:37;:::i;:::-;5283:50;;5199:140;;;:::o;5345:159::-;5446:51;5491:5;5446:51;:::i;:::-;5441:3;5434:64;5345:159;;:::o;5510:250::-;5617:4;5655:2;5644:9;5640:18;5632:26;;5668:85;5750:1;5739:9;5735:17;5726:6;5668:85;:::i;:::-;5510:250;;;;:::o;5766:329::-;5825:6;5874:2;5862:9;5853:7;5849:23;5845:32;5842:119;;;5880:79;;:::i;:::-;5842:119;6000:1;6025:53;6070:7;6061:6;6050:9;6046:22;6025:53;:::i;:::-;6015:63;;5971:117;5766:329;;;;:::o;6101:118::-;6188:24;6206:5;6188:24;:::i;:::-;6183:3;6176:37;6101:118;;:::o;6225:222::-;6318:4;6356:2;6345:9;6341:18;6333:26;;6369:71;6437:1;6426:9;6422:17;6413:6;6369:71;:::i;:::-;6225:222;;;;:::o;6453:329::-;6512:6;6561:2;6549:9;6540:7;6536:23;6532:32;6529:119;;;6567:79;;:::i;:::-;6529:119;6687:1;6712:53;6757:7;6748:6;6737:9;6733:22;6712:53;:::i;:::-;6702:63;;6658:117;6453:329;;;;:::o;6788:146::-;6858:9;6891:37;6922:5;6891:37;:::i;:::-;6878:50;;6788:146;;;:::o;6940:171::-;7047:57;7098:5;7047:57;:::i;:::-;7042:3;7035:70;6940:171;;:::o;7117:262::-;7230:4;7268:2;7257:9;7253:18;7245:26;;7281:91;7369:1;7358:9;7354:17;7345:6;7281:91;:::i;:::-;7117:262;;;;:::o;7385:91::-;7421:7;7461:8;7454:5;7450:20;7439:31;;7385:91;;;:::o;7482:115::-;7567:23;7584:5;7567:23;:::i;:::-;7562:3;7555:36;7482:115;;:::o;7603:218::-;7694:4;7732:2;7721:9;7717:18;7709:26;;7745:69;7811:1;7800:9;7796:17;7787:6;7745:69;:::i;:::-;7603:218;;;;:::o;7827:474::-;7895:6;7903;7952:2;7940:9;7931:7;7927:23;7923:32;7920:119;;;7958:79;;:::i;:::-;7920:119;8078:1;8103:53;8148:7;8139:6;8128:9;8124:22;8103:53;:::i;:::-;8093:63;;8049:117;8205:2;8231:53;8276:7;8267:6;8256:9;8252:22;8231:53;:::i;:::-;8221:63;;8176:118;7827:474;;;;;:::o;8307:180::-;8355:77;8352:1;8345:88;8452:4;8449:1;8442:15;8476:4;8473:1;8466:15;8493:320;8537:6;8574:1;8568:4;8564:12;8554:22;;8621:1;8615:4;8611:12;8642:18;8632:81;;8698:4;8690:6;8686:17;8676:27;;8632:81;8760:2;8752:6;8749:14;8729:18;8726:38;8723:84;;8779:18;;:::i;:::-;8723:84;8544:269;8493:320;;;:::o;8819:164::-;8959:16;8955:1;8947:6;8943:14;8936:40;8819:164;:::o;8989:366::-;9131:3;9152:67;9216:2;9211:3;9152:67;:::i;:::-;9145:74;;9228:93;9317:3;9228:93;:::i;:::-;9346:2;9341:3;9337:12;9330:19;;8989:366;;;:::o;9361:419::-;9527:4;9565:2;9554:9;9550:18;9542:26;;9614:9;9608:4;9604:20;9600:1;9589:9;9585:17;9578:47;9642:131;9768:4;9642:131;:::i;:::-;9634:139;;9361:419;;;:::o;9786:168::-;9926:20;9922:1;9914:6;9910:14;9903:44;9786:168;:::o;9960:366::-;10102:3;10123:67;10187:2;10182:3;10123:67;:::i;:::-;10116:74;;10199:93;10288:3;10199:93;:::i;:::-;10317:2;10312:3;10308:12;10301:19;;9960:366;;;:::o;10332:419::-;10498:4;10536:2;10525:9;10521:18;10513:26;;10585:9;10579:4;10575:20;10571:1;10560:9;10556:17;10549:47;10613:131;10739:4;10613:131;:::i;:::-;10605:139;;10332:419;;;:::o;10757:442::-;10906:4;10944:2;10933:9;10929:18;10921:26;;10957:71;11025:1;11014:9;11010:17;11001:6;10957:71;:::i;:::-;11038:72;11106:2;11095:9;11091:18;11082:6;11038:72;:::i;:::-;11120;11188:2;11177:9;11173:18;11164:6;11120:72;:::i;:::-;10757:442;;;;;;:::o;11205:116::-;11275:21;11290:5;11275:21;:::i;:::-;11268:5;11265:32;11255:60;;11311:1;11308;11301:12;11255:60;11205:116;:::o;11327:137::-;11381:5;11412:6;11406:13;11397:22;;11428:30;11452:5;11428:30;:::i;:::-;11327:137;;;;:::o;11470:345::-;11537:6;11586:2;11574:9;11565:7;11561:23;11557:32;11554:119;;;11592:79;;:::i;:::-;11554:119;11712:1;11737:61;11790:7;11781:6;11770:9;11766:22;11737:61;:::i;:::-;11727:71;;11683:125;11470:345;;;;:::o;11821:165::-;11961:17;11957:1;11949:6;11945:14;11938:41;11821:165;:::o;11992:366::-;12134:3;12155:67;12219:2;12214:3;12155:67;:::i;:::-;12148:74;;12231:93;12320:3;12231:93;:::i;:::-;12349:2;12344:3;12340:12;12333:19;;11992:366;;;:::o;12364:419::-;12530:4;12568:2;12557:9;12553:18;12545:26;;12617:9;12611:4;12607:20;12603:1;12592:9;12588:17;12581:47;12645:131;12771:4;12645:131;:::i;:::-;12637:139;;12364:419;;;:::o;12789:180::-;12837:77;12834:1;12827:88;12934:4;12931:1;12924:15;12958:4;12955:1;12948:15;12975:410;13015:7;13038:20;13056:1;13038:20;:::i;:::-;13033:25;;13072:20;13090:1;13072:20;:::i;:::-;13067:25;;13127:1;13124;13120:9;13149:30;13167:11;13149:30;:::i;:::-;13138:41;;13328:1;13319:7;13315:15;13312:1;13309:22;13289:1;13282:9;13262:83;13239:139;;13358:18;;:::i;:::-;13239:139;13023:362;12975:410;;;;:::o;13391:180::-;13439:77;13436:1;13429:88;13536:4;13533:1;13526:15;13560:4;13557:1;13550:15;13577:185;13617:1;13634:20;13652:1;13634:20;:::i;:::-;13629:25;;13668:20;13686:1;13668:20;:::i;:::-;13663:25;;13707:1;13697:35;;13712:18;;:::i;:::-;13697:35;13754:1;13751;13747:9;13742:14;;13577:185;;;;:::o;13768:167::-;13908:19;13904:1;13896:6;13892:14;13885:43;13768:167;:::o;13941:366::-;14083:3;14104:67;14168:2;14163:3;14104:67;:::i;:::-;14097:74;;14180:93;14269:3;14180:93;:::i;:::-;14298:2;14293:3;14289:12;14282:19;;13941:366;;;:::o;14313:419::-;14479:4;14517:2;14506:9;14502:18;14494:26;;14566:9;14560:4;14556:20;14552:1;14541:9;14537:17;14530:47;14594:131;14720:4;14594:131;:::i;:::-;14586:139;;14313:419;;;:::o;14738:143::-;14795:5;14826:6;14820:13;14811:22;;14842:33;14869:5;14842:33;:::i;:::-;14738:143;;;;:::o;14887:351::-;14957:6;15006:2;14994:9;14985:7;14981:23;14977:32;14974:119;;;15012:79;;:::i;:::-;14974:119;15132:1;15157:64;15213:7;15204:6;15193:9;15189:22;15157:64;:::i;:::-;15147:74;;15103:128;14887:351;;;;:::o;15244:167::-;15384:19;15380:1;15372:6;15368:14;15361:43;15244:167;:::o;15417:366::-;15559:3;15580:67;15644:2;15639:3;15580:67;:::i;:::-;15573:74;;15656:93;15745:3;15656:93;:::i;:::-;15774:2;15769:3;15765:12;15758:19;;15417:366;;;:::o;15789:419::-;15955:4;15993:2;15982:9;15978:18;15970:26;;16042:9;16036:4;16032:20;16028:1;16017:9;16013:17;16006:47;16070:131;16196:4;16070:131;:::i;:::-;16062:139;;15789:419;;;:::o;16214:194::-;16254:4;16274:20;16292:1;16274:20;:::i;:::-;16269:25;;16308:20;16326:1;16308:20;:::i;:::-;16303:25;;16352:1;16349;16345:9;16337:17;;16376:1;16370:4;16367:11;16364:37;;;16381:18;;:::i;:::-;16364:37;16214:194;;;;:::o;16414:332::-;16535:4;16573:2;16562:9;16558:18;16550:26;;16586:71;16654:1;16643:9;16639:17;16630:6;16586:71;:::i;:::-;16667:72;16735:2;16724:9;16720:18;16711:6;16667:72;:::i;:::-;16414:332;;;;;:::o;16752:170::-;16892:22;16888:1;16880:6;16876:14;16869:46;16752:170;:::o;16928:366::-;17070:3;17091:67;17155:2;17150:3;17091:67;:::i;:::-;17084:74;;17167:93;17256:3;17167:93;:::i;:::-;17285:2;17280:3;17276:12;17269:19;;16928:366;;;:::o;17300:419::-;17466:4;17504:2;17493:9;17489:18;17481:26;;17553:9;17547:4;17543:20;17539:1;17528:9;17524:17;17517:47;17581:131;17707:4;17581:131;:::i;:::-;17573:139;;17300:419;;;:::o;17725:169::-;17865:21;17861:1;17853:6;17849:14;17842:45;17725:169;:::o;17900:366::-;18042:3;18063:67;18127:2;18122:3;18063:67;:::i;:::-;18056:74;;18139:93;18228:3;18139:93;:::i;:::-;18257:2;18252:3;18248:12;18241:19;;17900:366;;;:::o;18272:419::-;18438:4;18476:2;18465:9;18461:18;18453:26;;18525:9;18519:4;18515:20;18511:1;18500:9;18496:17;18489:47;18553:131;18679:4;18553:131;:::i;:::-;18545:139;;18272:419;;;:::o;18697:165::-;18837:17;18833:1;18825:6;18821:14;18814:41;18697:165;:::o;18868:366::-;19010:3;19031:67;19095:2;19090:3;19031:67;:::i;:::-;19024:74;;19107:93;19196:3;19107:93;:::i;:::-;19225:2;19220:3;19216:12;19209:19;;18868:366;;;:::o;19240:419::-;19406:4;19444:2;19433:9;19429:18;19421:26;;19493:9;19487:4;19483:20;19479:1;19468:9;19464:17;19457:47;19521:131;19647:4;19521:131;:::i;:::-;19513:139;;19240:419;;;:::o;19665:442::-;19814:4;19852:2;19841:9;19837:18;19829:26;;19865:71;19933:1;19922:9;19918:17;19909:6;19865:71;:::i;:::-;19946:72;20014:2;20003:9;19999:18;19990:6;19946:72;:::i;:::-;20028;20096:2;20085:9;20081:18;20072:6;20028:72;:::i;:::-;19665:442;;;;;;:::o;20113:85::-;20158:7;20187:5;20176:16;;20113:85;;;:::o;20204:158::-;20262:9;20295:61;20313:42;20322:32;20348:5;20322:32;:::i;:::-;20313:42;:::i;:::-;20295:61;:::i;:::-;20282:74;;20204:158;;;:::o;20368:147::-;20463:45;20502:5;20463:45;:::i;:::-;20458:3;20451:58;20368:147;;:::o;20521:348::-;20650:4;20688:2;20677:9;20673:18;20665:26;;20701:71;20769:1;20758:9;20754:17;20745:6;20701:71;:::i;:::-;20782:80;20858:2;20847:9;20843:18;20834:6;20782:80;:::i;:::-;20521:348;;;;;:::o;20875:170::-;21015:22;21011:1;21003:6;20999:14;20992:46;20875:170;:::o;21051:366::-;21193:3;21214:67;21278:2;21273:3;21214:67;:::i;:::-;21207:74;;21290:93;21379:3;21290:93;:::i;:::-;21408:2;21403:3;21399:12;21392:19;;21051:366;;;:::o;21423:419::-;21589:4;21627:2;21616:9;21612:18;21604:26;;21676:9;21670:4;21666:20;21662:1;21651:9;21647:17;21640:47;21704:131;21830:4;21704:131;:::i;:::-;21696:139;;21423:419;;;:::o;21848:164::-;21988:16;21984:1;21976:6;21972:14;21965:40;21848:164;:::o;22018:366::-;22160:3;22181:67;22245:2;22240:3;22181:67;:::i;:::-;22174:74;;22257:93;22346:3;22257:93;:::i;:::-;22375:2;22370:3;22366:12;22359:19;;22018:366;;;:::o;22390:419::-;22556:4;22594:2;22583:9;22579:18;22571:26;;22643:9;22637:4;22633:20;22629:1;22618:9;22614:17;22607:47;22671:131;22797:4;22671:131;:::i;:::-;22663:139;;22390:419;;;:::o;22815:108::-;22892:24;22910:5;22892:24;:::i;:::-;22887:3;22880:37;22815:108;;:::o;22929:105::-;23004:23;23021:5;23004:23;:::i;:::-;22999:3;22992:36;22929:105;;:::o;23040:108::-;23117:24;23135:5;23117:24;:::i;:::-;23112:3;23105:37;23040:108;;:::o;23154:::-;23231:24;23249:5;23231:24;:::i;:::-;23226:3;23219:37;23154:108;;:::o;23362:1623::-;23537:6;23532:3;23528:16;23629:4;23622:5;23618:16;23612:23;23648:63;23705:4;23700:3;23696:14;23682:12;23648:63;:::i;:::-;23554:167;23807:4;23800:5;23796:16;23790:23;23826:63;23883:4;23878:3;23874:14;23860:12;23826:63;:::i;:::-;23731:168;23980:4;23973:5;23969:16;23963:23;23999:61;24054:4;24049:3;24045:14;24031:12;23999:61;:::i;:::-;23909:161;24157:4;24150:5;24146:16;24140:23;24176:63;24233:4;24228:3;24224:14;24210:12;24176:63;:::i;:::-;24080:169;24335:4;24328:5;24324:16;24318:23;24354:63;24411:4;24406:3;24402:14;24388:12;24354:63;:::i;:::-;24259:168;24513:4;24506:5;24502:16;24496:23;24532:63;24589:4;24584:3;24580:14;24566:12;24532:63;:::i;:::-;24437:168;24699:4;24692:5;24688:16;24682:23;24718:63;24775:4;24770:3;24766:14;24752:12;24718:63;:::i;:::-;24615:176;24886:4;24879:5;24875:16;24869:23;24905:63;24962:4;24957:3;24953:14;24939:12;24905:63;:::i;:::-;24801:177;23506:1479;23362:1623;;:::o;24991:379::-;25162:4;25200:3;25189:9;25185:19;25177:27;;25214:149;25360:1;25349:9;25345:17;25336:6;25214:149;:::i;:::-;24991:379;;;;:::o;25376:191::-;25416:3;25435:20;25453:1;25435:20;:::i;:::-;25430:25;;25469:20;25487:1;25469:20;:::i;:::-;25464:25;;25512:1;25509;25505:9;25498:16;;25533:3;25530:1;25527:10;25524:36;;;25540:18;;:::i;:::-;25524:36;25376:191;;;;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "2170600",
"executionCost": "infinite",
"totalCost": "infinite"
},
"external": {
"POOL_FEE()": "397",
"allowance(address,address)": "infinite",
"approve(address,uint256)": "infinite",
"balanceOf(address)": "2962",
"cbBTC()": "infinite",
"decimals()": "450",
"feeRecipient()": "2575",
"mint(uint256)": "infinite",
"name()": "infinite",
"owner()": "2560",
"redeem(uint256)": "infinite",
"renounceOwnership()": "infinite",
"setFeeRecipient(address)": "infinite",
"setSwapRouter(address)": "infinite",
"swapRouter()": "infinite",
"symbol()": "infinite",
"totalSupply()": "2500",
"transfer(address,uint256)": "infinite",
"transferFrom(address,address,uint256)": "infinite",
"transferOwnership(address)": "infinite",
"usdc()": "infinite",
"wstETH()": "infinite"
},
"internal": {
"_swapToUSDC(contract IERC20)": "infinite",
"_swapUSDCto(contract IERC20,uint256)": "infinite"
}
},
"methodIdentifiers": {
"POOL_FEE()": "dd1b9c4a",
"allowance(address,address)": "dd62ed3e",
"approve(address,uint256)": "095ea7b3",
"balanceOf(address)": "70a08231",
"cbBTC()": "5ad182d3",
"decimals()": "313ce567",
"feeRecipient()": "46904840",
"mint(uint256)": "a0712d68",
"name()": "06fdde03",
"owner()": "8da5cb5b",
"redeem(uint256)": "db006a75",
"renounceOwnership()": "715018a6",
"setFeeRecipient(address)": "e74b981b",
"setSwapRouter(address)": "41273657",
"swapRouter()": "c31c9c07",
"symbol()": "95d89b41",
"totalSupply()": "18160ddd",
"transfer(address,uint256)": "a9059cbb",
"transferFrom(address,address,uint256)": "23b872dd",
"transferOwnership(address)": "f2fde38b",
"usdc()": "3e413bee",
"wstETH()": "4aa07e64"
}
},
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_cbBTC",
"type": "address"
},
{
"internalType": "address",
"name": "_wstETH",
"type": "address"
},
{
"internalType": "address",
"name": "_usdc",
"type": "address"
},
{
"internalType": "address",
"name": "_swapRouter",
"type": "address"
},
{
"internalType": "address",
"name": "_feeRecipient",
"type": "address"
},
{
"internalType": "address",
"name": "initialOwner",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "allowance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientAllowance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientBalance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "approver",
"type": "address"
}
],
"name": "ERC20InvalidApprover",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"name": "ERC20InvalidReceiver",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "ERC20InvalidSender",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "ERC20InvalidSpender",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "OwnableInvalidOwner",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "OwnableUnauthorizedAccount",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [],
"name": "POOL_FEE",
"outputs": [
{
"internalType": "uint24",
"name": "",
"type": "uint24"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "cbBTC",
"outputs": [
{
"internalType": "contract IERC20",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "feeRecipient",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "usdcAmount",
"type": "uint256"
}
],
"name": "mint",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "fwciAmount",
"type": "uint256"
}
],
"name": "redeem",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_recipient",
"type": "address"
}
],
"name": "setFeeRecipient",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newRouter",
"type": "address"
}
],
"name": "setSwapRouter",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "swapRouter",
"outputs": [
{
"internalType": "contract ISwapRouter",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "usdc",
"outputs": [
{
"internalType": "contract IERC20",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "wstETH",
"outputs": [
{
"internalType": "contract IERC20",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.20+commit.a1b79de6"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_cbBTC",
"type": "address"
},
{
"internalType": "address",
"name": "_wstETH",
"type": "address"
},
{
"internalType": "address",
"name": "_usdc",
"type": "address"
},
{
"internalType": "address",
"name": "_swapRouter",
"type": "address"
},
{
"internalType": "address",
"name": "_feeRecipient",
"type": "address"
},
{
"internalType": "address",
"name": "initialOwner",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "allowance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientAllowance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientBalance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "approver",
"type": "address"
}
],
"name": "ERC20InvalidApprover",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"name": "ERC20InvalidReceiver",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "ERC20InvalidSender",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "ERC20InvalidSpender",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "OwnableInvalidOwner",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "OwnableUnauthorizedAccount",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [],
"name": "POOL_FEE",
"outputs": [
{
"internalType": "uint24",
"name": "",
"type": "uint24"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "cbBTC",
"outputs": [
{
"internalType": "contract IERC20",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "feeRecipient",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "usdcAmount",
"type": "uint256"
}
],
"name": "mint",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "fwciAmount",
"type": "uint256"
}
],
"name": "redeem",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_recipient",
"type": "address"
}
],
"name": "setFeeRecipient",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newRouter",
"type": "address"
}
],
"name": "setSwapRouter",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "swapRouter",
"outputs": [
{
"internalType": "contract ISwapRouter",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "usdc",
"outputs": [
{
"internalType": "contract IERC20",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "wstETH",
"outputs": [
{
"internalType": "contract IERC20",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
}
],
"devdoc": {
"errors": {
"ERC20InsufficientAllowance(address,uint256,uint256)": [
{
"details": "Indicates a failure with the `spender`’s `allowance`. Used in transfers.",
"params": {
"allowance": "Amount of tokens a `spender` is allowed to operate with.",
"needed": "Minimum amount required to perform a transfer.",
"spender": "Address that may be allowed to operate on tokens without being their owner."
}
}
],
"ERC20InsufficientBalance(address,uint256,uint256)": [
{
"details": "Indicates an error related to the current `balance` of a `sender`. Used in transfers.",
"params": {
"balance": "Current balance for the interacting account.",
"needed": "Minimum amount required to perform a transfer.",
"sender": "Address whose tokens are being transferred."
}
}
],
"ERC20InvalidApprover(address)": [
{
"details": "Indicates a failure with the `approver` of a token to be approved. Used in approvals.",
"params": {
"approver": "Address initiating an approval operation."
}
}
],
"ERC20InvalidReceiver(address)": [
{
"details": "Indicates a failure with the token `receiver`. Used in transfers.",
"params": {
"receiver": "Address to which tokens are being transferred."
}
}
],
"ERC20InvalidSender(address)": [
{
"details": "Indicates a failure with the token `sender`. Used in transfers.",
"params": {
"sender": "Address whose tokens are being transferred."
}
}
],
"ERC20InvalidSpender(address)": [
{
"details": "Indicates a failure with the `spender` to be approved. Used in approvals.",
"params": {
"spender": "Address that may be allowed to operate on tokens without being their owner."
}
}
],
"OwnableInvalidOwner(address)": [
{
"details": "The owner is not a valid owner account. (eg. `address(0)`)"
}
],
"OwnableUnauthorizedAccount(address)": [
{
"details": "The caller account is not authorized to perform an operation."
}
]
},
"events": {
"Approval(address,address,uint256)": {
"details": "Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."
},
"Transfer(address,address,uint256)": {
"details": "Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."
}
},
"kind": "dev",
"methods": {
"allowance(address,address)": {
"details": "See {IERC20-allowance}."
},
"approve(address,uint256)": {
"details": "See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."
},
"balanceOf(address)": {
"details": "See {IERC20-balanceOf}."
},
"decimals()": {
"details": "Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."
},
"name()": {
"details": "Returns the name of the token."
},
"owner()": {
"details": "Returns the address of the current owner."
},
"renounceOwnership()": {
"details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."
},
"symbol()": {
"details": "Returns the symbol of the token, usually a shorter version of the name."
},
"totalSupply()": {
"details": "See {IERC20-totalSupply}."
},
"transfer(address,uint256)": {
"details": "See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."
},
"transferFrom(address,address,uint256)": {
"details": "See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."
},
"transferOwnership(address)": {
"details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
}
},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/fwci.sol": "FidelweissCoreIndex"
},
"evmVersion": "shanghai",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"@openzeppelin/contracts/access/Ownable.sol": {
"keccak256": "0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb",
"license": "MIT",
"urls": [
"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6",
"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"
]
},
"@openzeppelin/contracts/interfaces/draft-IERC6093.sol": {
"keccak256": "0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b",
"license": "MIT",
"urls": [
"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b",
"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz"
]
},
"@openzeppelin/contracts/token/ERC20/ERC20.sol": {
"keccak256": "0x41f6b3b9e030561e7896dbef372b499cc8d418a80c3884a4d65a68f2fdc7493a",
"license": "MIT",
"urls": [
"bzz-raw://80b0992a11b2fd1f75ced2971696d07bbd1d19ce6761dd50d8b6d48aa435f42a",
"dweb:/ipfs/QmZDe5xd2gXHjVEjv9t8C1KQ68K5T8qFwdinwQgmP3rF3x"
]
},
"@openzeppelin/contracts/token/ERC20/IERC20.sol": {
"keccak256": "0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7",
"license": "MIT",
"urls": [
"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db",
"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"
]
},
"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": {
"keccak256": "0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330",
"license": "MIT",
"urls": [
"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf",
"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r"
]
},
"@openzeppelin/contracts/utils/Context.sol": {
"keccak256": "0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2",
"license": "MIT",
"urls": [
"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12",
"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"
]
},
"@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol": {
"keccak256": "0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69",
"license": "GPL-2.0-or-later",
"urls": [
"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652",
"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS"
]
},
"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol": {
"keccak256": "0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975",
"license": "GPL-2.0-or-later",
"urls": [
"bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53",
"dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM"
]
},
"contracts/fwci.sol": {
"keccak256": "0x64c4a62ed22b899d7d7b638efe5764a3c4c4fd413ed877e20b1880610203820c",
"license": "MIT",
"urls": [
"bzz-raw://959ef9be4929f08f44585707b982fd9b4a9f1193a0b95c4cdcd8b50032c69aba",
"dweb:/ipfs/Qmegr1NH44ucYwKKFyDhqJQGFLn7mcbL7ECHfBkNPTsALx"
]
}
},
"version": 1
}
This file has been truncated, but you can view the full file.
{
"id": "ec083fa1115ba2e8876d7e06d40ba87c",
"_format": "hh-sol-build-info-1",
"solcVersion": "0.8.20",
"solcLongVersion": "0.8.20+commit.a1b79de6",
"input": {
"language": "Solidity",
"sources": {
"contracts/fwci.sol": {
"content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.20;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\";\n\ncontract FidelweissCoreIndex is ERC20, Ownable {\n IERC20 public cbBTC;\n IERC20 public wstETH;\n IERC20 public usdc;\n\n\n ISwapRouter public swapRouter;\n address public feeRecipient;\n\n uint24 public constant POOL_FEE = 3000; // 0.3%\n\n constructor(\n address _cbBTC,\n address _wstETH,\n address _usdc,\n address _swapRouter,\n address _feeRecipient,\n address initialOwner\n ) ERC20(\"Fidelweiss Core Index\", \"FWCI\") Ownable(initialOwner) {\n cbBTC = IERC20(_cbBTC);\n wstETH = IERC20(_wstETH);\n usdc = IERC20(_usdc);\n swapRouter = ISwapRouter(_swapRouter);\n feeRecipient = _feeRecipient;\n }\n\n\n function mint(uint256 usdcAmount) external {\n require(usdcAmount > 0, \"Amount must be > 0\");\n require(usdc.transferFrom(msg.sender, address(this), usdcAmount), \"Transfer failed\");\n\n uint256 amountToSwap = (usdcAmount * 70) / 100;\n\n uint256 amountToCBTC = (amountToSwap * 40) / 70;\n uint256 amountToWSTETH = (amountToSwap * 30) / 70;\n\n _swapUSDCto(cbBTC, amountToCBTC);\n _swapUSDCto(wstETH, amountToWSTETH);\n\n uint256 mintAmount = usdcAmount * 1e12; // USDC assumed to be 6 decimals\n _mint(msg.sender, mintAmount);\n }\n\n\n function redeem(uint256 fwciAmount) external {\n require(balanceOf(msg.sender) >= fwciAmount, \"Insufficient FWCI\");\n _burn(msg.sender, fwciAmount);\n\n uint256 usdcAmount = fwciAmount / 1e12;\n\n _swapToUSDC(cbBTC);\n _swapToUSDC(wstETH);\n\n uint256 totalUSDC = usdc.balanceOf(address(this));\n require(totalUSDC >= usdcAmount, \"Insufficient USDC\");\n\n uint256 fee = (usdcAmount * 1) / 100;\n uint256 netAmount = usdcAmount - fee;\n\n require(usdc.transfer(msg.sender, netAmount), \"USDC transfer failed\");\n if (feeRecipient != address(0) && fee > 0) {\n require(usdc.transfer(feeRecipient, fee), \"Fee transfer failed\");\n }\n }\n\n\n function _swapUSDCto(IERC20 tokenOut, uint256 amountIn) internal {\n if (amountIn == 0) return;\n\n require(usdc.approve(address(swapRouter), 0), \"Reset approve failed\");\n require(usdc.approve(address(swapRouter), amountIn), \"Approve failed\");\n\n swapRouter.exactInputSingle(\n ISwapRouter.ExactInputSingleParams({\n tokenIn: address(usdc),\n tokenOut: address(tokenOut),\n fee: POOL_FEE,\n recipient: address(this),\n deadline: block.timestamp,\n amountIn: amountIn,\n amountOutMinimum: 0,\n sqrtPriceLimitX96: 0\n })\n );\n }\n\n function _swapToUSDC(IERC20 tokenIn) internal {\n uint256 amountIn = tokenIn.balanceOf(address(this));\n if (amountIn == 0) return;\n\n require(tokenIn.approve(address(swapRouter), 0), \"Reset approve failed\");\n require(tokenIn.approve(address(swapRouter), amountIn), \"Approve failed\");\n\n swapRouter.exactInputSingle(\n ISwapRouter.ExactInputSingleParams({\n tokenIn: address(tokenIn),\n tokenOut: address(usdc),\n fee: POOL_FEE,\n recipient: address(this),\n deadline: block.timestamp,\n amountIn: amountIn,\n amountOutMinimum: 0,\n sqrtPriceLimitX96: 0\n })\n );\n }\n\n // Admin functions\n function setFeeRecipient(address _recipient) external onlyOwner {\n require(_recipient != address(0), \"Invalid address\");\n feeRecipient = _recipient;\n }\n\n function setSwapRouter(address newRouter) external onlyOwner {\n require(newRouter != address(0), \"Invalid router\");\n swapRouter = ISwapRouter(newRouter);\n }\n}\n"
},
"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol": {
"content": "// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.7.5;\npragma abicoder v2;\n\nimport '@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol';\n\n/// @title Router token swapping functionality\n/// @notice Functions for swapping tokens via Uniswap V3\ninterface ISwapRouter is IUniswapV3SwapCallback {\n struct ExactInputSingleParams {\n address tokenIn;\n address tokenOut;\n uint24 fee;\n address recipient;\n uint256 deadline;\n uint256 amountIn;\n uint256 amountOutMinimum;\n uint160 sqrtPriceLimitX96;\n }\n\n /// @notice Swaps `amountIn` of one token for as much as possible of another token\n /// @param params The parameters necessary for the swap, encoded as `ExactInputSingleParams` in calldata\n /// @return amountOut The amount of the received token\n function exactInputSingle(ExactInputSingleParams calldata params) external payable returns (uint256 amountOut);\n\n struct ExactInputParams {\n bytes path;\n address recipient;\n uint256 deadline;\n uint256 amountIn;\n uint256 amountOutMinimum;\n }\n\n /// @notice Swaps `amountIn` of one token for as much as possible of another along the specified path\n /// @param params The parameters necessary for the multi-hop swap, encoded as `ExactInputParams` in calldata\n /// @return amountOut The amount of the received token\n function exactInput(ExactInputParams calldata params) external payable returns (uint256 amountOut);\n\n struct ExactOutputSingleParams {\n address tokenIn;\n address tokenOut;\n uint24 fee;\n address recipient;\n uint256 deadline;\n uint256 amountOut;\n uint256 amountInMaximum;\n uint160 sqrtPriceLimitX96;\n }\n\n /// @notice Swaps as little as possible of one token for `amountOut` of another token\n /// @param params The parameters necessary for the swap, encoded as `ExactOutputSingleParams` in calldata\n /// @return amountIn The amount of the input token\n function exactOutputSingle(ExactOutputSingleParams calldata params) external payable returns (uint256 amountIn);\n\n struct ExactOutputParams {\n bytes path;\n address recipient;\n uint256 deadline;\n uint256 amountOut;\n uint256 amountInMaximum;\n }\n\n /// @notice Swaps as little as possible of one token for `amountOut` of another along the specified path (reversed)\n /// @param params The parameters necessary for the multi-hop swap, encoded as `ExactOutputParams` in calldata\n /// @return amountIn The amount of the input token\n function exactOutput(ExactOutputParams calldata params) external payable returns (uint256 amountIn);\n}\n"
},
"@openzeppelin/contracts/access/Ownable.sol": {
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\n\npragma solidity ^0.8.20;\n\nimport {Context} from \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * The initial owner is set to the address provided by the deployer. This can\n * later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is Context {\n address private _owner;\n\n /**\n * @dev The caller account is not authorized to perform an operation.\n */\n error OwnableUnauthorizedAccount(address account);\n\n /**\n * @dev The owner is not a valid owner account. (eg. `address(0)`)\n */\n error OwnableInvalidOwner(address owner);\n\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n /**\n * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\n */\n constructor(address initialOwner) {\n if (initialOwner == address(0)) {\n revert OwnableInvalidOwner(address(0));\n }\n _transferOwnership(initialOwner);\n }\n\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n _checkOwner();\n _;\n }\n\n /**\n * @dev Returns the address of the current owner.\n */\n function owner() public view virtual returns (address) {\n return _owner;\n }\n\n /**\n * @dev Throws if the sender is not the owner.\n */\n function _checkOwner() internal view virtual {\n if (owner() != _msgSender()) {\n revert OwnableUnauthorizedAccount(_msgSender());\n }\n }\n\n /**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby disabling any functionality that is only available to the owner.\n */\n function renounceOwnership() public virtual onlyOwner {\n _transferOwnership(address(0));\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public virtual onlyOwner {\n if (newOwner == address(0)) {\n revert OwnableInvalidOwner(address(0));\n }\n _transferOwnership(newOwner);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Internal function without access restriction.\n */\n function _transferOwnership(address newOwner) internal virtual {\n address oldOwner = _owner;\n _owner = newOwner;\n emit OwnershipTransferred(oldOwner, newOwner);\n }\n}\n"
},
"@openzeppelin/contracts/token/ERC20/ERC20.sol": {
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"./IERC20.sol\";\nimport {IERC20Metadata} from \"./extensions/IERC20Metadata.sol\";\nimport {Context} from \"../../utils/Context.sol\";\nimport {IERC20Errors} from \"../../interfaces/draft-IERC6093.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * The default value of {decimals} is 18. To change this, you should override\n * this function so it returns a different value.\n *\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\n * instead returning `false` on failure. This behavior is nonetheless\n * conventional and does not conflict with the expectations of ERC-20\n * applications.\n */\nabstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {\n mapping(address account => uint256) private _balances;\n\n mapping(address account => mapping(address spender => uint256)) private _allowances;\n\n uint256 private _totalSupply;\n\n string private _name;\n string private _symbol;\n\n /**\n * @dev Sets the values for {name} and {symbol}.\n *\n * Both values are immutable: they can only be set once during construction.\n */\n constructor(string memory name_, string memory symbol_) {\n _name = name_;\n _symbol = symbol_;\n }\n\n /**\n * @dev Returns the name of the token.\n */\n function name() public view virtual returns (string memory) {\n return _name;\n }\n\n /**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */\n function symbol() public view virtual returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev Returns the number of decimals used to get its user representation.\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\n * be displayed to a user as `5.05` (`505 / 10 ** 2`).\n *\n * Tokens usually opt for a value of 18, imitating the relationship between\n * Ether and Wei. This is the default value returned by this function, unless\n * it's overridden.\n *\n * NOTE: This information is only used for _display_ purposes: it in\n * no way affects any of the arithmetic of the contract, including\n * {IERC20-balanceOf} and {IERC20-transfer}.\n */\n function decimals() public view virtual returns (uint8) {\n return 18;\n }\n\n /**\n * @dev See {IERC20-totalSupply}.\n */\n function totalSupply() public view virtual returns (uint256) {\n return _totalSupply;\n }\n\n /**\n * @dev See {IERC20-balanceOf}.\n */\n function balanceOf(address account) public view virtual returns (uint256) {\n return _balances[account];\n }\n\n /**\n * @dev See {IERC20-transfer}.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - the caller must have a balance of at least `value`.\n */\n function transfer(address to, uint256 value) public virtual returns (bool) {\n address owner = _msgSender();\n _transfer(owner, to, value);\n return true;\n }\n\n /**\n * @dev See {IERC20-allowance}.\n */\n function allowance(address owner, address spender) public view virtual returns (uint256) {\n return _allowances[owner][spender];\n }\n\n /**\n * @dev See {IERC20-approve}.\n *\n * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\n * `transferFrom`. This is semantically equivalent to an infinite approval.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function approve(address spender, uint256 value) public virtual returns (bool) {\n address owner = _msgSender();\n _approve(owner, spender, value);\n return true;\n }\n\n /**\n * @dev See {IERC20-transferFrom}.\n *\n * Skips emitting an {Approval} event indicating an allowance update. This is not\n * required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].\n *\n * NOTE: Does not update the allowance if the current allowance\n * is the maximum `uint256`.\n *\n * Requirements:\n *\n * - `from` and `to` cannot be the zero address.\n * - `from` must have a balance of at least `value`.\n * - the caller must have allowance for ``from``'s tokens of at least\n * `value`.\n */\n function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\n address spender = _msgSender();\n _spendAllowance(from, spender, value);\n _transfer(from, to, value);\n return true;\n }\n\n /**\n * @dev Moves a `value` amount of tokens from `from` to `to`.\n *\n * This internal function is equivalent to {transfer}, and can be used to\n * e.g. implement automatic token fees, slashing mechanisms, etc.\n *\n * Emits a {Transfer} event.\n *\n * NOTE: This function is not virtual, {_update} should be overridden instead.\n */\n function _transfer(address from, address to, uint256 value) internal {\n if (from == address(0)) {\n revert ERC20InvalidSender(address(0));\n }\n if (to == address(0)) {\n revert ERC20InvalidReceiver(address(0));\n }\n _update(from, to, value);\n }\n\n /**\n * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\n * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\n * this function.\n *\n * Emits a {Transfer} event.\n */\n function _update(address from, address to, uint256 value) internal virtual {\n if (from == address(0)) {\n // Overflow check required: The rest of the code assumes that totalSupply never overflows\n _totalSupply += value;\n } else {\n uint256 fromBalance = _balances[from];\n if (fromBalance < value) {\n revert ERC20InsufficientBalance(from, fromBalance, value);\n }\n unchecked {\n // Overflow not possible: value <= fromBalance <= totalSupply.\n _balances[from] = fromBalance - value;\n }\n }\n\n if (to == address(0)) {\n unchecked {\n // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\n _totalSupply -= value;\n }\n } else {\n unchecked {\n // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\n _balances[to] += value;\n }\n }\n\n emit Transfer(from, to, value);\n }\n\n /**\n * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\n * Relies on the `_update` mechanism\n *\n * Emits a {Transfer} event with `from` set to the zero address.\n *\n * NOTE: This function is not virtual, {_update} should be overridden instead.\n */\n function _mint(address account, uint256 value) internal {\n if (account == address(0)) {\n revert ERC20InvalidReceiver(address(0));\n }\n _update(address(0), account, value);\n }\n\n /**\n * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\n * Relies on the `_update` mechanism.\n *\n * Emits a {Transfer} event with `to` set to the zero address.\n *\n * NOTE: This function is not virtual, {_update} should be overridden instead\n */\n function _burn(address account, uint256 value) internal {\n if (account == address(0)) {\n revert ERC20InvalidSender(address(0));\n }\n _update(account, address(0), value);\n }\n\n /**\n * @dev Sets `value` as the allowance of `spender` over the `owner`'s tokens.\n *\n * This internal function is equivalent to `approve`, and can be used to\n * e.g. set automatic allowances for certain subsystems, etc.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `owner` cannot be the zero address.\n * - `spender` cannot be the zero address.\n *\n * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\n */\n function _approve(address owner, address spender, uint256 value) internal {\n _approve(owner, spender, value, true);\n }\n\n /**\n * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\n *\n * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\n * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\n * `Approval` event during `transferFrom` operations.\n *\n * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\n * true using the following override:\n *\n * ```solidity\n * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\n * super._approve(owner, spender, value, true);\n * }\n * ```\n *\n * Requirements are the same as {_approve}.\n */\n function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\n if (owner == address(0)) {\n revert ERC20InvalidApprover(address(0));\n }\n if (spender == address(0)) {\n revert ERC20InvalidSpender(address(0));\n }\n _allowances[owner][spender] = value;\n if (emitEvent) {\n emit Approval(owner, spender, value);\n }\n }\n\n /**\n * @dev Updates `owner`'s allowance for `spender` based on spent `value`.\n *\n * Does not update the allowance value in case of infinite allowance.\n * Revert if not enough allowance is available.\n *\n * Does not emit an {Approval} event.\n */\n function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\n uint256 currentAllowance = allowance(owner, spender);\n if (currentAllowance < type(uint256).max) {\n if (currentAllowance < value) {\n revert ERC20InsufficientAllowance(spender, currentAllowance, value);\n }\n unchecked {\n _approve(owner, spender, currentAllowance - value, false);\n }\n }\n }\n}\n"
},
"@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol": {
"content": "// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Callback for IUniswapV3PoolActions#swap\n/// @notice Any contract that calls IUniswapV3PoolActions#swap must implement this interface\ninterface IUniswapV3SwapCallback {\n /// @notice Called to `msg.sender` after executing a swap via IUniswapV3Pool#swap.\n /// @dev In the implementation you must pay the pool tokens owed for the swap.\n /// The caller of this method must be checked to be a UniswapV3Pool deployed by the canonical UniswapV3Factory.\n /// amount0Delta and amount1Delta can both be 0 if no tokens were swapped.\n /// @param amount0Delta The amount of token0 that was sent (negative) or must be received (positive) by the pool by\n /// the end of the swap. If positive, the callback must send that amount of token0 to the pool.\n /// @param amount1Delta The amount of token1 that was sent (negative) or must be received (positive) by the pool by\n /// the end of the swap. If positive, the callback must send that amount of token1 to the pool.\n /// @param data Any data passed through by the caller via the IUniswapV3PoolActions#swap call\n function uniswapV3SwapCallback(\n int256 amount0Delta,\n int256 amount1Delta,\n bytes calldata data\n ) external;\n}\n"
},
"@openzeppelin/contracts/interfaces/draft-IERC6093.sol": {
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC6093.sol)\npragma solidity ^0.8.20;\n\n/**\n * @dev Standard ERC-20 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\n */\ninterface IERC20Errors {\n /**\n * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n * @param balance Current balance for the interacting account.\n * @param needed Minimum amount required to perform a transfer.\n */\n error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\n\n /**\n * @dev Indicates a failure with the token `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n */\n error ERC20InvalidSender(address sender);\n\n /**\n * @dev Indicates a failure with the token `receiver`. Used in transfers.\n * @param receiver Address to which tokens are being transferred.\n */\n error ERC20InvalidReceiver(address receiver);\n\n /**\n * @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n * @param spender Address that may be allowed to operate on tokens without being their owner.\n * @param allowance Amount of tokens a `spender` is allowed to operate with.\n * @param needed Minimum amount required to perform a transfer.\n */\n error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\n\n /**\n * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n * @param approver Address initiating an approval operation.\n */\n error ERC20InvalidApprover(address approver);\n\n /**\n * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n * @param spender Address that may be allowed to operate on tokens without being their owner.\n */\n error ERC20InvalidSpender(address spender);\n}\n\n/**\n * @dev Standard ERC-721 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\n */\ninterface IERC721Errors {\n /**\n * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.\n * Used in balance queries.\n * @param owner Address of the current owner of a token.\n */\n error ERC721InvalidOwner(address owner);\n\n /**\n * @dev Indicates a `tokenId` whose `owner` is the zero address.\n * @param tokenId Identifier number of a token.\n */\n error ERC721NonexistentToken(uint256 tokenId);\n\n /**\n * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n * @param tokenId Identifier number of a token.\n * @param owner Address of the current owner of a token.\n */\n error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\n\n /**\n * @dev Indicates a failure with the token `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n */\n error ERC721InvalidSender(address sender);\n\n /**\n * @dev Indicates a failure with the token `receiver`. Used in transfers.\n * @param receiver Address to which tokens are being transferred.\n */\n error ERC721InvalidReceiver(address receiver);\n\n /**\n * @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n * @param tokenId Identifier number of a token.\n */\n error ERC721InsufficientApproval(address operator, uint256 tokenId);\n\n /**\n * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n * @param approver Address initiating an approval operation.\n */\n error ERC721InvalidApprover(address approver);\n\n /**\n * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n */\n error ERC721InvalidOperator(address operator);\n}\n\n/**\n * @dev Standard ERC-1155 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\n */\ninterface IERC1155Errors {\n /**\n * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n * @param balance Current balance for the interacting account.\n * @param needed Minimum amount required to perform a transfer.\n * @param tokenId Identifier number of a token.\n */\n error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\n\n /**\n * @dev Indicates a failure with the token `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n */\n error ERC1155InvalidSender(address sender);\n\n /**\n * @dev Indicates a failure with the token `receiver`. Used in transfers.\n * @param receiver Address to which tokens are being transferred.\n */\n error ERC1155InvalidReceiver(address receiver);\n\n /**\n * @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n * @param owner Address of the current owner of a token.\n */\n error ERC1155MissingApprovalForAll(address operator, address owner);\n\n /**\n * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n * @param approver Address initiating an approval operation.\n */\n error ERC1155InvalidApprover(address approver);\n\n /**\n * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n */\n error ERC1155InvalidOperator(address operator);\n\n /**\n * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n * Used in batch transfers.\n * @param idsLength Length of the array of token identifiers\n * @param valuesLength Length of the array of token amounts\n */\n error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\n}\n"
},
"@openzeppelin/contracts/utils/Context.sol": {
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n\n function _contextSuffixLength() internal view virtual returns (uint256) {\n return 0;\n }\n}\n"
},
"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": {
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/extensions/IERC20Metadata.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"../IERC20.sol\";\n\n/**\n * @dev Interface for the optional metadata functions from the ERC-20 standard.\n */\ninterface IERC20Metadata is IERC20 {\n /**\n * @dev Returns the name of the token.\n */\n function name() external view returns (string memory);\n\n /**\n * @dev Returns the symbol of the token.\n */\n function symbol() external view returns (string memory);\n\n /**\n * @dev Returns the decimals places of the token.\n */\n function decimals() external view returns (uint8);\n}\n"
},
"@openzeppelin/contracts/token/ERC20/IERC20.sol": {
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Interface of the ERC-20 standard as defined in the ERC.\n */\ninterface IERC20 {\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n /**\n * @dev Returns the value of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the value of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves a `value` amount of tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address to, uint256 value) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n * caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 value) external returns (bool);\n\n /**\n * @dev Moves a `value` amount of tokens from `from` to `to` using the\n * allowance mechanism. `value` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(address from, address to, uint256 value) external returns (bool);\n}\n"
}
},
"settings": {
"optimizer": {
"enabled": false,
"runs": 200
},
"outputSelection": {
"*": {
"": [
"ast"
],
"*": [
"abi",
"metadata",
"devdoc",
"userdoc",
"storageLayout",
"evm.legacyAssembly",
"evm.bytecode",
"evm.deployedBytecode",
"evm.methodIdentifiers",
"evm.gasEstimates",
"evm.assembly"
]
}
},
"remappings": []
}
},
"output": {
"contracts": {
"@openzeppelin/contracts/access/Ownable.sol": {
"Ownable": {
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "OwnableInvalidOwner",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "OwnableUnauthorizedAccount",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"details": "Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. The initial owner is set to the address provided by the deployer. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.",
"errors": {
"OwnableInvalidOwner(address)": [
{
"details": "The owner is not a valid owner account. (eg. `address(0)`)"
}
],
"OwnableUnauthorizedAccount(address)": [
{
"details": "The caller account is not authorized to perform an operation."
}
]
},
"kind": "dev",
"methods": {
"constructor": {
"details": "Initializes the contract setting the address provided by the deployer as the initial owner."
},
"owner()": {
"details": "Returns the address of the current owner."
},
"renounceOwnership()": {
"details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."
},
"transferOwnership(address)": {
"details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
}
},
"version": 1
},
"evm": {
"assembly": "",
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"legacyAssembly": null,
"methodIdentifiers": {
"owner()": "8da5cb5b",
"renounceOwnership()": "715018a6",
"transferOwnership(address)": "f2fde38b"
}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. The initial owner is set to the address provided by the deployer. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.\",\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract setting the address provided by the deployer as the initial owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/Ownable.sol\":\"Ownable\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}",
"storageLayout": {
"storage": [
{
"astId": 8,
"contract": "@openzeppelin/contracts/access/Ownable.sol:Ownable",
"label": "_owner",
"offset": 0,
"slot": "0",
"type": "t_address"
}
],
"types": {
"t_address": {
"encoding": "inplace",
"label": "address",
"numberOfBytes": "20"
}
}
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}
},
"@openzeppelin/contracts/interfaces/draft-IERC6093.sol": {
"IERC1155Errors": {
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "ERC1155InsufficientBalance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "approver",
"type": "address"
}
],
"name": "ERC1155InvalidApprover",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "idsLength",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "valuesLength",
"type": "uint256"
}
],
"name": "ERC1155InvalidArrayLength",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "operator",
"type": "address"
}
],
"name": "ERC1155InvalidOperator",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"name": "ERC1155InvalidReceiver",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "ERC1155InvalidSender",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "ERC1155MissingApprovalForAll",
"type": "error"
}
],
"devdoc": {
"details": "Standard ERC-1155 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.",
"errors": {
"ERC1155InsufficientBalance(address,uint256,uint256,uint256)": [
{
"details": "Indicates an error related to the current `balance` of a `sender`. Used in transfers.",
"params": {
"balance": "Current balance for the interacting account.",
"needed": "Minimum amount required to perform a transfer.",
"sender": "Address whose tokens are being transferred.",
"tokenId": "Identifier number of a token."
}
}
],
"ERC1155InvalidApprover(address)": [
{
"details": "Indicates a failure with the `approver` of a token to be approved. Used in approvals.",
"params": {
"approver": "Address initiating an approval operation."
}
}
],
"ERC1155InvalidArrayLength(uint256,uint256)": [
{
"details": "Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. Used in batch transfers.",
"params": {
"idsLength": "Length of the array of token identifiers",
"valuesLength": "Length of the array of token amounts"
}
}
],
"ERC1155InvalidOperator(address)": [
{
"details": "Indicates a failure with the `operator` to be approved. Used in approvals.",
"params": {
"operator": "Address that may be allowed to operate on tokens without being their owner."
}
}
],
"ERC1155InvalidReceiver(address)": [
{
"details": "Indicates a failure with the token `receiver`. Used in transfers.",
"params": {
"receiver": "Address to which tokens are being transferred."
}
}
],
"ERC1155InvalidSender(address)": [
{
"details": "Indicates a failure with the token `sender`. Used in transfers.",
"params": {
"sender": "Address whose tokens are being transferred."
}
}
],
"ERC1155MissingApprovalForAll(address,address)": [
{
"details": "Indicates a failure with the `operator`’s approval. Used in transfers.",
"params": {
"operator": "Address that may be allowed to operate on tokens without being their owner.",
"owner": "Address of the current owner of a token."
}
}
]
},
"kind": "dev",
"methods": {},
"version": 1
},
"evm": {
"assembly": "",
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"legacyAssembly": null,
"methodIdentifiers": {}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC1155InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"idsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"valuesLength\",\"type\":\"uint256\"}],\"name\":\"ERC1155InvalidArrayLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC1155MissingApprovalForAll\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-1155 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\",\"errors\":{\"ERC1155InsufficientBalance(address,uint256,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC1155InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC1155InvalidArrayLength(uint256,uint256)\":[{\"details\":\"Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. Used in batch transfers.\",\"params\":{\"idsLength\":\"Length of the array of token identifiers\",\"valuesLength\":\"Length of the array of token amounts\"}}],\"ERC1155InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC1155InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC1155InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC1155MissingApprovalForAll(address,address)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"owner\":\"Address of the current owner of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC1155Errors\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"IERC20Errors": {
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "allowance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientAllowance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientBalance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "approver",
"type": "address"
}
],
"name": "ERC20InvalidApprover",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"name": "ERC20InvalidReceiver",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "ERC20InvalidSender",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "ERC20InvalidSpender",
"type": "error"
}
],
"devdoc": {
"details": "Standard ERC-20 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.",
"errors": {
"ERC20InsufficientAllowance(address,uint256,uint256)": [
{
"details": "Indicates a failure with the `spender`’s `allowance`. Used in transfers.",
"params": {
"allowance": "Amount of tokens a `spender` is allowed to operate with.",
"needed": "Minimum amount required to perform a transfer.",
"spender": "Address that may be allowed to operate on tokens without being their owner."
}
}
],
"ERC20InsufficientBalance(address,uint256,uint256)": [
{
"details": "Indicates an error related to the current `balance` of a `sender`. Used in transfers.",
"params": {
"balance": "Current balance for the interacting account.",
"needed": "Minimum amount required to perform a transfer.",
"sender": "Address whose tokens are being transferred."
}
}
],
"ERC20InvalidApprover(address)": [
{
"details": "Indicates a failure with the `approver` of a token to be approved. Used in approvals.",
"params": {
"approver": "Address initiating an approval operation."
}
}
],
"ERC20InvalidReceiver(address)": [
{
"details": "Indicates a failure with the token `receiver`. Used in transfers.",
"params": {
"receiver": "Address to which tokens are being transferred."
}
}
],
"ERC20InvalidSender(address)": [
{
"details": "Indicates a failure with the token `sender`. Used in transfers.",
"params": {
"sender": "Address whose tokens are being transferred."
}
}
],
"ERC20InvalidSpender(address)": [
{
"details": "Indicates a failure with the `spender` to be approved. Used in approvals.",
"params": {
"spender": "Address that may be allowed to operate on tokens without being their owner."
}
}
]
},
"kind": "dev",
"methods": {},
"version": 1
},
"evm": {
"assembly": "",
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"legacyAssembly": null,
"methodIdentifiers": {}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-20 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC20Errors\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"IERC721Errors": {
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "ERC721IncorrectOwner",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "ERC721InsufficientApproval",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "approver",
"type": "address"
}
],
"name": "ERC721InvalidApprover",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "operator",
"type": "address"
}
],
"name": "ERC721InvalidOperator",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "ERC721InvalidOwner",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"name": "ERC721InvalidReceiver",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "ERC721InvalidSender",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "ERC721NonexistentToken",
"type": "error"
}
],
"devdoc": {
"details": "Standard ERC-721 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.",
"errors": {
"ERC721IncorrectOwner(address,uint256,address)": [
{
"details": "Indicates an error related to the ownership over a particular token. Used in transfers.",
"params": {
"owner": "Address of the current owner of a token.",
"sender": "Address whose tokens are being transferred.",
"tokenId": "Identifier number of a token."
}
}
],
"ERC721InsufficientApproval(address,uint256)": [
{
"details": "Indicates a failure with the `operator`’s approval. Used in transfers.",
"params": {
"operator": "Address that may be allowed to operate on tokens without being their owner.",
"tokenId": "Identifier number of a token."
}
}
],
"ERC721InvalidApprover(address)": [
{
"details": "Indicates a failure with the `approver` of a token to be approved. Used in approvals.",
"params": {
"approver": "Address initiating an approval operation."
}
}
],
"ERC721InvalidOperator(address)": [
{
"details": "Indicates a failure with the `operator` to be approved. Used in approvals.",
"params": {
"operator": "Address that may be allowed to operate on tokens without being their owner."
}
}
],
"ERC721InvalidOwner(address)": [
{
"details": "Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20. Used in balance queries.",
"params": {
"owner": "Address of the current owner of a token."
}
}
],
"ERC721InvalidReceiver(address)": [
{
"details": "Indicates a failure with the token `receiver`. Used in transfers.",
"params": {
"receiver": "Address to which tokens are being transferred."
}
}
],
"ERC721InvalidSender(address)": [
{
"details": "Indicates a failure with the token `sender`. Used in transfers.",
"params": {
"sender": "Address whose tokens are being transferred."
}
}
],
"ERC721NonexistentToken(uint256)": [
{
"details": "Indicates a `tokenId` whose `owner` is the zero address.",
"params": {
"tokenId": "Identifier number of a token."
}
}
]
},
"kind": "dev",
"methods": {},
"version": 1
},
"evm": {
"assembly": "",
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"legacyAssembly": null,
"methodIdentifiers": {}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-721 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\",\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC721Errors\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}
},
"@openzeppelin/contracts/token/ERC20/ERC20.sol": {
"ERC20": {
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "allowance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientAllowance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientBalance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "approver",
"type": "address"
}
],
"name": "ERC20InvalidApprover",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"name": "ERC20InvalidReceiver",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "ERC20InvalidSender",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "ERC20InvalidSpender",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"details": "Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. The default value of {decimals} is 18. To change this, you should override this function so it returns a different value. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC-20 applications.",
"errors": {
"ERC20InsufficientAllowance(address,uint256,uint256)": [
{
"details": "Indicates a failure with the `spender`’s `allowance`. Used in transfers.",
"params": {
"allowance": "Amount of tokens a `spender` is allowed to operate with.",
"needed": "Minimum amount required to perform a transfer.",
"spender": "Address that may be allowed to operate on tokens without being their owner."
}
}
],
"ERC20InsufficientBalance(address,uint256,uint256)": [
{
"details": "Indicates an error related to the current `balance` of a `sender`. Used in transfers.",
"params": {
"balance": "Current balance for the interacting account.",
"needed": "Minimum amount required to perform a transfer.",
"sender": "Address whose tokens are being transferred."
}
}
],
"ERC20InvalidApprover(address)": [
{
"details": "Indicates a failure with the `approver` of a token to be approved. Used in approvals.",
"params": {
"approver": "Address initiating an approval operation."
}
}
],
"ERC20InvalidReceiver(address)": [
{
"details": "Indicates a failure with the token `receiver`. Used in transfers.",
"params": {
"receiver": "Address to which tokens are being transferred."
}
}
],
"ERC20InvalidSender(address)": [
{
"details": "Indicates a failure with the token `sender`. Used in transfers.",
"params": {
"sender": "Address whose tokens are being transferred."
}
}
],
"ERC20InvalidSpender(address)": [
{
"details": "Indicates a failure with the `spender` to be approved. Used in approvals.",
"params": {
"spender": "Address that may be allowed to operate on tokens without being their owner."
}
}
]
},
"events": {
"Approval(address,address,uint256)": {
"details": "Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."
},
"Transfer(address,address,uint256)": {
"details": "Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."
}
},
"kind": "dev",
"methods": {
"allowance(address,address)": {
"details": "See {IERC20-allowance}."
},
"approve(address,uint256)": {
"details": "See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."
},
"balanceOf(address)": {
"details": "See {IERC20-balanceOf}."
},
"constructor": {
"details": "Sets the values for {name} and {symbol}. Both values are immutable: they can only be set once during construction."
},
"decimals()": {
"details": "Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."
},
"name()": {
"details": "Returns the name of the token."
},
"symbol()": {
"details": "Returns the symbol of the token, usually a shorter version of the name."
},
"totalSupply()": {
"details": "See {IERC20-totalSupply}."
},
"transfer(address,uint256)": {
"details": "See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."
},
"transferFrom(address,address,uint256)": {
"details": "See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."
}
},
"version": 1
},
"evm": {
"assembly": "",
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"legacyAssembly": null,
"methodIdentifiers": {
"allowance(address,address)": "dd62ed3e",
"approve(address,uint256)": "095ea7b3",
"balanceOf(address)": "70a08231",
"decimals()": "313ce567",
"name()": "06fdde03",
"symbol()": "95d89b41",
"totalSupply()": "18160ddd",
"transfer(address,uint256)": "a9059cbb",
"transferFrom(address,address,uint256)": "23b872dd"
}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. The default value of {decimals} is 18. To change this, you should override this function so it returns a different value. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC-20 applications.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}. Both values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x41f6b3b9e030561e7896dbef372b499cc8d418a80c3884a4d65a68f2fdc7493a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://80b0992a11b2fd1f75ced2971696d07bbd1d19ce6761dd50d8b6d48aa435f42a\",\"dweb:/ipfs/QmZDe5xd2gXHjVEjv9t8C1KQ68K5T8qFwdinwQgmP3rF3x\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}",
"storageLayout": {
"storage": [
{
"astId": 307,
"contract": "@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20",
"label": "_balances",
"offset": 0,
"slot": "0",
"type": "t_mapping(t_address,t_uint256)"
},
{
"astId": 313,
"contract": "@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20",
"label": "_allowances",
"offset": 0,
"slot": "1",
"type": "t_mapping(t_address,t_mapping(t_address,t_uint256))"
},
{
"astId": 315,
"contract": "@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20",
"label": "_totalSupply",
"offset": 0,
"slot": "2",
"type": "t_uint256"
},
{
"astId": 317,
"contract": "@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20",
"label": "_name",
"offset": 0,
"slot": "3",
"type": "t_string_storage"
},
{
"astId": 319,
"contract": "@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20",
"label": "_symbol",
"offset": 0,
"slot": "4",
"type": "t_string_storage"
}
],
"types": {
"t_address": {
"encoding": "inplace",
"label": "address",
"numberOfBytes": "20"
},
"t_mapping(t_address,t_mapping(t_address,t_uint256))": {
"encoding": "mapping",
"key": "t_address",
"label": "mapping(address => mapping(address => uint256))",
"numberOfBytes": "32",
"value": "t_mapping(t_address,t_uint256)"
},
"t_mapping(t_address,t_uint256)": {
"encoding": "mapping",
"key": "t_address",
"label": "mapping(address => uint256)",
"numberOfBytes": "32",
"value": "t_uint256"
},
"t_string_storage": {
"encoding": "bytes",
"label": "string",
"numberOfBytes": "32"
},
"t_uint256": {
"encoding": "inplace",
"label": "uint256",
"numberOfBytes": "32"
}
}
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}
},
"@openzeppelin/contracts/token/ERC20/IERC20.sol": {
"IERC20": {
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"details": "Interface of the ERC-20 standard as defined in the ERC.",
"events": {
"Approval(address,address,uint256)": {
"details": "Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."
},
"Transfer(address,address,uint256)": {
"details": "Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."
}
},
"kind": "dev",
"methods": {
"allowance(address,address)": {
"details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."
},
"approve(address,uint256)": {
"details": "Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."
},
"balanceOf(address)": {
"details": "Returns the value of tokens owned by `account`."
},
"totalSupply()": {
"details": "Returns the value of tokens in existence."
},
"transfer(address,uint256)": {
"details": "Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."
},
"transferFrom(address,address,uint256)": {
"details": "Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."
}
},
"version": 1
},
"evm": {
"assembly": "",
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"legacyAssembly": null,
"methodIdentifiers": {
"allowance(address,address)": "dd62ed3e",
"approve(address,uint256)": "095ea7b3",
"balanceOf(address)": "70a08231",
"totalSupply()": "18160ddd",
"transfer(address,uint256)": "a9059cbb",
"transferFrom(address,address,uint256)": "23b872dd"
}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-20 standard as defined in the ERC.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}
},
"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": {
"IERC20Metadata": {
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"details": "Interface for the optional metadata functions from the ERC-20 standard.",
"events": {
"Approval(address,address,uint256)": {
"details": "Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."
},
"Transfer(address,address,uint256)": {
"details": "Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."
}
},
"kind": "dev",
"methods": {
"allowance(address,address)": {
"details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."
},
"approve(address,uint256)": {
"details": "Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."
},
"balanceOf(address)": {
"details": "Returns the value of tokens owned by `account`."
},
"decimals()": {
"details": "Returns the decimals places of the token."
},
"name()": {
"details": "Returns the name of the token."
},
"symbol()": {
"details": "Returns the symbol of the token."
},
"totalSupply()": {
"details": "Returns the value of tokens in existence."
},
"transfer(address,uint256)": {
"details": "Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."
},
"transferFrom(address,address,uint256)": {
"details": "Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."
}
},
"version": 1
},
"evm": {
"assembly": "",
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"legacyAssembly": null,
"methodIdentifiers": {
"allowance(address,address)": "dd62ed3e",
"approve(address,uint256)": "095ea7b3",
"balanceOf(address)": "70a08231",
"decimals()": "313ce567",
"name()": "06fdde03",
"symbol()": "95d89b41",
"totalSupply()": "18160ddd",
"transfer(address,uint256)": "a9059cbb",
"transferFrom(address,address,uint256)": "23b872dd"
}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the optional metadata functions from the ERC-20 standard.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":\"IERC20Metadata\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}
},
"@openzeppelin/contracts/utils/Context.sol": {
"Context": {
"abi": [],
"devdoc": {
"details": "Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.",
"kind": "dev",
"methods": {},
"version": 1
},
"evm": {
"assembly": "",
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"legacyAssembly": null,
"methodIdentifiers": {}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}
},
"@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol": {
"IUniswapV3SwapCallback": {
"abi": [
{
"inputs": [
{
"internalType": "int256",
"name": "amount0Delta",
"type": "int256"
},
{
"internalType": "int256",
"name": "amount1Delta",
"type": "int256"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "uniswapV3SwapCallback",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {
"uniswapV3SwapCallback(int256,int256,bytes)": {
"details": "In the implementation you must pay the pool tokens owed for the swap. The caller of this method must be checked to be a UniswapV3Pool deployed by the canonical UniswapV3Factory. amount0Delta and amount1Delta can both be 0 if no tokens were swapped.",
"params": {
"amount0Delta": "The amount of token0 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token0 to the pool.",
"amount1Delta": "The amount of token1 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token1 to the pool.",
"data": "Any data passed through by the caller via the IUniswapV3PoolActions#swap call"
}
}
},
"title": "Callback for IUniswapV3PoolActions#swap",
"version": 1
},
"evm": {
"assembly": "",
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"legacyAssembly": null,
"methodIdentifiers": {
"uniswapV3SwapCallback(int256,int256,bytes)": "fa461e33"
}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"amount0Delta\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"amount1Delta\",\"type\":\"int256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"uniswapV3SwapCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"uniswapV3SwapCallback(int256,int256,bytes)\":{\"details\":\"In the implementation you must pay the pool tokens owed for the swap. The caller of this method must be checked to be a UniswapV3Pool deployed by the canonical UniswapV3Factory. amount0Delta and amount1Delta can both be 0 if no tokens were swapped.\",\"params\":{\"amount0Delta\":\"The amount of token0 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token0 to the pool.\",\"amount1Delta\":\"The amount of token1 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token1 to the pool.\",\"data\":\"Any data passed through by the caller via the IUniswapV3PoolActions#swap call\"}}},\"title\":\"Callback for IUniswapV3PoolActions#swap\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"uniswapV3SwapCallback(int256,int256,bytes)\":{\"notice\":\"Called to `msg.sender` after executing a swap via IUniswapV3Pool#swap.\"}},\"notice\":\"Any contract that calls IUniswapV3PoolActions#swap must implement this interface\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":\"IUniswapV3SwapCallback\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"kind": "user",
"methods": {
"uniswapV3SwapCallback(int256,int256,bytes)": {
"notice": "Called to `msg.sender` after executing a swap via IUniswapV3Pool#swap."
}
},
"notice": "Any contract that calls IUniswapV3PoolActions#swap must implement this interface",
"version": 1
}
}
},
"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol": {
"ISwapRouter": {
"abi": [
{
"inputs": [
{
"components": [
{
"internalType": "bytes",
"name": "path",
"type": "bytes"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "deadline",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amountIn",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amountOutMinimum",
"type": "uint256"
}
],
"internalType": "struct ISwapRouter.ExactInputParams",
"name": "params",
"type": "tuple"
}
],
"name": "exactInput",
"outputs": [
{
"internalType": "uint256",
"name": "amountOut",
"type": "uint256"
}
],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "address",
"name": "tokenIn",
"type": "address"
},
{
"internalType": "address",
"name": "tokenOut",
"type": "address"
},
{
"internalType": "uint24",
"name": "fee",
"type": "uint24"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "deadline",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amountIn",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amountOutMinimum",
"type": "uint256"
},
{
"internalType": "uint160",
"name": "sqrtPriceLimitX96",
"type": "uint160"
}
],
"internalType": "struct ISwapRouter.ExactInputSingleParams",
"name": "params",
"type": "tuple"
}
],
"name": "exactInputSingle",
"outputs": [
{
"internalType": "uint256",
"name": "amountOut",
"type": "uint256"
}
],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "bytes",
"name": "path",
"type": "bytes"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "deadline",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amountOut",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amountInMaximum",
"type": "uint256"
}
],
"internalType": "struct ISwapRouter.ExactOutputParams",
"name": "params",
"type": "tuple"
}
],
"name": "exactOutput",
"outputs": [
{
"internalType": "uint256",
"name": "amountIn",
"type": "uint256"
}
],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "address",
"name": "tokenIn",
"type": "address"
},
{
"internalType": "address",
"name": "tokenOut",
"type": "address"
},
{
"internalType": "uint24",
"name": "fee",
"type": "uint24"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "deadline",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amountOut",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amountInMaximum",
"type": "uint256"
},
{
"internalType": "uint160",
"name": "sqrtPriceLimitX96",
"type": "uint160"
}
],
"internalType": "struct ISwapRouter.ExactOutputSingleParams",
"name": "params",
"type": "tuple"
}
],
"name": "exactOutputSingle",
"outputs": [
{
"internalType": "uint256",
"name": "amountIn",
"type": "uint256"
}
],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "int256",
"name": "amount0Delta",
"type": "int256"
},
{
"internalType": "int256",
"name": "amount1Delta",
"type": "int256"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "uniswapV3SwapCallback",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {
"exactInput((bytes,address,uint256,uint256,uint256))": {
"params": {
"params": "The parameters necessary for the multi-hop swap, encoded as `ExactInputParams` in calldata"
},
"returns": {
"amountOut": "The amount of the received token"
}
},
"exactInputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))": {
"params": {
"params": "The parameters necessary for the swap, encoded as `ExactInputSingleParams` in calldata"
},
"returns": {
"amountOut": "The amount of the received token"
}
},
"exactOutput((bytes,address,uint256,uint256,uint256))": {
"params": {
"params": "The parameters necessary for the multi-hop swap, encoded as `ExactOutputParams` in calldata"
},
"returns": {
"amountIn": "The amount of the input token"
}
},
"exactOutputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))": {
"params": {
"params": "The parameters necessary for the swap, encoded as `ExactOutputSingleParams` in calldata"
},
"returns": {
"amountIn": "The amount of the input token"
}
},
"uniswapV3SwapCallback(int256,int256,bytes)": {
"details": "In the implementation you must pay the pool tokens owed for the swap. The caller of this method must be checked to be a UniswapV3Pool deployed by the canonical UniswapV3Factory. amount0Delta and amount1Delta can both be 0 if no tokens were swapped.",
"params": {
"amount0Delta": "The amount of token0 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token0 to the pool.",
"amount1Delta": "The amount of token1 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token1 to the pool.",
"data": "Any data passed through by the caller via the IUniswapV3PoolActions#swap call"
}
}
},
"title": "Router token swapping functionality",
"version": 1
},
"evm": {
"assembly": "",
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"legacyAssembly": null,
"methodIdentifiers": {
"exactInput((bytes,address,uint256,uint256,uint256))": "c04b8d59",
"exactInputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))": "414bf389",
"exactOutput((bytes,address,uint256,uint256,uint256))": "f28c0498",
"exactOutputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))": "db3e2198",
"uniswapV3SwapCallback(int256,int256,bytes)": "fa461e33"
}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"path\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinimum\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapRouter.ExactInputParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactInput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinimum\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"internalType\":\"struct ISwapRouter.ExactInputSingleParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactInputSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"path\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMaximum\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapRouter.ExactOutputParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactOutput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMaximum\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"internalType\":\"struct ISwapRouter.ExactOutputSingleParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactOutputSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"amount0Delta\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"amount1Delta\",\"type\":\"int256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"uniswapV3SwapCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"exactInput((bytes,address,uint256,uint256,uint256))\":{\"params\":{\"params\":\"The parameters necessary for the multi-hop swap, encoded as `ExactInputParams` in calldata\"},\"returns\":{\"amountOut\":\"The amount of the received token\"}},\"exactInputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))\":{\"params\":{\"params\":\"The parameters necessary for the swap, encoded as `ExactInputSingleParams` in calldata\"},\"returns\":{\"amountOut\":\"The amount of the received token\"}},\"exactOutput((bytes,address,uint256,uint256,uint256))\":{\"params\":{\"params\":\"The parameters necessary for the multi-hop swap, encoded as `ExactOutputParams` in calldata\"},\"returns\":{\"amountIn\":\"The amount of the input token\"}},\"exactOutputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))\":{\"params\":{\"params\":\"The parameters necessary for the swap, encoded as `ExactOutputSingleParams` in calldata\"},\"returns\":{\"amountIn\":\"The amount of the input token\"}},\"uniswapV3SwapCallback(int256,int256,bytes)\":{\"details\":\"In the implementation you must pay the pool tokens owed for the swap. The caller of this method must be checked to be a UniswapV3Pool deployed by the canonical UniswapV3Factory. amount0Delta and amount1Delta can both be 0 if no tokens were swapped.\",\"params\":{\"amount0Delta\":\"The amount of token0 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token0 to the pool.\",\"amount1Delta\":\"The amount of token1 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token1 to the pool.\",\"data\":\"Any data passed through by the caller via the IUniswapV3PoolActions#swap call\"}}},\"title\":\"Router token swapping functionality\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"exactInput((bytes,address,uint256,uint256,uint256))\":{\"notice\":\"Swaps `amountIn` of one token for as much as possible of another along the specified path\"},\"exactInputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))\":{\"notice\":\"Swaps `amountIn` of one token for as much as possible of another token\"},\"exactOutput((bytes,address,uint256,uint256,uint256))\":{\"notice\":\"Swaps as little as possible of one token for `amountOut` of another along the specified path (reversed)\"},\"exactOutputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))\":{\"notice\":\"Swaps as little as possible of one token for `amountOut` of another token\"},\"uniswapV3SwapCallback(int256,int256,bytes)\":{\"notice\":\"Called to `msg.sender` after executing a swap via IUniswapV3Pool#swap.\"}},\"notice\":\"Functions for swapping tokens via Uniswap V3\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":\"ISwapRouter\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]},\"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53\",\"dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM\"]}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"kind": "user",
"methods": {
"exactInput((bytes,address,uint256,uint256,uint256))": {
"notice": "Swaps `amountIn` of one token for as much as possible of another along the specified path"
},
"exactInputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))": {
"notice": "Swaps `amountIn` of one token for as much as possible of another token"
},
"exactOutput((bytes,address,uint256,uint256,uint256))": {
"notice": "Swaps as little as possible of one token for `amountOut` of another along the specified path (reversed)"
},
"exactOutputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))": {
"notice": "Swaps as little as possible of one token for `amountOut` of another token"
},
"uniswapV3SwapCallback(int256,int256,bytes)": {
"notice": "Called to `msg.sender` after executing a swap via IUniswapV3Pool#swap."
}
},
"notice": "Functions for swapping tokens via Uniswap V3",
"version": 1
}
}
},
"contracts/fwci.sol": {
"FidelweissCoreIndex": {
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_cbBTC",
"type": "address"
},
{
"internalType": "address",
"name": "_wstETH",
"type": "address"
},
{
"internalType": "address",
"name": "_usdc",
"type": "address"
},
{
"internalType": "address",
"name": "_swapRouter",
"type": "address"
},
{
"internalType": "address",
"name": "_feeRecipient",
"type": "address"
},
{
"internalType": "address",
"name": "initialOwner",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "allowance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientAllowance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientBalance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "approver",
"type": "address"
}
],
"name": "ERC20InvalidApprover",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"name": "ERC20InvalidReceiver",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "ERC20InvalidSender",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "ERC20InvalidSpender",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "OwnableInvalidOwner",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "OwnableUnauthorizedAccount",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [],
"name": "POOL_FEE",
"outputs": [
{
"internalType": "uint24",
"name": "",
"type": "uint24"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "cbBTC",
"outputs": [
{
"internalType": "contract IERC20",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "feeRecipient",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "usdcAmount",
"type": "uint256"
}
],
"name": "mint",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "fwciAmount",
"type": "uint256"
}
],
"name": "redeem",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_recipient",
"type": "address"
}
],
"name": "setFeeRecipient",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newRouter",
"type": "address"
}
],
"name": "setSwapRouter",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "swapRouter",
"outputs": [
{
"internalType": "contract ISwapRouter",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "usdc",
"outputs": [
{
"internalType": "contract IERC20",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "wstETH",
"outputs": [
{
"internalType": "contract IERC20",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
}
],
"devdoc": {
"errors": {
"ERC20InsufficientAllowance(address,uint256,uint256)": [
{
"details": "Indicates a failure with the `spender`’s `allowance`. Used in transfers.",
"params": {
"allowance": "Amount of tokens a `spender` is allowed to operate with.",
"needed": "Minimum amount required to perform a transfer.",
"spender": "Address that may be allowed to operate on tokens without being their owner."
}
}
],
"ERC20InsufficientBalance(address,uint256,uint256)": [
{
"details": "Indicates an error related to the current `balance` of a `sender`. Used in transfers.",
"params": {
"balance": "Current balance for the interacting account.",
"needed": "Minimum amount required to perform a transfer.",
"sender": "Address whose tokens are being transferred."
}
}
],
"ERC20InvalidApprover(address)": [
{
"details": "Indicates a failure with the `approver` of a token to be approved. Used in approvals.",
"params": {
"approver": "Address initiating an approval operation."
}
}
],
"ERC20InvalidReceiver(address)": [
{
"details": "Indicates a failure with the token `receiver`. Used in transfers.",
"params": {
"receiver": "Address to which tokens are being transferred."
}
}
],
"ERC20InvalidSender(address)": [
{
"details": "Indicates a failure with the token `sender`. Used in transfers.",
"params": {
"sender": "Address whose tokens are being transferred."
}
}
],
"ERC20InvalidSpender(address)": [
{
"details": "Indicates a failure with the `spender` to be approved. Used in approvals.",
"params": {
"spender": "Address that may be allowed to operate on tokens without being their owner."
}
}
],
"OwnableInvalidOwner(address)": [
{
"details": "The owner is not a valid owner account. (eg. `address(0)`)"
}
],
"OwnableUnauthorizedAccount(address)": [
{
"details": "The caller account is not authorized to perform an operation."
}
]
},
"events": {
"Approval(address,address,uint256)": {
"details": "Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."
},
"Transfer(address,address,uint256)": {
"details": "Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."
}
},
"kind": "dev",
"methods": {
"allowance(address,address)": {
"details": "See {IERC20-allowance}."
},
"approve(address,uint256)": {
"details": "See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."
},
"balanceOf(address)": {
"details": "See {IERC20-balanceOf}."
},
"decimals()": {
"details": "Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."
},
"name()": {
"details": "Returns the name of the token."
},
"owner()": {
"details": "Returns the address of the current owner."
},
"renounceOwnership()": {
"details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."
},
"symbol()": {
"details": "Returns the symbol of the token, usually a shorter version of the name."
},
"totalSupply()": {
"details": "See {IERC20-totalSupply}."
},
"transfer(address,uint256)": {
"details": "See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."
},
"transferFrom(address,address,uint256)": {
"details": "See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."
},
"transferOwnership(address)": {
"details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
}
},
"version": 1
},
"evm": {
"assembly": " /* \"contracts/fwci.sol\":237:4052 contract FidelweissCoreIndex is ERC20, Ownable {... */\n mstore(0x40, 0x80)\n /* \"contracts/fwci.sol\":501:930 constructor(... */\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\ntag_1:\n pop\n mload(0x40)\n sub(codesize, bytecodeSize)\n dup1\n bytecodeSize\n dup4\n codecopy\n dup2\n dup2\n add\n 0x40\n mstore\n dup2\n add\n swap1\n tag_2\n swap2\n swap1\n tag_3\n jump\t// in\ntag_2:\n /* \"contracts/fwci.sol\":728:740 initialOwner */\n dup1\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":1582:1695 constructor(string memory name_, string memory symbol_) {... */\n mload(0x40)\n dup1\n 0x40\n add\n 0x40\n mstore\n dup1\n 0x15\n dup2\n mstore\n 0x20\n add\n 0x466964656c776569737320436f726520496e6465780000000000000000000000\n dup2\n mstore\n pop\n mload(0x40)\n dup1\n 0x40\n add\n 0x40\n mstore\n dup1\n 0x04\n dup2\n mstore\n 0x20\n add\n 0x4657434900000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n pop\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":1656:1661 name_ */\n dup2\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":1648:1653 _name */\n 0x03\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":1648:1661 _name = name_ */\n swap1\n dup2\n tag_8\n swap2\n swap1\n tag_9\n jump\t// in\ntag_8:\n pop\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":1681:1688 symbol_ */\n dup1\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":1671:1678 _symbol */\n 0x04\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":1671:1688 _symbol = symbol_ */\n swap1\n dup2\n tag_10\n swap2\n swap1\n tag_9\n jump\t// in\ntag_10:\n pop\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":1582:1695 constructor(string memory name_, string memory symbol_) {... */\n pop\n pop\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1297:1298 0 */\n 0x00\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1273:1299 initialOwner == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1273:1285 initialOwner */\n dup2\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1273:1299 initialOwner == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n sub\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1269:1364 if (initialOwner == address(0)) {... */\n tag_12\n jumpi\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1350:1351 0 */\n 0x00\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1322:1353 OwnableInvalidOwner(address(0)) */\n mload(0x40)\n 0x1e4fbdf700000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_13\n swap2\n swap1\n tag_14\n jump\t// in\ntag_13:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1269:1364 if (initialOwner == address(0)) {... */\ntag_12:\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1373:1405 _transferOwnership(initialOwner) */\n tag_15\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1392:1404 initialOwner */\n dup2\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1373:1391 _transferOwnership */\n shl(0x20, tag_16)\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1373:1405 _transferOwnership(initialOwner) */\n 0x20\n shr\n jump\t// in\ntag_15:\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1225:1412 constructor(address initialOwner) {... */\n pop\n /* \"contracts/fwci.sol\":767:773 _cbBTC */\n dup6\n /* \"contracts/fwci.sol\":752:757 cbBTC */\n 0x06\n 0x00\n /* \"contracts/fwci.sol\":752:774 cbBTC = IERC20(_cbBTC) */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xffffffffffffffffffffffffffffffffffffffff\n mul\n not\n and\n swap1\n dup4\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n mul\n or\n swap1\n sstore\n pop\n /* \"contracts/fwci.sol\":800:807 _wstETH */\n dup5\n /* \"contracts/fwci.sol\":784:790 wstETH */\n 0x07\n 0x00\n /* \"contracts/fwci.sol\":784:808 wstETH = IERC20(_wstETH) */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xffffffffffffffffffffffffffffffffffffffff\n mul\n not\n and\n swap1\n dup4\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n mul\n or\n swap1\n sstore\n pop\n /* \"contracts/fwci.sol\":832:837 _usdc */\n dup4\n /* \"contracts/fwci.sol\":818:822 usdc */\n 0x08\n 0x00\n /* \"contracts/fwci.sol\":818:838 usdc = IERC20(_usdc) */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xffffffffffffffffffffffffffffffffffffffff\n mul\n not\n and\n swap1\n dup4\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n mul\n or\n swap1\n sstore\n pop\n /* \"contracts/fwci.sol\":873:884 _swapRouter */\n dup3\n /* \"contracts/fwci.sol\":848:858 swapRouter */\n 0x09\n 0x00\n /* \"contracts/fwci.sol\":848:885 swapRouter = ISwapRouter(_swapRouter) */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xffffffffffffffffffffffffffffffffffffffff\n mul\n not\n and\n swap1\n dup4\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n mul\n or\n swap1\n sstore\n pop\n /* \"contracts/fwci.sol\":910:923 _feeRecipient */\n dup2\n /* \"contracts/fwci.sol\":895:907 feeRecipient */\n 0x0a\n 0x00\n /* \"contracts/fwci.sol\":895:923 feeRecipient = _feeRecipient */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xffffffffffffffffffffffffffffffffffffffff\n mul\n not\n and\n swap1\n dup4\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n mul\n or\n swap1\n sstore\n pop\n /* \"contracts/fwci.sol\":501:930 constructor(... */\n pop\n pop\n pop\n pop\n pop\n pop\n /* \"contracts/fwci.sol\":237:4052 contract FidelweissCoreIndex is ERC20, Ownable {... */\n jump(tag_18)\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2912:3099 function _transferOwnership(address newOwner) internal virtual {... */\ntag_16:\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2985:3001 address oldOwner */\n 0x00\n /* \"@openzeppelin/contracts/access/Ownable.sol\":3004:3010 _owner */\n 0x05\n 0x00\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2985:3010 address oldOwner = _owner */\n swap1\n pop\n /* \"@openzeppelin/contracts/access/Ownable.sol\":3029:3037 newOwner */\n dup2\n /* \"@openzeppelin/contracts/access/Ownable.sol\":3020:3026 _owner */\n 0x05\n 0x00\n /* \"@openzeppelin/contracts/access/Ownable.sol\":3020:3037 _owner = newOwner */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xffffffffffffffffffffffffffffffffffffffff\n mul\n not\n and\n swap1\n dup4\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n mul\n or\n swap1\n sstore\n pop\n /* \"@openzeppelin/contracts/access/Ownable.sol\":3083:3091 newOwner */\n dup2\n /* \"@openzeppelin/contracts/access/Ownable.sol\":3052:3092 OwnershipTransferred(oldOwner, newOwner) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"@openzeppelin/contracts/access/Ownable.sol\":3073:3081 oldOwner */\n dup2\n /* \"@openzeppelin/contracts/access/Ownable.sol\":3052:3092 OwnershipTransferred(oldOwner, newOwner) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0\n mload(0x40)\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log3\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2975:3099 {... */\n pop\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2912:3099 function _transferOwnership(address newOwner) internal virtual {... */\n pop\n jump\t// out\n /* \"#utility.yul\":88:205 */\ntag_21:\n /* \"#utility.yul\":197:198 */\n 0x00\n /* \"#utility.yul\":194:195 */\n dup1\n /* \"#utility.yul\":187:199 */\n revert\n /* \"#utility.yul\":334:460 */\ntag_23:\n /* \"#utility.yul\":371:378 */\n 0x00\n /* \"#utility.yul\":411:453 */\n 0xffffffffffffffffffffffffffffffffffffffff\n /* \"#utility.yul\":404:409 */\n dup3\n /* \"#utility.yul\":400:454 */\n and\n /* \"#utility.yul\":389:454 */\n swap1\n pop\n /* \"#utility.yul\":334:460 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":466:562 */\ntag_24:\n /* \"#utility.yul\":503:510 */\n 0x00\n /* \"#utility.yul\":532:556 */\n tag_54\n /* \"#utility.yul\":550:555 */\n dup3\n /* \"#utility.yul\":532:556 */\n tag_23\n jump\t// in\ntag_54:\n /* \"#utility.yul\":521:556 */\n swap1\n pop\n /* \"#utility.yul\":466:562 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":568:690 */\ntag_25:\n /* \"#utility.yul\":641:665 */\n tag_56\n /* \"#utility.yul\":659:664 */\n dup2\n /* \"#utility.yul\":641:665 */\n tag_24\n jump\t// in\ntag_56:\n /* \"#utility.yul\":634:639 */\n dup2\n /* \"#utility.yul\":631:666 */\n eq\n /* \"#utility.yul\":621:684 */\n tag_57\n jumpi\n /* \"#utility.yul\":680:681 */\n 0x00\n /* \"#utility.yul\":677:678 */\n dup1\n /* \"#utility.yul\":670:682 */\n revert\n /* \"#utility.yul\":621:684 */\ntag_57:\n /* \"#utility.yul\":568:690 */\n pop\n jump\t// out\n /* \"#utility.yul\":696:839 */\ntag_26:\n /* \"#utility.yul\":753:758 */\n 0x00\n /* \"#utility.yul\":784:790 */\n dup2\n /* \"#utility.yul\":778:791 */\n mload\n /* \"#utility.yul\":769:791 */\n swap1\n pop\n /* \"#utility.yul\":800:833 */\n tag_59\n /* \"#utility.yul\":827:832 */\n dup2\n /* \"#utility.yul\":800:833 */\n tag_25\n jump\t// in\ntag_59:\n /* \"#utility.yul\":696:839 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":845:1979 */\ntag_3:\n /* \"#utility.yul\":960:966 */\n 0x00\n /* \"#utility.yul\":968:974 */\n dup1\n /* \"#utility.yul\":976:982 */\n 0x00\n /* \"#utility.yul\":984:990 */\n dup1\n /* \"#utility.yul\":992:998 */\n 0x00\n /* \"#utility.yul\":1000:1006 */\n dup1\n /* \"#utility.yul\":1049:1052 */\n 0xc0\n /* \"#utility.yul\":1037:1046 */\n dup8\n /* \"#utility.yul\":1028:1035 */\n dup10\n /* \"#utility.yul\":1024:1047 */\n sub\n /* \"#utility.yul\":1020:1053 */\n slt\n /* \"#utility.yul\":1017:1137 */\n iszero\n tag_61\n jumpi\n /* \"#utility.yul\":1056:1135 */\n tag_62\n tag_21\n jump\t// in\ntag_62:\n /* \"#utility.yul\":1017:1137 */\ntag_61:\n /* \"#utility.yul\":1176:1177 */\n 0x00\n /* \"#utility.yul\":1201:1265 */\n tag_63\n /* \"#utility.yul\":1257:1264 */\n dup10\n /* \"#utility.yul\":1248:1254 */\n dup3\n /* \"#utility.yul\":1237:1246 */\n dup11\n /* \"#utility.yul\":1233:1255 */\n add\n /* \"#utility.yul\":1201:1265 */\n tag_26\n jump\t// in\ntag_63:\n /* \"#utility.yul\":1191:1265 */\n swap7\n pop\n /* \"#utility.yul\":1147:1275 */\n pop\n /* \"#utility.yul\":1314:1316 */\n 0x20\n /* \"#utility.yul\":1340:1404 */\n tag_64\n /* \"#utility.yul\":1396:1403 */\n dup10\n /* \"#utility.yul\":1387:1393 */\n dup3\n /* \"#utility.yul\":1376:1385 */\n dup11\n /* \"#utility.yul\":1372:1394 */\n add\n /* \"#utility.yul\":1340:1404 */\n tag_26\n jump\t// in\ntag_64:\n /* \"#utility.yul\":1330:1404 */\n swap6\n pop\n /* \"#utility.yul\":1285:1414 */\n pop\n /* \"#utility.yul\":1453:1455 */\n 0x40\n /* \"#utility.yul\":1479:1543 */\n tag_65\n /* \"#utility.yul\":1535:1542 */\n dup10\n /* \"#utility.yul\":1526:1532 */\n dup3\n /* \"#utility.yul\":1515:1524 */\n dup11\n /* \"#utility.yul\":1511:1533 */\n add\n /* \"#utility.yul\":1479:1543 */\n tag_26\n jump\t// in\ntag_65:\n /* \"#utility.yul\":1469:1543 */\n swap5\n pop\n /* \"#utility.yul\":1424:1553 */\n pop\n /* \"#utility.yul\":1592:1594 */\n 0x60\n /* \"#utility.yul\":1618:1682 */\n tag_66\n /* \"#utility.yul\":1674:1681 */\n dup10\n /* \"#utility.yul\":1665:1671 */\n dup3\n /* \"#utility.yul\":1654:1663 */\n dup11\n /* \"#utility.yul\":1650:1672 */\n add\n /* \"#utility.yul\":1618:1682 */\n tag_26\n jump\t// in\ntag_66:\n /* \"#utility.yul\":1608:1682 */\n swap4\n pop\n /* \"#utility.yul\":1563:1692 */\n pop\n /* \"#utility.yul\":1731:1734 */\n 0x80\n /* \"#utility.yul\":1758:1822 */\n tag_67\n /* \"#utility.yul\":1814:1821 */\n dup10\n /* \"#utility.yul\":1805:1811 */\n dup3\n /* \"#utility.yul\":1794:1803 */\n dup11\n /* \"#utility.yul\":1790:1812 */\n add\n /* \"#utility.yul\":1758:1822 */\n tag_26\n jump\t// in\ntag_67:\n /* \"#utility.yul\":1748:1822 */\n swap3\n pop\n /* \"#utility.yul\":1702:1832 */\n pop\n /* \"#utility.yul\":1871:1874 */\n 0xa0\n /* \"#utility.yul\":1898:1962 */\n tag_68\n /* \"#utility.yul\":1954:1961 */\n dup10\n /* \"#utility.yul\":1945:1951 */\n dup3\n /* \"#utility.yul\":1934:1943 */\n dup11\n /* \"#utility.yul\":1930:1952 */\n add\n /* \"#utility.yul\":1898:1962 */\n tag_26\n jump\t// in\ntag_68:\n /* \"#utility.yul\":1888:1962 */\n swap2\n pop\n /* \"#utility.yul\":1842:1972 */\n pop\n /* \"#utility.yul\":845:1979 */\n swap3\n swap6\n pop\n swap3\n swap6\n pop\n swap3\n swap6\n jump\t// out\n /* \"#utility.yul\":1985:2084 */\ntag_27:\n /* \"#utility.yul\":2037:2043 */\n 0x00\n /* \"#utility.yul\":2071:2076 */\n dup2\n /* \"#utility.yul\":2065:2077 */\n mload\n /* \"#utility.yul\":2055:2077 */\n swap1\n pop\n /* \"#utility.yul\":1985:2084 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":2090:2270 */\ntag_28:\n /* \"#utility.yul\":2138:2215 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":2135:2136 */\n 0x00\n /* \"#utility.yul\":2128:2216 */\n mstore\n /* \"#utility.yul\":2235:2239 */\n 0x41\n /* \"#utility.yul\":2232:2233 */\n 0x04\n /* \"#utility.yul\":2225:2240 */\n mstore\n /* \"#utility.yul\":2259:2263 */\n 0x24\n /* \"#utility.yul\":2256:2257 */\n 0x00\n /* \"#utility.yul\":2249:2264 */\n revert\n /* \"#utility.yul\":2276:2456 */\ntag_29:\n /* \"#utility.yul\":2324:2401 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":2321:2322 */\n 0x00\n /* \"#utility.yul\":2314:2402 */\n mstore\n /* \"#utility.yul\":2421:2425 */\n 0x22\n /* \"#utility.yul\":2418:2419 */\n 0x04\n /* \"#utility.yul\":2411:2426 */\n mstore\n /* \"#utility.yul\":2445:2449 */\n 0x24\n /* \"#utility.yul\":2442:2443 */\n 0x00\n /* \"#utility.yul\":2435:2450 */\n revert\n /* \"#utility.yul\":2462:2782 */\ntag_30:\n /* \"#utility.yul\":2506:2512 */\n 0x00\n /* \"#utility.yul\":2543:2544 */\n 0x02\n /* \"#utility.yul\":2537:2541 */\n dup3\n /* \"#utility.yul\":2533:2545 */\n div\n /* \"#utility.yul\":2523:2545 */\n swap1\n pop\n /* \"#utility.yul\":2590:2591 */\n 0x01\n /* \"#utility.yul\":2584:2588 */\n dup3\n /* \"#utility.yul\":2580:2592 */\n and\n /* \"#utility.yul\":2611:2629 */\n dup1\n /* \"#utility.yul\":2601:2682 */\n tag_73\n jumpi\n /* \"#utility.yul\":2667:2671 */\n 0x7f\n /* \"#utility.yul\":2659:2665 */\n dup3\n /* \"#utility.yul\":2655:2672 */\n and\n /* \"#utility.yul\":2645:2672 */\n swap2\n pop\n /* \"#utility.yul\":2601:2682 */\ntag_73:\n /* \"#utility.yul\":2729:2731 */\n 0x20\n /* \"#utility.yul\":2721:2727 */\n dup3\n /* \"#utility.yul\":2718:2732 */\n lt\n /* \"#utility.yul\":2698:2716 */\n dup2\n /* \"#utility.yul\":2695:2733 */\n sub\n /* \"#utility.yul\":2692:2776 */\n tag_74\n jumpi\n /* \"#utility.yul\":2748:2766 */\n tag_75\n tag_29\n jump\t// in\ntag_75:\n /* \"#utility.yul\":2692:2776 */\ntag_74:\n /* \"#utility.yul\":2513:2782 */\n pop\n /* \"#utility.yul\":2462:2782 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":2788:2929 */\ntag_31:\n /* \"#utility.yul\":2837:2841 */\n 0x00\n /* \"#utility.yul\":2860:2863 */\n dup2\n /* \"#utility.yul\":2852:2863 */\n swap1\n pop\n /* \"#utility.yul\":2883:2886 */\n dup2\n /* \"#utility.yul\":2880:2881 */\n 0x00\n /* \"#utility.yul\":2873:2887 */\n mstore\n /* \"#utility.yul\":2917:2921 */\n 0x20\n /* \"#utility.yul\":2914:2915 */\n 0x00\n /* \"#utility.yul\":2904:2922 */\n keccak256\n /* \"#utility.yul\":2896:2922 */\n swap1\n pop\n /* \"#utility.yul\":2788:2929 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":2935:3028 */\ntag_32:\n /* \"#utility.yul\":2972:2978 */\n 0x00\n /* \"#utility.yul\":3019:3021 */\n 0x20\n /* \"#utility.yul\":3014:3016 */\n 0x1f\n /* \"#utility.yul\":3007:3012 */\n dup4\n /* \"#utility.yul\":3003:3017 */\n add\n /* \"#utility.yul\":2999:3022 */\n div\n /* \"#utility.yul\":2989:3022 */\n swap1\n pop\n /* \"#utility.yul\":2935:3028 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":3034:3141 */\ntag_33:\n /* \"#utility.yul\":3078:3086 */\n 0x00\n /* \"#utility.yul\":3128:3133 */\n dup3\n /* \"#utility.yul\":3122:3126 */\n dup3\n /* \"#utility.yul\":3118:3134 */\n shl\n /* \"#utility.yul\":3097:3134 */\n swap1\n pop\n /* \"#utility.yul\":3034:3141 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":3147:3540 */\ntag_34:\n /* \"#utility.yul\":3216:3222 */\n 0x00\n /* \"#utility.yul\":3266:3267 */\n 0x08\n /* \"#utility.yul\":3254:3264 */\n dup4\n /* \"#utility.yul\":3250:3268 */\n mul\n /* \"#ut
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