Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save ricp/705f71a32757d51f1a98e4a13f9029e1 to your computer and use it in GitHub Desktop.
Save ricp/705f71a32757d51f1a98e4a13f9029e1 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.12+commit.f00d7308.js&optimize=true&runs=200&gist=
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (access/AccessControl.sol)
pragma solidity ^0.8.0;
import "./IAccessControl.sol";
import "../utils/Context.sol";
import "../utils/Strings.sol";
import "../utils/introspection/ERC165.sol";
/**
* @dev Contract module that allows children to implement role-based access
* control mechanisms. This is a lightweight version that doesn't allow enumerating role
* members except through off-chain means by accessing the contract event logs. Some
* applications may benefit from on-chain enumerability, for those cases see
* {AccessControlEnumerable}.
*
* Roles are referred to by their `bytes32` identifier. These should be exposed
* in the external API and be unique. The best way to achieve this is by
* using `public constant` hash digests:
*
* ```
* bytes32 public constant MY_ROLE = keccak256("MY_ROLE");
* ```
*
* Roles can be used to represent a set of permissions. To restrict access to a
* function call, use {hasRole}:
*
* ```
* function foo() public {
* require(hasRole(MY_ROLE, msg.sender));
* ...
* }
* ```
*
* Roles can be granted and revoked dynamically via the {grantRole} and
* {revokeRole} functions. Each role has an associated admin role, and only
* accounts that have a role's admin role can call {grantRole} and {revokeRole}.
*
* By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means
* that only accounts with this role will be able to grant or revoke other
* roles. More complex role relationships can be created by using
* {_setRoleAdmin}.
*
* WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to
* grant and revoke this role. Extra precautions should be taken to secure
* accounts that have been granted it.
*/
abstract contract AccessControl is Context, IAccessControl, ERC165 {
struct RoleData {
mapping(address => bool) members;
bytes32 adminRole;
}
mapping(bytes32 => RoleData) private _roles;
bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;
/**
* @dev Modifier that checks that an account has a specific role. Reverts
* with a standardized message including the required role.
*
* The format of the revert reason is given by the following regular expression:
*
* /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/
*
* _Available since v4.1._
*/
modifier onlyRole(bytes32 role) {
_checkRole(role, _msgSender());
_;
}
/**
* @dev See {IERC165-supportsInterface}.
*/
function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId);
}
/**
* @dev Returns `true` if `account` has been granted `role`.
*/
function hasRole(bytes32 role, address account) public view virtual override returns (bool) {
return _roles[role].members[account];
}
/**
* @dev Revert with a standard message if `account` is missing `role`.
*
* The format of the revert reason is given by the following regular expression:
*
* /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/
*/
function _checkRole(bytes32 role, address account) internal view virtual {
if (!hasRole(role, account)) {
revert(
string(
abi.encodePacked(
"AccessControl: account ",
Strings.toHexString(uint160(account), 20),
" is missing role ",
Strings.toHexString(uint256(role), 32)
)
)
);
}
}
/**
* @dev Returns the admin role that controls `role`. See {grantRole} and
* {revokeRole}.
*
* To change a role's admin, use {_setRoleAdmin}.
*/
function getRoleAdmin(bytes32 role) public view virtual override returns (bytes32) {
return _roles[role].adminRole;
}
/**
* @dev Grants `role` to `account`.
*
* If `account` had not been already granted `role`, emits a {RoleGranted}
* event.
*
* Requirements:
*
* - the caller must have ``role``'s admin role.
*/
function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {
_grantRole(role, account);
}
/**
* @dev Revokes `role` from `account`.
*
* If `account` had been granted `role`, emits a {RoleRevoked} event.
*
* Requirements:
*
* - the caller must have ``role``'s admin role.
*/
function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {
_revokeRole(role, account);
}
/**
* @dev Revokes `role` from the calling account.
*
* Roles are often managed via {grantRole} and {revokeRole}: this function's
* purpose is to provide a mechanism for accounts to lose their privileges
* if they are compromised (such as when a trusted device is misplaced).
*
* If the calling account had been revoked `role`, emits a {RoleRevoked}
* event.
*
* Requirements:
*
* - the caller must be `account`.
*/
function renounceRole(bytes32 role, address account) public virtual override {
require(account == _msgSender(), "AccessControl: can only renounce roles for self");
_revokeRole(role, account);
}
/**
* @dev Grants `role` to `account`.
*
* If `account` had not been already granted `role`, emits a {RoleGranted}
* event. Note that unlike {grantRole}, this function doesn't perform any
* checks on the calling account.
*
* [WARNING]
* ====
* This function should only be called from the constructor when setting
* up the initial roles for the system.
*
* Using this function in any other way is effectively circumventing the admin
* system imposed by {AccessControl}.
* ====
*
* NOTE: This function is deprecated in favor of {_grantRole}.
*/
function _setupRole(bytes32 role, address account) internal virtual {
_grantRole(role, account);
}
/**
* @dev Sets `adminRole` as ``role``'s admin role.
*
* Emits a {RoleAdminChanged} event.
*/
function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {
bytes32 previousAdminRole = getRoleAdmin(role);
_roles[role].adminRole = adminRole;
emit RoleAdminChanged(role, previousAdminRole, adminRole);
}
/**
* @dev Grants `role` to `account`.
*
* Internal function without access restriction.
*/
function _grantRole(bytes32 role, address account) internal virtual {
if (!hasRole(role, account)) {
_roles[role].members[account] = true;
emit RoleGranted(role, account, _msgSender());
}
}
/**
* @dev Revokes `role` from `account`.
*
* Internal function without access restriction.
*/
function _revokeRole(bytes32 role, address account) internal virtual {
if (hasRole(role, account)) {
_roles[role].members[account] = false;
emit RoleRevoked(role, account, _msgSender());
}
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)
pragma solidity ^0.8.0;
/**
* @dev External interface of AccessControl declared to support ERC165 detection.
*/
interface IAccessControl {
/**
* @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`
*
* `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite
* {RoleAdminChanged} not being emitted signaling this.
*
* _Available since v3.1._
*/
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
/**
* @dev Emitted when `account` is granted `role`.
*
* `sender` is the account that originated the contract call, an admin role
* bearer except when using {AccessControl-_setupRole}.
*/
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
/**
* @dev Emitted when `account` is revoked `role`.
*
* `sender` is the account that originated the contract call:
* - if using `revokeRole`, it is the admin role bearer
* - if using `renounceRole`, it is the role bearer (i.e. `account`)
*/
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);
/**
* @dev Returns `true` if `account` has been granted `role`.
*/
function hasRole(bytes32 role, address account) external view returns (bool);
/**
* @dev Returns the admin role that controls `role`. See {grantRole} and
* {revokeRole}.
*
* To change a role's admin, use {AccessControl-_setRoleAdmin}.
*/
function getRoleAdmin(bytes32 role) external view returns (bytes32);
/**
* @dev Grants `role` to `account`.
*
* If `account` had not been already granted `role`, emits a {RoleGranted}
* event.
*
* Requirements:
*
* - the caller must have ``role``'s admin role.
*/
function grantRole(bytes32 role, address account) external;
/**
* @dev Revokes `role` from `account`.
*
* If `account` had been granted `role`, emits a {RoleRevoked} event.
*
* Requirements:
*
* - the caller must have ``role``'s admin role.
*/
function revokeRole(bytes32 role, address account) external;
/**
* @dev Revokes `role` from the calling account.
*
* Roles are often managed via {grantRole} and {revokeRole}: this function's
* purpose is to provide a mechanism for accounts to lose their privileges
* if they are compromised (such as when a trusted device is misplaced).
*
* If the calling account had been granted `role`, emits a {RoleRevoked}
* event.
*
* Requirements:
*
* - the caller must be `account`.
*/
function renounceRole(bytes32 role, address account) external;
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (security/Pausable.sol)
pragma solidity ^0.8.0;
import "../utils/Context.sol";
/**
* @dev Contract module which allows children to implement an emergency stop
* mechanism that can be triggered by an authorized account.
*
* This module is used through inheritance. It will make available the
* modifiers `whenNotPaused` and `whenPaused`, which can be applied to
* the functions of your contract. Note that they will not be pausable by
* simply including this module, only once the modifiers are put in place.
*/
abstract contract Pausable is Context {
/**
* @dev Emitted when the pause is triggered by `account`.
*/
event Paused(address account);
/**
* @dev Emitted when the pause is lifted by `account`.
*/
event Unpaused(address account);
bool private _paused;
/**
* @dev Initializes the contract in unpaused state.
*/
constructor() {
_paused = false;
}
/**
* @dev Returns true if the contract is paused, and false otherwise.
*/
function paused() public view virtual returns (bool) {
return _paused;
}
/**
* @dev Modifier to make a function callable only when the contract is not paused.
*
* Requirements:
*
* - The contract must not be paused.
*/
modifier whenNotPaused() {
require(!paused(), "Pausable: paused");
_;
}
/**
* @dev Modifier to make a function callable only when the contract is paused.
*
* Requirements:
*
* - The contract must be paused.
*/
modifier whenPaused() {
require(paused(), "Pausable: not paused");
_;
}
/**
* @dev Triggers stopped state.
*
* Requirements:
*
* - The contract must not be paused.
*/
function _pause() internal virtual whenNotPaused {
_paused = true;
emit Paused(_msgSender());
}
/**
* @dev Returns to normal state.
*
* Requirements:
*
* - The contract must be paused.
*/
function _unpause() internal virtual whenPaused {
_paused = false;
emit Unpaused(_msgSender());
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (security/ReentrancyGuard.sol)
pragma solidity ^0.8.0;
/**
* @dev Contract module that helps prevent reentrant calls to a function.
*
* Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
* available, which can be applied to functions to make sure there are no nested
* (reentrant) calls to them.
*
* Note that because there is a single `nonReentrant` guard, functions marked as
* `nonReentrant` may not call one another. This can be worked around by making
* those functions `private`, and then adding `external` `nonReentrant` entry
* points to them.
*
* TIP: If you would like to learn more about reentrancy and alternative ways
* to protect against it, check out our blog post
* https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
*/
abstract contract ReentrancyGuard {
// Booleans are more expensive than uint256 or any type that takes up a full
// word because each write operation emits an extra SLOAD to first read the
// slot's contents, replace the bits taken up by the boolean, and then write
// back. This is the compiler's defense against contract upgrades and
// pointer aliasing, and it cannot be disabled.
// The values being non-zero value makes deployment a bit more expensive,
// but in exchange the refund on every call to nonReentrant will be lower in
// amount. Since refunds are capped to a percentage of the total
// transaction's gas, it is best to keep them low in cases like this one, to
// increase the likelihood of the full refund coming into effect.
uint256 private constant _NOT_ENTERED = 1;
uint256 private constant _ENTERED = 2;
uint256 private _status;
constructor() {
_status = _NOT_ENTERED;
}
/**
* @dev Prevents a contract from calling itself, directly or indirectly.
* Calling a `nonReentrant` function from another `nonReentrant`
* function is not supported. It is possible to prevent this from happening
* by making the `nonReentrant` function external, and making it call a
* `private` function that does the actual work.
*/
modifier nonReentrant() {
// On the first call to nonReentrant, _notEntered will be true
require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
// Any calls to nonReentrant after this point will fail
_status = _ENTERED;
_;
// By storing the original value once again, a refund is triggered (see
// https://eips.ethereum.org/EIPS/eip-2200)
_status = _NOT_ENTERED;
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC1155/ERC1155.sol)
pragma solidity ^0.8.0;
import "./IERC1155.sol";
import "./IERC1155Receiver.sol";
import "./extensions/IERC1155MetadataURI.sol";
import "../../utils/Address.sol";
import "../../utils/Context.sol";
import "../../utils/introspection/ERC165.sol";
/**
* @dev Implementation of the basic standard multi-token.
* See https://eips.ethereum.org/EIPS/eip-1155
* Originally based on code by Enjin: https://github.com/enjin/erc-1155
*
* _Available since v3.1._
*/
contract ERC1155 is Context, ERC165, IERC1155, IERC1155MetadataURI {
using Address for address;
// Mapping from token ID to account balances
mapping(uint256 => mapping(address => uint256)) private _balances;
// Mapping from account to operator approvals
mapping(address => mapping(address => bool)) private _operatorApprovals;
// Used as the URI for all token types by relying on ID substitution, e.g. https://token-cdn-domain/{id}.json
string private _uri;
/**
* @dev See {_setURI}.
*/
constructor(string memory uri_) {
_setURI(uri_);
}
/**
* @dev See {IERC165-supportsInterface}.
*/
function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
return
interfaceId == type(IERC1155).interfaceId ||
interfaceId == type(IERC1155MetadataURI).interfaceId ||
super.supportsInterface(interfaceId);
}
/**
* @dev See {IERC1155MetadataURI-uri}.
*
* This implementation returns the same URI for *all* token types. It relies
* on the token type ID substitution mechanism
* https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].
*
* Clients calling this function must replace the `\{id\}` substring with the
* actual token type ID.
*/
function uri(uint256) public view virtual override returns (string memory) {
return _uri;
}
/**
* @dev See {IERC1155-balanceOf}.
*
* Requirements:
*
* - `account` cannot be the zero address.
*/
function balanceOf(address account, uint256 id) public view virtual override returns (uint256) {
require(account != address(0), "ERC1155: balance query for the zero address");
return _balances[id][account];
}
/**
* @dev See {IERC1155-balanceOfBatch}.
*
* Requirements:
*
* - `accounts` and `ids` must have the same length.
*/
function balanceOfBatch(address[] memory accounts, uint256[] memory ids)
public
view
virtual
override
returns (uint256[] memory)
{
require(accounts.length == ids.length, "ERC1155: accounts and ids length mismatch");
uint256[] memory batchBalances = new uint256[](accounts.length);
for (uint256 i = 0; i < accounts.length; ++i) {
batchBalances[i] = balanceOf(accounts[i], ids[i]);
}
return batchBalances;
}
/**
* @dev See {IERC1155-setApprovalForAll}.
*/
function setApprovalForAll(address operator, bool approved) public virtual override {
_setApprovalForAll(_msgSender(), operator, approved);
}
/**
* @dev See {IERC1155-isApprovedForAll}.
*/
function isApprovedForAll(address account, address operator) public view virtual override returns (bool) {
return _operatorApprovals[account][operator];
}
/**
* @dev See {IERC1155-safeTransferFrom}.
*/
function safeTransferFrom(
address from,
address to,
uint256 id,
uint256 amount,
bytes memory data
) public virtual override {
require(
from == _msgSender() || isApprovedForAll(from, _msgSender()),
"ERC1155: caller is not owner nor approved"
);
_safeTransferFrom(from, to, id, amount, data);
}
/**
* @dev See {IERC1155-safeBatchTransferFrom}.
*/
function safeBatchTransferFrom(
address from,
address to,
uint256[] memory ids,
uint256[] memory amounts,
bytes memory data
) public virtual override {
require(
from == _msgSender() || isApprovedForAll(from, _msgSender()),
"ERC1155: transfer caller is not owner nor approved"
);
_safeBatchTransferFrom(from, to, ids, amounts, data);
}
/**
* @dev Transfers `amount` tokens of token type `id` from `from` to `to`.
*
* Emits a {TransferSingle} event.
*
* Requirements:
*
* - `to` cannot be the zero address.
* - `from` must have a balance of tokens of type `id` of at least `amount`.
* - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
* acceptance magic value.
*/
function _safeTransferFrom(
address from,
address to,
uint256 id,
uint256 amount,
bytes memory data
) internal virtual {
require(to != address(0), "ERC1155: transfer to the zero address");
address operator = _msgSender();
_beforeTokenTransfer(operator, from, to, _asSingletonArray(id), _asSingletonArray(amount), data);
uint256 fromBalance = _balances[id][from];
require(fromBalance >= amount, "ERC1155: insufficient balance for transfer");
unchecked {
_balances[id][from] = fromBalance - amount;
}
_balances[id][to] += amount;
emit TransferSingle(operator, from, to, id, amount);
_doSafeTransferAcceptanceCheck(operator, from, to, id, amount, data);
}
/**
* @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_safeTransferFrom}.
*
* Emits a {TransferBatch} event.
*
* Requirements:
*
* - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the
* acceptance magic value.
*/
function _safeBatchTransferFrom(
address from,
address to,
uint256[] memory ids,
uint256[] memory amounts,
bytes memory data
) internal virtual {
require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");
require(to != address(0), "ERC1155: transfer to the zero address");
address operator = _msgSender();
_beforeTokenTransfer(operator, from, to, ids, amounts, data);
for (uint256 i = 0; i < ids.length; ++i) {
uint256 id = ids[i];
uint256 amount = amounts[i];
uint256 fromBalance = _balances[id][from];
require(fromBalance >= amount, "ERC1155: insufficient balance for transfer");
unchecked {
_balances[id][from] = fromBalance - amount;
}
_balances[id][to] += amount;
}
emit TransferBatch(operator, from, to, ids, amounts);
_doSafeBatchTransferAcceptanceCheck(operator, from, to, ids, amounts, data);
}
/**
* @dev Sets a new URI for all token types, by relying on the token type ID
* substitution mechanism
* https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].
*
* By this mechanism, any occurrence of the `\{id\}` substring in either the
* URI or any of the amounts in the JSON file at said URI will be replaced by
* clients with the token type ID.
*
* For example, the `https://token-cdn-domain/\{id\}.json` URI would be
* interpreted by clients as
* `https://token-cdn-domain/000000000000000000000000000000000000000000000000000000000004cce0.json`
* for token type ID 0x4cce0.
*
* See {uri}.
*
* Because these URIs cannot be meaningfully represented by the {URI} event,
* this function emits no events.
*/
function _setURI(string memory newuri) internal virtual {
_uri = newuri;
}
/**
* @dev Creates `amount` tokens of token type `id`, and assigns them to `to`.
*
* Emits a {TransferSingle} event.
*
* Requirements:
*
* - `to` cannot be the zero address.
* - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
* acceptance magic value.
*/
function _mint(
address to,
uint256 id,
uint256 amount,
bytes memory data
) internal virtual {
require(to != address(0), "ERC1155: mint to the zero address");
address operator = _msgSender();
_beforeTokenTransfer(operator, address(0), to, _asSingletonArray(id), _asSingletonArray(amount), data);
_balances[id][to] += amount;
emit TransferSingle(operator, address(0), to, id, amount);
_doSafeTransferAcceptanceCheck(operator, address(0), to, id, amount, data);
}
/**
* @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_mint}.
*
* Requirements:
*
* - `ids` and `amounts` must have the same length.
* - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the
* acceptance magic value.
*/
function _mintBatch(
address to,
uint256[] memory ids,
uint256[] memory amounts,
bytes memory data
) internal virtual {
require(to != address(0), "ERC1155: mint to the zero address");
require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");
address operator = _msgSender();
_beforeTokenTransfer(operator, address(0), to, ids, amounts, data);
for (uint256 i = 0; i < ids.length; i++) {
_balances[ids[i]][to] += amounts[i];
}
emit TransferBatch(operator, address(0), to, ids, amounts);
_doSafeBatchTransferAcceptanceCheck(operator, address(0), to, ids, amounts, data);
}
/**
* @dev Destroys `amount` tokens of token type `id` from `from`
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `from` must have at least `amount` tokens of token type `id`.
*/
function _burn(
address from,
uint256 id,
uint256 amount
) internal virtual {
require(from != address(0), "ERC1155: burn from the zero address");
address operator = _msgSender();
_beforeTokenTransfer(operator, from, address(0), _asSingletonArray(id), _asSingletonArray(amount), "");
uint256 fromBalance = _balances[id][from];
require(fromBalance >= amount, "ERC1155: burn amount exceeds balance");
unchecked {
_balances[id][from] = fromBalance - amount;
}
emit TransferSingle(operator, from, address(0), id, amount);
}
/**
* @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_burn}.
*
* Requirements:
*
* - `ids` and `amounts` must have the same length.
*/
function _burnBatch(
address from,
uint256[] memory ids,
uint256[] memory amounts
) internal virtual {
require(from != address(0), "ERC1155: burn from the zero address");
require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");
address operator = _msgSender();
_beforeTokenTransfer(operator, from, address(0), ids, amounts, "");
for (uint256 i = 0; i < ids.length; i++) {
uint256 id = ids[i];
uint256 amount = amounts[i];
uint256 fromBalance = _balances[id][from];
require(fromBalance >= amount, "ERC1155: burn amount exceeds balance");
unchecked {
_balances[id][from] = fromBalance - amount;
}
}
emit TransferBatch(operator, from, address(0), ids, amounts);
}
/**
* @dev Approve `operator` to operate on all of `owner` tokens
*
* Emits a {ApprovalForAll} event.
*/
function _setApprovalForAll(
address owner,
address operator,
bool approved
) internal virtual {
require(owner != operator, "ERC1155: setting approval status for self");
_operatorApprovals[owner][operator] = approved;
emit ApprovalForAll(owner, operator, approved);
}
/**
* @dev Hook that is called before any token transfer. This includes minting
* and burning, as well as batched variants.
*
* The same hook is called on both single and batched variants. For single
* transfers, the length of the `id` and `amount` arrays will be 1.
*
* Calling conditions (for each `id` and `amount` pair):
*
* - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens
* of token type `id` will be transferred to `to`.
* - When `from` is zero, `amount` tokens of token type `id` will be minted
* for `to`.
* - when `to` is zero, `amount` of ``from``'s tokens of token type `id`
* will be burned.
* - `from` and `to` are never both zero.
* - `ids` and `amounts` have the same, non-zero length.
*
* To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
*/
function _beforeTokenTransfer(
address operator,
address from,
address to,
uint256[] memory ids,
uint256[] memory amounts,
bytes memory data
) internal virtual {}
function _doSafeTransferAcceptanceCheck(
address operator,
address from,
address to,
uint256 id,
uint256 amount,
bytes memory data
) private {
if (to.isContract()) {
try IERC1155Receiver(to).onERC1155Received(operator, from, id, amount, data) returns (bytes4 response) {
if (response != IERC1155Receiver.onERC1155Received.selector) {
revert("ERC1155: ERC1155Receiver rejected tokens");
}
} catch Error(string memory reason) {
revert(reason);
} catch {
revert("ERC1155: transfer to non ERC1155Receiver implementer");
}
}
}
function _doSafeBatchTransferAcceptanceCheck(
address operator,
address from,
address to,
uint256[] memory ids,
uint256[] memory amounts,
bytes memory data
) private {
if (to.isContract()) {
try IERC1155Receiver(to).onERC1155BatchReceived(operator, from, ids, amounts, data) returns (
bytes4 response
) {
if (response != IERC1155Receiver.onERC1155BatchReceived.selector) {
revert("ERC1155: ERC1155Receiver rejected tokens");
}
} catch Error(string memory reason) {
revert(reason);
} catch {
revert("ERC1155: transfer to non ERC1155Receiver implementer");
}
}
}
function _asSingletonArray(uint256 element) private pure returns (uint256[] memory) {
uint256[] memory array = new uint256[](1);
array[0] = element;
return array;
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC1155/extensions/ERC1155Supply.sol)
pragma solidity ^0.8.0;
import "../ERC1155.sol";
/**
* @dev Extension of ERC1155 that adds tracking of total supply per id.
*
* Useful for scenarios where Fungible and Non-fungible tokens have to be
* clearly identified. Note: While a totalSupply of 1 might mean the
* corresponding is an NFT, there is no guarantees that no other token with the
* same id are not going to be minted.
*/
abstract contract ERC1155Supply is ERC1155 {
mapping(uint256 => uint256) private _totalSupply;
/**
* @dev Total amount of tokens in with a given id.
*/
function totalSupply(uint256 id) public view virtual returns (uint256) {
return _totalSupply[id];
}
/**
* @dev Indicates whether any token exist with a given id, or not.
*/
function exists(uint256 id) public view virtual returns (bool) {
return ERC1155Supply.totalSupply(id) > 0;
}
/**
* @dev See {ERC1155-_beforeTokenTransfer}.
*/
function _beforeTokenTransfer(
address operator,
address from,
address to,
uint256[] memory ids,
uint256[] memory amounts,
bytes memory data
) internal virtual override {
super._beforeTokenTransfer(operator, from, to, ids, amounts, data);
if (from == address(0)) {
for (uint256 i = 0; i < ids.length; ++i) {
_totalSupply[ids[i]] += amounts[i];
}
}
if (to == address(0)) {
for (uint256 i = 0; i < ids.length; ++i) {
_totalSupply[ids[i]] -= amounts[i];
}
}
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC1155/extensions/IERC1155MetadataURI.sol)
pragma solidity ^0.8.0;
import "../IERC1155.sol";
/**
* @dev Interface of the optional ERC1155MetadataExtension interface, as defined
* in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP].
*
* _Available since v3.1._
*/
interface IERC1155MetadataURI is IERC1155 {
/**
* @dev Returns the URI for token type `id`.
*
* If the `\{id\}` substring is present in the URI, it must be replaced by
* clients with the actual token type ID.
*/
function uri(uint256 id) external view returns (string memory);
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC1155/IERC1155.sol)
pragma solidity ^0.8.0;
import "../../utils/introspection/IERC165.sol";
/**
* @dev Required interface of an ERC1155 compliant contract, as defined in the
* https://eips.ethereum.org/EIPS/eip-1155[EIP].
*
* _Available since v3.1._
*/
interface IERC1155 is IERC165 {
/**
* @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.
*/
event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);
/**
* @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all
* transfers.
*/
event TransferBatch(
address indexed operator,
address indexed from,
address indexed to,
uint256[] ids,
uint256[] values
);
/**
* @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to
* `approved`.
*/
event ApprovalForAll(address indexed account, address indexed operator, bool approved);
/**
* @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.
*
* If an {URI} event was emitted for `id`, the standard
* https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value
* returned by {IERC1155MetadataURI-uri}.
*/
event URI(string value, uint256 indexed id);
/**
* @dev Returns the amount of tokens of token type `id` owned by `account`.
*
* Requirements:
*
* - `account` cannot be the zero address.
*/
function balanceOf(address account, uint256 id) external view returns (uint256);
/**
* @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.
*
* Requirements:
*
* - `accounts` and `ids` must have the same length.
*/
function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids)
external
view
returns (uint256[] memory);
/**
* @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,
*
* Emits an {ApprovalForAll} event.
*
* Requirements:
*
* - `operator` cannot be the caller.
*/
function setApprovalForAll(address operator, bool approved) external;
/**
* @dev Returns true if `operator` is approved to transfer ``account``'s tokens.
*
* See {setApprovalForAll}.
*/
function isApprovedForAll(address account, address operator) external view returns (bool);
/**
* @dev Transfers `amount` tokens of token type `id` from `from` to `to`.
*
* Emits a {TransferSingle} event.
*
* Requirements:
*
* - `to` cannot be the zero address.
* - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}.
* - `from` must have a balance of tokens of type `id` of at least `amount`.
* - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
* acceptance magic value.
*/
function safeTransferFrom(
address from,
address to,
uint256 id,
uint256 amount,
bytes calldata data
) external;
/**
* @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.
*
* Emits a {TransferBatch} event.
*
* Requirements:
*
* - `ids` and `amounts` must have the same length.
* - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the
* acceptance magic value.
*/
function safeBatchTransferFrom(
address from,
address to,
uint256[] calldata ids,
uint256[] calldata amounts,
bytes calldata data
) external;
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol)
pragma solidity ^0.8.0;
import "../../utils/introspection/IERC165.sol";
/**
* @dev _Available since v3.1._
*/
interface IERC1155Receiver is IERC165 {
/**
* @dev Handles the receipt of a single ERC1155 token type. This function is
* called at the end of a `safeTransferFrom` after the balance has been updated.
*
* NOTE: To accept the transfer, this must return
* `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))`
* (i.e. 0xf23a6e61, or its own function selector).
*
* @param operator The address which initiated the transfer (i.e. msg.sender)
* @param from The address which previously owned the token
* @param id The ID of the token being transferred
* @param value The amount of tokens being transferred
* @param data Additional data with no specified format
* @return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed
*/
function onERC1155Received(
address operator,
address from,
uint256 id,
uint256 value,
bytes calldata data
) external returns (bytes4);
/**
* @dev Handles the receipt of a multiple ERC1155 token types. This function
* is called at the end of a `safeBatchTransferFrom` after the balances have
* been updated.
*
* NOTE: To accept the transfer(s), this must return
* `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))`
* (i.e. 0xbc197c81, or its own function selector).
*
* @param operator The address which initiated the batch transfer (i.e. msg.sender)
* @param from The address which previously owned the token
* @param ids An array containing ids of each token being transferred (order and length must match values array)
* @param values An array containing amounts of each token being transferred (order and length must match ids array)
* @param data Additional data with no specified format
* @return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` if transfer is allowed
*/
function onERC1155BatchReceived(
address operator,
address from,
uint256[] calldata ids,
uint256[] calldata values,
bytes calldata data
) external returns (bytes4);
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol)
pragma solidity ^0.8.1;
/**
* @dev Collection of functions related to the address type
*/
library Address {
/**
* @dev Returns true if `account` is a contract.
*
* [IMPORTANT]
* ====
* It is unsafe to assume that an address for which this function returns
* false is an externally-owned account (EOA) and not a contract.
*
* Among others, `isContract` will return false for the following
* types of addresses:
*
* - an externally-owned account
* - a contract in construction
* - an address where a contract will be created
* - an address where a contract lived, but was destroyed
* ====
*
* [IMPORTANT]
* ====
* You shouldn't rely on `isContract` to protect against flash loan attacks!
*
* Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets
* like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract
* constructor.
* ====
*/
function isContract(address account) internal view returns (bool) {
// This method relies on extcodesize/address.code.length, which returns 0
// for contracts in construction, since the code is only stored at the end
// of the constructor execution.
return account.code.length > 0;
}
/**
* @dev Replacement for Solidity's `transfer`: sends `amount` wei to
* `recipient`, forwarding all available gas and reverting on errors.
*
* https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
* of certain opcodes, possibly making contracts go over the 2300 gas limit
* imposed by `transfer`, making them unable to receive funds via
* `transfer`. {sendValue} removes this limitation.
*
* https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
*
* IMPORTANT: because control is transferred to `recipient`, care must be
* taken to not create reentrancy vulnerabilities. Consider using
* {ReentrancyGuard} or the
* https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
*/
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
(bool success, ) = recipient.call{value: amount}("");
require(success, "Address: unable to send value, recipient may have reverted");
}
/**
* @dev Performs a Solidity function call using a low level `call`. A
* plain `call` is an unsafe replacement for a function call: use this
* function instead.
*
* If `target` reverts with a revert reason, it is bubbled up by this
* function (like regular Solidity function calls).
*
* Returns the raw returned data. To convert to the expected return value,
* use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
*
* Requirements:
*
* - `target` must be a contract.
* - calling `target` with `data` must not revert.
*
* _Available since v3.1._
*/
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCall(target, data, "Address: low-level call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
* `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but also transferring `value` wei to `target`.
*
* Requirements:
*
* - the calling contract must have an ETH balance of at least `value`.
* - the called Solidity function must be `payable`.
*
* _Available since v3.1._
*/
function functionCallWithValue(
address target,
bytes memory data,
uint256 value
) internal returns (bytes memory) {
return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
}
/**
* @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
* with `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCallWithValue(
address target,
bytes memory data,
uint256 value,
string memory errorMessage
) internal returns (bytes memory) {
require(address(this).balance >= value, "Address: insufficient balance for call");
require(isContract(target), "Address: call to non-contract");
(bool success, bytes memory returndata) = target.call{value: value}(data);
return verifyCallResult(success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
return functionStaticCall(target, data, "Address: low-level static call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(
address target,
bytes memory data,
string memory errorMessage
) internal view returns (bytes memory) {
require(isContract(target), "Address: static call to non-contract");
(bool success, bytes memory returndata) = target.staticcall(data);
return verifyCallResult(success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.4._
*/
function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
return functionDelegateCall(target, data, "Address: low-level delegate call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.4._
*/
function functionDelegateCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
require(isContract(target), "Address: delegate call to non-contract");
(bool success, bytes memory returndata) = target.delegatecall(data);
return verifyCallResult(success, returndata, errorMessage);
}
/**
* @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the
* revert reason using the provided one.
*
* _Available since v4.3._
*/
function verifyCallResult(
bool success,
bytes memory returndata,
string memory errorMessage
) internal pure returns (bytes memory) {
if (success) {
return returndata;
} else {
// Look for revert reason and bubble it up if present
if (returndata.length > 0) {
// The easiest way to bubble the revert reason is using memory via assembly
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)
pragma solidity ^0.8.0;
/**
* @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;
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)
pragma solidity ^0.8.0;
/**
* @title Counters
* @author Matt Condon (@shrugs)
* @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number
* of elements in a mapping, issuing ERC721 ids, or counting request ids.
*
* Include with `using Counters for Counters.Counter;`
*/
library Counters {
struct Counter {
// This variable should never be directly accessed by users of the library: interactions must be restricted to
// the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add
// this feature: see https://github.com/ethereum/solidity/issues/4637
uint256 _value; // default: 0
}
function current(Counter storage counter) internal view returns (uint256) {
return counter._value;
}
function increment(Counter storage counter) internal {
unchecked {
counter._value += 1;
}
}
function decrement(Counter storage counter) internal {
uint256 value = counter._value;
require(value > 0, "Counter: decrement overflow");
unchecked {
counter._value = value - 1;
}
}
function reset(Counter storage counter) internal {
counter._value = 0;
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)
pragma solidity ^0.8.0;
import "./IERC165.sol";
/**
* @dev Implementation of the {IERC165} interface.
*
* Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check
* for the additional interface id that will be supported. For example:
*
* ```solidity
* function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
* return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);
* }
* ```
*
* Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.
*/
abstract contract ERC165 is IERC165 {
/**
* @dev See {IERC165-supportsInterface}.
*/
function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
return interfaceId == type(IERC165).interfaceId;
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC165 standard, as defined in the
* https://eips.ethereum.org/EIPS/eip-165[EIP].
*
* Implementers can declare support of contract interfaces, which can then be
* queried by others ({ERC165Checker}).
*
* For an implementation, see {ERC165}.
*/
interface IERC165 {
/**
* @dev Returns true if this contract implements the interface defined by
* `interfaceId`. See the corresponding
* https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
* to learn more about how these ids are created.
*
* This function call must use less than 30 000 gas.
*/
function supportsInterface(bytes4 interfaceId) external view returns (bool);
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Strings.sol)
pragma solidity ^0.8.0;
/**
* @dev String operations.
*/
library Strings {
bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";
/**
* @dev Converts a `uint256` to its ASCII `string` decimal representation.
*/
function toString(uint256 value) internal pure returns (string memory) {
// Inspired by OraclizeAPI's implementation - MIT licence
// https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol
if (value == 0) {
return "0";
}
uint256 temp = value;
uint256 digits;
while (temp != 0) {
digits++;
temp /= 10;
}
bytes memory buffer = new bytes(digits);
while (value != 0) {
digits -= 1;
buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
value /= 10;
}
return string(buffer);
}
/**
* @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.
*/
function toHexString(uint256 value) internal pure returns (string memory) {
if (value == 0) {
return "0x00";
}
uint256 temp = value;
uint256 length = 0;
while (temp != 0) {
length++;
temp >>= 8;
}
return toHexString(value, length);
}
/**
* @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.
*/
function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
bytes memory buffer = new bytes(2 * length + 2);
buffer[0] = "0";
buffer[1] = "x";
for (uint256 i = 2 * length + 1; i > 1; --i) {
buffer[i] = _HEX_SYMBOLS[value & 0xf];
value >>= 4;
}
require(value == 0, "Strings: hex length insufficient");
return string(buffer);
}
}
// SPDX-License-Identifier: MIT
pragma solidity >= 0.4.22 <0.9.0;
library console {
address constant CONSOLE_ADDRESS = address(0x000000000000000000636F6e736F6c652e6c6f67);
function _sendLogPayload(bytes memory payload) private view {
uint256 payloadLength = payload.length;
address consoleAddress = CONSOLE_ADDRESS;
assembly {
let payloadStart := add(payload, 32)
let r := staticcall(gas(), consoleAddress, payloadStart, payloadLength, 0, 0)
}
}
function log() internal view {
_sendLogPayload(abi.encodeWithSignature("log()"));
}
function logInt(int p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(int)", p0));
}
function logUint(uint p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint)", p0));
}
function logString(string memory p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string)", p0));
}
function logBool(bool p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool)", p0));
}
function logAddress(address p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address)", p0));
}
function logBytes(bytes memory p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes)", p0));
}
function logBytes1(bytes1 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes1)", p0));
}
function logBytes2(bytes2 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes2)", p0));
}
function logBytes3(bytes3 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes3)", p0));
}
function logBytes4(bytes4 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes4)", p0));
}
function logBytes5(bytes5 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes5)", p0));
}
function logBytes6(bytes6 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes6)", p0));
}
function logBytes7(bytes7 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes7)", p0));
}
function logBytes8(bytes8 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes8)", p0));
}
function logBytes9(bytes9 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes9)", p0));
}
function logBytes10(bytes10 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes10)", p0));
}
function logBytes11(bytes11 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes11)", p0));
}
function logBytes12(bytes12 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes12)", p0));
}
function logBytes13(bytes13 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes13)", p0));
}
function logBytes14(bytes14 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes14)", p0));
}
function logBytes15(bytes15 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes15)", p0));
}
function logBytes16(bytes16 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes16)", p0));
}
function logBytes17(bytes17 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes17)", p0));
}
function logBytes18(bytes18 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes18)", p0));
}
function logBytes19(bytes19 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes19)", p0));
}
function logBytes20(bytes20 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes20)", p0));
}
function logBytes21(bytes21 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes21)", p0));
}
function logBytes22(bytes22 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes22)", p0));
}
function logBytes23(bytes23 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes23)", p0));
}
function logBytes24(bytes24 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes24)", p0));
}
function logBytes25(bytes25 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes25)", p0));
}
function logBytes26(bytes26 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes26)", p0));
}
function logBytes27(bytes27 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes27)", p0));
}
function logBytes28(bytes28 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes28)", p0));
}
function logBytes29(bytes29 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes29)", p0));
}
function logBytes30(bytes30 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes30)", p0));
}
function logBytes31(bytes31 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes31)", p0));
}
function logBytes32(bytes32 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes32)", p0));
}
function log(uint p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint)", p0));
}
function log(string memory p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string)", p0));
}
function log(bool p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool)", p0));
}
function log(address p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address)", p0));
}
function log(uint p0, uint p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint)", p0, p1));
}
function log(uint p0, string memory p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string)", p0, p1));
}
function log(uint p0, bool p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool)", p0, p1));
}
function log(uint p0, address p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address)", p0, p1));
}
function log(string memory p0, uint p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint)", p0, p1));
}
function log(string memory p0, string memory p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string)", p0, p1));
}
function log(string memory p0, bool p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool)", p0, p1));
}
function log(string memory p0, address p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address)", p0, p1));
}
function log(bool p0, uint p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint)", p0, p1));
}
function log(bool p0, string memory p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string)", p0, p1));
}
function log(bool p0, bool p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool)", p0, p1));
}
function log(bool p0, address p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address)", p0, p1));
}
function log(address p0, uint p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint)", p0, p1));
}
function log(address p0, string memory p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string)", p0, p1));
}
function log(address p0, bool p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool)", p0, p1));
}
function log(address p0, address p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address)", p0, p1));
}
function log(uint p0, uint p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint)", p0, p1, p2));
}
function log(uint p0, uint p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,string)", p0, p1, p2));
}
function log(uint p0, uint p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool)", p0, p1, p2));
}
function log(uint p0, uint p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,address)", p0, p1, p2));
}
function log(uint p0, string memory p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,uint)", p0, p1, p2));
}
function log(uint p0, string memory p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,string)", p0, p1, p2));
}
function log(uint p0, string memory p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,bool)", p0, p1, p2));
}
function log(uint p0, string memory p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,address)", p0, p1, p2));
}
function log(uint p0, bool p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint)", p0, p1, p2));
}
function log(uint p0, bool p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,string)", p0, p1, p2));
}
function log(uint p0, bool p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool)", p0, p1, p2));
}
function log(uint p0, bool p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,address)", p0, p1, p2));
}
function log(uint p0, address p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,uint)", p0, p1, p2));
}
function log(uint p0, address p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,string)", p0, p1, p2));
}
function log(uint p0, address p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,bool)", p0, p1, p2));
}
function log(uint p0, address p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,address)", p0, p1, p2));
}
function log(string memory p0, uint p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,uint)", p0, p1, p2));
}
function log(string memory p0, uint p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,string)", p0, p1, p2));
}
function log(string memory p0, uint p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,bool)", p0, p1, p2));
}
function log(string memory p0, uint p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,address)", p0, p1, p2));
}
function log(string memory p0, string memory p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint)", p0, p1, p2));
}
function log(string memory p0, string memory p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,string)", p0, p1, p2));
}
function log(string memory p0, string memory p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,bool)", p0, p1, p2));
}
function log(string memory p0, string memory p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,address)", p0, p1, p2));
}
function log(string memory p0, bool p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint)", p0, p1, p2));
}
function log(string memory p0, bool p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,string)", p0, p1, p2));
}
function log(string memory p0, bool p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool)", p0, p1, p2));
}
function log(string memory p0, bool p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,address)", p0, p1, p2));
}
function log(string memory p0, address p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint)", p0, p1, p2));
}
function log(string memory p0, address p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,string)", p0, p1, p2));
}
function log(string memory p0, address p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,bool)", p0, p1, p2));
}
function log(string memory p0, address p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,address)", p0, p1, p2));
}
function log(bool p0, uint p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint)", p0, p1, p2));
}
function log(bool p0, uint p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,string)", p0, p1, p2));
}
function log(bool p0, uint p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool)", p0, p1, p2));
}
function log(bool p0, uint p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,address)", p0, p1, p2));
}
function log(bool p0, string memory p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint)", p0, p1, p2));
}
function log(bool p0, string memory p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,string)", p0, p1, p2));
}
function log(bool p0, string memory p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool)", p0, p1, p2));
}
function log(bool p0, string memory p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,address)", p0, p1, p2));
}
function log(bool p0, bool p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint)", p0, p1, p2));
}
function log(bool p0, bool p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string)", p0, p1, p2));
}
function log(bool p0, bool p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool)", p0, p1, p2));
}
function log(bool p0, bool p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address)", p0, p1, p2));
}
function log(bool p0, address p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint)", p0, p1, p2));
}
function log(bool p0, address p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,string)", p0, p1, p2));
}
function log(bool p0, address p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool)", p0, p1, p2));
}
function log(bool p0, address p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,address)", p0, p1, p2));
}
function log(address p0, uint p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,uint)", p0, p1, p2));
}
function log(address p0, uint p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,string)", p0, p1, p2));
}
function log(address p0, uint p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,bool)", p0, p1, p2));
}
function log(address p0, uint p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,address)", p0, p1, p2));
}
function log(address p0, string memory p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint)", p0, p1, p2));
}
function log(address p0, string memory p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,string)", p0, p1, p2));
}
function log(address p0, string memory p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,bool)", p0, p1, p2));
}
function log(address p0, string memory p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,address)", p0, p1, p2));
}
function log(address p0, bool p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint)", p0, p1, p2));
}
function log(address p0, bool p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,string)", p0, p1, p2));
}
function log(address p0, bool p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool)", p0, p1, p2));
}
function log(address p0, bool p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,address)", p0, p1, p2));
}
function log(address p0, address p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint)", p0, p1, p2));
}
function log(address p0, address p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,string)", p0, p1, p2));
}
function log(address p0, address p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,bool)", p0, p1, p2));
}
function log(address p0, address p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,address)", p0, p1, p2));
}
function log(uint p0, uint p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,uint)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,string)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,bool)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,address)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,uint)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,string)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,bool)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,address)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,uint)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,string)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,bool)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,address)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,uint)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,string)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,bool)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,address)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,uint)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,string)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,bool)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,address)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,string,uint)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,string,string)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,string,bool)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,string,address)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,uint)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,string)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,bool)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,address)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,address,uint)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,address,string)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,address,bool)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,address,address)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,uint)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,string)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,bool)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,address)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,uint)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,string)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,bool)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,address)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,uint)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,string)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,bool)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,address)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,uint)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,string)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,bool)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,address)", p0, p1, p2, p3));
}
function log(uint p0, address p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,uint)", p0, p1, p2, p3));
}
function log(uint p0, address p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,string)", p0, p1, p2, p3));
}
function log(uint p0, address p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,bool)", p0, p1, p2, p3));
}
function log(uint p0, address p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,address)", p0, p1, p2, p3));
}
function log(uint p0, address p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,string,uint)", p0, p1, p2, p3));
}
function log(uint p0, address p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,string,string)", p0, p1, p2, p3));
}
function log(uint p0, address p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,string,bool)", p0, p1, p2, p3));
}
function log(uint p0, address p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,string,address)", p0, p1, p2, p3));
}
function log(uint p0, address p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,uint)", p0, p1, p2, p3));
}
function log(uint p0, address p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,string)", p0, p1, p2, p3));
}
function log(uint p0, address p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,bool)", p0, p1, p2, p3));
}
function log(uint p0, address p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,address)", p0, p1, p2, p3));
}
function log(uint p0, address p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,address,uint)", p0, p1, p2, p3));
}
function log(uint p0, address p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,address,string)", p0, p1, p2, p3));
}
function log(uint p0, address p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,address,bool)", p0, p1, p2, p3));
}
function log(uint p0, address p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,address,address)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,uint)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,string)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,bool)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,address)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,string,uint)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,string,string)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,string,bool)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,string,address)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,uint)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,string)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,bool)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,address)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,address,uint)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,address,string)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,address,bool)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,address,address)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint,uint)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint,string)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint,bool)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint,address)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,string,uint)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,string,string)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,string,bool)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,string,address)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,bool,uint)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,bool,string)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,bool,bool)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,bool,address)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,address,uint)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,address,string)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,address,bool)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,address,address)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,uint)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,string)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,bool)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,address)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,string,uint)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,string,string)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,string,bool)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,string,address)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,uint)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,string)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,bool)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,address)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,address,uint)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,address,string)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,address,bool)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,address,address)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint,uint)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint,string)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint,bool)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint,address)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,string,uint)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,string,string)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,string,bool)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,string,address)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,bool,uint)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,bool,string)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,bool,bool)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,bool,address)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,address,uint)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,address,string)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,address,bool)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,address,address)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,uint)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,string)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,bool)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,address)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,uint)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,string)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,bool)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,address)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,uint)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,string)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,bool)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,address)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,uint)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,string)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,bool)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,address)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,uint)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,string)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,bool)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,address)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,string,uint)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,string,string)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,string,bool)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,string,address)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,uint)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,string)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,bool)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,address)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,address,uint)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,address,string)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,address,bool)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,address,address)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,uint)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,string)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,bool)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,address)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,uint)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,string)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,bool)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,address)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,uint)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,string)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,bool)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,address)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,uint)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,string)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,bool)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,address)", p0, p1, p2, p3));
}
function log(bool p0, address p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,uint)", p0, p1, p2, p3));
}
function log(bool p0, address p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,string)", p0, p1, p2, p3));
}
function log(bool p0, address p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,bool)", p0, p1, p2, p3));
}
function log(bool p0, address p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,address)", p0, p1, p2, p3));
}
function log(bool p0, address p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,string,uint)", p0, p1, p2, p3));
}
function log(bool p0, address p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,string,string)", p0, p1, p2, p3));
}
function log(bool p0, address p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,string,bool)", p0, p1, p2, p3));
}
function log(bool p0, address p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,string,address)", p0, p1, p2, p3));
}
function log(bool p0, address p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,uint)", p0, p1, p2, p3));
}
function log(bool p0, address p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,string)", p0, p1, p2, p3));
}
function log(bool p0, address p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,bool)", p0, p1, p2, p3));
}
function log(bool p0, address p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,address)", p0, p1, p2, p3));
}
function log(bool p0, address p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,address,uint)", p0, p1, p2, p3));
}
function log(bool p0, address p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,address,string)", p0, p1, p2, p3));
}
function log(bool p0, address p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,address,bool)", p0, p1, p2, p3));
}
function log(bool p0, address p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,address,address)", p0, p1, p2, p3));
}
function log(address p0, uint p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,uint)", p0, p1, p2, p3));
}
function log(address p0, uint p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,string)", p0, p1, p2, p3));
}
function log(address p0, uint p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,bool)", p0, p1, p2, p3));
}
function log(address p0, uint p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,address)", p0, p1, p2, p3));
}
function log(address p0, uint p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,string,uint)", p0, p1, p2, p3));
}
function log(address p0, uint p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,string,string)", p0, p1, p2, p3));
}
function log(address p0, uint p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,string,bool)", p0, p1, p2, p3));
}
function log(address p0, uint p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,string,address)", p0, p1, p2, p3));
}
function log(address p0, uint p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,uint)", p0, p1, p2, p3));
}
function log(address p0, uint p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,string)", p0, p1, p2, p3));
}
function log(address p0, uint p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,bool)", p0, p1, p2, p3));
}
function log(address p0, uint p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,address)", p0, p1, p2, p3));
}
function log(address p0, uint p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,address,uint)", p0, p1, p2, p3));
}
function log(address p0, uint p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,address,string)", p0, p1, p2, p3));
}
function log(address p0, uint p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,address,bool)", p0, p1, p2, p3));
}
function log(address p0, uint p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,address,address)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint,uint)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint,string)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint,bool)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint,address)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,string,uint)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,string,string)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,string,bool)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,string,address)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,bool,uint)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,bool,string)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,bool,bool)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,bool,address)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,address,uint)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,address,string)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,address,bool)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,address,address)", p0, p1, p2, p3));
}
function log(address p0, bool p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,uint)", p0, p1, p2, p3));
}
function log(address p0, bool p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,string)", p0, p1, p2, p3));
}
function log(address p0, bool p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,bool)", p0, p1, p2, p3));
}
function log(address p0, bool p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,address)", p0, p1, p2, p3));
}
function log(address p0, bool p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,string,uint)", p0, p1, p2, p3));
}
function log(address p0, bool p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,string,string)", p0, p1, p2, p3));
}
function log(address p0, bool p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,string,bool)", p0, p1, p2, p3));
}
function log(address p0, bool p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,string,address)", p0, p1, p2, p3));
}
function log(address p0, bool p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,uint)", p0, p1, p2, p3));
}
function log(address p0, bool p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,string)", p0, p1, p2, p3));
}
function log(address p0, bool p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,bool)", p0, p1, p2, p3));
}
function log(address p0, bool p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,address)", p0, p1, p2, p3));
}
function log(address p0, bool p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,address,uint)", p0, p1, p2, p3));
}
function log(address p0, bool p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,address,string)", p0, p1, p2, p3));
}
function log(address p0, bool p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,address,bool)", p0, p1, p2, p3));
}
function log(address p0, bool p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,address,address)", p0, p1, p2, p3));
}
function log(address p0, address p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint,uint)", p0, p1, p2, p3));
}
function log(address p0, address p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint,string)", p0, p1, p2, p3));
}
function log(address p0, address p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint,bool)", p0, p1, p2, p3));
}
function log(address p0, address p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint,address)", p0, p1, p2, p3));
}
function log(address p0, address p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,string,uint)", p0, p1, p2, p3));
}
function log(address p0, address p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,string,string)", p0, p1, p2, p3));
}
function log(address p0, address p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,string,bool)", p0, p1, p2, p3));
}
function log(address p0, address p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,string,address)", p0, p1, p2, p3));
}
function log(address p0, address p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,bool,uint)", p0, p1, p2, p3));
}
function log(address p0, address p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,bool,string)", p0, p1, p2, p3));
}
function log(address p0, address p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,bool,bool)", p0, p1, p2, p3));
}
function log(address p0, address p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,bool,address)", p0, p1, p2, p3));
}
function log(address p0, address p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,address,uint)", p0, p1, p2, p3));
}
function log(address p0, address p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,address,string)", p0, p1, p2, p3));
}
function log(address p0, address p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,address,bool)", p0, p1, p2, p3));
}
function log(address p0, address p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,address,address)", p0, p1, p2, p3));
}
}
REMIX EXAMPLE PROJECT
Remix example project is present when Remix loads for the very first time or there are no files existing in the File Explorer.
It contains 3 directories:
1. 'contracts': Holds three contracts with different complexity level, denoted with number prefix in file name.
2. 'scripts': Holds two scripts to deploy a contract. It is explained below.
3. 'tests': Contains one test file for 'Ballot' contract with unit tests in Solidity.
SCRIPTS
The 'scripts' folder contains example async/await scripts for deploying the 'Storage' contract.
For the deployment of any other contract, 'contractName' and 'constructorArgs' should be updated (along with other code if required).
Scripts have full access to the web3.js and ethers.js libraries.
To run a script, right click on file name in the file explorer and click 'Run'. Remember, Solidity file must already be compiled.
Output from script will appear in remix terminal.
// this line is added to create a gist. Empty file is not allowed.
{
"compiler": {
"version": "0.8.12+commit.f00d7308"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "marketingWallet_",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "approved",
"type": "bool"
}
],
"name": "ApprovalForAll",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "creatorAddress",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "fmImgHash",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "totalSupply",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amountForCreator",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amountForMarketing",
"type": "uint256"
}
],
"name": "FmCreated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "FmHidden",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "FmUnhidden",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "Paused",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "previousAdminRole",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "newAdminRole",
"type": "bytes32"
}
],
"name": "RoleAdminChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleGranted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleRevoked",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256[]",
"name": "ids",
"type": "uint256[]"
},
{
"indexed": false,
"internalType": "uint256[]",
"name": "values",
"type": "uint256[]"
}
],
"name": "TransferBatch",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "TransferSingle",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "string",
"name": "value",
"type": "string"
},
{
"indexed": true,
"internalType": "uint256",
"name": "id",
"type": "uint256"
}
],
"name": "URI",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "Unpaused",
"type": "event"
},
{
"inputs": [],
"name": "DEFAULT_ADMIN_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "accounts",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "ids",
"type": "uint256[]"
}
],
"name": "balanceOfBatch",
"outputs": [
{
"internalType": "uint256[]",
"name": "",
"type": "uint256[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId_",
"type": "uint256"
}
],
"name": "creatorAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
}
],
"name": "exists",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "fmHiddenCount",
"outputs": [
{
"internalType": "uint256",
"name": "_value",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "fmHiddenList",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "fmHiddenURL",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "fmMarketingFees",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "fmMarketingWallet",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "fmUniqueImgHashList",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"name": "getRoleAdmin",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "grantRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "hasRole",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId_",
"type": "uint256"
}
],
"name": "hideFm",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256[]",
"name": "tokenIds_",
"type": "uint256[]"
}
],
"name": "hideFms",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "address",
"name": "operator",
"type": "address"
}
],
"name": "isApprovedForAll",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId_",
"type": "uint256"
}
],
"name": "isHidden",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "maxMintAmount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "minCharityFees",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "fmURL_",
"type": "string"
},
{
"internalType": "uint256",
"name": "fmImgHash_",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amount_",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "mpCharityFees_",
"type": "uint256"
}
],
"name": "mintByAthlete",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "creatorAddress_",
"type": "address"
},
{
"internalType": "string",
"name": "fmURL_",
"type": "string"
},
{
"internalType": "uint256",
"name": "fmImgHash_",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amount_",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "mpCharityFees_",
"type": "uint256"
}
],
"name": "mintForAthlete",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "mpFantasticoFees",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account_",
"type": "address"
}
],
"name": "ownedToken",
"outputs": [
{
"internalType": "uint256[]",
"name": "",
"type": "uint256[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "pause",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "paused",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "renounceRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "revokeRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256[]",
"name": "ids",
"type": "uint256[]"
},
{
"internalType": "uint256[]",
"name": "amounts",
"type": "uint256[]"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "safeBatchTransferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "safeTransferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"internalType": "bool",
"name": "approved",
"type": "bool"
}
],
"name": "setApprovalForAll",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "value_",
"type": "uint256"
}
],
"name": "setFantasticoFees",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "url_",
"type": "string"
}
],
"name": "setHiddenURL",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "value_",
"type": "uint256"
}
],
"name": "setMarketingFees",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "address_",
"type": "address"
}
],
"name": "setMarketingWalletAddress",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "value_",
"type": "uint256"
}
],
"name": "setMaxMintAmount",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "value_",
"type": "uint256"
}
],
"name": "setMinCharityFees",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId_",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
}
],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId_",
"type": "uint256"
}
],
"name": "unhideFm",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256[]",
"name": "tokenIds_",
"type": "uint256[]"
}
],
"name": "unhideFms",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "unpause",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId_",
"type": "uint256"
}
],
"name": "uri",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {
"balanceOf(address,uint256)": {
"details": "See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address."
},
"balanceOfBatch(address[],uint256[])": {
"details": "See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length."
},
"constructor": {
"details": "Constructor",
"params": {
"marketingWallet_": "The address of the marketing wallet"
}
},
"creatorAddress(uint256)": {
"details": "Return the creator address of the Fantastic Moment",
"params": {
"tokenId_": "The tokenId of the FM."
},
"returns": {
"_0": "address of the creator of the FM"
}
},
"exists(uint256)": {
"details": "Indicates whether any token exist with a given id, or not."
},
"getRoleAdmin(bytes32)": {
"details": "Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."
},
"grantRole(bytes32,address)": {
"details": "Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role."
},
"hasRole(bytes32,address)": {
"details": "Returns `true` if `account` has been granted `role`."
},
"hideFm(uint256)": {
"details": "Hide a FM by setting the FM `hidden` attribute to true if it's value is false !! Otherwise the value is not modified !! It will also: - Add the tokenId to the list of hidden tokens `fmHiddenList` - Increment by one the value of `fmsiddenCount` - Emit an FmHidden event IMPORTANT: when hidden the value of the default generic URL `hiddenFmURL` will be returned by the uri() function instead of the URL stored in the FantasticMoment struct for this tokenId.",
"params": {
"tokenId_": "The tokenId of the FM. Requirements: ADMIN_ROLE"
}
},
"hideFms(uint256[])": {
"details": "Hide multiple FMs at once",
"params": {
"tokenIds_": "Array of tokenIds of the FMs to hide Requirements: ADMIN_ROLE"
}
},
"isApprovedForAll(address,address)": {
"details": "See {IERC1155-isApprovedForAll}."
},
"isHidden(uint256)": {
"details": "Return true if the FM is hidden",
"params": {
"tokenId_": "tokenId of the FM Requirements: ADMIN_ROLE"
}
},
"mintByAthlete(string,uint256,uint256,uint256)": {
"details": "Only addresses with MINTER_ROLE can call this function. The owner of the FM will be the sender of the transaction.",
"params": {
"amount_": "Total amount of FMs to mint.",
"fmImgHash_": "SHA256 hash of the FM image.",
"fmURL_": "URL of the FM metadata or picture. Example: \"ipfs://QmcFAs7GH9bh6Q11bLVwd5J2/FM.json\"",
"mpCharityFees_": "Fees on marketplace sales Requirements: MINTER_ROLE"
}
},
"mintForAthlete(address,string,uint256,uint256,uint256)": {
"details": "Address with MANAGER_ROLE can call this function and mint FMs for athletes, but only for addresses with MINTER_ROLE. The owner of the FM will be the creator address and *NOT* the sender of the transaction.",
"params": {
"amount_": "Total amount of FMs to mint.",
"creatorAddress_": "Wallet address of the creator of the FM",
"fmImgHash_": "SHA256 hash of the FM image.",
"fmURL_": "URL of the FM metadata or picture. Example: \"ipfs://QmcFAs7GH9bh6Q11bLVwd5J2/FM.json\"",
"mpCharityFees_": "Fees on marketplace sales Requirements: MANAGER_ROLE"
}
},
"name()": {
"details": "Return the token name"
},
"pause()": {
"details": "Pause the Athlete minting and transfers - but not manager minting IMPORTANT - !! MintForAthlete will not be paused !! Requirements: ADMIN_ROLE"
},
"paused()": {
"details": "Returns true if the contract is paused, and false otherwise."
},
"renounceRole(bytes32,address)": {
"details": "Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`."
},
"revokeRole(bytes32,address)": {
"details": "Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role."
},
"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": {
"details": "See {IERC1155-safeBatchTransferFrom}."
},
"safeTransferFrom(address,address,uint256,uint256,bytes)": {
"details": "See {IERC1155-safeTransferFrom}."
},
"setApprovalForAll(address,bool)": {
"details": "See {IERC1155-setApprovalForAll}."
},
"setFantasticoFees(uint256)": {
"details": "Update the value used for calculation of % of Fantastico fees after each successful sales on the Fantastico marketplace. Accepted value from 0 to 10 maximum - Default Value at contract deployment: 5 This value will be stored on the FM data structure at mint time.",
"params": {
"value_": "the percentage of FMs sent to Fantastico wallet. Requirements: ADMIN_ROLE"
}
},
"setHiddenURL(string)": {
"details": "Set the value of the generic URI returned for hidden tokens. Default value is empty string \"\" - initialized in constructor",
"params": {
"url_": "the URI returned for the hidden tokens. Ex: https://fantastico.ooo/api/v1/hidden.json Requirements: ADMIN_ROLE"
}
},
"setMarketingFees(uint256)": {
"details": "Update the percentage of newly minted FMs sent to Marketing wallet. Accepted value from 0 to 10 maximum - Default Value at contract deployment: 5",
"params": {
"value_": "the percentage of FMs sent to the Marketing wallet. Requirements: ADMIN_ROLE"
}
},
"setMarketingWalletAddress(address)": {
"details": "Update the address of the Marketing wallet",
"params": {
"address_": "the new address of the Marketing wallet. Requirements: ADMIN_ROLE"
}
},
"setMaxMintAmount(uint256)": {
"details": "Update the value of the maximum amount of each newly minted FMs values are between 1-2500, with a default of 2500 at contract deployment.",
"params": {
"value_": "the maximum amount of each newly minted FMs Requirements: ADMIN_ROLE"
}
},
"setMinCharityFees(uint256)": {
"details": "Update the value used for calculation of % of Fantastico fees sent to Charity wallet after each successful sales on the Fantastico marketplace. Accepted value from 0 to 100 maximum - Default Value at contract deployment: 10 This value will be stored on the FM data structure at mint time.",
"params": {
"value_": "the percentage of FMs sent to the Charity wallet. Requirements: ADMIN_ROLE"
}
},
"symbol()": {
"details": "Return the token Symbol"
},
"totalSupply(uint256)": {
"details": "Total amount of tokens in with a given id."
},
"unhideFm(uint256)": {
"details": "Unhide a FM by setting the FM `hidden` attribute to false if it's value is true !! Otherwise the value is not modified !! It will also: - Delete the tokenId to the list of hidden tokens `fmHiddenList` - Decrement by one the value of `fmHiddenCount` - Emit an FmUnhidden event",
"params": {
"tokenId_": "The tokenId of the FM. Requirements: ADMIN_ROLE"
}
},
"unhideFms(uint256[])": {
"details": "Unhide multiple hidden FMs at once",
"params": {
"tokenIds_": "Array of tokenIds of the FMs to unhide Requirements: ADMIN_ROLE"
}
},
"unpause()": {
"details": "Unpause the Athlete minting and tokens Transfers Requirements: ADMIN_ROLE"
},
"uri(uint256)": {
"details": "This implementation returns the Fantastic Moment URL,l or `fmHiddenURL` if the token is hidden.",
"params": {
"tokenId_": "The tokenId of the FM."
}
}
},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"Fantastico_flat.sol": "Fantastico1155"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": []
},
"sources": {
"@openzeppelin/contracts/access/AccessControl.sol": {
"keccak256": "0x4a1a0ba12bf1a33f10d9fe226278cf59675c0b929d29e4da99658a079b27fb84",
"license": "MIT",
"urls": [
"bzz-raw://bda1319db846d6d6f92d8a57a9bdee8bde1dc39aa7546165791692c24dd6f30a",
"dweb:/ipfs/Qma5oZ7DmbdAjd8mpiW7mx896PDtwsQtCQ2hj9Upf7b7JK"
]
},
"@openzeppelin/contracts/access/IAccessControl.sol": {
"keccak256": "0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57",
"license": "MIT",
"urls": [
"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a",
"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh"
]
},
"@openzeppelin/contracts/security/Pausable.sol": {
"keccak256": "0xe68ed7fb8766ed1e888291f881e36b616037f852b37d96877045319ad298ba87",
"license": "MIT",
"urls": [
"bzz-raw://1d491a2ca79dbf44bc02e876e21a5847a2cbcc011188532ad8662cdc1c134a4e",
"dweb:/ipfs/QmUQXhSV8ZvHLzfdG89ZNSh1nLrAYyjnNBLznJGwGcwVk8"
]
},
"@openzeppelin/contracts/security/ReentrancyGuard.sol": {
"keccak256": "0x0e9621f60b2faabe65549f7ed0f24e8853a45c1b7990d47e8160e523683f3935",
"license": "MIT",
"urls": [
"bzz-raw://287a2f8d5814dd0f05f22b740f18ca8321acc21c9bd03a6cb2203ea626e2f3f2",
"dweb:/ipfs/QmZRQv9iuwU817VuqkA2WweiaibKii69x9QxYBBEfbNEud"
]
},
"@openzeppelin/contracts/token/ERC1155/ERC1155.sol": {
"keccak256": "0x04d6d1342ece664085921a4fabc928a7bcf1cf2873fa81780f61a54dc2b9b66e",
"license": "MIT",
"urls": [
"bzz-raw://c6d2b052effa2e9a7479b0fea53b46f4cbbd91947848ef632aadad20ae2e9275",
"dweb:/ipfs/QmcZp7f5cooGZrhHE8RC1yQR53RFZt19d5fyVqNfbHmPgY"
]
},
"@openzeppelin/contracts/token/ERC1155/IERC1155.sol": {
"keccak256": "0x8e93de94c9062ebc94fb7e2e3929b0781ac6a2b7772e2f7a59045861c93e5be9",
"license": "MIT",
"urls": [
"bzz-raw://f920a631bf986c610fe573d3c70a2bb6f224f86f4a8550016470c7ee476c9ab5",
"dweb:/ipfs/QmYzsyVMfnaREKHcHv5RPS8Xg5r1Q38E2SDsGBTnXeFWzb"
]
},
"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol": {
"keccak256": "0xeb373f1fdc7b755c6a750123a9b9e3a8a02c1470042fd6505d875000a80bde0b",
"license": "MIT",
"urls": [
"bzz-raw://0e28648f994abf1d6bc345644a361cc0b7efa544f8bc0c8ec26011fed85a91ec",
"dweb:/ipfs/QmVVE7AiRjKaQYYji7TkjmTeVzGpNmms5eoxqTCfvvpj6D"
]
},
"@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Supply.sol": {
"keccak256": "0xe243a49f159c97fdd011edb7a8ed1b48175f0fa6b8592bb6dcccac7e22d8c37b",
"license": "MIT",
"urls": [
"bzz-raw://9fcf3c76e66e7cbd95bc1d47eb41c2764670deea0e129a0bc8ed893f5ee20628",
"dweb:/ipfs/QmUVYsGME7ikBfN638shb36WHbqecVAzxVMqSHT1eE5Qdk"
]
},
"@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol": {
"keccak256": "0xa66d18b9a85458d28fc3304717964502ae36f7f8a2ff35bc83f6f85d74b03574",
"license": "MIT",
"urls": [
"bzz-raw://e46c80ea068989111d6103e5521223f9ef337e93de76deed8b03f75c6f7b2797",
"dweb:/ipfs/QmNoSE6knNfFncdDDLTb3fGR6oSQty1srG96Vsx3E9wQdw"
]
},
"@openzeppelin/contracts/utils/Address.sol": {
"keccak256": "0x2ccf9d2313a313d41a791505f2b5abfdc62191b5d4334f7f7a82691c088a1c87",
"license": "MIT",
"urls": [
"bzz-raw://b3a57d0854b2fdce6ebff933a48dca2445643d1eccfc27f00292e937f26c6a58",
"dweb:/ipfs/QmW45rZooS9TqR4YXUbjRbtf2Bpb5ouSarBvfW1LdGprvV"
]
},
"@openzeppelin/contracts/utils/Context.sol": {
"keccak256": "0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7",
"license": "MIT",
"urls": [
"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92",
"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"
]
},
"@openzeppelin/contracts/utils/Counters.sol": {
"keccak256": "0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1",
"license": "MIT",
"urls": [
"bzz-raw://59e1c62884d55b70f3ae5432b44bb3166ad71ae3acd19c57ab6ddc3c87c325ee",
"dweb:/ipfs/QmezuXg5GK5oeA4F91EZhozBFekhq5TD966bHPH18cCqhu"
]
},
"@openzeppelin/contracts/utils/Strings.sol": {
"keccak256": "0x32c202bd28995dd20c4347b7c6467a6d3241c74c8ad3edcbb610cd9205916c45",
"license": "MIT",
"urls": [
"bzz-raw://8179c356adb19e70d6b31a1eedc8c5c7f0c00e669e2540f4099e3844c6074d30",
"dweb:/ipfs/QmWFbivarEobbqhS1go64ootVuHfVohBseerYy9FTEd1W2"
]
},
"@openzeppelin/contracts/utils/introspection/ERC165.sol": {
"keccak256": "0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b",
"license": "MIT",
"urls": [
"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d",
"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43"
]
},
"@openzeppelin/contracts/utils/introspection/IERC165.sol": {
"keccak256": "0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1",
"license": "MIT",
"urls": [
"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f",
"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"
]
},
"Fantastico_flat.sol": {
"keccak256": "0x9af618575382463ab8d9fb611e3d8c368093c00c23be82935470432eca702958",
"license": "MIT",
"urls": [
"bzz-raw://822baac65fffce4ddb6f540e705cc0d558fe1fee9ae55d20f5881dd07930b463",
"dweb:/ipfs/QmbarQykbsrwPW5rHWHKtPdAzJ9bFcaagqg6AZjX1CcxZR"
]
},
"hardhat/console.sol": {
"keccak256": "0x72b6a1d297cd3b033d7c2e4a7e7864934bb767db6453623f1c3082c6534547f4",
"license": "MIT",
"urls": [
"bzz-raw://a8cb8681076e765c214e0d51cac989325f6b98e315eaae06ee0cbd5a9f084763",
"dweb:/ipfs/QmNWGHi4zmjxQTYN3NMGnJd49jBT5dE4bxTdWEaDuJrC6N"
]
}
},
"version": 1
}
// SPDX-License-Identifier: MIT
// Copyright © BlockChain Magic Pte Ltd // MMXXII
/*
███████╗░█████╗░███╗░░██╗████████╗░█████╗░░██████╗████████╗██╗░█████╗░░█████╗░
██╔════╝██╔══██╗████╗░██║╚══██╔══╝██╔══██╗██╔════╝╚══██╔══╝██║██╔══██╗██╔══██╗
█████╗░░███████║██╔██╗██║░░░██║░░░███████║╚█████╗░░░░██║░░░██║██║░░╚═╝██║░░██║
██╔══╝░░██╔══██║██║╚████║░░░██║░░░██╔══██║░╚═══██╗░░░██║░░░██║██║░░██╗██║░░██║
██║░░░░░██║░░██║██║░╚███║░░░██║░░░██║░░██║██████╔╝░░░██║░░░██║╚█████╔╝╚█████╔╝
╚═╝░░░░░╚═╝░░╚═╝╚═╝░░╚══╝░░░╚═╝░░░╚═╝░░╚═╝╚═════╝░░░░╚═╝░░░╚═╝░╚════╝░░╚════╝░
███████╗██████╗░░█████╗░░░░░░░░░███╗░░░░███╗░░███████╗███████╗
██╔════╝██╔══██╗██╔══██╗░░░░░░░████║░░░████║░░██╔════╝██╔════╝
█████╗░░██████╔╝██║░░╚═╝█████╗██╔██║░░██╔██║░░██████╗░██████╗░
██╔══╝░░██╔══██╗██║░░██╗╚════╝╚═╝██║░░╚═╝██║░░╚════██╗╚════██╗
███████╗██║░░██║╚█████╔╝░░░░░░███████╗███████╗██████╔╝██████╔╝
╚══════╝╚═╝░░╚═╝░╚════╝░░░░░░░╚══════╝╚══════╝╚═════╝░╚═════╝░
*/
pragma solidity 0.8.12;
import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";
import "@openzeppelin/contracts/access/AccessControl.sol";
import "@openzeppelin/contracts/security/Pausable.sol";
import "@openzeppelin/contracts/security/ReentrancyGuard.sol";
import "@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Supply.sol";
import "@openzeppelin/contracts/utils/Counters.sol";
import "hardhat/console.sol";
contract Fantastico1155 is
ERC1155,
AccessControl,
Pausable,
ERC1155Supply,
ReentrancyGuard
{
event FmCreated(
address creatorAddress,
uint256 tokenId,
uint256 fmImgHash,
uint256 totalSupply,
uint256 amountForCreator,
uint256 amountForMarketing
);
event FmHidden(uint256 tokenId);
event FmUnhidden(uint256 tokenId);
using Counters for Counters.Counter;
Counters.Counter private _tokenIds;
Counters.Counter public fmHiddenCount;
/**
* @dev Struct to store the attributes of a Fantastic Moment token
*
* - creatorAddress: The address of the creator of the FM
* - fmURL: The URL of the FM metadata or image
* - fmImgHash: The hash of the image of the FM
* - totalSupply: The total supply of the FM
* - hidden: Whether the FM is hidden or not
*/
struct FantasticMoment {
address creatorAddress;
string fmURL;
uint256 fmImgHash;
uint16 totalSupply;
// Fees on marketplace sales
// Fantastico
uint8 mpFantasticoFees;
// Athlete's chosen charity
uint8 mpCharityFees;
// Requested by legal team in case of issues...
bool hidden;
}
// * Unique tokenId for each FM
mapping(uint256 => FantasticMoment) private fmCollection;
// * Mapping of the FM image SHA256 hash -> FM tokenId
mapping(uint256 => uint256) public fmUniqueImgHashList;
// * Hidden Fms tokenIds
mapping(uint256 => bool) public fmHiddenList;
// * Generic URL used for all hidden FMs
string public fmHiddenURL;
// * Address of the marketing wallet
address public fmMarketingWallet;
// * Value for calculation of % of newly minted FMS sent to
// * marketing wallet - from 0 to 10 maximum
uint256 public fmMarketingFees;
// * Value for calculation of % of Fantastico fees
// * on each marketplace sales - from 0 to 10 maximum
uint256 public mpFantasticoFees;
// * Minimum % deducted from Fantastico fees and
// * sent to charity wallet - from 10 to 100 maximum
uint256 public minCharityFees;
// * The maximum amount of FM that can be minted
// * between 1-2500 max
uint256 public maxMintAmount;
// * Roles for access control
bytes32 constant ADMIN_ROLE = keccak256("ADMIN_ROLE");
bytes32 constant MANAGER_ROLE = keccak256("MANAGER_ROLE");
bytes32 constant MINTER_ROLE = keccak256("MINTER_ROLE");
/**
* @dev Constructor
*
* @param marketingWallet_ The address of the marketing wallet
*/
constructor(address marketingWallet_) ERC1155("") {
_grantRole(DEFAULT_ADMIN_ROLE, msg.sender);
_grantRole(ADMIN_ROLE, msg.sender);
/* ****************************************
* The functions below requires ADMIN_ROLE
* - setHiddenURL()
* - pause() / unpause()
* - hideFm() / unhideFm()
* - hideFms() / unhideFms()
* - setMarketingWalletAddress()
* - setMarketingFees()
* - setFantasticoFees()
* - setMinCharityFees()
* ***************************************
* The function below requires MANAGER_ROLE
* - mintForAthlete()
* ***************************************
* The function below requires MINTER_ROLE
* - mintByAthlete()
* ***************************************/
maxMintAmount = 2500;
fmHiddenURL = "";
fmMarketingWallet = marketingWallet_;
// * 5% of newly minted FMs sent to Marketing wallet
// * if minted amount > 20
fmMarketingFees = 5;
// * 5% of marketplace sales proceeds sent to Fantastico wallet
mpFantasticoFees = 5;
// * At least 10% of marketplace sales proceeds sent to charity wallet
minCharityFees = 10;
}
/**
* @dev Return the token name
*/
function name() external pure returns (string memory) {
return "Fantastico";
}
/**
* @dev Return the token Symbol
*/
function symbol() external pure returns (string memory) {
return "TICO";
}
/**
* @dev Modifier to verify that a token exists.
*
* @param tokenId_ The tokenId to check.
*/
modifier onlyIfExists(uint256 tokenId_) {
//console.log("Token (%s) exists (%s)", tokenId_, exists(tokenId_));
require(exists(tokenId_), "No FM with this Id");
_;
}
/**
* @dev Set the value of the generic URI returned for hidden tokens.
*
* Default value is empty string "" - initialized in constructor
*
* @param url_ the URI returned for the hidden tokens.
*
* Ex: https://fantastico.ooo/api/v1/hidden.json
*
* Requirements: ADMIN_ROLE
*/
function setHiddenURL(string memory url_) external onlyRole(ADMIN_ROLE) {
fmHiddenURL = url_;
}
/**
* @dev Pause the Athlete minting and transfers - but not manager minting
*
* IMPORTANT - !! MintForAthlete will not be paused !!
*
* Requirements: ADMIN_ROLE
*/
function pause() external onlyRole(ADMIN_ROLE) {
_pause();
}
/**
* @dev Unpause the Athlete minting and tokens Transfers
*
* Requirements: ADMIN_ROLE
*/
function unpause() external onlyRole(ADMIN_ROLE) {
_unpause();
}
/**
* @dev Only addresses with MINTER_ROLE can call this function.
*
* The owner of the FM will be the sender of the transaction.
*
* @param fmURL_ URL of the FM metadata or picture.
* Example: "ipfs://QmcFAs7GH9bh6Q11bLVwd5J2/FM.json"
* @param fmImgHash_ SHA256 hash of the FM image.
* @param amount_ Total amount of FMs to mint.
* @param mpCharityFees_ Fees on marketplace sales
*
* Requirements: MINTER_ROLE
*/
function mintByAthlete(
string calldata fmURL_,
uint256 fmImgHash_,
uint256 amount_,
uint256 mpCharityFees_
) external onlyRole(MINTER_ROLE) whenNotPaused {
mint(msg.sender, fmURL_, fmImgHash_, amount_, mpCharityFees_);
}
/**
* @dev Address with MANAGER_ROLE can call this function and mint FMs for
* athletes, but only for addresses with MINTER_ROLE.
*
* The owner of the FM will be the creator address and *NOT* the sender of
* the transaction.
*
* @param creatorAddress_ Wallet address of the creator of the FM
* @param fmURL_ URL of the FM metadata or picture.
* Example: "ipfs://QmcFAs7GH9bh6Q11bLVwd5J2/FM.json"
* @param fmImgHash_ SHA256 hash of the FM image.
* @param amount_ Total amount of FMs to mint.
* @param mpCharityFees_ Fees on marketplace sales
*
* Requirements: MANAGER_ROLE
*/
function mintForAthlete(
address creatorAddress_,
string calldata fmURL_,
uint256 fmImgHash_,
uint256 amount_,
uint256 mpCharityFees_
) external onlyRole(MANAGER_ROLE) {
require(creatorAddress_ != address(0), "No address(0)");
require(creatorAddress_ != msg.sender, "No mint for yourself");
require(
hasRole(MINTER_ROLE, creatorAddress_),
"creator address need MINTER_ROLE!"
);
// Creator must already have MINTER_ROLE
mint(creatorAddress_, fmURL_, fmImgHash_, amount_, mpCharityFees_);
}
/**
* @dev Internal mint function that will mint the FM for the creator.
*
* Marketing allocation of newly minted FMs is based on the total supply,
* the FMs sent to marketing wallet are deducted from the total supply.
*
* The marketing percentage allocation can be updated and the accepted
* values are between 0-10, with a default of 5 at contract deployment.
*
* - If total supply == 1:
* 0 FM sent to marketing wallet
* 1 FM sent to creator wallet
*
* - If total supply > 1 < 21:
* 1 FM sent to marketing wallet
* (supply - 1) sent to creator wallet
*
* - If total supply >= 21:
* `fmMarketingFees`% of FMs sent to marketing wallet
* (supply - `fmMarketingFees`%) sent to creator wallet
*
* @param creatorAddress_ Wallet address of the creator of the FM
* @param fmURL_ URL of the FM metadata
* Example: "ipfs://QmcFAs7GH9bh6Q11bLVwd5J2/FM.json"
* @param fmImgHash_ SHA256 hash of the FM image.
* @param amount_ Total amount of FMs to mint.
* @param mpCharityFees_ Fees on marketplace sales
*
* @return The tokenId of the FM
*/
function mint(
address creatorAddress_,
string calldata fmURL_,
uint256 fmImgHash_,
uint256 amount_,
uint256 mpCharityFees_
) internal nonReentrant returns (uint256) {
require(amount_ > 0 && amount_ <= maxMintAmount, "amount > max amount");
require(
mpCharityFees_ >= minCharityFees && mpCharityFees_ < 101,
"not between 10-100!"
);
require(fmUniqueImgHashList[fmImgHash_] == 0, "Image already exists");
// * Total of FMs sent to Marketing wallet, depends on amount minted
// * 1 FM: 0 | 2-20 FMs: 1 | > 20 FMs: `fmMarketingFees`%
uint256 amountForMarketing = 0;
// * Amount sent to the creator wallet after deduction for marketing
uint256 amountForCreator = amount_;
if (fmMarketingFees > 0) {
amountForMarketing = amount_ < 6 ? 0 : amount_ < 21
? 1
: (amount_ * fmMarketingFees) / 100;
amountForCreator = amount_ - amountForMarketing;
}
_tokenIds.increment();
uint256 _newTokenId = _tokenIds.current();
// * Add new FM to collection
fmCollection[_newTokenId] = FantasticMoment(
creatorAddress_,
fmURL_,
fmImgHash_,
// Total supply
uint16(amount_),
uint8(mpFantasticoFees),
uint8(mpCharityFees_),
// Hidden status - default false
false
);
// * Add fmImgHash_ to fmUniqueImgHashList
fmUniqueImgHashList[fmImgHash_] = _newTokenId;
// * Mint the FMs to the creator address
_mint(creatorAddress_, _newTokenId, amountForCreator, "");
//* Mint the FMs allocated to the marketing wallet address if any
if (amountForMarketing > 0) {
_mint(fmMarketingWallet, _newTokenId, amountForMarketing, "");
}
// console.log(
// "--> Contract Minting TokenId (%s)",
// _newTokenId
// // amount_,
// // amountForCreator,
// // amountForMarketing
// );
emit FmCreated(
creatorAddress_,
_newTokenId,
fmImgHash_,
amount_, // total supply
amountForCreator,
amountForMarketing
);
return _newTokenId;
}
/**
* @dev This implementation returns the Fantastic Moment URL,l
* or `fmHiddenURL` if the token is hidden.
*
* @param tokenId_ The tokenId of the FM.
*/
function uri(uint256 tokenId_)
public
view
override
returns (string memory)
{
require(exists(tokenId_), "No FM with this Id");
// * Return the hiddenFmURL if FM is hidden
return
fmCollection[tokenId_].hidden
? fmHiddenURL
: fmCollection[tokenId_].fmURL;
}
// // TODO: Review
// function walletOfOwner(address account_)
// public
// view
// returns (uint256[] memory)
// {
// require(account_ != address(0), "No address(0)");
// uint256 count = countTokensOfOwner(account_);
// uint256[] memory tokens = new uint256[](count);
// uint256 idx = 0;
// for (uint256 tokenId = 1; tokenId <= _tokenIds.current(); tokenId++) {
// if (balanceOf(account_, tokenId) != 0) {
// tokens[idx] = tokenId;
// idx++;
// }
// }
// return tokens;
// }
// TODO: Review
//!! This function returns always 1 if token account balance > 0
// function countTokensOfOwner(address account_)
// public
// view
// returns (uint256)
// {
// require(account_ != address(0), "No address(0)");
// uint256 count = 0;
// for (uint256 tokenId = 1; tokenId <= _tokenIds.current(); tokenId++) {
// if (balanceOf(account_, tokenId) != 0) {
// count++;
// }
// }
// return count;
// }
/**
* @dev Return the creator address of the Fantastic Moment
* @param tokenId_ The tokenId of the FM.
*
* @return address of the creator of the FM
*/
function creatorAddress(uint256 tokenId_)
external
view
onlyIfExists(tokenId_)
returns (address)
{
return fmCollection[tokenId_].creatorAddress;
}
/**
* @dev Hide a FM by setting the FM `hidden` attribute to true if it's value is false
* !! Otherwise the value is not modified !!
*
* It will also:
* - Add the tokenId to the list of hidden tokens `fmHiddenList`
* - Increment by one the value of `fmsiddenCount`
* - Emit an FmHidden event
*
* IMPORTANT: when hidden the value of the default generic URL `hiddenFmURL`
* will be returned by the uri() function instead of the URL stored in
* the FantasticMoment struct for this tokenId.
*
* @param tokenId_ The tokenId of the FM.
*
* Requirements: ADMIN_ROLE
*/
function hideFm(uint256 tokenId_) public onlyRole(ADMIN_ROLE) {
require(!isHidden(tokenId_), "FM is already hidden");
//console.log("--> contract: hiding FM (%s)", tokenId_);
fmCollection[tokenId_].hidden = true;
fmHiddenList[tokenId_] = true;
fmHiddenCount.increment();
emit FmHidden(tokenId_);
}
/**
* @dev Hide multiple FMs at once
*
* @param tokenIds_ Array of tokenIds of the FMs to hide
*
* Requirements: ADMIN_ROLE
*/
function hideFms(uint256[] calldata tokenIds_)
external
onlyRole(ADMIN_ROLE)
{
for (uint256 i = 0; i < tokenIds_.length; i++) {
hideFm(tokenIds_[i]);
}
}
/**
* @dev Unhide a FM by setting the FM `hidden` attribute to false if it's value is true
* !! Otherwise the value is not modified !!
*
* It will also:
* - Delete the tokenId to the list of hidden tokens `fmHiddenList`
* - Decrement by one the value of `fmHiddenCount`
* - Emit an FmUnhidden event
*
* @param tokenId_ The tokenId of the FM.
*
* Requirements: ADMIN_ROLE
*/
function unhideFm(uint256 tokenId_) public onlyRole(ADMIN_ROLE) {
require(isHidden(tokenId_), "FM is not hidden");
fmCollection[tokenId_].hidden = false;
delete fmHiddenList[tokenId_];
fmHiddenCount.decrement();
emit FmUnhidden(tokenId_);
}
/**
* @dev Unhide multiple hidden FMs at once
*
* @param tokenIds_ Array of tokenIds of the FMs to unhide
*
* Requirements: ADMIN_ROLE
*/
function unhideFms(uint256[] calldata tokenIds_)
external
onlyRole(ADMIN_ROLE)
{
for (uint256 i = 0; i < tokenIds_.length; i++) {
unhideFm(tokenIds_[i]);
}
}
/**
* @dev Return true if the FM is hidden
*
* @param tokenId_ tokenId of the FM
*
* Requirements: ADMIN_ROLE
*/
function isHidden(uint256 tokenId_)
public
view
onlyIfExists(tokenId_)
returns (bool)
{
return fmCollection[tokenId_].hidden;
}
/**
* @dev Update the value of the maximum amount of each newly minted FMs
*
* values are between 1-2500, with a default of 2500 at contract deployment.
* @param value_ the maximum amount of each newly minted FMs
*
* Requirements: ADMIN_ROLE
*/
function setMaxMintAmount(uint256 value_) external onlyRole(ADMIN_ROLE) {
// * value_ must be between 1 and 2500
require(value_ > 0 && value_ < 2501, "is not between 1-2500!");
maxMintAmount = value_;
}
/**
* @dev Update the address of the Marketing wallet
*
* @param address_ the new address of the Marketing wallet.
*
* Requirements: ADMIN_ROLE
*/
function setMarketingWalletAddress(address address_)
external
onlyRole(ADMIN_ROLE)
{
require(address_ != address(0), "No address(0)");
fmMarketingWallet = address_;
}
/**
* @dev Update the percentage of newly minted FMs sent to Marketing wallet.
*
* Accepted value from 0 to 10 maximum - Default Value at contract
* deployment: 5
*
* @param value_ the percentage of FMs sent to the Marketing wallet.
*
* Requirements: ADMIN_ROLE
*/
function setMarketingFees(uint256 value_) external onlyRole(ADMIN_ROLE) {
require(value_ < 11, "is more than 10!");
fmMarketingFees = value_;
}
/**
* @dev Update the value used for calculation of % of Fantastico fees
* after each successful sales on the Fantastico marketplace.
*
* Accepted value from 0 to 10 maximum - Default Value at contract
* deployment: 5
*
* This value will be stored on the FM data structure at mint time.
*
* @param value_ the percentage of FMs sent to Fantastico wallet.
*
* Requirements: ADMIN_ROLE
*/
function setFantasticoFees(uint256 value_) external onlyRole(ADMIN_ROLE) {
require(value_ < 11, "is more than 10!");
mpFantasticoFees = value_;
}
/**
* @dev Update the value used for calculation of % of Fantastico fees
* sent to Charity wallet after each successful sales on the Fantastico
* marketplace.
*
* Accepted value from 0 to 100 maximum - Default Value at contract
* deployment: 10
*
* This value will be stored on the FM data structure at mint time.
*
* @param value_ the percentage of FMs sent to the Charity wallet.
*
* Requirements: ADMIN_ROLE
*/
function setMinCharityFees(uint256 value_) external onlyRole(ADMIN_ROLE) {
// * value_ must be between 10 and 100
require(value_ > 9 && value_ < 101, "is not between 10-100!");
minCharityFees = value_;
}
/**
* @dev The following functions are overrides required by Solidity.
*/
/**
* @dev Hook that is called before any token transfer. This includes minting
* and burning, as well as batched variants.
*
* The same hook is called on both single and batched variants. For single
* transfers, the length of the `id` and `amount` arrays will be 1.
*
* Calling conditions (for each `id` and `amount` pair):
*
* - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens
* of token type `id` will be transferred to `to`.
* - When `from` is zero, `amount` tokens of token type `id` will be minted
* for `to`.
* - when `to` is zero, `amount` of ``from``'s tokens of token type `id`
* will be burned.
* - `from` and `to` are never both zero.
* - `ids` and `amounts` have the same, non-zero length.
*
*/
function _beforeTokenTransfer(
address operator_,
address from_,
address to_,
uint256[] memory ids_,
uint256[] memory amounts_,
bytes memory data
) internal override(ERC1155, ERC1155Supply) whenNotPaused {
super._beforeTokenTransfer(operator_, from_, to_, ids_, amounts_, data);
}
function supportsInterface(bytes4 interfaceId_)
public
view
override(ERC1155, AccessControl)
returns (bool)
{
return super.supportsInterface(interfaceId_);
}
function ownedToken(address account_)
public
view
returns (uint256[] memory)
{
uint256 count = 0;
uint256 currentTokenId = _tokenIds.current();
for (uint256 tokenId = 1; tokenId <= currentTokenId; tokenId++) {
if (balanceOf(account_, tokenId) != 0) {
count++;
}
}
uint256[] memory tokens = new uint256[](count);
uint256 idx = 0;
for (uint256 tokenId = 1; tokenId <= currentTokenId; tokenId++) {
if (balanceOf(account_, tokenId) != 0) {
tokens[idx] = tokenId;
idx++;
}
}
return tokens;
}
}
// this line is added to create a gist. Empty file is not allowed.
// this line is added to create a gist. Empty file is not allowed.
This file has been truncated, but you can view the full file.
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {
"@_2702": {
"entryPoint": null,
"id": 2702,
"parameterSlots": 1,
"returnSlots": 0
},
"@_408": {
"entryPoint": null,
"id": 408,
"parameterSlots": 0,
"returnSlots": 0
},
"@_492": {
"entryPoint": null,
"id": 492,
"parameterSlots": 0,
"returnSlots": 0
},
"@_558": {
"entryPoint": null,
"id": 558,
"parameterSlots": 1,
"returnSlots": 0
},
"@_grantRole_276": {
"entryPoint": 268,
"id": 276,
"parameterSlots": 2,
"returnSlots": 0
},
"@_msgSender_2227": {
"entryPoint": null,
"id": 2227,
"parameterSlots": 0,
"returnSlots": 1
},
"@_setURI_1037": {
"entryPoint": 243,
"id": 1037,
"parameterSlots": 1,
"returnSlots": 0
},
"@hasRole_81": {
"entryPoint": null,
"id": 81,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_address_fromMemory": {
"entryPoint": 598,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"extract_byte_array_length": {
"entryPoint": 648,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:691:17",
"statements": [
{
"nodeType": "YulBlock",
"src": "6:3:17",
"statements": []
},
{
"body": {
"nodeType": "YulBlock",
"src": "95:209:17",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "141:16:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "150:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "153:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "143:6:17"
},
"nodeType": "YulFunctionCall",
"src": "143:12:17"
},
"nodeType": "YulExpressionStatement",
"src": "143:12:17"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "116:7:17"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "125:9:17"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "112:3:17"
},
"nodeType": "YulFunctionCall",
"src": "112:23:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "137:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "108:3:17"
},
"nodeType": "YulFunctionCall",
"src": "108:32:17"
},
"nodeType": "YulIf",
"src": "105:52:17"
},
{
"nodeType": "YulVariableDeclaration",
"src": "166:29:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "185:9:17"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "179:5:17"
},
"nodeType": "YulFunctionCall",
"src": "179:16:17"
},
"variables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "170:5:17",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "258:16:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "267:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "270:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "260:6:17"
},
"nodeType": "YulFunctionCall",
"src": "260:12:17"
},
"nodeType": "YulExpressionStatement",
"src": "260:12:17"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "217:5:17"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "228:5:17"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "243:3:17",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "248:1:17",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "239:3:17"
},
"nodeType": "YulFunctionCall",
"src": "239:11:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "252:1:17",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "235:3:17"
},
"nodeType": "YulFunctionCall",
"src": "235:19:17"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "224:3:17"
},
"nodeType": "YulFunctionCall",
"src": "224:31:17"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "214:2:17"
},
"nodeType": "YulFunctionCall",
"src": "214:42:17"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "207:6:17"
},
"nodeType": "YulFunctionCall",
"src": "207:50:17"
},
"nodeType": "YulIf",
"src": "204:70:17"
},
{
"nodeType": "YulAssignment",
"src": "283:15:17",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "293:5:17"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "283:6:17"
}
]
}
]
},
"name": "abi_decode_tuple_t_address_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "61:9:17",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "72:7:17",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "84:6:17",
"type": ""
}
],
"src": "14:290:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "364:325:17",
"statements": [
{
"nodeType": "YulAssignment",
"src": "374:22:17",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "388:1:17",
"type": "",
"value": "1"
},
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "391:4:17"
}
],
"functionName": {
"name": "shr",
"nodeType": "YulIdentifier",
"src": "384:3:17"
},
"nodeType": "YulFunctionCall",
"src": "384:12:17"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "374:6:17"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "405:38:17",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "435:4:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "441:1:17",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "431:3:17"
},
"nodeType": "YulFunctionCall",
"src": "431:12:17"
},
"variables": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulTypedName",
"src": "409:18:17",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "482:31:17",
"statements": [
{
"nodeType": "YulAssignment",
"src": "484:27:17",
"value": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "498:6:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "506:4:17",
"type": "",
"value": "0x7f"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "494:3:17"
},
"nodeType": "YulFunctionCall",
"src": "494:17:17"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "484:6:17"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "462:18:17"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "455:6:17"
},
"nodeType": "YulFunctionCall",
"src": "455:26:17"
},
"nodeType": "YulIf",
"src": "452:61:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "572:111:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "593:1:17",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "600:3:17",
"type": "",
"value": "224"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "605:10:17",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "596:3:17"
},
"nodeType": "YulFunctionCall",
"src": "596:20:17"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "586:6:17"
},
"nodeType": "YulFunctionCall",
"src": "586:31:17"
},
"nodeType": "YulExpressionStatement",
"src": "586:31:17"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "637:1:17",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "640:4:17",
"type": "",
"value": "0x22"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "630:6:17"
},
"nodeType": "YulFunctionCall",
"src": "630:15:17"
},
"nodeType": "YulExpressionStatement",
"src": "630:15:17"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "665:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "668:4:17",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "658:6:17"
},
"nodeType": "YulFunctionCall",
"src": "658:15:17"
},
"nodeType": "YulExpressionStatement",
"src": "658:15:17"
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "528:18:17"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "551:6:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "559:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "548:2:17"
},
"nodeType": "YulFunctionCall",
"src": "548:14:17"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "525:2:17"
},
"nodeType": "YulFunctionCall",
"src": "525:38:17"
},
"nodeType": "YulIf",
"src": "522:161:17"
}
]
},
"name": "extract_byte_array_length",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "344:4:17",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "353:6:17",
"type": ""
}
],
"src": "309:380:17"
}
]
},
"contents": "{\n { }\n function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n value0 := value\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n}",
"id": 17,
"language": "Yul",
"name": "#utility.yul"
}
],
"linkReferences": {},
"object": "60806040523480156200001157600080fd5b506040516200340d3803806200340d833981016040819052620000349162000256565b6040805160208101909152600081526200004e81620000f3565b506004805460ff1916905560016006556200006b6000336200010c565b620000977fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775336200010c565b6109c4601155604080516020810191829052600090819052620000bd91600c91620001b0565b50600d80546001600160a01b0319166001600160a01b03929092169190911790556005600e819055600f55600a601055620002c5565b805162000108906002906020840190620001b0565b5050565b60008281526003602090815260408083206001600160a01b038516845290915290205460ff16620001085760008281526003602090815260408083206001600160a01b03851684529091529020805460ff191660011790556200016c3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b828054620001be9062000288565b90600052602060002090601f016020900481019282620001e257600085556200022d565b82601f10620001fd57805160ff19168380011785556200022d565b828001600101855582156200022d579182015b828111156200022d57825182559160200191906001019062000210565b506200023b9291506200023f565b5090565b5b808211156200023b576000815560010162000240565b6000602082840312156200026957600080fd5b81516001600160a01b03811681146200028157600080fd5b9392505050565b600181811c908216806200029d57607f821691505b60208210811415620002bf57634e487b7160e01b600052602260045260246000fd5b50919050565b61313880620002d56000396000f3fe608060405234801561001057600080fd5b506004361061027e5760003560e01c806369c8b3441161015c578063a4939d1d116100ce578063d085a34711610087578063d085a347146105c4578063d547741f146105cd578063e985e9c5146105e0578063f242432a1461061c578063f5cb57ab1461062f578063f61454ae1461063757600080fd5b8063a4939d1d14610545578063a8bfb0b414610558578063b2a999c71461056b578063bd85b0391461057e578063bf39ec9a1461059e578063cbe526b2146105b157600080fd5b806391d148541161012057806391d14854146104c357806395d89b41146104d6578063a217fddf146104f6578063a22cb465146104fe578063a268ac7014610511578063a276e4e51461053c57600080fd5b806369c8b344146104795780636c4535e71461048c578063727e7379146104955780638456cb59146104a857806387572836146104b057600080fd5b806328ce98e5116101f55780633f4ba83a116101b95780633f4ba83a146103fe57806343c9f97a146104065780634cb80fd5146104195780634e1273f41461042c5780634f558e791461044c5780635c975abb1461046e57600080fd5b806328ce98e5146103a85780632eb2c2d6146103bb5780632f2ff15d146103ce57806336568abe146103e15780633896b504146103f457600080fd5b80631410d4b4116102475780631410d4b414610323578063172bd4581461033657806318cdf140146103495780631ffb53f614610369578063239c70ae1461037c578063248a9ca31461038557600080fd5b8062fdd58e1461028357806301ffc9a7146102a957806306fdde03146102cc578063088a4ed0146102fb5780630e89341c14610310575b600080fd5b6102966102913660046125de565b61065a565b6040519081526020015b60405180910390f35b6102bc6102b736600461261e565b6106f1565b60405190151581526020016102a0565b60408051808201909152600a81526946616e7461737469636f60b01b60208201525b6040516102a09190612693565b61030e6103093660046126a6565b610702565b005b6102ee61031e3660046126a6565b610777565b61030e6103313660046126a6565b61086f565b61030e6103443660046126a6565b610954565b6102966103573660046126a6565b600a6020526000908152604090205481565b61030e6103773660046126a6565b6109b6565b61029660115481565b6102966103933660046126a6565b60009081526003602052604090206001015490565b61030e6103b63660046126bf565b610a18565b61030e6103c9366004612886565b610a75565b61030e6103dc36600461292f565b610b0c565b61030e6103ef36600461292f565b610b37565b6008546102969081565b61030e610bb5565b6102bc6104143660046126a6565b610bd9565b61030e61042736600461295b565b610c2c565b61043f61043a366004612976565b610cae565b6040516102a09190612a7b565b6102bc61045a3660046126a6565b600090815260056020526040902054151590565b60045460ff166102bc565b61043f61048736600461295b565b610dd7565b61029660105481565b61030e6104a33660046126a6565b610ecb565b61030e610f95565b61030e6104be366004612a8e565b610fb6565b6102bc6104d136600461292f565b610fe2565b6040805180820190915260048152635449434f60e01b60208201526102ee565b610296600081565b61030e61050c366004612ade565b61100d565b600d54610524906001600160a01b031681565b6040516001600160a01b0390911681526020016102a0565b610296600f5481565b61030e610553366004612b62565b611018565b61030e610566366004612bbb565b61107d565b6105246105793660046126a6565b6111d6565b61029661058c3660046126a6565b60009081526005602052604090205490565b61030e6105ac3660046126a6565b611220565b61030e6105bf3660046126bf565b611294565b610296600e5481565b61030e6105db36600461292f565b6112eb565b6102bc6105ee366004612c27565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b61030e61062a366004612c51565b611311565b6102ee611398565b6102bc6106453660046126a6565b600b6020526000908152604090205460ff1681565b60006001600160a01b0383166106cb5760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b60648201526084015b60405180910390fd5b506000908152602081815260408083206001600160a01b03949094168352929052205490565b60006106fc82611426565b92915050565b6000805160206130e383398151915261071b813361144b565b60008211801561072c57506109c582105b6107715760405162461bcd60e51b81526020600482015260166024820152756973206e6f74206265747765656e20312d323530302160501b60448201526064016106c2565b50601155565b6000818152600560205260409020546060906107a55760405162461bcd60e51b81526004016106c290612cb5565b600082815260096020526040902060030154640100000000900460ff166107dc5760008281526009602052604090206001016107df565b600c5b80546107ea90612ce1565b80601f016020809104026020016040519081016040528092919081815260200182805461081690612ce1565b80156108635780601f1061083857610100808354040283529160200191610863565b820191906000526020600020905b81548152906001019060200180831161084657829003601f168201915b50505050509050919050565b6000805160206130e3833981519152610888813361144b565b61089182610bd9565b156108d55760405162461bcd60e51b815260206004820152601460248201527323269034b99030b63932b0b23c903434b23232b760611b60448201526064016106c2565b6000828152600960209081526040808320600301805464ff000000001916640100000000179055600b9091529020805460ff1916600117905561091c600880546001019055565b6040518281527fc306f319fd0c3025b8574dcdfa0f7dd262569a291526163a978e85f0d7afeed9906020015b60405180910390a15050565b6000805160206130e383398151915261096d813361144b565b600b82106109b05760405162461bcd60e51b815260206004820152601060248201526f6973206d6f7265207468616e2031302160801b60448201526064016106c2565b50600f55565b6000805160206130e38339815191526109cf813361144b565b600b8210610a125760405162461bcd60e51b815260206004820152601060248201526f6973206d6f7265207468616e2031302160801b60448201526064016106c2565b50600e55565b6000805160206130e3833981519152610a31813361144b565b60005b82811015610a6f57610a5d848483818110610a5157610a51612d16565b90506020020135610ecb565b80610a6781612d42565b915050610a34565b50505050565b6001600160a01b038516331480610a915750610a9185336105ee565b610af85760405162461bcd60e51b815260206004820152603260248201527f455243313135353a207472616e736665722063616c6c6572206973206e6f74206044820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b60648201526084016106c2565b610b0585858585856114af565b5050505050565b600082815260036020526040902060010154610b28813361144b565b610b32838361169a565b505050565b6001600160a01b0381163314610ba75760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016106c2565b610bb18282611720565b5050565b6000805160206130e3833981519152610bce813361144b565b610bd6611787565b50565b6000818152600560205260408120548290610c065760405162461bcd60e51b81526004016106c290612cb5565b600083815260096020526040902060030154640100000000900460ff1691505b50919050565b6000805160206130e3833981519152610c45813361144b565b6001600160a01b038216610c8b5760405162461bcd60e51b815260206004820152600d60248201526c4e6f206164647265737328302960981b60448201526064016106c2565b50600d80546001600160a01b0319166001600160a01b0392909216919091179055565b60608151835114610d135760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b60648201526084016106c2565b600083516001600160401b03811115610d2e57610d2e612733565b604051908082528060200260200182016040528015610d57578160200160208202803683370190505b50905060005b8451811015610dcf57610da2858281518110610d7b57610d7b612d16565b6020026020010151858381518110610d9557610d95612d16565b602002602001015161065a565b828281518110610db457610db4612d16565b6020908102919091010152610dc881612d42565b9050610d5d565b509392505050565b6060600080610de560075490565b905060015b818111610e2057610dfb858261065a565b15610e0e5782610e0a81612d42565b9350505b80610e1881612d42565b915050610dea565b506000826001600160401b03811115610e3b57610e3b612733565b604051908082528060200260200182016040528015610e64578160200160208202803683370190505b509050600060015b838111610ec057610e7d878261065a565b15610eae5780838381518110610e9557610e95612d16565b602090810291909101015281610eaa81612d42565b9250505b80610eb881612d42565b915050610e6c565b509095945050505050565b6000805160206130e3833981519152610ee4813361144b565b610eed82610bd9565b610f2c5760405162461bcd60e51b815260206004820152601060248201526f23269034b9903737ba103434b23232b760811b60448201526064016106c2565b6000828152600960209081526040808320600301805464ff0000000019169055600b9091529020805460ff19169055610f65600861181a565b6040518281527f1861a8dc40124affba5fe8313842a0100cba57ca600961d1d33575a655ffab3390602001610948565b6000805160206130e3833981519152610fae813361144b565b610bd6611871565b6000805160206130e3833981519152610fcf813361144b565b8151610b3290600c906020850190612529565b60009182526003602090815260408084206001600160a01b0393909316845291905290205460ff1690565b610bb13383836118c9565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6611043813361144b565b60045460ff16156110665760405162461bcd60e51b81526004016106c290612d5d565b6110743387878787876119aa565b50505050505050565b7f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b086110a8813361144b565b6001600160a01b0387166110ee5760405162461bcd60e51b815260206004820152600d60248201526c4e6f206164647265737328302960981b60448201526064016106c2565b6001600160a01b03871633141561113e5760405162461bcd60e51b815260206004820152601460248201527327379036b4b73a103337b9103cb7bab939b2b63360611b60448201526064016106c2565b6111687f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a688610fe2565b6111be5760405162461bcd60e51b815260206004820152602160248201527f63726561746f722061646472657373206e656564204d494e5445525f524f4c456044820152602160f81b60648201526084016106c2565b6111cc8787878787876119aa565b5050505050505050565b60008181526005602052604081205482906112035760405162461bcd60e51b81526004016106c290612cb5565b50506000908152600960205260409020546001600160a01b031690565b6000805160206130e3833981519152611239813361144b565b6009821180156112495750606582105b61128e5760405162461bcd60e51b81526020600482015260166024820152756973206e6f74206265747765656e2031302d3130302160501b60448201526064016106c2565b50601055565b6000805160206130e38339815191526112ad813361144b565b60005b82811015610a6f576112d98484838181106112cd576112cd612d16565b9050602002013561086f565b806112e381612d42565b9150506112b0565b600082815260036020526040902060010154611307813361144b565b610b328383611720565b6001600160a01b03851633148061132d575061132d85336105ee565b61138b5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b60648201526084016106c2565b610b058585858585611d74565b600c80546113a590612ce1565b80601f01602080910402602001604051908101604052809291908181526020018280546113d190612ce1565b801561141e5780601f106113f35761010080835404028352916020019161141e565b820191906000526020600020905b81548152906001019060200180831161140157829003601f168201915b505050505081565b60006001600160e01b03198216637965db0b60e01b14806106fc57506106fc82611e97565b6114558282610fe2565b610bb15761146d816001600160a01b03166014611ee7565b611478836020611ee7565b604051602001611489929190612d87565b60408051601f198184030181529082905262461bcd60e51b82526106c291600401612693565b81518351146115115760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b60648201526084016106c2565b6001600160a01b0384166115375760405162461bcd60e51b81526004016106c290612dfc565b33611546818787878787612089565b60005b845181101561162c57600085828151811061156657611566612d16565b60200260200101519050600085838151811061158457611584612d16565b602090810291909101810151600084815280835260408082206001600160a01b038e1683529093529190912054909150818110156115d45760405162461bcd60e51b81526004016106c290612e41565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290611611908490612e8b565b925050819055505050508061162590612d42565b9050611549565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161167c929190612ea3565b60405180910390a46116928187878787876120ba565b505050505050565b6116a48282610fe2565b610bb15760008281526003602090815260408083206001600160a01b03851684529091529020805460ff191660011790556116dc3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b61172a8282610fe2565b15610bb15760008281526003602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60045460ff166117d05760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016106c2565b6004805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b8054806118695760405162461bcd60e51b815260206004820152601b60248201527f436f756e7465723a2064656372656d656e74206f766572666c6f77000000000060448201526064016106c2565b600019019055565b60045460ff16156118945760405162461bcd60e51b81526004016106c290612d5d565b6004805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586117fd3390565b816001600160a01b0316836001600160a01b0316141561193d5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b60648201526084016106c2565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6000600260065414156119ff5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106c2565b60026006558215801590611a1557506011548311155b611a575760405162461bcd60e51b8152602060048201526013602482015272185b5bdd5b9d080f881b585e08185b5bdd5b9d606a1b60448201526064016106c2565b6010548210158015611a695750606582105b611aab5760405162461bcd60e51b81526020600482015260136024820152726e6f74206265747765656e2031302d3130302160681b60448201526064016106c2565b6000848152600a602052604090205415611afe5760405162461bcd60e51b8152602060048201526014602482015273496d61676520616c72656164792065786973747360601b60448201526064016106c2565b600e54600090849015611b535760068510611b415760158510611b3a576064600e5486611b2b9190612ed1565b611b359190612ef0565b611b44565b6001611b44565b60005b9150611b508286612f12565b90505b611b61600780546001019055565b6000611b6c60075490565b90506040518060e001604052808b6001600160a01b031681526020018a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525093855250505060208083018b905261ffff8a16604080850191909152600f5460ff90811660608601528a16608085015260a090930182905284825260098152919020825181546001600160a01b0319166001600160a01b039091161781558282015180519192611c3292600185019290910190612529565b506040828101516002830155606083015160039092018054608085015160a086015160c09096015161ffff90951662ffffff19909216919091176201000060ff928316021764ffff00000019166301000000919095160264ff0000000019169390931764010000000092151592909202919091179091556000888152600a602090815282822084905582519081019092528152611cd4908b9083908590612216565b8215611d0357600d54604080516020810190915260008152611d03916001600160a01b03169083908690612216565b604080516001600160a01b038c16815260208101839052908101889052606081018790526080810183905260a081018490527f099895753745b248c3cd5ff15a17b3dba7a694c996161feda4069a91095cd98b9060c00160405180910390a160016006559998505050505050505050565b6001600160a01b038416611d9a5760405162461bcd60e51b81526004016106c290612dfc565b33611db9818787611daa88612317565b611db388612317565b87612089565b6000848152602081815260408083206001600160a01b038a16845290915290205483811015611dfa5760405162461bcd60e51b81526004016106c290612e41565b6000858152602081815260408083206001600160a01b038b8116855292528083208785039055908816825281208054869290611e37908490612e8b565b909155505060408051868152602081018690526001600160a01b03808916928a821692918616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4611074828888888888612362565b60006001600160e01b03198216636cdb3d1360e11b1480611ec857506001600160e01b031982166303a24d0760e21b145b806106fc57506301ffc9a760e01b6001600160e01b03198316146106fc565b60606000611ef6836002612ed1565b611f01906002612e8b565b6001600160401b03811115611f1857611f18612733565b6040519080825280601f01601f191660200182016040528015611f42576020820181803683370190505b509050600360fc1b81600081518110611f5d57611f5d612d16565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611f8c57611f8c612d16565b60200101906001600160f81b031916908160001a9053506000611fb0846002612ed1565b611fbb906001612e8b565b90505b6001811115612033576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611fef57611fef612d16565b1a60f81b82828151811061200557612005612d16565b60200101906001600160f81b031916908160001a90535060049490941c9361202c81612f29565b9050611fbe565b5083156120825760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016106c2565b9392505050565b60045460ff16156120ac5760405162461bcd60e51b81526004016106c290612d5d565b61169286868686868661241d565b6001600160a01b0384163b156116925760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906120fe9089908990889088908890600401612f40565b6020604051808303816000875af1925050508015612139575060408051601f3d908101601f1916820190925261213691810190612f9e565b60015b6121e657612145612fbb565b806308c379a0141561217f575061215a612fd7565b806121655750612181565b8060405162461bcd60e51b81526004016106c29190612693565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b60648201526084016106c2565b6001600160e01b0319811663bc197c8160e01b146110745760405162461bcd60e51b81526004016106c290613055565b6001600160a01b0384166122765760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b60648201526084016106c2565b3361228781600087611daa88612317565b6000848152602081815260408083206001600160a01b0389168452909152812080548592906122b7908490612e8b565b909155505060408051858152602081018590526001600160a01b0380881692600092918516917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4610b0581600087878787612362565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061235157612351612d16565b602090810291909101015292915050565b6001600160a01b0384163b156116925760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906123a6908990899088908890889060040161309d565b6020604051808303816000875af19250505080156123e1575060408051601f3d908101601f191682019092526123de91810190612f9e565b60015b6123ed57612145612fbb565b6001600160e01b0319811663f23a6e6160e01b146110745760405162461bcd60e51b81526004016106c290613055565b6001600160a01b0385166124a45760005b83518110156124a25782818151811061244957612449612d16565b60200260200101516005600086848151811061246757612467612d16565b60200260200101518152602001908152602001600020600082825461248c9190612e8b565b9091555061249b905081612d42565b905061242e565b505b6001600160a01b0384166116925760005b8351811015611074578281815181106124d0576124d0612d16565b6020026020010151600560008684815181106124ee576124ee612d16565b6020026020010151815260200190815260200160002060008282546125139190612f12565b90915550612522905081612d42565b90506124b5565b82805461253590612ce1565b90600052602060002090601f016020900481019282612557576000855561259d565b82601f1061257057805160ff191683800117855561259d565b8280016001018555821561259d579182015b8281111561259d578251825591602001919060010190612582565b506125a99291506125ad565b5090565b5b808211156125a957600081556001016125ae565b80356001600160a01b03811681146125d957600080fd5b919050565b600080604083850312156125f157600080fd5b6125fa836125c2565b946020939093013593505050565b6001600160e01b031981168114610bd657600080fd5b60006020828403121561263057600080fd5b813561208281612608565b60005b8381101561265657818101518382015260200161263e565b83811115610a6f5750506000910152565b6000815180845261267f81602086016020860161263b565b601f01601f19169290920160200192915050565b6020815260006120826020830184612667565b6000602082840312156126b857600080fd5b5035919050565b600080602083850312156126d257600080fd5b82356001600160401b03808211156126e957600080fd5b818501915085601f8301126126fd57600080fd5b81358181111561270c57600080fd5b8660208260051b850101111561272157600080fd5b60209290920196919550909350505050565b634e487b7160e01b600052604160045260246000fd5b601f8201601f191681016001600160401b038111828210171561276e5761276e612733565b6040525050565b60006001600160401b0382111561278e5761278e612733565b5060051b60200190565b600082601f8301126127a957600080fd5b813560206127b682612775565b6040516127c38282612749565b83815260059390931b85018201928281019150868411156127e357600080fd5b8286015b848110156127fe57803583529183019183016127e7565b509695505050505050565b60006001600160401b0383111561282257612822612733565b604051612839601f8501601f191660200182612749565b80915083815284848401111561284e57600080fd5b83836020830137600060208583010152509392505050565b600082601f83011261287757600080fd5b61208283833560208501612809565b600080600080600060a0868803121561289e57600080fd5b6128a7866125c2565b94506128b5602087016125c2565b935060408601356001600160401b03808211156128d157600080fd5b6128dd89838a01612798565b945060608801359150808211156128f357600080fd5b6128ff89838a01612798565b9350608088013591508082111561291557600080fd5b5061292288828901612866565b9150509295509295909350565b6000806040838503121561294257600080fd5b82359150612952602084016125c2565b90509250929050565b60006020828403121561296d57600080fd5b612082826125c2565b6000806040838503121561298957600080fd5b82356001600160401b03808211156129a057600080fd5b818501915085601f8301126129b457600080fd5b813560206129c182612775565b6040516129ce8282612749565b83815260059390931b85018201928281019150898411156129ee57600080fd5b948201945b83861015612a1357612a04866125c2565b825294820194908201906129f3565b96505086013592505080821115612a2957600080fd5b50612a3685828601612798565b9150509250929050565b600081518084526020808501945080840160005b83811015612a7057815187529582019590820190600101612a54565b509495945050505050565b6020815260006120826020830184612a40565b600060208284031215612aa057600080fd5b81356001600160401b03811115612ab657600080fd5b8201601f81018413612ac757600080fd5b612ad684823560208401612809565b949350505050565b60008060408385031215612af157600080fd5b612afa836125c2565b915060208301358015158114612b0f57600080fd5b809150509250929050565b60008083601f840112612b2c57600080fd5b5081356001600160401b03811115612b4357600080fd5b602083019150836020828501011115612b5b57600080fd5b9250929050565b600080600080600060808688031215612b7a57600080fd5b85356001600160401b03811115612b9057600080fd5b612b9c88828901612b1a565b9099909850602088013597604081013597506060013595509350505050565b60008060008060008060a08789031215612bd457600080fd5b612bdd876125c2565b955060208701356001600160401b03811115612bf857600080fd5b612c0489828a01612b1a565b979a90995096976040810135976060820135975060809091013595509350505050565b60008060408385031215612c3a57600080fd5b612c43836125c2565b9150612952602084016125c2565b600080600080600060a08688031215612c6957600080fd5b612c72866125c2565b9450612c80602087016125c2565b9350604086013592506060860135915060808601356001600160401b03811115612ca957600080fd5b61292288828901612866565b602080825260129082015271139bc81193481dda5d1a081d1a1a5cc8125960721b604082015260600190565b600181811c90821680612cf557607f821691505b60208210811415610c2657634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415612d5657612d56612d2c565b5060010190565b60208082526010908201526f14185d5cd8589b194e881c185d5cd95960821b604082015260600190565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612dbf81601785016020880161263b565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612df081602884016020880161263b565b01602801949350505050565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b60008219821115612e9e57612e9e612d2c565b500190565b604081526000612eb66040830185612a40565b8281036020840152612ec88185612a40565b95945050505050565b6000816000190483118215151615612eeb57612eeb612d2c565b500290565b600082612f0d57634e487b7160e01b600052601260045260246000fd5b500490565b600082821015612f2457612f24612d2c565b500390565b600081612f3857612f38612d2c565b506000190190565b6001600160a01b0386811682528516602082015260a060408201819052600090612f6c90830186612a40565b8281036060840152612f7e8186612a40565b90508281036080840152612f928185612667565b98975050505050505050565b600060208284031215612fb057600080fd5b815161208281612608565b600060033d1115612fd45760046000803e5060005160e01c5b90565b600060443d1015612fe55790565b6040516003193d81016004833e81513d6001600160401b03816024840111818411171561301457505050505090565b828501915081518181111561302c5750505050505090565b843d87010160208285010111156130465750505050505090565b610ec060208286010187612749565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190526000906130d790830184612667565b97965050505050505056fea49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775a26469706673582212204ad9efbf176e2117e55daa64e651bc462701bd6be76cdf0fe7eb840097a6d9c064736f6c634300080c0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x340D CODESIZE SUB DUP1 PUSH3 0x340D DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x256 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH3 0x4E DUP2 PUSH3 0xF3 JUMP JUMPDEST POP PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH1 0x1 PUSH1 0x6 SSTORE PUSH3 0x6B PUSH1 0x0 CALLER PUSH3 0x10C JUMP JUMPDEST PUSH3 0x97 PUSH32 0xA49807205CE4D355092EF5A8A18F56E8913CF4A201FBE287825B095693C21775 CALLER PUSH3 0x10C JUMP JUMPDEST PUSH2 0x9C4 PUSH1 0x11 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP2 DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 DUP2 SWAP1 MSTORE PUSH3 0xBD SWAP2 PUSH1 0xC SWAP2 PUSH3 0x1B0 JUMP JUMPDEST POP PUSH1 0xD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x5 PUSH1 0xE DUP2 SWAP1 SSTORE PUSH1 0xF SSTORE PUSH1 0xA PUSH1 0x10 SSTORE PUSH3 0x2C5 JUMP JUMPDEST DUP1 MLOAD PUSH3 0x108 SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x1B0 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH3 0x108 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH3 0x16C CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH3 0x1BE SWAP1 PUSH3 0x288 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x1E2 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x22D JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x1FD JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x22D JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x22D JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x22D JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x210 JUMP JUMPDEST POP PUSH3 0x23B SWAP3 SWAP2 POP PUSH3 0x23F JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x23B JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x240 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x269 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x281 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x29D JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH3 0x2BF JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3138 DUP1 PUSH3 0x2D5 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x27E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x69C8B344 GT PUSH2 0x15C JUMPI DUP1 PUSH4 0xA4939D1D GT PUSH2 0xCE JUMPI DUP1 PUSH4 0xD085A347 GT PUSH2 0x87 JUMPI DUP1 PUSH4 0xD085A347 EQ PUSH2 0x5C4 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x5CD JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x5E0 JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x61C JUMPI DUP1 PUSH4 0xF5CB57AB EQ PUSH2 0x62F JUMPI DUP1 PUSH4 0xF61454AE EQ PUSH2 0x637 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA4939D1D EQ PUSH2 0x545 JUMPI DUP1 PUSH4 0xA8BFB0B4 EQ PUSH2 0x558 JUMPI DUP1 PUSH4 0xB2A999C7 EQ PUSH2 0x56B JUMPI DUP1 PUSH4 0xBD85B039 EQ PUSH2 0x57E JUMPI DUP1 PUSH4 0xBF39EC9A EQ PUSH2 0x59E JUMPI DUP1 PUSH4 0xCBE526B2 EQ PUSH2 0x5B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x91D14854 GT PUSH2 0x120 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x4C3 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x4D6 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x4F6 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x4FE JUMPI DUP1 PUSH4 0xA268AC70 EQ PUSH2 0x511 JUMPI DUP1 PUSH4 0xA276E4E5 EQ PUSH2 0x53C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x69C8B344 EQ PUSH2 0x479 JUMPI DUP1 PUSH4 0x6C4535E7 EQ PUSH2 0x48C JUMPI DUP1 PUSH4 0x727E7379 EQ PUSH2 0x495 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x4A8 JUMPI DUP1 PUSH4 0x87572836 EQ PUSH2 0x4B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x28CE98E5 GT PUSH2 0x1F5 JUMPI DUP1 PUSH4 0x3F4BA83A GT PUSH2 0x1B9 JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x3FE JUMPI DUP1 PUSH4 0x43C9F97A EQ PUSH2 0x406 JUMPI DUP1 PUSH4 0x4CB80FD5 EQ PUSH2 0x419 JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x42C JUMPI DUP1 PUSH4 0x4F558E79 EQ PUSH2 0x44C JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x46E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x28CE98E5 EQ PUSH2 0x3A8 JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x3BB JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x3CE JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x3E1 JUMPI DUP1 PUSH4 0x3896B504 EQ PUSH2 0x3F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1410D4B4 GT PUSH2 0x247 JUMPI DUP1 PUSH4 0x1410D4B4 EQ PUSH2 0x323 JUMPI DUP1 PUSH4 0x172BD458 EQ PUSH2 0x336 JUMPI DUP1 PUSH4 0x18CDF140 EQ PUSH2 0x349 JUMPI DUP1 PUSH4 0x1FFB53F6 EQ PUSH2 0x369 JUMPI DUP1 PUSH4 0x239C70AE EQ PUSH2 0x37C JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x385 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0x283 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x2A9 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x2CC JUMPI DUP1 PUSH4 0x88A4ED0 EQ PUSH2 0x2FB JUMPI DUP1 PUSH4 0xE89341C EQ PUSH2 0x310 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x296 PUSH2 0x291 CALLDATASIZE PUSH1 0x4 PUSH2 0x25DE JUMP JUMPDEST PUSH2 0x65A JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2BC PUSH2 0x2B7 CALLDATASIZE PUSH1 0x4 PUSH2 0x261E JUMP JUMPDEST PUSH2 0x6F1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2A0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0xA DUP2 MSTORE PUSH10 0x46616E7461737469636F PUSH1 0xB0 SHL PUSH1 0x20 DUP3 ADD MSTORE JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A0 SWAP2 SWAP1 PUSH2 0x2693 JUMP JUMPDEST PUSH2 0x30E PUSH2 0x309 CALLDATASIZE PUSH1 0x4 PUSH2 0x26A6 JUMP JUMPDEST PUSH2 0x702 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2EE PUSH2 0x31E CALLDATASIZE PUSH1 0x4 PUSH2 0x26A6 JUMP JUMPDEST PUSH2 0x777 JUMP JUMPDEST PUSH2 0x30E PUSH2 0x331 CALLDATASIZE PUSH1 0x4 PUSH2 0x26A6 JUMP JUMPDEST PUSH2 0x86F JUMP JUMPDEST PUSH2 0x30E PUSH2 0x344 CALLDATASIZE PUSH1 0x4 PUSH2 0x26A6 JUMP JUMPDEST PUSH2 0x954 JUMP JUMPDEST PUSH2 0x296 PUSH2 0x357 CALLDATASIZE PUSH1 0x4 PUSH2 0x26A6 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x30E PUSH2 0x377 CALLDATASIZE PUSH1 0x4 PUSH2 0x26A6 JUMP JUMPDEST PUSH2 0x9B6 JUMP JUMPDEST PUSH2 0x296 PUSH1 0x11 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x296 PUSH2 0x393 CALLDATASIZE PUSH1 0x4 PUSH2 0x26A6 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x30E PUSH2 0x3B6 CALLDATASIZE PUSH1 0x4 PUSH2 0x26BF JUMP JUMPDEST PUSH2 0xA18 JUMP JUMPDEST PUSH2 0x30E PUSH2 0x3C9 CALLDATASIZE PUSH1 0x4 PUSH2 0x2886 JUMP JUMPDEST PUSH2 0xA75 JUMP JUMPDEST PUSH2 0x30E PUSH2 0x3DC CALLDATASIZE PUSH1 0x4 PUSH2 0x292F JUMP JUMPDEST PUSH2 0xB0C JUMP JUMPDEST PUSH2 0x30E PUSH2 0x3EF CALLDATASIZE PUSH1 0x4 PUSH2 0x292F JUMP JUMPDEST PUSH2 0xB37 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH2 0x296 SWAP1 DUP2 JUMP JUMPDEST PUSH2 0x30E PUSH2 0xBB5 JUMP JUMPDEST PUSH2 0x2BC PUSH2 0x414 CALLDATASIZE PUSH1 0x4 PUSH2 0x26A6 JUMP JUMPDEST PUSH2 0xBD9 JUMP JUMPDEST PUSH2 0x30E PUSH2 0x427 CALLDATASIZE PUSH1 0x4 PUSH2 0x295B JUMP JUMPDEST PUSH2 0xC2C JUMP JUMPDEST PUSH2 0x43F PUSH2 0x43A CALLDATASIZE PUSH1 0x4 PUSH2 0x2976 JUMP JUMPDEST PUSH2 0xCAE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A0 SWAP2 SWAP1 PUSH2 0x2A7B JUMP JUMPDEST PUSH2 0x2BC PUSH2 0x45A CALLDATASIZE PUSH1 0x4 PUSH2 0x26A6 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND PUSH2 0x2BC JUMP JUMPDEST PUSH2 0x43F PUSH2 0x487 CALLDATASIZE PUSH1 0x4 PUSH2 0x295B JUMP JUMPDEST PUSH2 0xDD7 JUMP JUMPDEST PUSH2 0x296 PUSH1 0x10 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x30E PUSH2 0x4A3 CALLDATASIZE PUSH1 0x4 PUSH2 0x26A6 JUMP JUMPDEST PUSH2 0xECB JUMP JUMPDEST PUSH2 0x30E PUSH2 0xF95 JUMP JUMPDEST PUSH2 0x30E PUSH2 0x4BE CALLDATASIZE PUSH1 0x4 PUSH2 0x2A8E JUMP JUMPDEST PUSH2 0xFB6 JUMP JUMPDEST PUSH2 0x2BC PUSH2 0x4D1 CALLDATASIZE PUSH1 0x4 PUSH2 0x292F JUMP JUMPDEST PUSH2 0xFE2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x4 DUP2 MSTORE PUSH4 0x5449434F PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x2EE JUMP JUMPDEST PUSH2 0x296 PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH2 0x30E PUSH2 0x50C CALLDATASIZE PUSH1 0x4 PUSH2 0x2ADE JUMP JUMPDEST PUSH2 0x100D JUMP JUMPDEST PUSH1 0xD SLOAD PUSH2 0x524 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2A0 JUMP JUMPDEST PUSH2 0x296 PUSH1 0xF SLOAD DUP2 JUMP JUMPDEST PUSH2 0x30E PUSH2 0x553 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B62 JUMP JUMPDEST PUSH2 0x1018 JUMP JUMPDEST PUSH2 0x30E PUSH2 0x566 CALLDATASIZE PUSH1 0x4 PUSH2 0x2BBB JUMP JUMPDEST PUSH2 0x107D JUMP JUMPDEST PUSH2 0x524 PUSH2 0x579 CALLDATASIZE PUSH1 0x4 PUSH2 0x26A6 JUMP JUMPDEST PUSH2 0x11D6 JUMP JUMPDEST PUSH2 0x296 PUSH2 0x58C CALLDATASIZE PUSH1 0x4 PUSH2 0x26A6 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x30E PUSH2 0x5AC CALLDATASIZE PUSH1 0x4 PUSH2 0x26A6 JUMP JUMPDEST PUSH2 0x1220 JUMP JUMPDEST PUSH2 0x30E PUSH2 0x5BF CALLDATASIZE PUSH1 0x4 PUSH2 0x26BF JUMP JUMPDEST PUSH2 0x1294 JUMP JUMPDEST PUSH2 0x296 PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH2 0x30E PUSH2 0x5DB CALLDATASIZE PUSH1 0x4 PUSH2 0x292F JUMP JUMPDEST PUSH2 0x12EB JUMP JUMPDEST PUSH2 0x2BC PUSH2 0x5EE CALLDATASIZE PUSH1 0x4 PUSH2 0x2C27 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x30E PUSH2 0x62A CALLDATASIZE PUSH1 0x4 PUSH2 0x2C51 JUMP JUMPDEST PUSH2 0x1311 JUMP JUMPDEST PUSH2 0x2EE PUSH2 0x1398 JUMP JUMPDEST PUSH2 0x2BC PUSH2 0x645 CALLDATASIZE PUSH1 0x4 PUSH2 0x26A6 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x6CB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2062616C616E636520717565727920666F7220746865207A PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x65726F2061646472657373 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6FC DUP3 PUSH2 0x1426 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x30E3 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x71B DUP2 CALLER PUSH2 0x144B JUMP JUMPDEST PUSH1 0x0 DUP3 GT DUP1 ISZERO PUSH2 0x72C JUMPI POP PUSH2 0x9C5 DUP3 LT JUMPDEST PUSH2 0x771 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x6973206E6F74206265747765656E20312D3235303021 PUSH1 0x50 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6C2 JUMP JUMPDEST POP PUSH1 0x11 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 SWAP1 PUSH2 0x7A5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6C2 SWAP1 PUSH2 0x2CB5 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH5 0x100000000 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x7DC JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD PUSH2 0x7DF JUMP JUMPDEST PUSH1 0xC JUMPDEST DUP1 SLOAD PUSH2 0x7EA SWAP1 PUSH2 0x2CE1 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 0x816 SWAP1 PUSH2 0x2CE1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x863 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x838 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x863 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x846 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x30E3 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x888 DUP2 CALLER PUSH2 0x144B JUMP JUMPDEST PUSH2 0x891 DUP3 PUSH2 0xBD9 JUMP JUMPDEST ISZERO PUSH2 0x8D5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x23269034B99030B63932B0B23C903434B23232B7 PUSH1 0x61 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6C2 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x3 ADD DUP1 SLOAD PUSH5 0xFF00000000 NOT AND PUSH5 0x100000000 OR SWAP1 SSTORE PUSH1 0xB SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x91C PUSH1 0x8 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 DUP2 MSTORE PUSH32 0xC306F319FD0C3025B8574DCDFA0F7DD262569A291526163A978E85F0D7AFEED9 SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x30E3 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x96D DUP2 CALLER PUSH2 0x144B JUMP JUMPDEST PUSH1 0xB DUP3 LT PUSH2 0x9B0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x6973206D6F7265207468616E20313021 PUSH1 0x80 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6C2 JUMP JUMPDEST POP PUSH1 0xF SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x30E3 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x9CF DUP2 CALLER PUSH2 0x144B JUMP JUMPDEST PUSH1 0xB DUP3 LT PUSH2 0xA12 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x6973206D6F7265207468616E20313021 PUSH1 0x80 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6C2 JUMP JUMPDEST POP PUSH1 0xE SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x30E3 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0xA31 DUP2 CALLER PUSH2 0x144B JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0xA6F JUMPI PUSH2 0xA5D DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0xA51 JUMPI PUSH2 0xA51 PUSH2 0x2D16 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0xECB JUMP JUMPDEST DUP1 PUSH2 0xA67 DUP2 PUSH2 0x2D42 JUMP JUMPDEST SWAP2 POP POP PUSH2 0xA34 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0xA91 JUMPI POP PUSH2 0xA91 DUP6 CALLER PUSH2 0x5EE JUMP JUMPDEST PUSH2 0xAF8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E736665722063616C6C6572206973206E6F7420 PUSH1 0x44 DUP3 ADD MSTORE PUSH18 0x1BDDDB995C881B9BDC88185C1C1C9BDD9959 PUSH1 0x72 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6C2 JUMP JUMPDEST PUSH2 0xB05 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x14AF JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0xB28 DUP2 CALLER PUSH2 0x144B JUMP JUMPDEST PUSH2 0xB32 DUP4 DUP4 PUSH2 0x169A JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH2 0xBA7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2063616E206F6E6C792072656E6F756E6365 PUSH1 0x44 DUP3 ADD MSTORE PUSH15 0x103937B632B9903337B91039B2B633 PUSH1 0x89 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6C2 JUMP JUMPDEST PUSH2 0xBB1 DUP3 DUP3 PUSH2 0x1720 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x30E3 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0xBCE DUP2 CALLER PUSH2 0x144B JUMP JUMPDEST PUSH2 0xBD6 PUSH2 0x1787 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP3 SWAP1 PUSH2 0xC06 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6C2 SWAP1 PUSH2 0x2CB5 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH5 0x100000000 SWAP1 DIV PUSH1 0xFF AND SWAP2 POP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x30E3 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0xC45 DUP2 CALLER PUSH2 0x144B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xC8B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x4E6F2061646472657373283029 PUSH1 0x98 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6C2 JUMP JUMPDEST POP PUSH1 0xD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0xD13 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A206163636F756E747320616E6420696473206C656E677468 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x40DAD2E6DAC2E8C6D PUSH1 0xBB SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6C2 JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0xD2E JUMPI PUSH2 0xD2E PUSH2 0x2733 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xD57 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0xDCF JUMPI PUSH2 0xDA2 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xD7B JUMPI PUSH2 0xD7B PUSH2 0x2D16 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xD95 JUMPI PUSH2 0xD95 PUSH2 0x2D16 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x65A JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xDB4 JUMPI PUSH2 0xDB4 PUSH2 0x2D16 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH2 0xDC8 DUP2 PUSH2 0x2D42 JUMP JUMPDEST SWAP1 POP PUSH2 0xD5D JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 PUSH2 0xDE5 PUSH1 0x7 SLOAD SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 JUMPDEST DUP2 DUP2 GT PUSH2 0xE20 JUMPI PUSH2 0xDFB DUP6 DUP3 PUSH2 0x65A JUMP JUMPDEST ISZERO PUSH2 0xE0E JUMPI DUP3 PUSH2 0xE0A DUP2 PUSH2 0x2D42 JUMP JUMPDEST SWAP4 POP POP JUMPDEST DUP1 PUSH2 0xE18 DUP2 PUSH2 0x2D42 JUMP JUMPDEST SWAP2 POP POP PUSH2 0xDEA JUMP JUMPDEST POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0xE3B JUMPI PUSH2 0xE3B PUSH2 0x2733 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xE64 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 PUSH1 0x1 JUMPDEST DUP4 DUP2 GT PUSH2 0xEC0 JUMPI PUSH2 0xE7D DUP8 DUP3 PUSH2 0x65A JUMP JUMPDEST ISZERO PUSH2 0xEAE JUMPI DUP1 DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xE95 JUMPI PUSH2 0xE95 PUSH2 0x2D16 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE DUP2 PUSH2 0xEAA DUP2 PUSH2 0x2D42 JUMP JUMPDEST SWAP3 POP POP JUMPDEST DUP1 PUSH2 0xEB8 DUP2 PUSH2 0x2D42 JUMP JUMPDEST SWAP2 POP POP PUSH2 0xE6C JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x30E3 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0xEE4 DUP2 CALLER PUSH2 0x144B JUMP JUMPDEST PUSH2 0xEED DUP3 PUSH2 0xBD9 JUMP JUMPDEST PUSH2 0xF2C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x23269034B9903737BA103434B23232B7 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6C2 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x3 ADD DUP1 SLOAD PUSH5 0xFF00000000 NOT AND SWAP1 SSTORE PUSH1 0xB SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH2 0xF65 PUSH1 0x8 PUSH2 0x181A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 DUP2 MSTORE PUSH32 0x1861A8DC40124AFFBA5FE8313842A0100CBA57CA600961D1D33575A655FFAB33 SWAP1 PUSH1 0x20 ADD PUSH2 0x948 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x30E3 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0xFAE DUP2 CALLER PUSH2 0x144B JUMP JUMPDEST PUSH2 0xBD6 PUSH2 0x1871 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x30E3 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0xFCF DUP2 CALLER PUSH2 0x144B JUMP JUMPDEST DUP2 MLOAD PUSH2 0xB32 SWAP1 PUSH1 0xC SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x2529 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP5 MSTORE SWAP2 SWAP1 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0xBB1 CALLER DUP4 DUP4 PUSH2 0x18C9 JUMP JUMPDEST PUSH32 0x9F2DF0FED2C77648DE5860A4CC508CD0818C85B8B8A1AB4CEEEF8D981C8956A6 PUSH2 0x1043 DUP2 CALLER PUSH2 0x144B JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1066 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6C2 SWAP1 PUSH2 0x2D5D JUMP JUMPDEST PUSH2 0x1074 CALLER DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0x19AA JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x241ECF16D79D0F8DBFB92CBC07FE17840425976CF0667F022FE9877CAA831B08 PUSH2 0x10A8 DUP2 CALLER PUSH2 0x144B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH2 0x10EE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x4E6F2061646472657373283029 PUSH1 0x98 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6C2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND CALLER EQ ISZERO PUSH2 0x113E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x27379036B4B73A103337B9103CB7BAB939B2B633 PUSH1 0x61 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6C2 JUMP JUMPDEST PUSH2 0x1168 PUSH32 0x9F2DF0FED2C77648DE5860A4CC508CD0818C85B8B8A1AB4CEEEF8D981C8956A6 DUP9 PUSH2 0xFE2 JUMP JUMPDEST PUSH2 0x11BE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x63726561746F722061646472657373206E656564204D494E5445525F524F4C45 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0xF8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6C2 JUMP JUMPDEST PUSH2 0x11CC DUP8 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0x19AA JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP3 SWAP1 PUSH2 0x1203 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6C2 SWAP1 PUSH2 0x2CB5 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x30E3 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1239 DUP2 CALLER PUSH2 0x144B JUMP JUMPDEST PUSH1 0x9 DUP3 GT DUP1 ISZERO PUSH2 0x1249 JUMPI POP PUSH1 0x65 DUP3 LT JUMPDEST PUSH2 0x128E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x6973206E6F74206265747765656E2031302D31303021 PUSH1 0x50 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6C2 JUMP JUMPDEST POP PUSH1 0x10 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x30E3 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x12AD DUP2 CALLER PUSH2 0x144B JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0xA6F JUMPI PUSH2 0x12D9 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x12CD JUMPI PUSH2 0x12CD PUSH2 0x2D16 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0x86F JUMP JUMPDEST DUP1 PUSH2 0x12E3 DUP2 PUSH2 0x2D42 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x12B0 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0x1307 DUP2 CALLER PUSH2 0x144B JUMP JUMPDEST PUSH2 0xB32 DUP4 DUP4 PUSH2 0x1720 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0x132D JUMPI POP PUSH2 0x132D DUP6 CALLER PUSH2 0x5EE JUMP JUMPDEST PUSH2 0x138B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2063616C6C6572206973206E6F74206F776E6572206E6F72 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x8185C1C1C9BDD9959 PUSH1 0xBA SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6C2 JUMP JUMPDEST PUSH2 0xB05 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x1D74 JUMP JUMPDEST PUSH1 0xC DUP1 SLOAD PUSH2 0x13A5 SWAP1 PUSH2 0x2CE1 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 0x13D1 SWAP1 PUSH2 0x2CE1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x141E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x13F3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x141E JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1401 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x7965DB0B PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x6FC JUMPI POP PUSH2 0x6FC DUP3 PUSH2 0x1E97 JUMP JUMPDEST PUSH2 0x1455 DUP3 DUP3 PUSH2 0xFE2 JUMP JUMPDEST PUSH2 0xBB1 JUMPI PUSH2 0x146D DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x14 PUSH2 0x1EE7 JUMP JUMPDEST PUSH2 0x1478 DUP4 PUSH1 0x20 PUSH2 0x1EE7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1489 SWAP3 SWAP2 SWAP1 PUSH2 0x2D87 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE PUSH3 0x461BCD PUSH1 0xE5 SHL DUP3 MSTORE PUSH2 0x6C2 SWAP2 PUSH1 0x4 ADD PUSH2 0x2693 JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x1511 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2069647320616E6420616D6F756E7473206C656E67746820 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0xDAD2E6DAC2E8C6D PUSH1 0xC3 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6C2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1537 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6C2 SWAP1 PUSH2 0x2DFC JUMP JUMPDEST CALLER PUSH2 0x1546 DUP2 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0x2089 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x162C JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1566 JUMPI PUSH2 0x1566 PUSH2 0x2D16 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1584 JUMPI PUSH2 0x1584 PUSH2 0x2D16 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH1 0x0 DUP5 DUP2 MSTORE DUP1 DUP4 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 AND DUP4 MSTORE SWAP1 SWAP4 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SLOAD SWAP1 SWAP2 POP DUP2 DUP2 LT ISZERO PUSH2 0x15D4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6C2 SWAP1 PUSH2 0x2E41 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 DUP2 AND DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP6 SUB SWAP1 SSTORE SWAP1 DUP12 AND DUP3 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x1611 SWAP1 DUP5 SWAP1 PUSH2 0x2E8B JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP POP DUP1 PUSH2 0x1625 SWAP1 PUSH2 0x2D42 JUMP JUMPDEST SWAP1 POP PUSH2 0x1549 JUMP JUMPDEST POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x167C SWAP3 SWAP2 SWAP1 PUSH2 0x2EA3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x1692 DUP2 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0x20BA JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x16A4 DUP3 DUP3 PUSH2 0xFE2 JUMP JUMPDEST PUSH2 0xBB1 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x16DC CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH2 0x172A DUP3 DUP3 PUSH2 0xFE2 JUMP JUMPDEST ISZERO PUSH2 0xBB1 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP6 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND PUSH2 0x17D0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x14185D5CD8589B194E881B9BDD081C185D5CD959 PUSH1 0x62 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6C2 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA CALLER JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST DUP1 SLOAD DUP1 PUSH2 0x1869 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F756E7465723A2064656372656D656E74206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6C2 JUMP JUMPDEST PUSH1 0x0 NOT ADD SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1894 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6C2 SWAP1 PUSH2 0x2D5D JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH2 0x17FD CALLER SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x193D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2073657474696E6720617070726F76616C20737461747573 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x103337B91039B2B633 PUSH1 0xB9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6C2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 PUSH1 0x6 SLOAD EQ ISZERO PUSH2 0x19FF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6C2 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x6 SSTORE DUP3 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1A15 JUMPI POP PUSH1 0x11 SLOAD DUP4 GT ISZERO JUMPDEST PUSH2 0x1A57 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x185B5BDD5B9D080F881B585E08185B5BDD5B9D PUSH1 0x6A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6C2 JUMP JUMPDEST PUSH1 0x10 SLOAD DUP3 LT ISZERO DUP1 ISZERO PUSH2 0x1A69 JUMPI POP PUSH1 0x65 DUP3 LT JUMPDEST PUSH2 0x1AAB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x6E6F74206265747765656E2031302D31303021 PUSH1 0x68 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6C2 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x1AFE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x496D61676520616C726561647920657869737473 PUSH1 0x60 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6C2 JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0x0 SWAP1 DUP5 SWAP1 ISZERO PUSH2 0x1B53 JUMPI PUSH1 0x6 DUP6 LT PUSH2 0x1B41 JUMPI PUSH1 0x15 DUP6 LT PUSH2 0x1B3A JUMPI PUSH1 0x64 PUSH1 0xE SLOAD DUP7 PUSH2 0x1B2B SWAP2 SWAP1 PUSH2 0x2ED1 JUMP JUMPDEST PUSH2 0x1B35 SWAP2 SWAP1 PUSH2 0x2EF0 JUMP JUMPDEST PUSH2 0x1B44 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x1B44 JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP2 POP PUSH2 0x1B50 DUP3 DUP7 PUSH2 0x2F12 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0x1B61 PUSH1 0x7 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B6C PUSH1 0x7 SLOAD SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE DUP1 DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP11 DUP11 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD DUP3 SWAP1 MSTORE POP SWAP4 DUP6 MSTORE POP POP POP PUSH1 0x20 DUP1 DUP4 ADD DUP12 SWAP1 MSTORE PUSH2 0xFFFF DUP11 AND PUSH1 0x40 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xF SLOAD PUSH1 0xFF SWAP1 DUP2 AND PUSH1 0x60 DUP7 ADD MSTORE DUP11 AND PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xA0 SWAP1 SWAP4 ADD DUP3 SWAP1 MSTORE DUP5 DUP3 MSTORE PUSH1 0x9 DUP2 MSTORE SWAP2 SWAP1 KECCAK256 DUP3 MLOAD DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND OR DUP2 SSTORE DUP3 DUP3 ADD MLOAD DUP1 MLOAD SWAP2 SWAP3 PUSH2 0x1C32 SWAP3 PUSH1 0x1 DUP6 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x2529 JUMP JUMPDEST POP PUSH1 0x40 DUP3 DUP2 ADD MLOAD PUSH1 0x2 DUP4 ADD SSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x3 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH1 0x80 DUP6 ADD MLOAD PUSH1 0xA0 DUP7 ADD MLOAD PUSH1 0xC0 SWAP1 SWAP7 ADD MLOAD PUSH2 0xFFFF SWAP1 SWAP6 AND PUSH3 0xFFFFFF NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR PUSH3 0x10000 PUSH1 0xFF SWAP3 DUP4 AND MUL OR PUSH5 0xFFFF000000 NOT AND PUSH4 0x1000000 SWAP2 SWAP1 SWAP6 AND MUL PUSH5 0xFF00000000 NOT AND SWAP4 SWAP1 SWAP4 OR PUSH5 0x100000000 SWAP3 ISZERO ISZERO SWAP3 SWAP1 SWAP3 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE DUP3 DUP3 KECCAK256 DUP5 SWAP1 SSTORE DUP3 MLOAD SWAP1 DUP2 ADD SWAP1 SWAP3 MSTORE DUP2 MSTORE PUSH2 0x1CD4 SWAP1 DUP12 SWAP1 DUP4 SWAP1 DUP6 SWAP1 PUSH2 0x2216 JUMP JUMPDEST DUP3 ISZERO PUSH2 0x1D03 JUMPI PUSH1 0xD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH2 0x1D03 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP4 SWAP1 DUP7 SWAP1 PUSH2 0x2216 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0xA0 DUP2 ADD DUP5 SWAP1 MSTORE PUSH32 0x99895753745B248C3CD5FF15A17B3DBA7A694C996161FEDA4069A91095CD98B SWAP1 PUSH1 0xC0 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x1 PUSH1 0x6 SSTORE SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1D9A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6C2 SWAP1 PUSH2 0x2DFC JUMP JUMPDEST CALLER PUSH2 0x1DB9 DUP2 DUP8 DUP8 PUSH2 0x1DAA DUP9 PUSH2 0x2317 JUMP JUMPDEST PUSH2 0x1DB3 DUP9 PUSH2 0x2317 JUMP JUMPDEST DUP8 PUSH2 0x2089 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP4 DUP2 LT ISZERO PUSH2 0x1DFA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6C2 SWAP1 PUSH2 0x2E41 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP8 DUP6 SUB SWAP1 SSTORE SWAP1 DUP9 AND DUP3 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP7 SWAP3 SWAP1 PUSH2 0x1E37 SWAP1 DUP5 SWAP1 PUSH2 0x2E8B JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND SWAP3 DUP11 DUP3 AND SWAP3 SWAP2 DUP7 AND SWAP2 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x1074 DUP3 DUP9 DUP9 DUP9 DUP9 DUP9 PUSH2 0x2362 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x6CDB3D13 PUSH1 0xE1 SHL EQ DUP1 PUSH2 0x1EC8 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x3A24D07 PUSH1 0xE2 SHL EQ JUMPDEST DUP1 PUSH2 0x6FC JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH2 0x6FC JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x1EF6 DUP4 PUSH1 0x2 PUSH2 0x2ED1 JUMP JUMPDEST PUSH2 0x1F01 SWAP1 PUSH1 0x2 PUSH2 0x2E8B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1F18 JUMPI PUSH2 0x1F18 PUSH2 0x2733 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1F42 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x3 PUSH1 0xFC SHL DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1F5D JUMPI PUSH2 0x1F5D PUSH2 0x2D16 JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xF PUSH1 0xFB SHL DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1F8C JUMPI PUSH2 0x1F8C PUSH2 0x2D16 JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x0 PUSH2 0x1FB0 DUP5 PUSH1 0x2 PUSH2 0x2ED1 JUMP JUMPDEST PUSH2 0x1FBB SWAP1 PUSH1 0x1 PUSH2 0x2E8B JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x2033 JUMPI PUSH16 0x181899199A1A9B1B9C1CB0B131B232B3 PUSH1 0x81 SHL DUP6 PUSH1 0xF AND PUSH1 0x10 DUP2 LT PUSH2 0x1FEF JUMPI PUSH2 0x1FEF PUSH2 0x2D16 JUMP JUMPDEST BYTE PUSH1 0xF8 SHL DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2005 JUMPI PUSH2 0x2005 PUSH2 0x2D16 JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x4 SWAP5 SWAP1 SWAP5 SHR SWAP4 PUSH2 0x202C DUP2 PUSH2 0x2F29 JUMP JUMPDEST SWAP1 POP PUSH2 0x1FBE JUMP JUMPDEST POP DUP4 ISZERO PUSH2 0x2082 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x537472696E67733A20686578206C656E67746820696E73756666696369656E74 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6C2 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x20AC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6C2 SWAP1 PUSH2 0x2D5D JUMP JUMPDEST PUSH2 0x1692 DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x241D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x1692 JUMPI PUSH1 0x40 MLOAD PUSH4 0xBC197C81 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0xBC197C81 SWAP1 PUSH2 0x20FE SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x2F40 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x2139 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x2136 SWAP2 DUP2 ADD SWAP1 PUSH2 0x2F9E JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x21E6 JUMPI PUSH2 0x2145 PUSH2 0x2FBB JUMP JUMPDEST DUP1 PUSH4 0x8C379A0 EQ ISZERO PUSH2 0x217F JUMPI POP PUSH2 0x215A PUSH2 0x2FD7 JUMP JUMPDEST DUP1 PUSH2 0x2165 JUMPI POP PUSH2 0x2181 JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6C2 SWAP2 SWAP1 PUSH2 0x2693 JUMP JUMPDEST POP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x34 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E7366657220746F206E6F6E2045524331313535 PUSH1 0x44 DUP3 ADD MSTORE PUSH20 0x2932B1B2B4BB32B91034B6B83632B6B2B73A32B9 PUSH1 0x61 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6C2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xBC197C81 PUSH1 0xE0 SHL EQ PUSH2 0x1074 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6C2 SWAP1 PUSH2 0x3055 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x2276 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A206D696E7420746F20746865207A65726F20616464726573 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x73 PUSH1 0xF8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6C2 JUMP JUMPDEST CALLER PUSH2 0x2287 DUP2 PUSH1 0x0 DUP8 PUSH2 0x1DAA DUP9 PUSH2 0x2317 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP6 SWAP3 SWAP1 PUSH2 0x22B7 SWAP1 DUP5 SWAP1 PUSH2 0x2E8B JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 DUP1 MLOAD DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND SWAP3 PUSH1 0x0 SWAP3 SWAP2 DUP6 AND SWAP2 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0xB05 DUP2 PUSH1 0x0 DUP8 DUP8 DUP8 DUP8 PUSH2 0x2362 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2351 JUMPI PUSH2 0x2351 PUSH2 0x2D16 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x1692 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF23A6E61 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0xF23A6E61 SWAP1 PUSH2 0x23A6 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x309D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x23E1 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x23DE SWAP2 DUP2 ADD SWAP1 PUSH2 0x2F9E JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x23ED JUMPI PUSH2 0x2145 PUSH2 0x2FBB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xF23A6E61 PUSH1 0xE0 SHL EQ PUSH2 0x1074 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6C2 SWAP1 PUSH2 0x3055 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x24A4 JUMPI PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x24A2 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x2449 JUMPI PUSH2 0x2449 PUSH2 0x2D16 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x5 PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x2467 JUMPI PUSH2 0x2467 PUSH2 0x2D16 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x248C SWAP2 SWAP1 PUSH2 0x2E8B JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x249B SWAP1 POP DUP2 PUSH2 0x2D42 JUMP JUMPDEST SWAP1 POP PUSH2 0x242E JUMP JUMPDEST POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1692 JUMPI PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x1074 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x24D0 JUMPI PUSH2 0x24D0 PUSH2 0x2D16 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x5 PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x24EE JUMPI PUSH2 0x24EE PUSH2 0x2D16 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x2513 SWAP2 SWAP1 PUSH2 0x2F12 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x2522 SWAP1 POP DUP2 PUSH2 0x2D42 JUMP JUMPDEST SWAP1 POP PUSH2 0x24B5 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x2535 SWAP1 PUSH2 0x2CE1 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x2557 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x259D JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x2570 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x259D JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x259D JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x259D JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x2582 JUMP JUMPDEST POP PUSH2 0x25A9 SWAP3 SWAP2 POP PUSH2 0x25AD JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x25A9 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x25AE JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x25D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x25F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x25FA DUP4 PUSH2 0x25C2 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xBD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2630 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2082 DUP2 PUSH2 0x2608 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2656 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x263E JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xA6F JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x267F DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x263B JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2082 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2667 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x26B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x26D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x26E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x26FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x270C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x2721 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x276E JUMPI PUSH2 0x276E PUSH2 0x2733 JUMP JUMPDEST PUSH1 0x40 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x278E JUMPI PUSH2 0x278E PUSH2 0x2733 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x27A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x27B6 DUP3 PUSH2 0x2775 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x27C3 DUP3 DUP3 PUSH2 0x2749 JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x5 SWAP4 SWAP1 SWAP4 SHL DUP6 ADD DUP3 ADD SWAP3 DUP3 DUP2 ADD SWAP2 POP DUP7 DUP5 GT ISZERO PUSH2 0x27E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP7 ADD JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x27FE JUMPI DUP1 CALLDATALOAD DUP4 MSTORE SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x27E7 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 GT ISZERO PUSH2 0x2822 JUMPI PUSH2 0x2822 PUSH2 0x2733 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2839 PUSH1 0x1F DUP6 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 PUSH2 0x2749 JUMP JUMPDEST DUP1 SWAP2 POP DUP4 DUP2 MSTORE DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x284E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP4 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP6 DUP4 ADD ADD MSTORE POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2877 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2082 DUP4 DUP4 CALLDATALOAD PUSH1 0x20 DUP6 ADD PUSH2 0x2809 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x289E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x28A7 DUP7 PUSH2 0x25C2 JUMP JUMPDEST SWAP5 POP PUSH2 0x28B5 PUSH1 0x20 DUP8 ADD PUSH2 0x25C2 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x28D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x28DD DUP10 DUP4 DUP11 ADD PUSH2 0x2798 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x28F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x28FF DUP10 DUP4 DUP11 ADD PUSH2 0x2798 JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2915 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2922 DUP9 DUP3 DUP10 ADD PUSH2 0x2866 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2942 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x2952 PUSH1 0x20 DUP5 ADD PUSH2 0x25C2 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x296D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2082 DUP3 PUSH2 0x25C2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2989 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x29A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x29B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x29C1 DUP3 PUSH2 0x2775 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x29CE DUP3 DUP3 PUSH2 0x2749 JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x5 SWAP4 SWAP1 SWAP4 SHL DUP6 ADD DUP3 ADD SWAP3 DUP3 DUP2 ADD SWAP2 POP DUP10 DUP5 GT ISZERO PUSH2 0x29EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP5 DUP3 ADD SWAP5 JUMPDEST DUP4 DUP7 LT ISZERO PUSH2 0x2A13 JUMPI PUSH2 0x2A04 DUP7 PUSH2 0x25C2 JUMP JUMPDEST DUP3 MSTORE SWAP5 DUP3 ADD SWAP5 SWAP1 DUP3 ADD SWAP1 PUSH2 0x29F3 JUMP JUMPDEST SWAP7 POP POP DUP7 ADD CALLDATALOAD SWAP3 POP POP DUP1 DUP3 GT ISZERO PUSH2 0x2A29 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A36 DUP6 DUP3 DUP7 ADD PUSH2 0x2798 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2A70 JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2A54 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2082 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2A40 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2AA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2AB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x2AC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2AD6 DUP5 DUP3 CALLDATALOAD PUSH1 0x20 DUP5 ADD PUSH2 0x2809 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2AF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2AFA DUP4 PUSH2 0x25C2 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x2B0F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x2B2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2B43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x2B5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2B7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2B90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2B9C DUP9 DUP3 DUP10 ADD PUSH2 0x2B1A JUMP JUMPDEST SWAP1 SWAP10 SWAP1 SWAP9 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD SWAP8 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP8 POP PUSH1 0x60 ADD CALLDATALOAD SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x2BD4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2BDD DUP8 PUSH2 0x25C2 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2BF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C04 DUP10 DUP3 DUP11 ADD PUSH2 0x2B1A JUMP JUMPDEST SWAP8 SWAP11 SWAP1 SWAP10 POP SWAP7 SWAP8 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP8 PUSH1 0x60 DUP3 ADD CALLDATALOAD SWAP8 POP PUSH1 0x80 SWAP1 SWAP2 ADD CALLDATALOAD SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2C3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C43 DUP4 PUSH2 0x25C2 JUMP JUMPDEST SWAP2 POP PUSH2 0x2952 PUSH1 0x20 DUP5 ADD PUSH2 0x25C2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2C69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C72 DUP7 PUSH2 0x25C2 JUMP JUMPDEST SWAP5 POP PUSH2 0x2C80 PUSH1 0x20 DUP8 ADD PUSH2 0x25C2 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2CA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2922 DUP9 DUP3 DUP10 ADD PUSH2 0x2866 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x12 SWAP1 DUP3 ADD MSTORE PUSH18 0x139BC81193481DDA5D1A081D1A1A5CC81259 PUSH1 0x72 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x2CF5 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0xC26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH2 0x2D56 JUMPI PUSH2 0x2D56 PUSH2 0x2D2C JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x10 SWAP1 DUP3 ADD MSTORE PUSH16 0x14185D5CD8589B194E881C185D5CD959 PUSH1 0x82 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH32 0x416363657373436F6E74726F6C3A206163636F756E7420000000000000000000 DUP2 MSTORE PUSH1 0x0 DUP4 MLOAD PUSH2 0x2DBF DUP2 PUSH1 0x17 DUP6 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x263B JUMP JUMPDEST PUSH17 0x1034B99036B4B9B9B4B733903937B6329 PUSH1 0x7D SHL PUSH1 0x17 SWAP2 DUP5 ADD SWAP2 DUP3 ADD MSTORE DUP4 MLOAD PUSH2 0x2DF0 DUP2 PUSH1 0x28 DUP5 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x263B JUMP JUMPDEST ADD PUSH1 0x28 ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x25 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E7366657220746F20746865207A65726F206164 PUSH1 0x40 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2A SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313135353A20696E73756666696369656E742062616C616E636520666F PUSH1 0x40 DUP3 ADD MSTORE PUSH10 0x39103A3930B739B332B9 PUSH1 0xB1 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x2E9E JUMPI PUSH2 0x2E9E PUSH2 0x2D2C JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2EB6 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x2A40 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x2EC8 DUP2 DUP6 PUSH2 0x2A40 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x2EEB JUMPI PUSH2 0x2EEB PUSH2 0x2D2C JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2F0D JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x2F24 JUMPI PUSH2 0x2F24 PUSH2 0x2D2C JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x2F38 JUMPI PUSH2 0x2F38 PUSH2 0x2D2C JUMP JUMPDEST POP PUSH1 0x0 NOT ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND DUP3 MSTORE DUP6 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0xA0 PUSH1 0x40 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x2F6C SWAP1 DUP4 ADD DUP7 PUSH2 0x2A40 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x2F7E DUP2 DUP7 PUSH2 0x2A40 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x2F92 DUP2 DUP6 PUSH2 0x2667 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2FB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2082 DUP2 PUSH2 0x2608 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 RETURNDATASIZE GT ISZERO PUSH2 0x2FD4 JUMPI PUSH1 0x4 PUSH1 0x0 DUP1 RETURNDATACOPY POP PUSH1 0x0 MLOAD PUSH1 0xE0 SHR JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x44 RETURNDATASIZE LT ISZERO PUSH2 0x2FE5 JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x3 NOT RETURNDATASIZE DUP2 ADD PUSH1 0x4 DUP4 RETURNDATACOPY DUP2 MLOAD RETURNDATASIZE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 PUSH1 0x24 DUP5 ADD GT DUP2 DUP5 GT OR ISZERO PUSH2 0x3014 JUMPI POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP3 DUP6 ADD SWAP2 POP DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x302C JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP5 RETURNDATASIZE DUP8 ADD ADD PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x3046 JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0xEC0 PUSH1 0x20 DUP3 DUP7 ADD ADD DUP8 PUSH2 0x2749 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x28 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313135353A204552433131353552656365697665722072656A65637465 PUSH1 0x40 DUP3 ADD MSTORE PUSH8 0x6420746F6B656E73 PUSH1 0xC0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND DUP3 MSTORE DUP6 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0xA0 PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x30D7 SWAP1 DUP4 ADD DUP5 PUSH2 0x2667 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP INVALID LOG4 SWAP9 SMOD KECCAK256 0x5C 0xE4 0xD3 SSTORE MULMOD 0x2E CREATE2 0xA8 LOG1 DUP16 JUMP 0xE8 SWAP2 EXTCODECOPY DELEGATECALL LOG2 ADD 0xFB 0xE2 DUP8 DUP3 JUMPDEST MULMOD JUMP SWAP4 0xC2 OR PUSH22 0xA26469706673582212204AD9EFBF176E2117E55DAA64 0xE6 MLOAD 0xBC CHAINID 0x27 ADD 0xBD PUSH12 0xE76CDF0FE7EB840097A6D9C0 PUSH5 0x736F6C6343 STOP ADDMOD 0xC STOP CALLER ",
"sourceMap": "3048:20906:15:-:0;;;5656:1285;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1092:62:4;;;;;;;;;-1:-1:-1;1092:62:4;;1134:13;1092:62;1134:7;:13::i;:::-;-1:-1:-1;981:7:2;:15;;-1:-1:-1;;981:15:2;;;;1806:7:3;:22;5716:42:15::1;991:5:2::0;5747:10:15::1;5716;:42::i;:::-;5768:34;5388:23;5791:10;5768;:34::i;:::-;6521:4;6505:13;:20:::0;6536:16:::1;::::0;;::::1;::::0;::::1;::::0;;;;-1:-1:-1;6536:16:15;;;;::::1;::::0;:11:::1;::::0;:16:::1;:::i;:::-;-1:-1:-1::0;6563:17:15::1;:36:::0;;-1:-1:-1;;;;;;6563:36:15::1;-1:-1:-1::0;;;;;6563:36:15;;;::::1;::::0;;;::::1;::::0;;6723:1:::1;6705:15;:19:::0;;;6806:16:::1;:20:::0;6932:2:::1;6915:14;:19:::0;3048:20906;;7936:86:4;8002:13;;;;:4;;:13;;;;;:::i;:::-;;7936:86;:::o;6861:233:0:-;2995:4;3018:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;3018:29:0;;;;;;;;;;;;6939:149;;6982:12;;;;:6;:12;;;;;;;;-1:-1:-1;;;;;6982:29:0;;;;;;;;;:36;;-1:-1:-1;;6982:36:0;7014:4;6982:36;;;7064:12;719:10:10;;640:96;7064:12:0;-1:-1:-1;;;;;7037:40:0;7055:7;-1:-1:-1;;;;;7037:40:0;7049:4;7037:40;;;;;;;;;;6861:233;;:::o;3048:20906:15:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3048:20906:15;;;-1:-1:-1;3048:20906:15;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:290:17;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:17;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:17:o;309:380::-;388:1;384:12;;;;431;;;452:61;;506:4;498:6;494:17;484:27;;452:61;559:2;551:6;548:14;528:18;525:38;522:161;;;605:10;600:3;596:20;593:1;586:31;640:4;637:1;630:15;668:4;665:1;658:15;522:161;;309:380;;;:::o;:::-;3048:20906:15;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@DEFAULT_ADMIN_ROLE_27": {
"entryPoint": null,
"id": 27,
"parameterSlots": 0,
"returnSlots": 0
},
"@_asSingletonArray_1608": {
"entryPoint": 8983,
"id": 1608,
"parameterSlots": 1,
"returnSlots": 1
},
"@_beforeTokenTransfer_1452": {
"entryPoint": null,
"id": 1452,
"parameterSlots": 6,
"returnSlots": 0
},
"@_beforeTokenTransfer_1904": {
"entryPoint": 9245,
"id": 1904,
"parameterSlots": 6,
"returnSlots": 0
},
"@_beforeTokenTransfer_3358": {
"entryPoint": 8329,
"id": 3358,
"parameterSlots": 6,
"returnSlots": 0
},
"@_checkRole_124": {
"entryPoint": 5195,
"id": 124,
"parameterSlots": 2,
"returnSlots": 0
},
"@_doSafeBatchTransferAcceptanceCheck_1580": {
"entryPoint": 8378,
"id": 1580,
"parameterSlots": 6,
"returnSlots": 0
},
"@_doSafeTransferAcceptanceCheck_1515": {
"entryPoint": 9058,
"id": 1515,
"parameterSlots": 6,
"returnSlots": 0
},
"@_grantRole_276": {
"entryPoint": 5786,
"id": 276,
"parameterSlots": 2,
"returnSlots": 0
},
"@_mint_1112": {
"entryPoint": 8726,
"id": 1112,
"parameterSlots": 4,
"returnSlots": 0
},
"@_msgSender_2227": {
"entryPoint": null,
"id": 2227,
"parameterSlots": 0,
"returnSlots": 1
},
"@_pause_456": {
"entryPoint": 6257,
"id": 456,
"parameterSlots": 0,
"returnSlots": 0
},
"@_revokeRole_307": {
"entryPoint": 5920,
"id": 307,
"parameterSlots": 2,
"returnSlots": 0
},
"@_safeBatchTransferFrom_1026": {
"entryPoint": 5295,
"id": 1026,
"parameterSlots": 5,
"returnSlots": 0
},
"@_safeTransferFrom_900": {
"entryPoint": 7540,
"id": 900,
"parameterSlots": 5,
"returnSlots": 0
},
"@_setApprovalForAll_1433": {
"entryPoint": 6345,
"id": 1433,
"parameterSlots": 3,
"returnSlots": 0
},
"@_unpause_472": {
"entryPoint": 6023,
"id": 472,
"parameterSlots": 0,
"returnSlots": 0
},
"@balanceOfBatch_693": {
"entryPoint": 3246,
"id": 693,
"parameterSlots": 2,
"returnSlots": 1
},
"@balanceOf_629": {
"entryPoint": 1626,
"id": 629,
"parameterSlots": 2,
"returnSlots": 1
},
"@creatorAddress_3052": {
"entryPoint": 4566,
"id": 3052,
"parameterSlots": 1,
"returnSlots": 1
},
"@current_2255": {
"entryPoint": null,
"id": 2255,
"parameterSlots": 1,
"returnSlots": 1
},
"@decrement_2297": {
"entryPoint": 6170,
"id": 2297,
"parameterSlots": 1,
"returnSlots": 0
},
"@exists_1811": {
"entryPoint": null,
"id": 1811,
"parameterSlots": 1,
"returnSlots": 1
},
"@fmHiddenCount_2601": {
"entryPoint": null,
"id": 2601,
"parameterSlots": 0,
"returnSlots": 0
},
"@fmHiddenList_2629": {
"entryPoint": null,
"id": 2629,
"parameterSlots": 0,
"returnSlots": 0
},
"@fmHiddenURL_2631": {
"entryPoint": 5016,
"id": 2631,
"parameterSlots": 0,
"returnSlots": 0
},
"@fmMarketingFees_2635": {
"entryPoint": null,
"id": 2635,
"parameterSlots": 0,
"returnSlots": 0
},
"@fmMarketingWallet_2633": {
"entryPoint": null,
"id": 2633,
"parameterSlots": 0,
"returnSlots": 0
},
"@fmUniqueImgHashList_2625": {
"entryPoint": null,
"id": 2625,
"parameterSlots": 0,
"returnSlots": 0
},
"@getRoleAdmin_139": {
"entryPoint": null,
"id": 139,
"parameterSlots": 1,
"returnSlots": 1
},
"@grantRole_159": {
"entryPoint": 2828,
"id": 159,
"parameterSlots": 2,
"returnSlots": 0
},
"@hasRole_81": {
"entryPoint": 4066,
"id": 81,
"parameterSlots": 2,
"returnSlots": 1
},
"@hideFm_3092": {
"entryPoint": 2159,
"id": 3092,
"parameterSlots": 1,
"returnSlots": 0
},
"@hideFms_3122": {
"entryPoint": 4756,
"id": 3122,
"parameterSlots": 2,
"returnSlots": 0
},
"@increment_2269": {
"entryPoint": null,
"id": 2269,
"parameterSlots": 1,
"returnSlots": 0
},
"@isApprovedForAll_728": {
"entryPoint": null,
"id": 728,
"parameterSlots": 2,
"returnSlots": 1
},
"@isContract_1938": {
"entryPoint": null,
"id": 1938,
"parameterSlots": 1,
"returnSlots": 1
},
"@isHidden_3207": {
"entryPoint": 3033,
"id": 3207,
"parameterSlots": 1,
"returnSlots": 1
},
"@maxMintAmount_2641": {
"entryPoint": null,
"id": 2641,
"parameterSlots": 0,
"returnSlots": 0
},
"@minCharityFees_2639": {
"entryPoint": null,
"id": 2639,
"parameterSlots": 0,
"returnSlots": 0
},
"@mintByAthlete_2797": {
"entryPoint": 4120,
"id": 2797,
"parameterSlots": 5,
"returnSlots": 0
},
"@mintForAthlete_2849": {
"entryPoint": 4221,
"id": 2849,
"parameterSlots": 6,
"returnSlots": 0
},
"@mint_3007": {
"entryPoint": 6570,
"id": 3007,
"parameterSlots": 6,
"returnSlots": 1
},
"@mpFantasticoFees_2637": {
"entryPoint": null,
"id": 2637,
"parameterSlots": 0,
"returnSlots": 0
},
"@name_2711": {
"entryPoint": null,
"id": 2711,
"parameterSlots": 0,
"returnSlots": 1
},
"@ownedToken_3462": {
"entryPoint": 3543,
"id": 3462,
"parameterSlots": 1,
"returnSlots": 1
},
"@pause_2759": {
"entryPoint": 3989,
"id": 2759,
"parameterSlots": 0,
"returnSlots": 0
},
"@paused_417": {
"entryPoint": null,
"id": 417,
"parameterSlots": 0,
"returnSlots": 1
},
"@renounceRole_202": {
"entryPoint": 2871,
"id": 202,
"parameterSlots": 2,
"returnSlots": 0
},
"@revokeRole_179": {
"entryPoint": 4843,
"id": 179,
"parameterSlots": 2,
"returnSlots": 0
},
"@safeBatchTransferFrom_806": {
"entryPoint": 2677,
"id": 806,
"parameterSlots": 5,
"returnSlots": 0
},
"@safeTransferFrom_766": {
"entryPoint": 4881,
"id": 766,
"parameterSlots": 5,
"returnSlots": 0
},
"@setApprovalForAll_710": {
"entryPoint": 4109,
"id": 710,
"parameterSlots": 2,
"returnSlots": 0
},
"@setFantasticoFees_3298": {
"entryPoint": 2388,
"id": 3298,
"parameterSlots": 1,
"returnSlots": 0
},
"@setHiddenURL_2748": {
"entryPoint": 4022,
"id": 2748,
"parameterSlots": 1,
"returnSlots": 0
},
"@setMarketingFees_3277": {
"entryPoint": 2486,
"id": 3277,
"parameterSlots": 1,
"returnSlots": 0
},
"@setMarketingWalletAddress_3256": {
"entryPoint": 3116,
"id": 3256,
"parameterSlots": 1,
"returnSlots": 0
},
"@setMaxMintAmount_3232": {
"entryPoint": 1794,
"id": 3232,
"parameterSlots": 1,
"returnSlots": 0
},
"@setMinCharityFees_3323": {
"entryPoint": 4640,
"id": 3323,
"parameterSlots": 1,
"returnSlots": 0
},
"@supportsInterface_2537": {
"entryPoint": null,
"id": 2537,
"parameterSlots": 1,
"returnSlots": 1
},
"@supportsInterface_3374": {
"entryPoint": 1777,
"id": 3374,
"parameterSlots": 1,
"returnSlots": 1
},
"@supportsInterface_589": {
"entryPoint": 7831,
"id": 589,
"parameterSlots": 1,
"returnSlots": 1
},
"@supportsInterface_62": {
"entryPoint": 5158,
"id": 62,
"parameterSlots": 1,
"returnSlots": 1
},
"@symbol_2720": {
"entryPoint": null,
"id": 2720,
"parameterSlots": 0,
"returnSlots": 1
},
"@toHexString_2513": {
"entryPoint": 7911,
"id": 2513,
"parameterSlots": 2,
"returnSlots": 1
},
"@totalSupply_1795": {
"entryPoint": null,
"id": 1795,
"parameterSlots": 1,
"returnSlots": 1
},
"@unhideFm_3160": {
"entryPoint": 3787,
"id": 3160,
"parameterSlots": 1,
"returnSlots": 0
},
"@unhideFms_3190": {
"entryPoint": 2584,
"id": 3190,
"parameterSlots": 2,
"returnSlots": 0
},
"@unpause_2770": {
"entryPoint": 2997,
"id": 2770,
"parameterSlots": 0,
"returnSlots": 0
},
"@uri_3035": {
"entryPoint": 1911,
"id": 3035,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_decode_address": {
"entryPoint": 9666,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_decode_array_uint256_dyn": {
"entryPoint": 10136,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_available_length_bytes": {
"entryPoint": 10249,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_decode_bytes": {
"entryPoint": 10342,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_string_calldata": {
"entryPoint": 11034,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_decode_tuple_t_address": {
"entryPoint": 10587,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_addresst_address": {
"entryPoint": 11303,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr": {
"entryPoint": 10374,
"id": null,
"parameterSlots": 2,
"returnSlots": 5
},
"abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr": {
"entryPoint": 11345,
"id": null,
"parameterSlots": 2,
"returnSlots": 5
},
"abi_decode_tuple_t_addresst_bool": {
"entryPoint": 10974,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_decode_tuple_t_addresst_string_calldata_ptrt_uint256t_uint256t_uint256": {
"entryPoint": 11195,
"id": null,
"parameterSlots": 2,
"returnSlots": 6
},
"abi_decode_tuple_t_addresst_uint256": {
"entryPoint": 9694,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr": {
"entryPoint": 10614,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_decode_tuple_t_array$_t_uint256_$dyn_calldata_ptr": {
"entryPoint": 9919,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_decode_tuple_t_bytes32": {
"entryPoint": null,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_bytes32t_address": {
"entryPoint": 10543,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_decode_tuple_t_bytes4": {
"entryPoint": 9758,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_bytes4_fromMemory": {
"entryPoint": 12190,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_string_calldata_ptrt_uint256t_uint256t_uint256": {
"entryPoint": 11106,
"id": null,
"parameterSlots": 2,
"returnSlots": 5
},
"abi_decode_tuple_t_string_memory_ptr": {
"entryPoint": 10894,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_uint256": {
"entryPoint": 9894,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_array_uint256_dyn": {
"entryPoint": 10816,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_string": {
"entryPoint": 9831,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_packed_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_t_string_memory_ptr_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
"entryPoint": 11655,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__fromStack_reversed": {
"entryPoint": 12096,
"id": null,
"parameterSlots": 6,
"returnSlots": 1
},
"abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed": {
"entryPoint": 12445,
"id": null,
"parameterSlots": 6,
"returnSlots": 1
},
"abi_encode_tuple_t_address_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 7,
"returnSlots": 1
},
"abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed": {
"entryPoint": 10875,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed": {
"entryPoint": 11939,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 9875,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_00aa752fb1526000e5241602affc3d70ef506da48a27ea57140102b439e655ed__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 12373,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_0aab944e9bfebdf7d3170fc8055bb0e48f3c75af3fa1da0385c5eb5cf0ca9dd5__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_1a1910774d5d674fa1d70bd183b57a2e6aca23b471940eb7ed5a5631b823403f__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_1f4de6a436172e7f7b1540476031cb037fc18ede9cc346a56da1697cbd352aa9__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_394ac917f53b95ee25db2a5da5874c5b1f0af95a4fdf34992ff8b19c458f239a__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_419651fe1c401e4153b20e9b96350fc94f339f9e471181d9df947ef58725b32c__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 11613,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 11772,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_70a41c66829f5508884cda9ef3d2f72551b34f23e4035be97941681123d2d686__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 11841,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_8b7cc43a4c28bbb0626114fb0af8d35a42425294ee4e9cbba24bcdbfc925ab65__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_8e6f827f3090d5517c29a88eb0975f479e761f521dc9b8ec82496c8913643ef0__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_ad8e5d4b3b9467d759997fe6cc6b37e09e9a9a5883ed6b0e801720f3653f6f49__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 11445,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_b1477f47748ae8dbb5961dc8cdbb64ed84393a09222e6184413c607f82662112__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_b980d5d5dbc9150a1ffd9a811f6ca09e5bfe75769d104fa147d91f848d36e2cc__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_c340052cbb66403c576fcd9fee0ed29be6a40df0e37c6c861ee069dd74ef28c0__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_ce5a8e2ce9141c10493280226df71a5840530f55dae75b983ca87a88e799e150__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_ce8e87afbaedc350e403be878ca49a2a655a898d8e978961de696022327b6952__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_e155f5d69798c6205436a388a4f3a5fd42f54147b40f4d63a2c8071ff8a9fee5__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_ebf031a1b7ee1d0b3a7752b450a3268e8b6c334561b48c1c0ba0f5bac05749f2__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_f18b3768d605a51198d79e77c6892ee320e8af3541710613f31c8ca735436b6b__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"array_allocation_size_array_uint256_dyn": {
"entryPoint": 10101,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"checked_add_t_uint256": {
"entryPoint": 11915,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_div_t_uint256": {
"entryPoint": 12016,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_mul_t_uint256": {
"entryPoint": 11985,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_sub_t_uint256": {
"entryPoint": 12050,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"copy_memory_to_memory": {
"entryPoint": 9787,
"id": null,
"parameterSlots": 3,
"returnSlots": 0
},
"decrement_t_uint256": {
"entryPoint": 12073,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"extract_byte_array_length": {
"entryPoint": 11489,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"finalize_allocation": {
"entryPoint": 10057,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"increment_t_uint256": {
"entryPoint": 11586,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"panic_error_0x11": {
"entryPoint": 11564,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x32": {
"entryPoint": 11542,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x41": {
"entryPoint": 10035,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"return_data_selector": {
"entryPoint": 12219,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
},
"try_decode_error_message": {
"entryPoint": 12247,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
},
"validator_revert_bytes4": {
"entryPoint": 9736,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:29122:17",
"statements": [
{
"nodeType": "YulBlock",
"src": "6:3:17",
"statements": []
},
{
"body": {
"nodeType": "YulBlock",
"src": "63:124:17",
"statements": [
{
"nodeType": "YulAssignment",
"src": "73:29:17",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "95:6:17"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "82:12:17"
},
"nodeType": "YulFunctionCall",
"src": "82:20:17"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "73:5:17"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "165:16:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "174:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "177:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "167:6:17"
},
"nodeType": "YulFunctionCall",
"src": "167:12:17"
},
"nodeType": "YulExpressionStatement",
"src": "167:12:17"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "124:5:17"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "135:5:17"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "150:3:17",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "155:1:17",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "146:3:17"
},
"nodeType": "YulFunctionCall",
"src": "146:11:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "159:1:17",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "142:3:17"
},
"nodeType": "YulFunctionCall",
"src": "142:19:17"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "131:3:17"
},
"nodeType": "YulFunctionCall",
"src": "131:31:17"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "121:2:17"
},
"nodeType": "YulFunctionCall",
"src": "121:42:17"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "114:6:17"
},
"nodeType": "YulFunctionCall",
"src": "114:50:17"
},
"nodeType": "YulIf",
"src": "111:70:17"
}
]
},
"name": "abi_decode_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "42:6:17",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "53:5:17",
"type": ""
}
],
"src": "14:173:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "279:167:17",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "325:16:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "334:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "337:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "327:6:17"
},
"nodeType": "YulFunctionCall",
"src": "327:12:17"
},
"nodeType": "YulExpressionStatement",
"src": "327:12:17"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "300:7:17"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "309:9:17"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "296:3:17"
},
"nodeType": "YulFunctionCall",
"src": "296:23:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "321:2:17",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "292:3:17"
},
"nodeType": "YulFunctionCall",
"src": "292:32:17"
},
"nodeType": "YulIf",
"src": "289:52:17"
},
{
"nodeType": "YulAssignment",
"src": "350:39:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "379:9:17"
}
],
"functionName": {
"name": "abi_decode_address",
"nodeType": "YulIdentifier",
"src": "360:18:17"
},
"nodeType": "YulFunctionCall",
"src": "360:29:17"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "350:6:17"
}
]
},
{
"nodeType": "YulAssignment",
"src": "398:42:17",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "425:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "436:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "421:3:17"
},
"nodeType": "YulFunctionCall",
"src": "421:18:17"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "408:12:17"
},
"nodeType": "YulFunctionCall",
"src": "408:32:17"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "398:6:17"
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "237:9:17",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "248:7:17",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "260:6:17",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "268:6:17",
"type": ""
}
],
"src": "192:254:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "552:76:17",
"statements": [
{
"nodeType": "YulAssignment",
"src": "562:26:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "574:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "585:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "570:3:17"
},
"nodeType": "YulFunctionCall",
"src": "570:18:17"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "562:4:17"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "604:9:17"
},
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "615:6:17"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "597:6:17"
},
"nodeType": "YulFunctionCall",
"src": "597:25:17"
},
"nodeType": "YulExpressionStatement",
"src": "597:25:17"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "521:9:17",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "532:6:17",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "543:4:17",
"type": ""
}
],
"src": "451:177:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "677:87:17",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "742:16:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "751:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "754:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "744:6:17"
},
"nodeType": "YulFunctionCall",
"src": "744:12:17"
},
"nodeType": "YulExpressionStatement",
"src": "744:12:17"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "700:5:17"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "711:5:17"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "722:3:17",
"type": "",
"value": "224"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "727:10:17",
"type": "",
"value": "0xffffffff"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "718:3:17"
},
"nodeType": "YulFunctionCall",
"src": "718:20:17"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "707:3:17"
},
"nodeType": "YulFunctionCall",
"src": "707:32:17"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "697:2:17"
},
"nodeType": "YulFunctionCall",
"src": "697:43:17"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "690:6:17"
},
"nodeType": "YulFunctionCall",
"src": "690:51:17"
},
"nodeType": "YulIf",
"src": "687:71:17"
}
]
},
"name": "validator_revert_bytes4",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "666:5:17",
"type": ""
}
],
"src": "633:131:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "838:176:17",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "884:16:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "893:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "896:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "886:6:17"
},
"nodeType": "YulFunctionCall",
"src": "886:12:17"
},
"nodeType": "YulExpressionStatement",
"src": "886:12:17"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "859:7:17"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "868:9:17"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "855:3:17"
},
"nodeType": "YulFunctionCall",
"src": "855:23:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "880:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "851:3:17"
},
"nodeType": "YulFunctionCall",
"src": "851:32:17"
},
"nodeType": "YulIf",
"src": "848:52:17"
},
{
"nodeType": "YulVariableDeclaration",
"src": "909:36:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "935:9:17"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "922:12:17"
},
"nodeType": "YulFunctionCall",
"src": "922:23:17"
},
"variables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "913:5:17",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "978:5:17"
}
],
"functionName": {
"name": "validator_revert_bytes4",
"nodeType": "YulIdentifier",
"src": "954:23:17"
},
"nodeType": "YulFunctionCall",
"src": "954:30:17"
},
"nodeType": "YulExpressionStatement",
"src": "954:30:17"
},
{
"nodeType": "YulAssignment",
"src": "993:15:17",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "1003:5:17"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "993:6:17"
}
]
}
]
},
"name": "abi_decode_tuple_t_bytes4",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "804:9:17",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "815:7:17",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "827:6:17",
"type": ""
}
],
"src": "769:245:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1114:92:17",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1124:26:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1136:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1147:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1132:3:17"
},
"nodeType": "YulFunctionCall",
"src": "1132:18:17"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1124:4:17"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1166:9:17"
},
{
"arguments": [
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1191:6:17"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "1184:6:17"
},
"nodeType": "YulFunctionCall",
"src": "1184:14:17"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "1177:6:17"
},
"nodeType": "YulFunctionCall",
"src": "1177:22:17"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1159:6:17"
},
"nodeType": "YulFunctionCall",
"src": "1159:41:17"
},
"nodeType": "YulExpressionStatement",
"src": "1159:41:17"
}
]
},
"name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1083:9:17",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1094:6:17",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1105:4:17",
"type": ""
}
],
"src": "1019:187:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1264:205:17",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1274:10:17",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "1283:1:17",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "1278:1:17",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "1343:63:17",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "1368:3:17"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "1373:1:17"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1364:3:17"
},
"nodeType": "YulFunctionCall",
"src": "1364:11:17"
},
{
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "1387:3:17"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "1392:1:17"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1383:3:17"
},
"nodeType": "YulFunctionCall",
"src": "1383:11:17"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1377:5:17"
},
"nodeType": "YulFunctionCall",
"src": "1377:18:17"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1357:6:17"
},
"nodeType": "YulFunctionCall",
"src": "1357:39:17"
},
"nodeType": "YulExpressionStatement",
"src": "1357:39:17"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "1304:1:17"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1307:6:17"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "1301:2:17"
},
"nodeType": "YulFunctionCall",
"src": "1301:13:17"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "1315:19:17",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1317:15:17",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "1326:1:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1329:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1322:3:17"
},
"nodeType": "YulFunctionCall",
"src": "1322:10:17"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "1317:1:17"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "1297:3:17",
"statements": []
},
"src": "1293:113:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1432:31:17",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "1445:3:17"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1450:6:17"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1441:3:17"
},
"nodeType": "YulFunctionCall",
"src": "1441:16:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1459:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1434:6:17"
},
"nodeType": "YulFunctionCall",
"src": "1434:27:17"
},
"nodeType": "YulExpressionStatement",
"src": "1434:27:17"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "1421:1:17"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1424:6:17"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "1418:2:17"
},
"nodeType": "YulFunctionCall",
"src": "1418:13:17"
},
"nodeType": "YulIf",
"src": "1415:48:17"
}
]
},
"name": "copy_memory_to_memory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "1242:3:17",
"type": ""
},
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "1247:3:17",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "1252:6:17",
"type": ""
}
],
"src": "1211:258:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1524:208:17",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1534:26:17",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1554:5:17"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1548:5:17"
},
"nodeType": "YulFunctionCall",
"src": "1548:12:17"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "1538:6:17",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1576:3:17"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1581:6:17"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1569:6:17"
},
"nodeType": "YulFunctionCall",
"src": "1569:19:17"
},
"nodeType": "YulExpressionStatement",
"src": "1569:19:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1623:5:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1630:4:17",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1619:3:17"
},
"nodeType": "YulFunctionCall",
"src": "1619:16:17"
},
{
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1641:3:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1646:4:17",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1637:3:17"
},
"nodeType": "YulFunctionCall",
"src": "1637:14:17"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1653:6:17"
}
],
"functionName": {
"name": "copy_memory_to_memory",
"nodeType": "YulIdentifier",
"src": "1597:21:17"
},
"nodeType": "YulFunctionCall",
"src": "1597:63:17"
},
"nodeType": "YulExpressionStatement",
"src": "1597:63:17"
},
{
"nodeType": "YulAssignment",
"src": "1669:57:17",
"value": {
"arguments": [
{
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1684:3:17"
},
{
"arguments": [
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1697:6:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1705:2:17",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1693:3:17"
},
"nodeType": "YulFunctionCall",
"src": "1693:15:17"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1714:2:17",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "1710:3:17"
},
"nodeType": "YulFunctionCall",
"src": "1710:7:17"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "1689:3:17"
},
"nodeType": "YulFunctionCall",
"src": "1689:29:17"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1680:3:17"
},
"nodeType": "YulFunctionCall",
"src": "1680:39:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1721:4:17",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1676:3:17"
},
"nodeType": "YulFunctionCall",
"src": "1676:50:17"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "1669:3:17"
}
]
}
]
},
"name": "abi_encode_string",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1501:5:17",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "1508:3:17",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "1516:3:17",
"type": ""
}
],
"src": "1474:258:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1858:99:17",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1875:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1886:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1868:6:17"
},
"nodeType": "YulFunctionCall",
"src": "1868:21:17"
},
"nodeType": "YulExpressionStatement",
"src": "1868:21:17"
},
{
"nodeType": "YulAssignment",
"src": "1898:53:17",
"value": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1924:6:17"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1936:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1947:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1932:3:17"
},
"nodeType": "YulFunctionCall",
"src": "1932:18:17"
}
],
"functionName": {
"name": "abi_encode_string",
"nodeType": "YulIdentifier",
"src": "1906:17:17"
},
"nodeType": "YulFunctionCall",
"src": "1906:45:17"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1898:4:17"
}
]
}
]
},
"name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1827:9:17",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1838:6:17",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1849:4:17",
"type": ""
}
],
"src": "1737:220:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2032:110:17",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2078:16:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2087:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2090:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "2080:6:17"
},
"nodeType": "YulFunctionCall",
"src": "2080:12:17"
},
"nodeType": "YulExpressionStatement",
"src": "2080:12:17"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2053:7:17"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2062:9:17"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "2049:3:17"
},
"nodeType": "YulFunctionCall",
"src": "2049:23:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2074:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "2045:3:17"
},
"nodeType": "YulFunctionCall",
"src": "2045:32:17"
},
"nodeType": "YulIf",
"src": "2042:52:17"
},
{
"nodeType": "YulAssignment",
"src": "2103:33:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2126:9:17"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "2113:12:17"
},
"nodeType": "YulFunctionCall",
"src": "2113:23:17"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2103:6:17"
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1998:9:17",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "2009:7:17",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "2021:6:17",
"type": ""
}
],
"src": "1962:180:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2217:110:17",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2263:16:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2272:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2275:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "2265:6:17"
},
"nodeType": "YulFunctionCall",
"src": "2265:12:17"
},
"nodeType": "YulExpressionStatement",
"src": "2265:12:17"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2238:7:17"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2247:9:17"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "2234:3:17"
},
"nodeType": "YulFunctionCall",
"src": "2234:23:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2259:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "2230:3:17"
},
"nodeType": "YulFunctionCall",
"src": "2230:32:17"
},
"nodeType": "YulIf",
"src": "2227:52:17"
},
{
"nodeType": "YulAssignment",
"src": "2288:33:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2311:9:17"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "2298:12:17"
},
"nodeType": "YulFunctionCall",
"src": "2298:23:17"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2288:6:17"
}
]
}
]
},
"name": "abi_decode_tuple_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "2183:9:17",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "2194:7:17",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "2206:6:17",
"type": ""
}
],
"src": "2147:180:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2433:76:17",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2443:26:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2455:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2466:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2451:3:17"
},
"nodeType": "YulFunctionCall",
"src": "2451:18:17"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "2443:4:17"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2485:9:17"
},
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2496:6:17"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2478:6:17"
},
"nodeType": "YulFunctionCall",
"src": "2478:25:17"
},
"nodeType": "YulExpressionStatement",
"src": "2478:25:17"
}
]
},
"name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "2402:9:17",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "2413:6:17",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "2424:4:17",
"type": ""
}
],
"src": "2332:177:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2619:510:17",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2665:16:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2674:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2677:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "2667:6:17"
},
"nodeType": "YulFunctionCall",
"src": "2667:12:17"
},
"nodeType": "YulExpressionStatement",
"src": "2667:12:17"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2640:7:17"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2649:9:17"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "2636:3:17"
},
"nodeType": "YulFunctionCall",
"src": "2636:23:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2661:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "2632:3:17"
},
"nodeType": "YulFunctionCall",
"src": "2632:32:17"
},
"nodeType": "YulIf",
"src": "2629:52:17"
},
{
"nodeType": "YulVariableDeclaration",
"src": "2690:37:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2717:9:17"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "2704:12:17"
},
"nodeType": "YulFunctionCall",
"src": "2704:23:17"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2694:6:17",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "2736:28:17",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "2746:18:17",
"type": "",
"value": "0xffffffffffffffff"
},
"variables": [
{
"name": "_1",
"nodeType": "YulTypedName",
"src": "2740:2:17",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "2791:16:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2800:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2803:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "2793:6:17"
},
"nodeType": "YulFunctionCall",
"src": "2793:12:17"
},
"nodeType": "YulExpressionStatement",
"src": "2793:12:17"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2779:6:17"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "2787:2:17"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "2776:2:17"
},
"nodeType": "YulFunctionCall",
"src": "2776:14:17"
},
"nodeType": "YulIf",
"src": "2773:34:17"
},
{
"nodeType": "YulVariableDeclaration",
"src": "2816:32:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2830:9:17"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2841:6:17"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2826:3:17"
},
"nodeType": "YulFunctionCall",
"src": "2826:22:17"
},
"variables": [
{
"name": "_2",
"nodeType": "YulTypedName",
"src": "2820:2:17",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "2896:16:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2905:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2908:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "2898:6:17"
},
"nodeType": "YulFunctionCall",
"src": "2898:12:17"
},
"nodeType": "YulExpressionStatement",
"src": "2898:12:17"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "_2",
"nodeType": "YulIdentifier",
"src": "2875:2:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2879:4:17",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2871:3:17"
},
"nodeType": "YulFunctionCall",
"src": "2871:13:17"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2886:7:17"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "2867:3:17"
},
"nodeType": "YulFunctionCall",
"src": "2867:27:17"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "2860:6:17"
},
"nodeType": "YulFunctionCall",
"src": "2860:35:17"
},
"nodeType": "YulIf",
"src": "2857:55:17"
},
{
"nodeType": "YulVariableDeclaration",
"src": "2921:30:17",
"value": {
"arguments": [
{
"name": "_2",
"nodeType": "YulIdentifier",
"src": "2948:2:17"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "2935:12:17"
},
"nodeType": "YulFunctionCall",
"src": "2935:16:17"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "2925:6:17",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "2978:16:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2987:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2990:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "2980:6:17"
},
"nodeType": "YulFunctionCall",
"src": "2980:12:17"
},
"nodeType": "YulExpressionStatement",
"src": "2980:12:17"
}
]
},
"condition": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2966:6:17"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "2974:2:17"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "2963:2:17"
},
"nodeType": "YulFunctionCall",
"src": "2963:14:17"
},
"nodeType": "YulIf",
"src": "2960:34:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3052:16:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3061:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3064:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "3054:6:17"
},
"nodeType": "YulFunctionCall",
"src": "3054:12:17"
},
"nodeType": "YulExpressionStatement",
"src": "3054:12:17"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "_2",
"nodeType": "YulIdentifier",
"src": "3017:2:17"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3025:1:17",
"type": "",
"value": "5"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "3028:6:17"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "3021:3:17"
},
"nodeType": "YulFunctionCall",
"src": "3021:14:17"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3013:3:17"
},
"nodeType": "YulFunctionCall",
"src": "3013:23:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3038:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3009:3:17"
},
"nodeType": "YulFunctionCall",
"src": "3009:32:17"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "3043:7:17"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "3006:2:17"
},
"nodeType": "YulFunctionCall",
"src": "3006:45:17"
},
"nodeType": "YulIf",
"src": "3003:65:17"
},
{
"nodeType": "YulAssignment",
"src": "3077:21:17",
"value": {
"arguments": [
{
"name": "_2",
"nodeType": "YulIdentifier",
"src": "3091:2:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3095:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3087:3:17"
},
"nodeType": "YulFunctionCall",
"src": "3087:11:17"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "3077:6:17"
}
]
},
{
"nodeType": "YulAssignment",
"src": "3107:16:17",
"value": {
"name": "length",
"nodeType": "YulIdentifier",
"src": "3117:6:17"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "3107:6:17"
}
]
}
]
},
"name": "abi_decode_tuple_t_array$_t_uint256_$dyn_calldata_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "2577:9:17",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "2588:7:17",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "2600:6:17",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "2608:6:17",
"type": ""
}
],
"src": "2514:615:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3166:95:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3183:1:17",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3190:3:17",
"type": "",
"value": "224"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3195:10:17",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "3186:3:17"
},
"nodeType": "YulFunctionCall",
"src": "3186:20:17"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3176:6:17"
},
"nodeType": "YulFunctionCall",
"src": "3176:31:17"
},
"nodeType": "YulExpressionStatement",
"src": "3176:31:17"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3223:1:17",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3226:4:17",
"type": "",
"value": "0x41"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3216:6:17"
},
"nodeType": "YulFunctionCall",
"src": "3216:15:17"
},
"nodeType": "YulExpressionStatement",
"src": "3216:15:17"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3247:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3250:4:17",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "3240:6:17"
},
"nodeType": "YulFunctionCall",
"src": "3240:15:17"
},
"nodeType": "YulExpressionStatement",
"src": "3240:15:17"
}
]
},
"name": "panic_error_0x41",
"nodeType": "YulFunctionDefinition",
"src": "3134:127:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3313:202:17",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "3323:58:17",
"value": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "3345:6:17"
},
{
"arguments": [
{
"arguments": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "3361:4:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3367:2:17",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3357:3:17"
},
"nodeType": "YulFunctionCall",
"src": "3357:13:17"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3376:2:17",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "3372:3:17"
},
"nodeType": "YulFunctionCall",
"src": "3372:7:17"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "3353:3:17"
},
"nodeType": "YulFunctionCall",
"src": "3353:27:17"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3341:3:17"
},
"nodeType": "YulFunctionCall",
"src": "3341:40:17"
},
"variables": [
{
"name": "newFreePtr",
"nodeType": "YulTypedName",
"src": "3327:10:17",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "3456:22:17",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "3458:16:17"
},
"nodeType": "YulFunctionCall",
"src": "3458:18:17"
},
"nodeType": "YulExpressionStatement",
"src": "3458:18:17"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "3399:10:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3411:18:17",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "3396:2:17"
},
"nodeType": "YulFunctionCall",
"src": "3396:34:17"
},
{
"arguments": [
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "3435:10:17"
},
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "3447:6:17"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "3432:2:17"
},
"nodeType": "YulFunctionCall",
"src": "3432:22:17"
}
],
"functionName": {
"name": "or",
"nodeType": "YulIdentifier",
"src": "3393:2:17"
},
"nodeType": "YulFunctionCall",
"src": "3393:62:17"
},
"nodeType": "YulIf",
"src": "3390:88:17"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3494:2:17",
"type": "",
"value": "64"
},
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "3498:10:17"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3487:6:17"
},
"nodeType": "YulFunctionCall",
"src": "3487:22:17"
},
"nodeType": "YulExpressionStatement",
"src": "3487:22:17"
}
]
},
"name": "finalize_allocation",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "3295:6:17",
"type": ""
},
{
"name": "size",
"nodeType": "YulTypedName",
"src": "3303:4:17",
"type": ""
}
],
"src": "3266:249:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3589:114:17",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "3633:22:17",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "3635:16:17"
},
"nodeType": "YulFunctionCall",
"src": "3635:18:17"
},
"nodeType": "YulExpressionStatement",
"src": "3635:18:17"
}
]
},
"condition": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "3605:6:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3613:18:17",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "3602:2:17"
},
"nodeType": "YulFunctionCall",
"src": "3602:30:17"
},
"nodeType": "YulIf",
"src": "3599:56:17"
},
{
"nodeType": "YulAssignment",
"src": "3664:33:17",
"value": {
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3680:1:17",
"type": "",
"value": "5"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "3683:6:17"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "3676:3:17"
},
"nodeType": "YulFunctionCall",
"src": "3676:14:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3692:4:17",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3672:3:17"
},
"nodeType": "YulFunctionCall",
"src": "3672:25:17"
},
"variableNames": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "3664:4:17"
}
]
}
]
},
"name": "array_allocation_size_array_uint256_dyn",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "3569:6:17",
"type": ""
}
],
"returnVariables": [
{
"name": "size",
"nodeType": "YulTypedName",
"src": "3580:4:17",
"type": ""
}
],
"src": "3520:183:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3772:660:17",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "3821:16:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3830:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3833:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "3823:6:17"
},
"nodeType": "YulFunctionCall",
"src": "3823:12:17"
},
"nodeType": "YulExpressionStatement",
"src": "3823:12:17"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "3800:6:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3808:4:17",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3796:3:17"
},
"nodeType": "YulFunctionCall",
"src": "3796:17:17"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "3815:3:17"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "3792:3:17"
},
"nodeType": "YulFunctionCall",
"src": "3792:27:17"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "3785:6:17"
},
"nodeType": "YulFunctionCall",
"src": "3785:35:17"
},
"nodeType": "YulIf",
"src": "3782:55:17"
},
{
"nodeType": "YulVariableDeclaration",
"src": "3846:30:17",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "3869:6:17"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "3856:12:17"
},
"nodeType": "YulFunctionCall",
"src": "3856:20:17"
},
"variables": [
{
"name": "_1",
"nodeType": "YulTypedName",
"src": "3850:2:17",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "3885:14:17",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "3895:4:17",
"type": "",
"value": "0x20"
},
"variables": [
{
"name": "_2",
"nodeType": "YulTypedName",
"src": "3889:2:17",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "3908:53:17",
"value": {
"arguments": [
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "3958:2:17"
}
],
"functionName": {
"name": "array_allocation_size_array_uint256_dyn",
"nodeType": "YulIdentifier",
"src": "3918:39:17"
},
"nodeType": "YulFunctionCall",
"src": "3918:43:17"
},
"variables": [
{
"name": "_3",
"nodeType": "YulTypedName",
"src": "3912:2:17",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "3970:23:17",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3990:2:17",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "3984:5:17"
},
"nodeType": "YulFunctionCall",
"src": "3984:9:17"
},
"variables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "3974:6:17",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "4022:6:17"
},
{
"name": "_3",
"nodeType": "YulIdentifier",
"src": "4030:2:17"
}
],
"functionName": {
"name": "finalize_allocation",
"nodeType": "YulIdentifier",
"src": "4002:19:17"
},
"nodeType": "YulFunctionCall",
"src": "4002:31:17"
},
"nodeType": "YulExpressionStatement",
"src": "4002:31:17"
},
{
"nodeType": "YulVariableDeclaration",
"src": "4042:17:17",
"value": {
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "4053:6:17"
},
"variables": [
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "4046:3:17",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "4075:6:17"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "4083:2:17"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4068:6:17"
},
"nodeType": "YulFunctionCall",
"src": "4068:18:17"
},
"nodeType": "YulExpressionStatement",
"src": "4068:18:17"
},
{
"nodeType": "YulAssignment",
"src": "4095:22:17",
"value": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "4106:6:17"
},
{
"name": "_2",
"nodeType": "YulIdentifier",
"src": "4114:2:17"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4102:3:17"
},
"nodeType": "YulFunctionCall",
"src": "4102:15:17"
},
"variableNames": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "4095:3:17"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "4126:46:17",
"value": {
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "4148:6:17"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4160:1:17",
"type": "",
"value": "5"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "4163:2:17"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "4156:3:17"
},
"nodeType": "YulFunctionCall",
"src": "4156:10:17"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4144:3:17"
},
"nodeType": "YulFunctionCall",
"src": "4144:23:17"
},
{
"name": "_2",
"nodeType": "YulIdentifier",
"src": "4169:2:17"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4140:3:17"
},
"nodeType": "YulFunctionCall",
"src": "4140:32:17"
},
"variables": [
{
"name": "srcEnd",
"nodeType": "YulTypedName",
"src": "4130:6:17",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "4200:16:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4209:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4212:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "4202:6:17"
},
"nodeType": "YulFunctionCall",
"src": "4202:12:17"
},
"nodeType": "YulExpressionStatement",
"src": "4202:12:17"
}
]
},
"condition": {
"arguments": [
{
"name": "srcEnd",
"nodeType": "YulIdentifier",
"src": "4187:6:17"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "4195:3:17"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "4184:2:17"
},
"nodeType": "YulFunctionCall",
"src": "4184:15:17"
},
"nodeType": "YulIf",
"src": "4181:35:17"
},
{
"nodeType": "YulVariableDeclaration",
"src": "4225:26:17",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "4240:6:17"
},
{
"name": "_2",
"nodeType": "YulIdentifier",
"src": "4248:2:17"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4236:3:17"
},
"nodeType": "YulFunctionCall",
"src": "4236:15:17"
},
"variables": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "4229:3:17",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "4316:86:17",
"statements": [
{
"expression": {
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "4337:3:17"
},
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "4355:3:17"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "4342:12:17"
},
"nodeType": "YulFunctionCall",
"src": "4342:17:17"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4330:6:17"
},
"nodeType": "YulFunctionCall",
"src": "4330:30:17"
},
"nodeType": "YulExpressionStatement",
"src": "4330:30:17"
},
{
"nodeType": "YulAssignment",
"src": "4373:19:17",
"value": {
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "4384:3:17"
},
{
"name": "_2",
"nodeType": "YulIdentifier",
"src": "4389:2:17"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4380:3:17"
},
"nodeType": "YulFunctionCall",
"src": "4380:12:17"
},
"variableNames": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "4373:3:17"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "4271:3:17"
},
{
"name": "srcEnd",
"nodeType": "YulIdentifier",
"src": "4276:6:17"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "4268:2:17"
},
"nodeType": "YulFunctionCall",
"src": "4268:15:17"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "4284:23:17",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4286:19:17",
"value": {
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "4297:3:17"
},
{
"name": "_2",
"nodeType": "YulIdentifier",
"src": "4302:2:17"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4293:3:17"
},
"nodeType": "YulFunctionCall",
"src": "4293:12:17"
},
"variableNames": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "4286:3:17"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "4264:3:17",
"statements": []
},
"src": "4260:142:17"
},
{
"nodeType": "YulAssignment",
"src": "4411:15:17",
"value": {
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "4420:6:17"
},
"variableNames": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "4411:5:17"
}
]
}
]
},
"name": "abi_decode_array_uint256_dyn",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "3746:6:17",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "3754:3:17",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nodeType": "YulTypedName",
"src": "3762:5:17",
"type": ""
}
],
"src": "3708:724:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4511:394:17",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "4555:22:17",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "4557:16:17"
},
"nodeType": "YulFunctionCall",
"src": "4557:18:17"
},
"nodeType": "YulExpressionStatement",
"src": "4557:18:17"
}
]
},
"condition": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4527:6:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4535:18:17",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "4524:2:17"
},
"nodeType": "YulFunctionCall",
"src": "4524:30:17"
},
"nodeType": "YulIf",
"src": "4521:56:17"
},
{
"nodeType": "YulVariableDeclaration",
"src": "4586:23:17",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4606:2:17",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "4600:5:17"
},
"nodeType": "YulFunctionCall",
"src": "4600:9:17"
},
"variables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "4590:6:17",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "4638:6:17"
},
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4658:6:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4666:2:17",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4654:3:17"
},
"nodeType": "YulFunctionCall",
"src": "4654:15:17"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4675:2:17",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "4671:3:17"
},
"nodeType": "YulFunctionCall",
"src": "4671:7:17"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "4650:3:17"
},
"nodeType": "YulFunctionCall",
"src": "4650:29:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4681:4:17",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4646:3:17"
},
"nodeType": "YulFunctionCall",
"src": "4646:40:17"
}
],
"functionName": {
"name": "finalize_allocation",
"nodeType": "YulIdentifier",
"src": "4618:19:17"
},
"nodeType": "YulFunctionCall",
"src": "4618:69:17"
},
"nodeType": "YulExpressionStatement",
"src": "4618:69:17"
},
{
"nodeType": "YulAssignment",
"src": "4696:15:17",
"value": {
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "4705:6:17"
},
"variableNames": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "4696:5:17"
}
]
},
{
"expression": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "4727:6:17"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4735:6:17"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4720:6:17"
},
"nodeType": "YulFunctionCall",
"src": "4720:22:17"
},
"nodeType": "YulExpressionStatement",
"src": "4720:22:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4780:16:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4789:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4792:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "4782:6:17"
},
"nodeType": "YulFunctionCall",
"src": "4782:12:17"
},
"nodeType": "YulExpressionStatement",
"src": "4782:12:17"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "4761:3:17"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4766:6:17"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4757:3:17"
},
"nodeType": "YulFunctionCall",
"src": "4757:16:17"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "4775:3:17"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "4754:2:17"
},
"nodeType": "YulFunctionCall",
"src": "4754:25:17"
},
"nodeType": "YulIf",
"src": "4751:45:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "4822:6:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4830:4:17",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4818:3:17"
},
"nodeType": "YulFunctionCall",
"src": "4818:17:17"
},
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "4837:3:17"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4842:6:17"
}
],
"functionName": {
"name": "calldatacopy",
"nodeType": "YulIdentifier",
"src": "4805:12:17"
},
"nodeType": "YulFunctionCall",
"src": "4805:44:17"
},
"nodeType": "YulExpressionStatement",
"src": "4805:44:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "4873:6:17"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4881:6:17"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4869:3:17"
},
"nodeType": "YulFunctionCall",
"src": "4869:19:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4890:4:17",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4865:3:17"
},
"nodeType": "YulFunctionCall",
"src": "4865:30:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4897:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4858:6:17"
},
"nodeType": "YulFunctionCall",
"src": "4858:41:17"
},
"nodeType": "YulExpressionStatement",
"src": "4858:41:17"
}
]
},
"name": "abi_decode_available_length_bytes",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "4480:3:17",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "4485:6:17",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "4493:3:17",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nodeType": "YulTypedName",
"src": "4501:5:17",
"type": ""
}
],
"src": "4437:468:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4962:168:17",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "5011:16:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5020:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5023:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "5013:6:17"
},
"nodeType": "YulFunctionCall",
"src": "5013:12:17"
},
"nodeType": "YulExpressionStatement",
"src": "5013:12:17"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "4990:6:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4998:4:17",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4986:3:17"
},
"nodeType": "YulFunctionCall",
"src": "4986:17:17"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "5005:3:17"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "4982:3:17"
},
"nodeType": "YulFunctionCall",
"src": "4982:27:17"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "4975:6:17"
},
"nodeType": "YulFunctionCall",
"src": "4975:35:17"
},
"nodeType": "YulIf",
"src": "4972:55:17"
},
{
"nodeType": "YulAssignment",
"src": "5036:88:17",
"value": {
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "5083:6:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5091:4:17",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5079:3:17"
},
"nodeType": "YulFunctionCall",
"src": "5079:17:17"
},
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "5111:6:17"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "5098:12:17"
},
"nodeType": "YulFunctionCall",
"src": "5098:20:17"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "5120:3:17"
}
],
"functionName": {
"name": "abi_decode_available_length_bytes",
"nodeType": "YulIdentifier",
"src": "5045:33:17"
},
"nodeType": "YulFunctionCall",
"src": "5045:79:17"
},
"variableNames": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "5036:5:17"
}
]
}
]
},
"name": "abi_decode_bytes",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "4936:6:17",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "4944:3:17",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nodeType": "YulTypedName",
"src": "4952:5:17",
"type": ""
}
],
"src": "4910:220:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5332:746:17",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "5379:16:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5388:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5391:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "5381:6:17"
},
"nodeType": "YulFunctionCall",
"src": "5381:12:17"
},
"nodeType": "YulExpressionStatement",
"src": "5381:12:17"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "5353:7:17"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5362:9:17"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "5349:3:17"
},
"nodeType": "YulFunctionCall",
"src": "5349:23:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5374:3:17",
"type": "",
"value": "160"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "5345:3:17"
},
"nodeType": "YulFunctionCall",
"src": "5345:33:17"
},
"nodeType": "YulIf",
"src": "5342:53:17"
},
{
"nodeType": "YulAssignment",
"src": "5404:39:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5433:9:17"
}
],
"functionName": {
"name": "abi_decode_address",
"nodeType": "YulIdentifier",
"src": "5414:18:17"
},
"nodeType": "YulFunctionCall",
"src": "5414:29:17"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "5404:6:17"
}
]
},
{
"nodeType": "YulAssignment",
"src": "5452:48:17",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5485:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5496:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5481:3:17"
},
"nodeType": "YulFunctionCall",
"src": "5481:18:17"
}
],
"functionName": {
"name": "abi_decode_address",
"nodeType": "YulIdentifier",
"src": "5462:18:17"
},
"nodeType": "YulFunctionCall",
"src": "5462:38:17"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "5452:6:17"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "5509:46:17",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5540:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5551:2:17",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5536:3:17"
},
"nodeType": "YulFunctionCall",
"src": "5536:18:17"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "5523:12:17"
},
"nodeType": "YulFunctionCall",
"src": "5523:32:17"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "5513:6:17",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "5564:28:17",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "5574:18:17",
"type": "",
"value": "0xffffffffffffffff"
},
"variables": [
{
"name": "_1",
"nodeType": "YulTypedName",
"src": "5568:2:17",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "5619:16:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5628:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5631:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "5621:6:17"
},
"nodeType": "YulFunctionCall",
"src": "5621:12:17"
},
"nodeType": "YulExpressionStatement",
"src": "5621:12:17"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "5607:6:17"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "5615:2:17"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "5604:2:17"
},
"nodeType": "YulFunctionCall",
"src": "5604:14:17"
},
"nodeType": "YulIf",
"src": "5601:34:17"
},
{
"nodeType": "YulAssignment",
"src": "5644:71:17",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5687:9:17"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "5698:6:17"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5683:3:17"
},
"nodeType": "YulFunctionCall",
"src": "5683:22:17"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "5707:7:17"
}
],
"functionName": {
"name": "abi_decode_array_uint256_dyn",
"nodeType": "YulIdentifier",
"src": "5654:28:17"
},
"nodeType": "YulFunctionCall",
"src": "5654:61:17"
},
"variableNames": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "5644:6:17"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "5724:48:17",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5757:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5768:2:17",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5753:3:17"
},
"nodeType": "YulFunctionCall",
"src": "5753:18:17"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "5740:12:17"
},
"nodeType": "YulFunctionCall",
"src": "5740:32:17"
},
"variables": [
{
"name": "offset_1",
"nodeType": "YulTypedName",
"src": "5728:8:17",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "5801:16:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5810:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5813:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "5803:6:17"
},
"nodeType": "YulFunctionCall",
"src": "5803:12:17"
},
"nodeType": "YulExpressionStatement",
"src": "5803:12:17"
}
]
},
"condition": {
"arguments": [
{
"name": "offset_1",
"nodeType": "YulIdentifier",
"src": "5787:8:17"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "5797:2:17"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "5784:2:17"
},
"nodeType": "YulFunctionCall",
"src": "5784:16:17"
},
"nodeType": "YulIf",
"src": "5781:36:17"
},
{
"nodeType": "YulAssignment",
"src": "5826:73:17",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5869:9:17"
},
{
"name": "offset_1",
"nodeType": "YulIdentifier",
"src": "5880:8:17"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5865:3:17"
},
"nodeType": "YulFunctionCall",
"src": "5865:24:17"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "5891:7:17"
}
],
"functionName": {
"name": "abi_decode_array_uint256_dyn",
"nodeType": "YulIdentifier",
"src": "5836:28:17"
},
"nodeType": "YulFunctionCall",
"src": "5836:63:17"
},
"variableNames": [
{
"name": "value3",
"nodeType": "YulIdentifier",
"src": "5826:6:17"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "5908:49:17",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5941:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5952:3:17",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5937:3:17"
},
"nodeType": "YulFunctionCall",
"src": "5937:19:17"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "5924:12:17"
},
"nodeType": "YulFunctionCall",
"src": "5924:33:17"
},
"variables": [
{
"name": "offset_2",
"nodeType": "YulTypedName",
"src": "5912:8:17",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "5986:16:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5995:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5998:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "5988:6:17"
},
"nodeType": "YulFunctionCall",
"src": "5988:12:17"
},
"nodeType": "YulExpressionStatement",
"src": "5988:12:17"
}
]
},
"condition": {
"arguments": [
{
"name": "offset_2",
"nodeType": "YulIdentifier",
"src": "5972:8:17"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "5982:2:17"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "5969:2:17"
},
"nodeType": "YulFunctionCall",
"src": "5969:16:17"
},
"nodeType": "YulIf",
"src": "5966:36:17"
},
{
"nodeType": "YulAssignment",
"src": "6011:61:17",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6042:9:17"
},
{
"name": "offset_2",
"nodeType": "YulIdentifier",
"src": "6053:8:17"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6038:3:17"
},
"nodeType": "YulFunctionCall",
"src": "6038:24:17"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "6064:7:17"
}
],
"functionName": {
"name": "abi_decode_bytes",
"nodeType": "YulIdentifier",
"src": "6021:16:17"
},
"nodeType": "YulFunctionCall",
"src": "6021:51:17"
},
"variableNames": [
{
"name": "value4",
"nodeType": "YulIdentifier",
"src": "6011:6:17"
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "5266:9:17",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "5277:7:17",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "5289:6:17",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "5297:6:17",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "5305:6:17",
"type": ""
},
{
"name": "value3",
"nodeType": "YulTypedName",
"src": "5313:6:17",
"type": ""
},
{
"name": "value4",
"nodeType": "YulTypedName",
"src": "5321:6:17",
"type": ""
}
],
"src": "5135:943:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6170:167:17",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "6216:16:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6225:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6228:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "6218:6:17"
},
"nodeType": "YulFunctionCall",
"src": "6218:12:17"
},
"nodeType": "YulExpressionStatement",
"src": "6218:12:17"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "6191:7:17"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6200:9:17"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "6187:3:17"
},
"nodeType": "YulFunctionCall",
"src": "6187:23:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6212:2:17",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "6183:3:17"
},
"nodeType": "YulFunctionCall",
"src": "6183:32:17"
},
"nodeType": "YulIf",
"src": "6180:52:17"
},
{
"nodeType": "YulAssignment",
"src": "6241:33:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6264:9:17"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "6251:12:17"
},
"nodeType": "YulFunctionCall",
"src": "6251:23:17"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "6241:6:17"
}
]
},
{
"nodeType": "YulAssignment",
"src": "6283:48:17",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6316:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6327:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6312:3:17"
},
"nodeType": "YulFunctionCall",
"src": "6312:18:17"
}
],
"functionName": {
"name": "abi_decode_address",
"nodeType": "YulIdentifier",
"src": "6293:18:17"
},
"nodeType": "YulFunctionCall",
"src": "6293:38:17"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "6283:6:17"
}
]
}
]
},
"name": "abi_decode_tuple_t_bytes32t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "6128:9:17",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "6139:7:17",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "6151:6:17",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "6159:6:17",
"type": ""
}
],
"src": "6083:254:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6412:116:17",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "6458:16:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6467:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6470:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "6460:6:17"
},
"nodeType": "YulFunctionCall",
"src": "6460:12:17"
},
"nodeType": "YulExpressionStatement",
"src": "6460:12:17"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "6433:7:17"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6442:9:17"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "6429:3:17"
},
"nodeType": "YulFunctionCall",
"src": "6429:23:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6454:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "6425:3:17"
},
"nodeType": "YulFunctionCall",
"src": "6425:32:17"
},
"nodeType": "YulIf",
"src": "6422:52:17"
},
{
"nodeType": "YulAssignment",
"src": "6483:39:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6512:9:17"
}
],
"functionName": {
"name": "abi_decode_address",
"nodeType": "YulIdentifier",
"src": "6493:18:17"
},
"nodeType": "YulFunctionCall",
"src": "6493:29:17"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "6483:6:17"
}
]
}
]
},
"name": "abi_decode_tuple_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "6378:9:17",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "6389:7:17",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "6401:6:17",
"type": ""
}
],
"src": "6342:186:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6670:1071:17",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "6716:16:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6725:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6728:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "6718:6:17"
},
"nodeType": "YulFunctionCall",
"src": "6718:12:17"
},
"nodeType": "YulExpressionStatement",
"src": "6718:12:17"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "6691:7:17"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6700:9:17"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "6687:3:17"
},
"nodeType": "YulFunctionCall",
"src": "6687:23:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6712:2:17",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "6683:3:17"
},
"nodeType": "YulFunctionCall",
"src": "6683:32:17"
},
"nodeType": "YulIf",
"src": "6680:52:17"
},
{
"nodeType": "YulVariableDeclaration",
"src": "6741:37:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6768:9:17"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "6755:12:17"
},
"nodeType": "YulFunctionCall",
"src": "6755:23:17"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "6745:6:17",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "6787:28:17",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "6797:18:17",
"type": "",
"value": "0xffffffffffffffff"
},
"variables": [
{
"name": "_1",
"nodeType": "YulTypedName",
"src": "6791:2:17",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "6842:16:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6851:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6854:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "6844:6:17"
},
"nodeType": "YulFunctionCall",
"src": "6844:12:17"
},
"nodeType": "YulExpressionStatement",
"src": "6844:12:17"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "6830:6:17"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "6838:2:17"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "6827:2:17"
},
"nodeType": "YulFunctionCall",
"src": "6827:14:17"
},
"nodeType": "YulIf",
"src": "6824:34:17"
},
{
"nodeType": "YulVariableDeclaration",
"src": "6867:32:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6881:9:17"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "6892:6:17"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6877:3:17"
},
"nodeType": "YulFunctionCall",
"src": "6877:22:17"
},
"variables": [
{
"name": "_2",
"nodeType": "YulTypedName",
"src": "6871:2:17",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "6947:16:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6956:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6959:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "6949:6:17"
},
"nodeType": "YulFunctionCall",
"src": "6949:12:17"
},
"nodeType": "YulExpressionStatement",
"src": "6949:12:17"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "_2",
"nodeType": "YulIdentifier",
"src": "6926:2:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6930:4:17",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6922:3:17"
},
"nodeType": "YulFunctionCall",
"src": "6922:13:17"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "6937:7:17"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "6918:3:17"
},
"nodeType": "YulFunctionCall",
"src": "6918:27:17"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "6911:6:17"
},
"nodeType": "YulFunctionCall",
"src": "6911:35:17"
},
"nodeType": "YulIf",
"src": "6908:55:17"
},
{
"nodeType": "YulVariableDeclaration",
"src": "6972:26:17",
"value": {
"arguments": [
{
"name": "_2",
"nodeType": "YulIdentifier",
"src": "6995:2:17"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "6982:12:17"
},
"nodeType": "YulFunctionCall",
"src": "6982:16:17"
},
"variables": [
{
"name": "_3",
"nodeType": "YulTypedName",
"src": "6976:2:17",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "7007:14:17",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "7017:4:17",
"type": "",
"value": "0x20"
},
"variables": [
{
"name": "_4",
"nodeType": "YulTypedName",
"src": "7011:2:17",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "7030:53:17",
"value": {
"arguments": [
{
"name": "_3",
"nodeType": "YulIdentifier",
"src": "7080:2:17"
}
],
"functionName": {
"name": "array_allocation_size_array_uint256_dyn",
"nodeType": "YulIdentifier",
"src": "7040:39:17"
},
"nodeType": "YulFunctionCall",
"src": "7040:43:17"
},
"variables": [
{
"name": "_5",
"nodeType": "YulTypedName",
"src": "7034:2:17",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "7092:23:17",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7112:2:17",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "7106:5:17"
},
"nodeType": "YulFunctionCall",
"src": "7106:9:17"
},
"variables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "7096:6:17",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "7144:6:17"
},
{
"name": "_5",
"nodeType": "YulIdentifier",
"src": "7152:2:17"
}
],
"functionName": {
"name": "finalize_allocation",
"nodeType": "YulIdentifier",
"src": "7124:19:17"
},
"nodeType": "YulFunctionCall",
"src": "7124:31:17"
},
"nodeType": "YulExpressionStatement",
"src": "7124:31:17"
},
{
"nodeType": "YulVariableDeclaration",
"src": "7164:17:17",
"value": {
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "7175:6:17"
},
"variables": [
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "7168:3:17",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "7197:6:17"
},
{
"name": "_3",
"nodeType": "YulIdentifier",
"src": "7205:2:17"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7190:6:17"
},
"nodeType": "YulFunctionCall",
"src": "7190:18:17"
},
"nodeType": "YulExpressionStatement",
"src": "7190:18:17"
},
{
"nodeType": "YulAssignment",
"src": "7217:22:17",
"value": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "7228:6:17"
},
{
"name": "_4",
"nodeType": "YulIdentifier",
"src": "7236:2:17"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7224:3:17"
},
"nodeType": "YulFunctionCall",
"src": "7224:15:17"
},
"variableNames": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "7217:3:17"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "7248:42:17",
"value": {
"arguments": [
{
"arguments": [
{
"name": "_2",
"nodeType": "YulIdentifier",
"src": "7270:2:17"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7278:1:17",
"type": "",
"value": "5"
},
{
"name": "_3",
"nodeType": "YulIdentifier",
"src": "7281:2:17"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "7274:3:17"
},
"nodeType": "YulFunctionCall",
"src": "7274:10:17"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7266:3:17"
},
"nodeType": "YulFunctionCall",
"src": "7266:19:17"
},
{
"name": "_4",
"nodeType": "YulIdentifier",
"src": "7287:2:17"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7262:3:17"
},
"nodeType": "YulFunctionCall",
"src": "7262:28:17"
},
"variables": [
{
"name": "srcEnd",
"nodeType": "YulTypedName",
"src": "7252:6:17",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "7322:16:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7331:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7334:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "7324:6:17"
},
"nodeType": "YulFunctionCall",
"src": "7324:12:17"
},
"nodeType": "YulExpressionStatement",
"src": "7324:12:17"
}
]
},
"condition": {
"arguments": [
{
"name": "srcEnd",
"nodeType": "YulIdentifier",
"src": "7305:6:17"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "7313:7:17"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "7302:2:17"
},
"nodeType": "YulFunctionCall",
"src": "7302:19:17"
},
"nodeType": "YulIf",
"src": "7299:39:17"
},
{
"nodeType": "YulVariableDeclaration",
"src": "7347:22:17",
"value": {
"arguments": [
{
"name": "_2",
"nodeType": "YulIdentifier",
"src": "7362:2:17"
},
{
"name": "_4",
"nodeType": "YulIdentifier",
"src": "7366:2:17"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7358:3:17"
},
"nodeType": "YulFunctionCall",
"src": "7358:11:17"
},
"variables": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "7351:3:17",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "7434:92:17",
"statements": [
{
"expression": {
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "7455:3:17"
},
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "7479:3:17"
}
],
"functionName": {
"name": "abi_decode_address",
"nodeType": "YulIdentifier",
"src": "7460:18:17"
},
"nodeType": "YulFunctionCall",
"src": "7460:23:17"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7448:6:17"
},
"nodeType": "YulFunctionCall",
"src": "7448:36:17"
},
"nodeType": "YulExpressionStatement",
"src": "7448:36:17"
},
{
"nodeType": "YulAssignment",
"src": "7497:19:17",
"value": {
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "7508:3:17"
},
{
"name": "_4",
"nodeType": "YulIdentifier",
"src": "7513:2:17"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7504:3:17"
},
"nodeType": "YulFunctionCall",
"src": "7504:12:17"
},
"variableNames": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "7497:3:17"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "7389:3:17"
},
{
"name": "srcEnd",
"nodeType": "YulIdentifier",
"src": "7394:6:17"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "7386:2:17"
},
"nodeType": "YulFunctionCall",
"src": "7386:15:17"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "7402:23:17",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7404:19:17",
"value": {
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "7415:3:17"
},
{
"name": "_4",
"nodeType": "YulIdentifier",
"src": "7420:2:17"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7411:3:17"
},
"nodeType": "YulFunctionCall",
"src": "7411:12:17"
},
"variableNames": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "7404:3:17"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "7382:3:17",
"statements": []
},
"src": "7378:148:17"
},
{
"nodeType": "YulAssignment",
"src": "7535:16:17",
"value": {
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "7545:6:17"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "7535:6:17"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "7560:48:17",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7593:9:17"
},
{
"name": "_4",
"nodeType": "YulIdentifier",
"src": "7604:2:17"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7589:3:17"
},
"nodeType": "YulFunctionCall",
"src": "7589:18:17"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "7576:12:17"
},
"nodeType": "YulFunctionCall",
"src": "7576:32:17"
},
"variables": [
{
"name": "offset_1",
"nodeType": "YulTypedName",
"src": "7564:8:17",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "7637:16:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7646:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7649:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "7639:6:17"
},
"nodeType": "YulFunctionCall",
"src": "7639:12:17"
},
"nodeType": "YulExpressionStatement",
"src": "7639:12:17"
}
]
},
"condition": {
"arguments": [
{
"name": "offset_1",
"nodeType": "YulIdentifier",
"src": "7623:8:17"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "7633:2:17"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "7620:2:17"
},
"nodeType": "YulFunctionCall",
"src": "7620:16:17"
},
"nodeType": "YulIf",
"src": "7617:36:17"
},
{
"nodeType": "YulAssignment",
"src": "7662:73:17",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7705:9:17"
},
{
"name": "offset_1",
"nodeType": "YulIdentifier",
"src": "7716:8:17"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7701:3:17"
},
"nodeType": "YulFunctionCall",
"src": "7701:24:17"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "7727:7:17"
}
],
"functionName": {
"name": "abi_decode_array_uint256_dyn",
"nodeType": "YulIdentifier",
"src": "7672:28:17"
},
"nodeType": "YulFunctionCall",
"src": "7672:63:17"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "7662:6:17"
}
]
}
]
},
"name": "abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "6628:9:17",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "6639:7:17",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "6651:6:17",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "6659:6:17",
"type": ""
}
],
"src": "6533:1208:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7807:374:17",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "7817:26:17",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "7837:5:17"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "7831:5:17"
},
"nodeType": "YulFunctionCall",
"src": "7831:12:17"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "7821:6:17",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7859:3:17"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "7864:6:17"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7852:6:17"
},
"nodeType": "YulFunctionCall",
"src": "7852:19:17"
},
"nodeType": "YulExpressionStatement",
"src": "7852:19:17"
},
{
"nodeType": "YulVariableDeclaration",
"src": "7880:14:17",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "7890:4:17",
"type": "",
"value": "0x20"
},
"variables": [
{
"name": "_1",
"nodeType": "YulTypedName",
"src": "7884:2:17",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "7903:19:17",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7914:3:17"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "7919:2:17"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7910:3:17"
},
"nodeType": "YulFunctionCall",
"src": "7910:12:17"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7903:3:17"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "7931:28:17",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "7949:5:17"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "7956:2:17"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7945:3:17"
},
"nodeType": "YulFunctionCall",
"src": "7945:14:17"
},
"variables": [
{
"name": "srcPtr",
"nodeType": "YulTypedName",
"src": "7935:6:17",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "7968:10:17",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "7977:1:17",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "7972:1:17",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "8036:120:17",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8057:3:17"
},
{
"arguments": [
{
"name": "srcPtr",
"nodeType": "YulIdentifier",
"src": "8068:6:17"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "8062:5:17"
},
"nodeType": "YulFunctionCall",
"src": "8062:13:17"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8050:6:17"
},
"nodeType": "YulFunctionCall",
"src": "8050:26:17"
},
"nodeType": "YulExpressionStatement",
"src": "8050:26:17"
},
{
"nodeType": "YulAssignment",
"src": "8089:19:17",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8100:3:17"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "8105:2:17"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8096:3:17"
},
"nodeType": "YulFunctionCall",
"src": "8096:12:17"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8089:3:17"
}
]
},
{
"nodeType": "YulAssignment",
"src": "8121:25:17",
"value": {
"arguments": [
{
"name": "srcPtr",
"nodeType": "YulIdentifier",
"src": "8135:6:17"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "8143:2:17"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8131:3:17"
},
"nodeType": "YulFunctionCall",
"src": "8131:15:17"
},
"variableNames": [
{
"name": "srcPtr",
"nodeType": "YulIdentifier",
"src": "8121:6:17"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "7998:1:17"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "8001:6:17"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "7995:2:17"
},
"nodeType": "YulFunctionCall",
"src": "7995:13:17"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "8009:18:17",
"statements": [
{
"nodeType": "YulAssignment",
"src": "8011:14:17",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "8020:1:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8023:1:17",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8016:3:17"
},
"nodeType": "YulFunctionCall",
"src": "8016:9:17"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "8011:1:17"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "7991:3:17",
"statements": []
},
"src": "7987:169:17"
},
{
"nodeType": "YulAssignment",
"src": "8165:10:17",
"value": {
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8172:3:17"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "8165:3:17"
}
]
}
]
},
"name": "abi_encode_array_uint256_dyn",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "7784:5:17",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "7791:3:17",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "7799:3:17",
"type": ""
}
],
"src": "7746:435:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8337:110:17",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8354:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8365:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8347:6:17"
},
"nodeType": "YulFunctionCall",
"src": "8347:21:17"
},
"nodeType": "YulExpressionStatement",
"src": "8347:21:17"
},
{
"nodeType": "YulAssignment",
"src": "8377:64:17",
"value": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "8414:6:17"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8426:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8437:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8422:3:17"
},
"nodeType": "YulFunctionCall",
"src": "8422:18:17"
}
],
"functionName": {
"name": "abi_encode_array_uint256_dyn",
"nodeType": "YulIdentifier",
"src": "8385:28:17"
},
"nodeType": "YulFunctionCall",
"src": "8385:56:17"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "8377:4:17"
}
]
}
]
},
"name": "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "8306:9:17",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "8317:6:17",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "8328:4:17",
"type": ""
}
],
"src": "8186:261:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8532:370:17",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "8578:16:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8587:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8590:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "8580:6:17"
},
"nodeType": "YulFunctionCall",
"src": "8580:12:17"
},
"nodeType": "YulExpressionStatement",
"src": "8580:12:17"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "8553:7:17"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8562:9:17"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "8549:3:17"
},
"nodeType": "YulFunctionCall",
"src": "8549:23:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8574:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "8545:3:17"
},
"nodeType": "YulFunctionCall",
"src": "8545:32:17"
},
"nodeType": "YulIf",
"src": "8542:52:17"
},
{
"nodeType": "YulVariableDeclaration",
"src": "8603:37:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8630:9:17"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "8617:12:17"
},
"nodeType": "YulFunctionCall",
"src": "8617:23:17"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "8607:6:17",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "8683:16:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8692:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8695:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "8685:6:17"
},
"nodeType": "YulFunctionCall",
"src": "8685:12:17"
},
"nodeType": "YulExpressionStatement",
"src": "8685:12:17"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "8655:6:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8663:18:17",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "8652:2:17"
},
"nodeType": "YulFunctionCall",
"src": "8652:30:17"
},
"nodeType": "YulIf",
"src": "8649:50:17"
},
{
"nodeType": "YulVariableDeclaration",
"src": "8708:32:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8722:9:17"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "8733:6:17"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8718:3:17"
},
"nodeType": "YulFunctionCall",
"src": "8718:22:17"
},
"variables": [
{
"name": "_1",
"nodeType": "YulTypedName",
"src": "8712:2:17",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "8788:16:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8797:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8800:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "8790:6:17"
},
"nodeType": "YulFunctionCall",
"src": "8790:12:17"
},
"nodeType": "YulExpressionStatement",
"src": "8790:12:17"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "8767:2:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8771:4:17",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8763:3:17"
},
"nodeType": "YulFunctionCall",
"src": "8763:13:17"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "8778:7:17"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "8759:3:17"
},
"nodeType": "YulFunctionCall",
"src": "8759:27:17"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "8752:6:17"
},
"nodeType": "YulFunctionCall",
"src": "8752:35:17"
},
"nodeType": "YulIf",
"src": "8749:55:17"
},
{
"nodeType": "YulAssignment",
"src": "8813:83:17",
"value": {
"arguments": [
{
"arguments": [
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "8861:2:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8865:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8857:3:17"
},
"nodeType": "YulFunctionCall",
"src": "8857:11:17"
},
{
"arguments": [
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "8883:2:17"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "8870:12:17"
},
"nodeType": "YulFunctionCall",
"src": "8870:16:17"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "8888:7:17"
}
],
"functionName": {
"name": "abi_decode_available_length_bytes",
"nodeType": "YulIdentifier",
"src": "8823:33:17"
},
"nodeType": "YulFunctionCall",
"src": "8823:73:17"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "8813:6:17"
}
]
}
]
},
"name": "abi_decode_tuple_t_string_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "8498:9:17",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "8509:7:17",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "8521:6:17",
"type": ""
}
],
"src": "8452:450:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8991:263:17",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "9037:16:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9046:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9049:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "9039:6:17"
},
"nodeType": "YulFunctionCall",
"src": "9039:12:17"
},
"nodeType": "YulExpressionStatement",
"src": "9039:12:17"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "9012:7:17"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9021:9:17"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "9008:3:17"
},
"nodeType": "YulFunctionCall",
"src": "9008:23:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9033:2:17",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "9004:3:17"
},
"nodeType": "YulFunctionCall",
"src": "9004:32:17"
},
"nodeType": "YulIf",
"src": "9001:52:17"
},
{
"nodeType": "YulAssignment",
"src": "9062:39:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9091:9:17"
}
],
"functionName": {
"name": "abi_decode_address",
"nodeType": "YulIdentifier",
"src": "9072:18:17"
},
"nodeType": "YulFunctionCall",
"src": "9072:29:17"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "9062:6:17"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "9110:45:17",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9140:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9151:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9136:3:17"
},
"nodeType": "YulFunctionCall",
"src": "9136:18:17"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "9123:12:17"
},
"nodeType": "YulFunctionCall",
"src": "9123:32:17"
},
"variables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "9114:5:17",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "9208:16:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9217:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9220:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "9210:6:17"
},
"nodeType": "YulFunctionCall",
"src": "9210:12:17"
},
"nodeType": "YulExpressionStatement",
"src": "9210:12:17"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "9177:5:17"
},
{
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "9198:5:17"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "9191:6:17"
},
"nodeType": "YulFunctionCall",
"src": "9191:13:17"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "9184:6:17"
},
"nodeType": "YulFunctionCall",
"src": "9184:21:17"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "9174:2:17"
},
"nodeType": "YulFunctionCall",
"src": "9174:32:17"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "9167:6:17"
},
"nodeType": "YulFunctionCall",
"src": "9167:40:17"
},
"nodeType": "YulIf",
"src": "9164:60:17"
},
{
"nodeType": "YulAssignment",
"src": "9233:15:17",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "9243:5:17"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "9233:6:17"
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_bool",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "8949:9:17",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "8960:7:17",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "8972:6:17",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "8980:6:17",
"type": ""
}
],
"src": "8907:347:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9360:102:17",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9370:26:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9382:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9393:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9378:3:17"
},
"nodeType": "YulFunctionCall",
"src": "9378:18:17"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "9370:4:17"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9412:9:17"
},
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "9427:6:17"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9443:3:17",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9448:1:17",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "9439:3:17"
},
"nodeType": "YulFunctionCall",
"src": "9439:11:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9452:1:17",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "9435:3:17"
},
"nodeType": "YulFunctionCall",
"src": "9435:19:17"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "9423:3:17"
},
"nodeType": "YulFunctionCall",
"src": "9423:32:17"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "9405:6:17"
},
"nodeType": "YulFunctionCall",
"src": "9405:51:17"
},
"nodeType": "YulExpressionStatement",
"src": "9405:51:17"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "9329:9:17",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "9340:6:17",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "9351:4:17",
"type": ""
}
],
"src": "9259:203:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9540:275:17",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "9589:16:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9598:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9601:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "9591:6:17"
},
"nodeType": "YulFunctionCall",
"src": "9591:12:17"
},
"nodeType": "YulExpressionStatement",
"src": "9591:12:17"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "9568:6:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9576:4:17",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9564:3:17"
},
"nodeType": "YulFunctionCall",
"src": "9564:17:17"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "9583:3:17"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "9560:3:17"
},
"nodeType": "YulFunctionCall",
"src": "9560:27:17"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "9553:6:17"
},
"nodeType": "YulFunctionCall",
"src": "9553:35:17"
},
"nodeType": "YulIf",
"src": "9550:55:17"
},
{
"nodeType": "YulAssignment",
"src": "9614:30:17",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "9637:6:17"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "9624:12:17"
},
"nodeType": "YulFunctionCall",
"src": "9624:20:17"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "9614:6:17"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "9687:16:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9696:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9699:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "9689:6:17"
},
"nodeType": "YulFunctionCall",
"src": "9689:12:17"
},
"nodeType": "YulExpressionStatement",
"src": "9689:12:17"
}
]
},
"condition": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "9659:6:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9667:18:17",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "9656:2:17"
},
"nodeType": "YulFunctionCall",
"src": "9656:30:17"
},
"nodeType": "YulIf",
"src": "9653:50:17"
},
{
"nodeType": "YulAssignment",
"src": "9712:29:17",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "9728:6:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9736:4:17",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9724:3:17"
},
"nodeType": "YulFunctionCall",
"src": "9724:17:17"
},
"variableNames": [
{
"name": "arrayPos",
"nodeType": "YulIdentifier",
"src": "9712:8:17"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "9793:16:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9802:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9805:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "9795:6:17"
},
"nodeType": "YulFunctionCall",
"src": "9795:12:17"
},
"nodeType": "YulExpressionStatement",
"src": "9795:12:17"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "9764:6:17"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "9772:6:17"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9760:3:17"
},
"nodeType": "YulFunctionCall",
"src": "9760:19:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9781:4:17",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9756:3:17"
},
"nodeType": "YulFunctionCall",
"src": "9756:30:17"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "9788:3:17"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "9753:2:17"
},
"nodeType": "YulFunctionCall",
"src": "9753:39:17"
},
"nodeType": "YulIf",
"src": "9750:59:17"
}
]
},
"name": "abi_decode_string_calldata",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "9503:6:17",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "9511:3:17",
"type": ""
}
],
"returnVariables": [
{
"name": "arrayPos",
"nodeType": "YulTypedName",
"src": "9519:8:17",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "9529:6:17",
"type": ""
}
],
"src": "9467:348:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9961:475:17",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "10008:16:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10017:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10020:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "10010:6:17"
},
"nodeType": "YulFunctionCall",
"src": "10010:12:17"
},
"nodeType": "YulExpressionStatement",
"src": "10010:12:17"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "9982:7:17"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9991:9:17"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "9978:3:17"
},
"nodeType": "YulFunctionCall",
"src": "9978:23:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10003:3:17",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "9974:3:17"
},
"nodeType": "YulFunctionCall",
"src": "9974:33:17"
},
"nodeType": "YulIf",
"src": "9971:53:17"
},
{
"nodeType": "YulVariableDeclaration",
"src": "10033:37:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10060:9:17"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "10047:12:17"
},
"nodeType": "YulFunctionCall",
"src": "10047:23:17"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "10037:6:17",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "10113:16:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10122:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10125:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "10115:6:17"
},
"nodeType": "YulFunctionCall",
"src": "10115:12:17"
},
"nodeType": "YulExpressionStatement",
"src": "10115:12:17"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "10085:6:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10093:18:17",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "10082:2:17"
},
"nodeType": "YulFunctionCall",
"src": "10082:30:17"
},
"nodeType": "YulIf",
"src": "10079:50:17"
},
{
"nodeType": "YulVariableDeclaration",
"src": "10138:85:17",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10195:9:17"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "10206:6:17"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10191:3:17"
},
"nodeType": "YulFunctionCall",
"src": "10191:22:17"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "10215:7:17"
}
],
"functionName": {
"name": "abi_decode_string_calldata",
"nodeType": "YulIdentifier",
"src": "10164:26:17"
},
"nodeType": "YulFunctionCall",
"src": "10164:59:17"
},
"variables": [
{
"name": "value0_1",
"nodeType": "YulTypedName",
"src": "10142:8:17",
"type": ""
},
{
"name": "value1_1",
"nodeType": "YulTypedName",
"src": "10152:8:17",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "10232:18:17",
"value": {
"name": "value0_1",
"nodeType": "YulIdentifier",
"src": "10242:8:17"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "10232:6:17"
}
]
},
{
"nodeType": "YulAssignment",
"src": "10259:18:17",
"value": {
"name": "value1_1",
"nodeType": "YulIdentifier",
"src": "10269:8:17"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "10259:6:17"
}
]
},
{
"nodeType": "YulAssignment",
"src": "10286:42:17",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10313:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10324:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10309:3:17"
},
"nodeType": "YulFunctionCall",
"src": "10309:18:17"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "10296:12:17"
},
"nodeType": "YulFunctionCall",
"src": "10296:32:17"
},
"variableNames": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "10286:6:17"
}
]
},
{
"nodeType": "YulAssignment",
"src": "10337:42:17",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10364:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10375:2:17",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10360:3:17"
},
"nodeType": "YulFunctionCall",
"src": "10360:18:17"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "10347:12:17"
},
"nodeType": "YulFunctionCall",
"src": "10347:32:17"
},
"variableNames": [
{
"name": "value3",
"nodeType": "YulIdentifier",
"src": "10337:6:17"
}
]
},
{
"nodeType": "YulAssignment",
"src": "10388:42:17",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10415:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10426:2:17",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10411:3:17"
},
"nodeType": "YulFunctionCall",
"src": "10411:18:17"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "10398:12:17"
},
"nodeType": "YulFunctionCall",
"src": "10398:32:17"
},
"variableNames": [
{
"name": "value4",
"nodeType": "YulIdentifier",
"src": "10388:6:17"
}
]
}
]
},
"name": "abi_decode_tuple_t_string_calldata_ptrt_uint256t_uint256t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "9895:9:17",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "9906:7:17",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "9918:6:17",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "9926:6:17",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "9934:6:17",
"type": ""
},
{
"name": "value3",
"nodeType": "YulTypedName",
"src": "9942:6:17",
"type": ""
},
{
"name": "value4",
"nodeType": "YulTypedName",
"src": "9950:6:17",
"type": ""
}
],
"src": "9820:616:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10599:533:17",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "10646:16:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10655:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10658:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "10648:6:17"
},
"nodeType": "YulFunctionCall",
"src": "10648:12:17"
},
"nodeType": "YulExpressionStatement",
"src": "10648:12:17"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "10620:7:17"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10629:9:17"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "10616:3:17"
},
"nodeType": "YulFunctionCall",
"src": "10616:23:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10641:3:17",
"type": "",
"value": "160"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "10612:3:17"
},
"nodeType": "YulFunctionCall",
"src": "10612:33:17"
},
"nodeType": "YulIf",
"src": "10609:53:17"
},
{
"nodeType": "YulAssignment",
"src": "10671:39:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10700:9:17"
}
],
"functionName": {
"name": "abi_decode_address",
"nodeType": "YulIdentifier",
"src": "10681:18:17"
},
"nodeType": "YulFunctionCall",
"src": "10681:29:17"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "10671:6:17"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "10719:46:17",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10750:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10761:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10746:3:17"
},
"nodeType": "YulFunctionCall",
"src": "10746:18:17"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "10733:12:17"
},
"nodeType": "YulFunctionCall",
"src": "10733:32:17"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "10723:6:17",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "10808:16:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10817:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10820:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "10810:6:17"
},
"nodeType": "YulFunctionCall",
"src": "10810:12:17"
},
"nodeType": "YulExpressionStatement",
"src": "10810:12:17"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "10780:6:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10788:18:17",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "10777:2:17"
},
"nodeType": "YulFunctionCall",
"src": "10777:30:17"
},
"nodeType": "YulIf",
"src": "10774:50:17"
},
{
"nodeType": "YulVariableDeclaration",
"src": "10833:85:17",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10890:9:17"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "10901:6:17"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10886:3:17"
},
"nodeType": "YulFunctionCall",
"src": "10886:22:17"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "10910:7:17"
}
],
"functionName": {
"name": "abi_decode_string_calldata",
"nodeType": "YulIdentifier",
"src": "10859:26:17"
},
"nodeType": "YulFunctionCall",
"src": "10859:59:17"
},
"variables": [
{
"name": "value1_1",
"nodeType": "YulTypedName",
"src": "10837:8:17",
"type": ""
},
{
"name": "value2_1",
"nodeType": "YulTypedName",
"src": "10847:8:17",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "10927:18:17",
"value": {
"name": "value1_1",
"nodeType": "YulIdentifier",
"src": "10937:8:17"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "10927:6:17"
}
]
},
{
"nodeType": "YulAssignment",
"src": "10954:18:17",
"value": {
"name": "value2_1",
"nodeType": "YulIdentifier",
"src": "10964:8:17"
},
"variableNames": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "10954:6:17"
}
]
},
{
"nodeType": "YulAssignment",
"src": "10981:42:17",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11008:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11019:2:17",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11004:3:17"
},
"nodeType": "YulFunctionCall",
"src": "11004:18:17"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "10991:12:17"
},
"nodeType": "YulFunctionCall",
"src": "10991:32:17"
},
"variableNames": [
{
"name": "value3",
"nodeType": "YulIdentifier",
"src": "10981:6:17"
}
]
},
{
"nodeType": "YulAssignment",
"src": "11032:42:17",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11059:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11070:2:17",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11055:3:17"
},
"nodeType": "YulFunctionCall",
"src": "11055:18:17"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "11042:12:17"
},
"nodeType": "YulFunctionCall",
"src": "11042:32:17"
},
"variableNames": [
{
"name": "value4",
"nodeType": "YulIdentifier",
"src": "11032:6:17"
}
]
},
{
"nodeType": "YulAssignment",
"src": "11083:43:17",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11110:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11121:3:17",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11106:3:17"
},
"nodeType": "YulFunctionCall",
"src": "11106:19:17"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "11093:12:17"
},
"nodeType": "YulFunctionCall",
"src": "11093:33:17"
},
"variableNames": [
{
"name": "value5",
"nodeType": "YulIdentifier",
"src": "11083:6:17"
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_string_calldata_ptrt_uint256t_uint256t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "10525:9:17",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "10536:7:17",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "10548:6:17",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "10556:6:17",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "10564:6:17",
"type": ""
},
{
"name": "value3",
"nodeType": "YulTypedName",
"src": "10572:6:17",
"type": ""
},
{
"name": "value4",
"nodeType": "YulTypedName",
"src": "10580:6:17",
"type": ""
},
{
"name": "value5",
"nodeType": "YulTypedName",
"src": "10588:6:17",
"type": ""
}
],
"src": "10441:691:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11224:173:17",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "11270:16:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11279:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11282:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "11272:6:17"
},
"nodeType": "YulFunctionCall",
"src": "11272:12:17"
},
"nodeType": "YulExpressionStatement",
"src": "11272:12:17"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "11245:7:17"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11254:9:17"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "11241:3:17"
},
"nodeType": "YulFunctionCall",
"src": "11241:23:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11266:2:17",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "11237:3:17"
},
"nodeType": "YulFunctionCall",
"src": "11237:32:17"
},
"nodeType": "YulIf",
"src": "11234:52:17"
},
{
"nodeType": "YulAssignment",
"src": "11295:39:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11324:9:17"
}
],
"functionName": {
"name": "abi_decode_address",
"nodeType": "YulIdentifier",
"src": "11305:18:17"
},
"nodeType": "YulFunctionCall",
"src": "11305:29:17"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "11295:6:17"
}
]
},
{
"nodeType": "YulAssignment",
"src": "11343:48:17",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11376:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11387:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11372:3:17"
},
"nodeType": "YulFunctionCall",
"src": "11372:18:17"
}
],
"functionName": {
"name": "abi_decode_address",
"nodeType": "YulIdentifier",
"src": "11353:18:17"
},
"nodeType": "YulFunctionCall",
"src": "11353:38:17"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "11343:6:17"
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "11182:9:17",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "11193:7:17",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "11205:6:17",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "11213:6:17",
"type": ""
}
],
"src": "11137:260:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11549:459:17",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "11596:16:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11605:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11608:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "11598:6:17"
},
"nodeType": "YulFunctionCall",
"src": "11598:12:17"
},
"nodeType": "YulExpressionStatement",
"src": "11598:12:17"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "11570:7:17"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11579:9:17"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "11566:3:17"
},
"nodeType": "YulFunctionCall",
"src": "11566:23:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11591:3:17",
"type": "",
"value": "160"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "11562:3:17"
},
"nodeType": "YulFunctionCall",
"src": "11562:33:17"
},
"nodeType": "YulIf",
"src": "11559:53:17"
},
{
"nodeType": "YulAssignment",
"src": "11621:39:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11650:9:17"
}
],
"functionName": {
"name": "abi_decode_address",
"nodeType": "YulIdentifier",
"src": "11631:18:17"
},
"nodeType": "YulFunctionCall",
"src": "11631:29:17"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "11621:6:17"
}
]
},
{
"nodeType": "YulAssignment",
"src": "11669:48:17",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11702:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11713:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11698:3:17"
},
"nodeType": "YulFunctionCall",
"src": "11698:18:17"
}
],
"functionName": {
"name": "abi_decode_address",
"nodeType": "YulIdentifier",
"src": "11679:18:17"
},
"nodeType": "YulFunctionCall",
"src": "11679:38:17"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "11669:6:17"
}
]
},
{
"nodeType": "YulAssignment",
"src": "11726:42:17",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11753:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11764:2:17",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11749:3:17"
},
"nodeType": "YulFunctionCall",
"src": "11749:18:17"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "11736:12:17"
},
"nodeType": "YulFunctionCall",
"src": "11736:32:17"
},
"variableNames": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "11726:6:17"
}
]
},
{
"nodeType": "YulAssignment",
"src": "11777:42:17",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11804:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11815:2:17",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11800:3:17"
},
"nodeType": "YulFunctionCall",
"src": "11800:18:17"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "11787:12:17"
},
"nodeType": "YulFunctionCall",
"src": "11787:32:17"
},
"variableNames": [
{
"name": "value3",
"nodeType": "YulIdentifier",
"src": "11777:6:17"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "11828:47:17",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11859:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11870:3:17",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11855:3:17"
},
"nodeType": "YulFunctionCall",
"src": "11855:19:17"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "11842:12:17"
},
"nodeType": "YulFunctionCall",
"src": "11842:33:17"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "11832:6:17",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "11918:16:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11927:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11930:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "11920:6:17"
},
"nodeType": "YulFunctionCall",
"src": "11920:12:17"
},
"nodeType": "YulExpressionStatement",
"src": "11920:12:17"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "11890:6:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11898:18:17",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "11887:2:17"
},
"nodeType": "YulFunctionCall",
"src": "11887:30:17"
},
"nodeType": "YulIf",
"src": "11884:50:17"
},
{
"nodeType": "YulAssignment",
"src": "11943:59:17",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11974:9:17"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "11985:6:17"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11970:3:17"
},
"nodeType": "YulFunctionCall",
"src": "11970:22:17"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "11994:7:17"
}
],
"functionName": {
"name": "abi_decode_bytes",
"nodeType": "YulIdentifier",
"src": "11953:16:17"
},
"nodeType": "YulFunctionCall",
"src": "11953:49:17"
},
"variableNames": [
{
"name": "value4",
"nodeType": "YulIdentifier",
"src": "11943:6:17"
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "11483:9:17",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "11494:7:17",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "11506:6:17",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "11514:6:17",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "11522:6:17",
"type": ""
},
{
"name": "value3",
"nodeType": "YulTypedName",
"src": "11530:6:17",
"type": ""
},
{
"name": "value4",
"nodeType": "YulTypedName",
"src": "11538:6:17",
"type": ""
}
],
"src": "11402:606:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "12187:233:17",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "12204:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12215:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "12197:6:17"
},
"nodeType": "YulFunctionCall",
"src": "12197:21:17"
},
"nodeType": "YulExpressionStatement",
"src": "12197:21:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "12238:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12249:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "12234:3:17"
},
"nodeType": "YulFunctionCall",
"src": "12234:18:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12254:2:17",
"type": "",
"value": "43"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "12227:6:17"
},
"nodeType": "YulFunctionCall",
"src": "12227:30:17"
},
"nodeType": "YulExpressionStatement",
"src": "12227:30:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "12277:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12288:2:17",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "12273:3:17"
},
"nodeType": "YulFunctionCall",
"src": "12273:18:17"
},
{
"hexValue": "455243313135353a2062616c616e636520717565727920666f7220746865207a",
"kind": "string",
"nodeType": "YulLiteral",
"src": "12293:34:17",
"type": "",
"value": "ERC1155: balance query for the z"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "12266:6:17"
},
"nodeType": "YulFunctionCall",
"src": "12266:62:17"
},
"nodeType": "YulExpressionStatement",
"src": "12266:62:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "12348:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12359:2:17",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "12344:3:17"
},
"nodeType": "YulFunctionCall",
"src": "12344:18:17"
},
{
"hexValue": "65726f2061646472657373",
"kind": "string",
"nodeType": "YulLiteral",
"src": "12364:13:17",
"type": "",
"value": "ero address"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "12337:6:17"
},
"nodeType": "YulFunctionCall",
"src": "12337:41:17"
},
"nodeType": "YulExpressionStatement",
"src": "12337:41:17"
},
{
"nodeType": "YulAssignment",
"src": "12387:27:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "12399:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12410:3:17",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "12395:3:17"
},
"nodeType": "YulFunctionCall",
"src": "12395:19:17"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "12387:4:17"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_1f4de6a436172e7f7b1540476031cb037fc18ede9cc346a56da1697cbd352aa9__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "12164:9:17",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "12178:4:17",
"type": ""
}
],
"src": "12013:407:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "12599:172:17",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "12616:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12627:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "12609:6:17"
},
"nodeType": "YulFunctionCall",
"src": "12609:21:17"
},
"nodeType": "YulExpressionStatement",
"src": "12609:21:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "12650:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12661:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "12646:3:17"
},
"nodeType": "YulFunctionCall",
"src": "12646:18:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12666:2:17",
"type": "",
"value": "22"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "12639:6:17"
},
"nodeType": "YulFunctionCall",
"src": "12639:30:17"
},
"nodeType": "YulExpressionStatement",
"src": "12639:30:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "12689:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12700:2:17",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "12685:3:17"
},
"nodeType": "YulFunctionCall",
"src": "12685:18:17"
},
{
"hexValue": "6973206e6f74206265747765656e20312d3235303021",
"kind": "string",
"nodeType": "YulLiteral",
"src": "12705:24:17",
"type": "",
"value": "is not between 1-2500!"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "12678:6:17"
},
"nodeType": "YulFunctionCall",
"src": "12678:52:17"
},
"nodeType": "YulExpressionStatement",
"src": "12678:52:17"
},
{
"nodeType": "YulAssignment",
"src": "12739:26:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "12751:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12762:2:17",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "12747:3:17"
},
"nodeType": "YulFunctionCall",
"src": "12747:18:17"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "12739:4:17"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_b980d5d5dbc9150a1ffd9a811f6ca09e5bfe75769d104fa147d91f848d36e2cc__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "12576:9:17",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "12590:4:17",
"type": ""
}
],
"src": "12425:346:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "12950:168:17",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "12967:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12978:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "12960:6:17"
},
"nodeType": "YulFunctionCall",
"src": "12960:21:17"
},
"nodeType": "YulExpressionStatement",
"src": "12960:21:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "13001:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13012:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "12997:3:17"
},
"nodeType": "YulFunctionCall",
"src": "12997:18:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13017:2:17",
"type": "",
"value": "18"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "12990:6:17"
},
"nodeType": "YulFunctionCall",
"src": "12990:30:17"
},
"nodeType": "YulExpressionStatement",
"src": "12990:30:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "13040:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13051:2:17",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "13036:3:17"
},
"nodeType": "YulFunctionCall",
"src": "13036:18:17"
},
{
"hexValue": "4e6f20464d20776974682074686973204964",
"kind": "string",
"nodeType": "YulLiteral",
"src": "13056:20:17",
"type": "",
"value": "No FM with this Id"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "13029:6:17"
},
"nodeType": "YulFunctionCall",
"src": "13029:48:17"
},
"nodeType": "YulExpressionStatement",
"src": "13029:48:17"
},
{
"nodeType": "YulAssignment",
"src": "13086:26:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "13098:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13109:2:17",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "13094:3:17"
},
"nodeType": "YulFunctionCall",
"src": "13094:18:17"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "13086:4:17"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_ad8e5d4b3b9467d759997fe6cc6b37e09e9a9a5883ed6b0e801720f3653f6f49__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "12927:9:17",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "12941:4:17",
"type": ""
}
],
"src": "12776:342:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "13178:325:17",
"statements": [
{
"nodeType": "YulAssignment",
"src": "13188:22:17",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13202:1:17",
"type": "",
"value": "1"
},
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "13205:4:17"
}
],
"functionName": {
"name": "shr",
"nodeType": "YulIdentifier",
"src": "13198:3:17"
},
"nodeType": "YulFunctionCall",
"src": "13198:12:17"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "13188:6:17"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "13219:38:17",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "13249:4:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13255:1:17",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "13245:3:17"
},
"nodeType": "YulFunctionCall",
"src": "13245:12:17"
},
"variables": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulTypedName",
"src": "13223:18:17",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "13296:31:17",
"statements": [
{
"nodeType": "YulAssignment",
"src": "13298:27:17",
"value": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "13312:6:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13320:4:17",
"type": "",
"value": "0x7f"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "13308:3:17"
},
"nodeType": "YulFunctionCall",
"src": "13308:17:17"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "13298:6:17"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "13276:18:17"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "13269:6:17"
},
"nodeType": "YulFunctionCall",
"src": "13269:26:17"
},
"nodeType": "YulIf",
"src": "13266:61:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "13386:111:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13407:1:17",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13414:3:17",
"type": "",
"value": "224"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13419:10:17",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "13410:3:17"
},
"nodeType": "YulFunctionCall",
"src": "13410:20:17"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "13400:6:17"
},
"nodeType": "YulFunctionCall",
"src": "13400:31:17"
},
"nodeType": "YulExpressionStatement",
"src": "13400:31:17"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13451:1:17",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13454:4:17",
"type": "",
"value": "0x22"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "13444:6:17"
},
"nodeType": "YulFunctionCall",
"src": "13444:15:17"
},
"nodeType": "YulExpressionStatement",
"src": "13444:15:17"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13479:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13482:4:17",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "13472:6:17"
},
"nodeType": "YulFunctionCall",
"src": "13472:15:17"
},
"nodeType": "YulExpressionStatement",
"src": "13472:15:17"
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "13342:18:17"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "13365:6:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13373:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "13362:2:17"
},
"nodeType": "YulFunctionCall",
"src": "13362:14:17"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "13339:2:17"
},
"nodeType": "YulFunctionCall",
"src": "13339:38:17"
},
"nodeType": "YulIf",
"src": "13336:161:17"
}
]
},
"name": "extract_byte_array_length",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "13158:4:17",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "13167:6:17",
"type": ""
}
],
"src": "13123:380:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "13682:170:17",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "13699:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13710:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "13692:6:17"
},
"nodeType": "YulFunctionCall",
"src": "13692:21:17"
},
"nodeType": "YulExpressionStatement",
"src": "13692:21:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "13733:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13744:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "13729:3:17"
},
"nodeType": "YulFunctionCall",
"src": "13729:18:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13749:2:17",
"type": "",
"value": "20"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "13722:6:17"
},
"nodeType": "YulFunctionCall",
"src": "13722:30:17"
},
"nodeType": "YulExpressionStatement",
"src": "13722:30:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "13772:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13783:2:17",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "13768:3:17"
},
"nodeType": "YulFunctionCall",
"src": "13768:18:17"
},
{
"hexValue": "464d20697320616c72656164792068696464656e",
"kind": "string",
"nodeType": "YulLiteral",
"src": "13788:22:17",
"type": "",
"value": "FM is already hidden"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "13761:6:17"
},
"nodeType": "YulFunctionCall",
"src": "13761:50:17"
},
"nodeType": "YulExpressionStatement",
"src": "13761:50:17"
},
{
"nodeType": "YulAssignment",
"src": "13820:26:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "13832:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13843:2:17",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "13828:3:17"
},
"nodeType": "YulFunctionCall",
"src": "13828:18:17"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "13820:4:17"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_b1477f47748ae8dbb5961dc8cdbb64ed84393a09222e6184413c607f82662112__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "13659:9:17",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "13673:4:17",
"type": ""
}
],
"src": "13508:344:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "14031:166:17",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "14048:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14059:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "14041:6:17"
},
"nodeType": "YulFunctionCall",
"src": "14041:21:17"
},
"nodeType": "YulExpressionStatement",
"src": "14041:21:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "14082:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14093:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "14078:3:17"
},
"nodeType": "YulFunctionCall",
"src": "14078:18:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14098:2:17",
"type": "",
"value": "16"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "14071:6:17"
},
"nodeType": "YulFunctionCall",
"src": "14071:30:17"
},
"nodeType": "YulExpressionStatement",
"src": "14071:30:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "14121:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14132:2:17",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "14117:3:17"
},
"nodeType": "YulFunctionCall",
"src": "14117:18:17"
},
{
"hexValue": "6973206d6f7265207468616e20313021",
"kind": "string",
"nodeType": "YulLiteral",
"src": "14137:18:17",
"type": "",
"value": "is more than 10!"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "14110:6:17"
},
"nodeType": "YulFunctionCall",
"src": "14110:46:17"
},
"nodeType": "YulExpressionStatement",
"src": "14110:46:17"
},
{
"nodeType": "YulAssignment",
"src": "14165:26:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "14177:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14188:2:17",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "14173:3:17"
},
"nodeType": "YulFunctionCall",
"src": "14173:18:17"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "14165:4:17"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_0aab944e9bfebdf7d3170fc8055bb0e48f3c75af3fa1da0385c5eb5cf0ca9dd5__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "14008:9:17",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "14022:4:17",
"type": ""
}
],
"src": "13857:340:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "14234:95:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14251:1:17",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14258:3:17",
"type": "",
"value": "224"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14263:10:17",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "14254:3:17"
},
"nodeType": "YulFunctionCall",
"src": "14254:20:17"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "14244:6:17"
},
"nodeType": "YulFunctionCall",
"src": "14244:31:17"
},
"nodeType": "YulExpressionStatement",
"src": "14244:31:17"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14291:1:17",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14294:4:17",
"type": "",
"value": "0x32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "14284:6:17"
},
"nodeType": "YulFunctionCall",
"src": "14284:15:17"
},
"nodeType": "YulExpressionStatement",
"src": "14284:15:17"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14315:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14318:4:17",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "14308:6:17"
},
"nodeType": "YulFunctionCall",
"src": "14308:15:17"
},
"nodeType": "YulExpressionStatement",
"src": "14308:15:17"
}
]
},
"name": "panic_error_0x32",
"nodeType": "YulFunctionDefinition",
"src": "14202:127:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "14366:95:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14383:1:17",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14390:3:17",
"type": "",
"value": "224"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14395:10:17",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "14386:3:17"
},
"nodeType": "YulFunctionCall",
"src": "14386:20:17"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "14376:6:17"
},
"nodeType": "YulFunctionCall",
"src": "14376:31:17"
},
"nodeType": "YulExpressionStatement",
"src": "14376:31:17"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14423:1:17",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14426:4:17",
"type": "",
"value": "0x11"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "14416:6:17"
},
"nodeType": "YulFunctionCall",
"src": "14416:15:17"
},
"nodeType": "YulExpressionStatement",
"src": "14416:15:17"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14447:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14450:4:17",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "14440:6:17"
},
"nodeType": "YulFunctionCall",
"src": "14440:15:17"
},
"nodeType": "YulExpressionStatement",
"src": "14440:15:17"
}
]
},
"name": "panic_error_0x11",
"nodeType": "YulFunctionDefinition",
"src": "14334:127:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "14513:88:17",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "14544:22:17",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "14546:16:17"
},
"nodeType": "YulFunctionCall",
"src": "14546:18:17"
},
"nodeType": "YulExpressionStatement",
"src": "14546:18:17"
}
]
},
"condition": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "14529:5:17"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14540:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "14536:3:17"
},
"nodeType": "YulFunctionCall",
"src": "14536:6:17"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "14526:2:17"
},
"nodeType": "YulFunctionCall",
"src": "14526:17:17"
},
"nodeType": "YulIf",
"src": "14523:43:17"
},
{
"nodeType": "YulAssignment",
"src": "14575:20:17",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "14586:5:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14593:1:17",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "14582:3:17"
},
"nodeType": "YulFunctionCall",
"src": "14582:13:17"
},
"variableNames": [
{
"name": "ret",
"nodeType": "YulIdentifier",
"src": "14575:3:17"
}
]
}
]
},
"name": "increment_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "14495:5:17",
"type": ""
}
],
"returnVariables": [
{
"name": "ret",
"nodeType": "YulTypedName",
"src": "14505:3:17",
"type": ""
}
],
"src": "14466:135:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "14780:240:17",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "14797:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14808:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "14790:6:17"
},
"nodeType": "YulFunctionCall",
"src": "14790:21:17"
},
"nodeType": "YulExpressionStatement",
"src": "14790:21:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "14831:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14842:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "14827:3:17"
},
"nodeType": "YulFunctionCall",
"src": "14827:18:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14847:2:17",
"type": "",
"value": "50"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "14820:6:17"
},
"nodeType": "YulFunctionCall",
"src": "14820:30:17"
},
"nodeType": "YulExpressionStatement",
"src": "14820:30:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "14870:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14881:2:17",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "14866:3:17"
},
"nodeType": "YulFunctionCall",
"src": "14866:18:17"
},
{
"hexValue": "455243313135353a207472616e736665722063616c6c6572206973206e6f7420",
"kind": "string",
"nodeType": "YulLiteral",
"src": "14886:34:17",
"type": "",
"value": "ERC1155: transfer caller is not "
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "14859:6:17"
},
"nodeType": "YulFunctionCall",
"src": "14859:62:17"
},
"nodeType": "YulExpressionStatement",
"src": "14859:62:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "14941:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14952:2:17",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "14937:3:17"
},
"nodeType": "YulFunctionCall",
"src": "14937:18:17"
},
{
"hexValue": "6f776e6572206e6f7220617070726f766564",
"kind": "string",
"nodeType": "YulLiteral",
"src": "14957:20:17",
"type": "",
"value": "owner nor approved"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "14930:6:17"
},
"nodeType": "YulFunctionCall",
"src": "14930:48:17"
},
"nodeType": "YulExpressionStatement",
"src": "14930:48:17"
},
{
"nodeType": "YulAssignment",
"src": "14987:27:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "14999:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15010:3:17",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "14995:3:17"
},
"nodeType": "YulFunctionCall",
"src": "14995:19:17"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "14987:4:17"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_70a41c66829f5508884cda9ef3d2f72551b34f23e4035be97941681123d2d686__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "14757:9:17",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "14771:4:17",
"type": ""
}
],
"src": "14606:414:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "15199:237:17",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "15216:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15227:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "15209:6:17"
},
"nodeType": "YulFunctionCall",
"src": "15209:21:17"
},
"nodeType": "YulExpressionStatement",
"src": "15209:21:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "15250:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15261:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "15246:3:17"
},
"nodeType": "YulFunctionCall",
"src": "15246:18:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15266:2:17",
"type": "",
"value": "47"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "15239:6:17"
},
"nodeType": "YulFunctionCall",
"src": "15239:30:17"
},
"nodeType": "YulExpressionStatement",
"src": "15239:30:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "15289:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15300:2:17",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "15285:3:17"
},
"nodeType": "YulFunctionCall",
"src": "15285:18:17"
},
{
"hexValue": "416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e6365",
"kind": "string",
"nodeType": "YulLiteral",
"src": "15305:34:17",
"type": "",
"value": "AccessControl: can only renounce"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "15278:6:17"
},
"nodeType": "YulFunctionCall",
"src": "15278:62:17"
},
"nodeType": "YulExpressionStatement",
"src": "15278:62:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "15360:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15371:2:17",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "15356:3:17"
},
"nodeType": "YulFunctionCall",
"src": "15356:18:17"
},
{
"hexValue": "20726f6c657320666f722073656c66",
"kind": "string",
"nodeType": "YulLiteral",
"src": "15376:17:17",
"type": "",
"value": " roles for self"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "15349:6:17"
},
"nodeType": "YulFunctionCall",
"src": "15349:45:17"
},
"nodeType": "YulExpressionStatement",
"src": "15349:45:17"
},
{
"nodeType": "YulAssignment",
"src": "15403:27:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "15415:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15426:3:17",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "15411:3:17"
},
"nodeType": "YulFunctionCall",
"src": "15411:19:17"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "15403:4:17"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "15176:9:17",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "15190:4:17",
"type": ""
}
],
"src": "15025:411:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "15615:163:17",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "15632:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15643:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "15625:6:17"
},
"nodeType": "YulFunctionCall",
"src": "15625:21:17"
},
"nodeType": "YulExpressionStatement",
"src": "15625:21:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "15666:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15677:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "15662:3:17"
},
"nodeType": "YulFunctionCall",
"src": "15662:18:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15682:2:17",
"type": "",
"value": "13"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "15655:6:17"
},
"nodeType": "YulFunctionCall",
"src": "15655:30:17"
},
"nodeType": "YulExpressionStatement",
"src": "15655:30:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "15705:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15716:2:17",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "15701:3:17"
},
"nodeType": "YulFunctionCall",
"src": "15701:18:17"
},
{
"hexValue": "4e6f2061646472657373283029",
"kind": "string",
"nodeType": "YulLiteral",
"src": "15721:15:17",
"type": "",
"value": "No address(0)"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "15694:6:17"
},
"nodeType": "YulFunctionCall",
"src": "15694:43:17"
},
"nodeType": "YulExpressionStatement",
"src": "15694:43:17"
},
{
"nodeType": "YulAssignment",
"src": "15746:26:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "15758:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15769:2:17",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "15754:3:17"
},
"nodeType": "YulFunctionCall",
"src": "15754:18:17"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "15746:4:17"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_8e6f827f3090d5517c29a88eb0975f479e761f521dc9b8ec82496c8913643ef0__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "15592:9:17",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "15606:4:17",
"type": ""
}
],
"src": "15441:337:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "15957:231:17",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "15974:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15985:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "15967:6:17"
},
"nodeType": "YulFunctionCall",
"src": "15967:21:17"
},
"nodeType": "YulExpressionStatement",
"src": "15967:21:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "16008:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16019:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "16004:3:17"
},
"nodeType": "YulFunctionCall",
"src": "16004:18:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16024:2:17",
"type": "",
"value": "41"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "15997:6:17"
},
"nodeType": "YulFunctionCall",
"src": "15997:30:17"
},
"nodeType": "YulExpressionStatement",
"src": "15997:30:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "16047:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16058:2:17",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "16043:3:17"
},
"nodeType": "YulFunctionCall",
"src": "16043:18:17"
},
{
"hexValue": "455243313135353a206163636f756e747320616e6420696473206c656e677468",
"kind": "string",
"nodeType": "YulLiteral",
"src": "16063:34:17",
"type": "",
"value": "ERC1155: accounts and ids length"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "16036:6:17"
},
"nodeType": "YulFunctionCall",
"src": "16036:62:17"
},
"nodeType": "YulExpressionStatement",
"src": "16036:62:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "16118:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16129:2:17",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "16114:3:17"
},
"nodeType": "YulFunctionCall",
"src": "16114:18:17"
},
{
"hexValue": "206d69736d61746368",
"kind": "string",
"nodeType": "YulLiteral",
"src": "16134:11:17",
"type": "",
"value": " mismatch"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "16107:6:17"
},
"nodeType": "YulFunctionCall",
"src": "16107:39:17"
},
"nodeType": "YulExpressionStatement",
"src": "16107:39:17"
},
{
"nodeType": "YulAssignment",
"src": "16155:27:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "16167:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16178:3:17",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "16163:3:17"
},
"nodeType": "YulFunctionCall",
"src": "16163:19:17"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "16155:4:17"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_e155f5d69798c6205436a388a4f3a5fd42f54147b40f4d63a2c8071ff8a9fee5__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "15934:9:17",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "15948:4:17",
"type": ""
}
],
"src": "15783:405:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "16367:166:17",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "16384:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16395:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "16377:6:17"
},
"nodeType": "YulFunctionCall",
"src": "16377:21:17"
},
"nodeType": "YulExpressionStatement",
"src": "16377:21:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "16418:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16429:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "16414:3:17"
},
"nodeType": "YulFunctionCall",
"src": "16414:18:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16434:2:17",
"type": "",
"value": "16"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "16407:6:17"
},
"nodeType": "YulFunctionCall",
"src": "16407:30:17"
},
"nodeType": "YulExpressionStatement",
"src": "16407:30:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "16457:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16468:2:17",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "16453:3:17"
},
"nodeType": "YulFunctionCall",
"src": "16453:18:17"
},
{
"hexValue": "464d206973206e6f742068696464656e",
"kind": "string",
"nodeType": "YulLiteral",
"src": "16473:18:17",
"type": "",
"value": "FM is not hidden"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "16446:6:17"
},
"nodeType": "YulFunctionCall",
"src": "16446:46:17"
},
"nodeType": "YulExpressionStatement",
"src": "16446:46:17"
},
{
"nodeType": "YulAssignment",
"src": "16501:26:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "16513:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16524:2:17",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "16509:3:17"
},
"nodeType": "YulFunctionCall",
"src": "16509:18:17"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "16501:4:17"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_f18b3768d605a51198d79e77c6892ee320e8af3541710613f31c8ca735436b6b__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "16344:9:17",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "16358:4:17",
"type": ""
}
],
"src": "16193:340:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "16712:166:17",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "16729:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16740:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "16722:6:17"
},
"nodeType": "YulFunctionCall",
"src": "16722:21:17"
},
"nodeType": "YulExpressionStatement",
"src": "16722:21:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "16763:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16774:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "16759:3:17"
},
"nodeType": "YulFunctionCall",
"src": "16759:18:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16779:2:17",
"type": "",
"value": "16"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "16752:6:17"
},
"nodeType": "YulFunctionCall",
"src": "16752:30:17"
},
"nodeType": "YulExpressionStatement",
"src": "16752:30:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "16802:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16813:2:17",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "16798:3:17"
},
"nodeType": "YulFunctionCall",
"src": "16798:18:17"
},
{
"hexValue": "5061757361626c653a20706175736564",
"kind": "string",
"nodeType": "YulLiteral",
"src": "16818:18:17",
"type": "",
"value": "Pausable: paused"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "16791:6:17"
},
"nodeType": "YulFunctionCall",
"src": "16791:46:17"
},
"nodeType": "YulExpressionStatement",
"src": "16791:46:17"
},
{
"nodeType": "YulAssignment",
"src": "16846:26:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "16858:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16869:2:17",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "16854:3:17"
},
"nodeType": "YulFunctionCall",
"src": "16854:18:17"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "16846:4:17"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "16689:9:17",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "16703:4:17",
"type": ""
}
],
"src": "16538:340:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "17057:170:17",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "17074:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17085:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "17067:6:17"
},
"nodeType": "YulFunctionCall",
"src": "17067:21:17"
},
"nodeType": "YulExpressionStatement",
"src": "17067:21:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "17108:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17119:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "17104:3:17"
},
"nodeType": "YulFunctionCall",
"src": "17104:18:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17124:2:17",
"type": "",
"value": "20"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "17097:6:17"
},
"nodeType": "YulFunctionCall",
"src": "17097:30:17"
},
"nodeType": "YulExpressionStatement",
"src": "17097:30:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "17147:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17158:2:17",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "17143:3:17"
},
"nodeType": "YulFunctionCall",
"src": "17143:18:17"
},
{
"hexValue": "4e6f206d696e7420666f7220796f757273656c66",
"kind": "string",
"nodeType": "YulLiteral",
"src": "17163:22:17",
"type": "",
"value": "No mint for yourself"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "17136:6:17"
},
"nodeType": "YulFunctionCall",
"src": "17136:50:17"
},
"nodeType": "YulExpressionStatement",
"src": "17136:50:17"
},
{
"nodeType": "YulAssignment",
"src": "17195:26:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "17207:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17218:2:17",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "17203:3:17"
},
"nodeType": "YulFunctionCall",
"src": "17203:18:17"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "17195:4:17"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_ce5a8e2ce9141c10493280226df71a5840530f55dae75b983ca87a88e799e150__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "17034:9:17",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "17048:4:17",
"type": ""
}
],
"src": "16883:344:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "17406:223:17",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "17423:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17434:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "17416:6:17"
},
"nodeType": "YulFunctionCall",
"src": "17416:21:17"
},
"nodeType": "YulExpressionStatement",
"src": "17416:21:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "17457:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17468:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "17453:3:17"
},
"nodeType": "YulFunctionCall",
"src": "17453:18:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17473:2:17",
"type": "",
"value": "33"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "17446:6:17"
},
"nodeType": "YulFunctionCall",
"src": "17446:30:17"
},
"nodeType": "YulExpressionStatement",
"src": "17446:30:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "17496:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17507:2:17",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "17492:3:17"
},
"nodeType": "YulFunctionCall",
"src": "17492:18:17"
},
{
"hexValue": "63726561746f722061646472657373206e656564204d494e5445525f524f4c45",
"kind": "string",
"nodeType": "YulLiteral",
"src": "17512:34:17",
"type": "",
"value": "creator address need MINTER_ROLE"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "17485:6:17"
},
"nodeType": "YulFunctionCall",
"src": "17485:62:17"
},
"nodeType": "YulExpressionStatement",
"src": "17485:62:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "17567:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17578:2:17",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "17563:3:17"
},
"nodeType": "YulFunctionCall",
"src": "17563:18:17"
},
{
"hexValue": "21",
"kind": "string",
"nodeType": "YulLiteral",
"src": "17583:3:17",
"type": "",
"value": "!"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "17556:6:17"
},
"nodeType": "YulFunctionCall",
"src": "17556:31:17"
},
"nodeType": "YulExpressionStatement",
"src": "17556:31:17"
},
{
"nodeType": "YulAssignment",
"src": "17596:27:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "17608:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17619:3:17",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "17604:3:17"
},
"nodeType": "YulFunctionCall",
"src": "17604:19:17"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "17596:4:17"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_c340052cbb66403c576fcd9fee0ed29be6a40df0e37c6c861ee069dd74ef28c0__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "17383:9:17",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "17397:4:17",
"type": ""
}
],
"src": "17232:397:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "17808:172:17",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "17825:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17836:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "17818:6:17"
},
"nodeType": "YulFunctionCall",
"src": "17818:21:17"
},
"nodeType": "YulExpressionStatement",
"src": "17818:21:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "17859:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17870:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "17855:3:17"
},
"nodeType": "YulFunctionCall",
"src": "17855:18:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17875:2:17",
"type": "",
"value": "22"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "17848:6:17"
},
"nodeType": "YulFunctionCall",
"src": "17848:30:17"
},
"nodeType": "YulExpressionStatement",
"src": "17848:30:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "17898:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17909:2:17",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "17894:3:17"
},
"nodeType": "YulFunctionCall",
"src": "17894:18:17"
},
{
"hexValue": "6973206e6f74206265747765656e2031302d31303021",
"kind": "string",
"nodeType": "YulLiteral",
"src": "17914:24:17",
"type": "",
"value": "is not between 10-100!"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "17887:6:17"
},
"nodeType": "YulFunctionCall",
"src": "17887:52:17"
},
"nodeType": "YulExpressionStatement",
"src": "17887:52:17"
},
{
"nodeType": "YulAssignment",
"src": "17948:26:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "17960:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17971:2:17",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "17956:3:17"
},
"nodeType": "YulFunctionCall",
"src": "17956:18:17"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "17948:4:17"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_1a1910774d5d674fa1d70bd183b57a2e6aca23b471940eb7ed5a5631b823403f__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "17785:9:17",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "17799:4:17",
"type": ""
}
],
"src": "17634:346:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "18159:231:17",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "18176:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "18187:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "18169:6:17"
},
"nodeType": "YulFunctionCall",
"src": "18169:21:17"
},
"nodeType": "YulExpressionStatement",
"src": "18169:21:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "18210:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "18221:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "18206:3:17"
},
"nodeType": "YulFunctionCall",
"src": "18206:18:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "18226:2:17",
"type": "",
"value": "41"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "18199:6:17"
},
"nodeType": "YulFunctionCall",
"src": "18199:30:17"
},
"nodeType": "YulExpressionStatement",
"src": "18199:30:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "18249:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "18260:2:17",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "18245:3:17"
},
"nodeType": "YulFunctionCall",
"src": "18245:18:17"
},
{
"hexValue": "455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f72",
"kind": "string",
"nodeType": "YulLiteral",
"src": "18265:34:17",
"type": "",
"value": "ERC1155: caller is not owner nor"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "18238:6:17"
},
"nodeType": "YulFunctionCall",
"src": "18238:62:17"
},
"nodeType": "YulExpressionStatement",
"src": "18238:62:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "18320:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "18331:2:17",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "18316:3:17"
},
"nodeType": "YulFunctionCall",
"src": "18316:18:17"
},
{
"hexValue": "20617070726f766564",
"kind": "string",
"nodeType": "YulLiteral",
"src": "18336:11:17",
"type": "",
"value": " approved"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "18309:6:17"
},
"nodeType": "YulFunctionCall",
"src": "18309:39:17"
},
"nodeType": "YulExpressionStatement",
"src": "18309:39:17"
},
{
"nodeType": "YulAssignment",
"src": "18357:27:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "18369:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "18380:3:17",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "18365:3:17"
},
"nodeType": "YulFunctionCall",
"src": "18365:19:17"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "18357:4:17"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_394ac917f53b95ee25db2a5da5874c5b1f0af95a4fdf34992ff8b19c458f239a__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "18136:9:17",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "18150:4:17",
"type": ""
}
],
"src": "17985:405:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "18784:397:17",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "18801:3:17"
},
{
"hexValue": "416363657373436f6e74726f6c3a206163636f756e7420",
"kind": "string",
"nodeType": "YulLiteral",
"src": "18806:25:17",
"type": "",
"value": "AccessControl: account "
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "18794:6:17"
},
"nodeType": "YulFunctionCall",
"src": "18794:38:17"
},
"nodeType": "YulExpressionStatement",
"src": "18794:38:17"
},
{
"nodeType": "YulVariableDeclaration",
"src": "18841:27:17",
"value": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "18861:6:17"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "18855:5:17"
},
"nodeType": "YulFunctionCall",
"src": "18855:13:17"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "18845:6:17",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "18903:6:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "18911:4:17",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "18899:3:17"
},
"nodeType": "YulFunctionCall",
"src": "18899:17:17"
},
{
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "18922:3:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "18927:2:17",
"type": "",
"value": "23"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "18918:3:17"
},
"nodeType": "YulFunctionCall",
"src": "18918:12:17"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "18932:6:17"
}
],
"functionName": {
"name": "copy_memory_to_memory",
"nodeType": "YulIdentifier",
"src": "18877:21:17"
},
"nodeType": "YulFunctionCall",
"src": "18877:62:17"
},
"nodeType": "YulExpressionStatement",
"src": "18877:62:17"
},
{
"nodeType": "YulVariableDeclaration",
"src": "18948:26:17",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "18962:3:17"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "18967:6:17"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "18958:3:17"
},
"nodeType": "YulFunctionCall",
"src": "18958:16:17"
},
"variables": [
{
"name": "_1",
"nodeType": "YulTypedName",
"src": "18952:2:17",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "18994:2:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "18998:2:17",
"type": "",
"value": "23"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "18990:3:17"
},
"nodeType": "YulFunctionCall",
"src": "18990:11:17"
},
{
"hexValue": "206973206d697373696e6720726f6c6520",
"kind": "string",
"nodeType": "YulLiteral",
"src": "19003:19:17",
"type": "",
"value": " is missing role "
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "18983:6:17"
},
"nodeType": "YulFunctionCall",
"src": "18983:40:17"
},
"nodeType": "YulExpressionStatement",
"src": "18983:40:17"
},
{
"nodeType": "YulVariableDeclaration",
"src": "19032:29:17",
"value": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "19054:6:17"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "19048:5:17"
},
"nodeType": "YulFunctionCall",
"src": "19048:13:17"
},
"variables": [
{
"name": "length_1",
"nodeType": "YulTypedName",
"src": "19036:8:17",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "19096:6:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "19104:4:17",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "19092:3:17"
},
"nodeType": "YulFunctionCall",
"src": "19092:17:17"
},
{
"arguments": [
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "19115:2:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "19119:2:17",
"type": "",
"value": "40"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "19111:3:17"
},
"nodeType": "YulFunctionCall",
"src": "19111:11:17"
},
{
"name": "length_1",
"nodeType": "YulIdentifier",
"src": "19124:8:17"
}
],
"functionName": {
"name": "copy_memory_to_memory",
"nodeType": "YulIdentifier",
"src": "19070:21:17"
},
"nodeType": "YulFunctionCall",
"src": "19070:63:17"
},
"nodeType": "YulExpressionStatement",
"src": "19070:63:17"
},
{
"nodeType": "YulAssignment",
"src": "19142:33:17",
"value": {
"arguments": [
{
"arguments": [
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "19157:2:17"
},
{
"name": "length_1",
"nodeType": "YulIdentifier",
"src": "19161:8:17"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "19153:3:17"
},
"nodeType": "YulFunctionCall",
"src": "19153:17:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "19172:2:17",
"type": "",
"value": "40"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "19149:3:17"
},
"nodeType": "YulFunctionCall",
"src": "19149:26:17"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "19142:3:17"
}
]
}
]
},
"name": "abi_encode_tuple_packed_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_t_string_memory_ptr_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "18752:3:17",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "18757:6:17",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "18765:6:17",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "18776:3:17",
"type": ""
}
],
"src": "18395:786:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "19360:230:17",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "19377:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "19388:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "19370:6:17"
},
"nodeType": "YulFunctionCall",
"src": "19370:21:17"
},
"nodeType": "YulExpressionStatement",
"src": "19370:21:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "19411:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "19422:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "19407:3:17"
},
"nodeType": "YulFunctionCall",
"src": "19407:18:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "19427:2:17",
"type": "",
"value": "40"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "19400:6:17"
},
"nodeType": "YulFunctionCall",
"src": "19400:30:17"
},
"nodeType": "YulExpressionStatement",
"src": "19400:30:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "19450:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "19461:2:17",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "19446:3:17"
},
"nodeType": "YulFunctionCall",
"src": "19446:18:17"
},
{
"hexValue": "455243313135353a2069647320616e6420616d6f756e7473206c656e67746820",
"kind": "string",
"nodeType": "YulLiteral",
"src": "19466:34:17",
"type": "",
"value": "ERC1155: ids and amounts length "
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "19439:6:17"
},
"nodeType": "YulFunctionCall",
"src": "19439:62:17"
},
"nodeType": "YulExpressionStatement",
"src": "19439:62:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "19521:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "19532:2:17",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "19517:3:17"
},
"nodeType": "YulFunctionCall",
"src": "19517:18:17"
},
{
"hexValue": "6d69736d61746368",
"kind": "string",
"nodeType": "YulLiteral",
"src": "19537:10:17",
"type": "",
"value": "mismatch"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "19510:6:17"
},
"nodeType": "YulFunctionCall",
"src": "19510:38:17"
},
"nodeType": "YulExpressionStatement",
"src": "19510:38:17"
},
{
"nodeType": "YulAssignment",
"src": "19557:27:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "19569:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "19580:3:17",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "19565:3:17"
},
"nodeType": "YulFunctionCall",
"src": "19565:19:17"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "19557:4:17"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "19337:9:17",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "19351:4:17",
"type": ""
}
],
"src": "19186:404:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "19769:227:17",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "19786:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "19797:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "19779:6:17"
},
"nodeType": "YulFunctionCall",
"src": "19779:21:17"
},
"nodeType": "YulExpressionStatement",
"src": "19779:21:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "19820:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "19831:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "19816:3:17"
},
"nodeType": "YulFunctionCall",
"src": "19816:18:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "19836:2:17",
"type": "",
"value": "37"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "19809:6:17"
},
"nodeType": "YulFunctionCall",
"src": "19809:30:17"
},
"nodeType": "YulExpressionStatement",
"src": "19809:30:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "19859:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "19870:2:17",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "19855:3:17"
},
"nodeType": "YulFunctionCall",
"src": "19855:18:17"
},
{
"hexValue": "455243313135353a207472616e7366657220746f20746865207a65726f206164",
"kind": "string",
"nodeType": "YulLiteral",
"src": "19875:34:17",
"type": "",
"value": "ERC1155: transfer to the zero ad"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "19848:6:17"
},
"nodeType": "YulFunctionCall",
"src": "19848:62:17"
},
"nodeType": "YulExpressionStatement",
"src": "19848:62:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "19930:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "19941:2:17",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "19926:3:17"
},
"nodeType": "YulFunctionCall",
"src": "19926:18:17"
},
{
"hexValue": "6472657373",
"kind": "string",
"nodeType": "YulLiteral",
"src": "19946:7:17",
"type": "",
"value": "dress"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "19919:6:17"
},
"nodeType": "YulFunctionCall",
"src": "19919:35:17"
},
"nodeType": "YulExpressionStatement",
"src": "19919:35:17"
},
{
"nodeType": "YulAssignment",
"src": "19963:27:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "19975:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "19986:3:17",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "19971:3:17"
},
"nodeType": "YulFunctionCall",
"src": "19971:19:17"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "19963:4:17"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "19746:9:17",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "19760:4:17",
"type": ""
}
],
"src": "19595:401:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "20175:232:17",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "20192:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "20203:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "20185:6:17"
},
"nodeType": "YulFunctionCall",
"src": "20185:21:17"
},
"nodeType": "YulExpressionStatement",
"src": "20185:21:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "20226:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "20237:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "20222:3:17"
},
"nodeType": "YulFunctionCall",
"src": "20222:18:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "20242:2:17",
"type": "",
"value": "42"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "20215:6:17"
},
"nodeType": "YulFunctionCall",
"src": "20215:30:17"
},
"nodeType": "YulExpressionStatement",
"src": "20215:30:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "20265:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "20276:2:17",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "20261:3:17"
},
"nodeType": "YulFunctionCall",
"src": "20261:18:17"
},
{
"hexValue": "455243313135353a20696e73756666696369656e742062616c616e636520666f",
"kind": "string",
"nodeType": "YulLiteral",
"src": "20281:34:17",
"type": "",
"value": "ERC1155: insufficient balance fo"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "20254:6:17"
},
"nodeType": "YulFunctionCall",
"src": "20254:62:17"
},
"nodeType": "YulExpressionStatement",
"src": "20254:62:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "20336:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "20347:2:17",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "20332:3:17"
},
"nodeType": "YulFunctionCall",
"src": "20332:18:17"
},
{
"hexValue": "72207472616e73666572",
"kind": "string",
"nodeType": "YulLiteral",
"src": "20352:12:17",
"type": "",
"value": "r transfer"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "20325:6:17"
},
"nodeType": "YulFunctionCall",
"src": "20325:40:17"
},
"nodeType": "YulExpressionStatement",
"src": "20325:40:17"
},
{
"nodeType": "YulAssignment",
"src": "20374:27:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "20386:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "20397:3:17",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "20382:3:17"
},
"nodeType": "YulFunctionCall",
"src": "20382:19:17"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "20374:4:17"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "20152:9:17",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "20166:4:17",
"type": ""
}
],
"src": "20001:406:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "20460:80:17",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "20487:22:17",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "20489:16:17"
},
"nodeType": "YulFunctionCall",
"src": "20489:18:17"
},
"nodeType": "YulExpressionStatement",
"src": "20489:18:17"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "20476:1:17"
},
{
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "20483:1:17"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "20479:3:17"
},
"nodeType": "YulFunctionCall",
"src": "20479:6:17"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "20473:2:17"
},
"nodeType": "YulFunctionCall",
"src": "20473:13:17"
},
"nodeType": "YulIf",
"src": "20470:39:17"
},
{
"nodeType": "YulAssignment",
"src": "20518:16:17",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "20529:1:17"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "20532:1:17"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "20525:3:17"
},
"nodeType": "YulFunctionCall",
"src": "20525:9:17"
},
"variableNames": [
{
"name": "sum",
"nodeType": "YulIdentifier",
"src": "20518:3:17"
}
]
}
]
},
"name": "checked_add_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "20443:1:17",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "20446:1:17",
"type": ""
}
],
"returnVariables": [
{
"name": "sum",
"nodeType": "YulTypedName",
"src": "20452:3:17",
"type": ""
}
],
"src": "20412:128:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "20774:236:17",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "20791:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "20802:2:17",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "20784:6:17"
},
"nodeType": "YulFunctionCall",
"src": "20784:21:17"
},
"nodeType": "YulExpressionStatement",
"src": "20784:21:17"
},
{
"nodeType": "YulVariableDeclaration",
"src": "20814:70:17",
"value": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "20857:6:17"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "20869:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "20880:2:17",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "20865:3:17"
},
"nodeType": "YulFunctionCall",
"src": "20865:18:17"
}
],
"functionName": {
"name": "abi_encode_array_uint256_dyn",
"nodeType": "YulIdentifier",
"src": "20828:28:17"
},
"nodeType": "YulFunctionCall",
"src": "20828:56:17"
},
"variables": [
{
"name": "tail_1",
"nodeType": "YulTypedName",
"src": "20818:6:17",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "20904:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "20915:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "20900:3:17"
},
"nodeType": "YulFunctionCall",
"src": "20900:18:17"
},
{
"arguments": [
{
"name": "tail_1",
"nodeType": "YulIdentifier",
"src": "20924:6:17"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "20932:9:17"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "20920:3:17"
},
"nodeType": "YulFunctionCall",
"src": "20920:22:17"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "20893:6:17"
},
"nodeType": "YulFunctionCall",
"src": "20893:50:17"
},
"nodeType": "YulExpressionStatement",
"src": "20893:50:17"
},
{
"nodeType": "YulAssignment",
"src": "20952:52:17",
"value": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "20989:6:17"
},
{
"name": "tail_1",
"nodeType": "YulIdentifier",
"src": "20997:6:17"
}
],
"functionName": {
"name": "abi_encode_array_uint256_dyn",
"nodeType": "YulIdentifier",
"src": "20960:28:17"
},
"nodeType": "YulFunctionCall",
"src": "20960:44:17"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "20952:4:17"
}
]
}
]
},
"name": "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "20735:9:17",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "20746:6:17",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "20754:6:17",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "20765:4:17",
"type": ""
}
],
"src": "20545:465:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "21189:170:17",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "21206:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "21217:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "21199:6:17"
},
"nodeType": "YulFunctionCall",
"src": "21199:21:17"
},
"nodeType": "YulExpressionStatement",
"src": "21199:21:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "21240:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "21251:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "21236:3:17"
},
"nodeType": "YulFunctionCall",
"src": "21236:18:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "21256:2:17",
"type": "",
"value": "20"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "21229:6:17"
},
"nodeType": "YulFunctionCall",
"src": "21229:30:17"
},
"nodeType": "YulExpressionStatement",
"src": "21229:30:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "21279:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "21290:2:17",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "21275:3:17"
},
"nodeType": "YulFunctionCall",
"src": "21275:18:17"
},
{
"hexValue": "5061757361626c653a206e6f7420706175736564",
"kind": "string",
"nodeType": "YulLiteral",
"src": "21295:22:17",
"type": "",
"value": "Pausable: not paused"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "21268:6:17"
},
"nodeType": "YulFunctionCall",
"src": "21268:50:17"
},
"nodeType": "YulExpressionStatement",
"src": "21268:50:17"
},
{
"nodeType": "YulAssignment",
"src": "21327:26:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "21339:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "21350:2:17",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "21335:3:17"
},
"nodeType": "YulFunctionCall",
"src": "21335:18:17"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "21327:4:17"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "21166:9:17",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "21180:4:17",
"type": ""
}
],
"src": "21015:344:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "21538:177:17",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "21555:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "21566:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "21548:6:17"
},
"nodeType": "YulFunctionCall",
"src": "21548:21:17"
},
"nodeType": "YulExpressionStatement",
"src": "21548:21:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "21589:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "21600:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "21585:3:17"
},
"nodeType": "YulFunctionCall",
"src": "21585:18:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "21605:2:17",
"type": "",
"value": "27"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "21578:6:17"
},
"nodeType": "YulFunctionCall",
"src": "21578:30:17"
},
"nodeType": "YulExpressionStatement",
"src": "21578:30:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "21628:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "21639:2:17",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "21624:3:17"
},
"nodeType": "YulFunctionCall",
"src": "21624:18:17"
},
{
"hexValue": "436f756e7465723a2064656372656d656e74206f766572666c6f77",
"kind": "string",
"nodeType": "YulLiteral",
"src": "21644:29:17",
"type": "",
"value": "Counter: decrement overflow"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "21617:6:17"
},
"nodeType": "YulFunctionCall",
"src": "21617:57:17"
},
"nodeType": "YulExpressionStatement",
"src": "21617:57:17"
},
{
"nodeType": "YulAssignment",
"src": "21683:26:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "21695:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "21706:2:17",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "21691:3:17"
},
"nodeType": "YulFunctionCall",
"src": "21691:18:17"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "21683:4:17"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "21515:9:17",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "21529:4:17",
"type": ""
}
],
"src": "21364:351:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "21894:231:17",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "21911:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "21922:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "21904:6:17"
},
"nodeType": "YulFunctionCall",
"src": "21904:21:17"
},
"nodeType": "YulExpressionStatement",
"src": "21904:21:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "21945:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "21956:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "21941:3:17"
},
"nodeType": "YulFunctionCall",
"src": "21941:18:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "21961:2:17",
"type": "",
"value": "41"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "21934:6:17"
},
"nodeType": "YulFunctionCall",
"src": "21934:30:17"
},
"nodeType": "YulExpressionStatement",
"src": "21934:30:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "21984:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "21995:2:17",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "21980:3:17"
},
"nodeType": "YulFunctionCall",
"src": "21980:18:17"
},
{
"hexValue": "455243313135353a2073657474696e6720617070726f76616c20737461747573",
"kind": "string",
"nodeType": "YulLiteral",
"src": "22000:34:17",
"type": "",
"value": "ERC1155: setting approval status"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "21973:6:17"
},
"nodeType": "YulFunctionCall",
"src": "21973:62:17"
},
"nodeType": "YulExpressionStatement",
"src": "21973:62:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "22055:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "22066:2:17",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "22051:3:17"
},
"nodeType": "YulFunctionCall",
"src": "22051:18:17"
},
{
"hexValue": "20666f722073656c66",
"kind": "string",
"nodeType": "YulLiteral",
"src": "22071:11:17",
"type": "",
"value": " for self"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "22044:6:17"
},
"nodeType": "YulFunctionCall",
"src": "22044:39:17"
},
"nodeType": "YulExpressionStatement",
"src": "22044:39:17"
},
{
"nodeType": "YulAssignment",
"src": "22092:27:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "22104:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "22115:3:17",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "22100:3:17"
},
"nodeType": "YulFunctionCall",
"src": "22100:19:17"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "22092:4:17"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "21871:9:17",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "21885:4:17",
"type": ""
}
],
"src": "21720:405:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "22304:181:17",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "22321:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "22332:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "22314:6:17"
},
"nodeType": "YulFunctionCall",
"src": "22314:21:17"
},
"nodeType": "YulExpressionStatement",
"src": "22314:21:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "22355:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "22366:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "22351:3:17"
},
"nodeType": "YulFunctionCall",
"src": "22351:18:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "22371:2:17",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "22344:6:17"
},
"nodeType": "YulFunctionCall",
"src": "22344:30:17"
},
"nodeType": "YulExpressionStatement",
"src": "22344:30:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "22394:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "22405:2:17",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "22390:3:17"
},
"nodeType": "YulFunctionCall",
"src": "22390:18:17"
},
{
"hexValue": "5265656e7472616e637947756172643a207265656e7472616e742063616c6c",
"kind": "string",
"nodeType": "YulLiteral",
"src": "22410:33:17",
"type": "",
"value": "ReentrancyGuard: reentrant call"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "22383:6:17"
},
"nodeType": "YulFunctionCall",
"src": "22383:61:17"
},
"nodeType": "YulExpressionStatement",
"src": "22383:61:17"
},
{
"nodeType": "YulAssignment",
"src": "22453:26:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "22465:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "22476:2:17",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "22461:3:17"
},
"nodeType": "YulFunctionCall",
"src": "22461:18:17"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "22453:4:17"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "22281:9:17",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "22295:4:17",
"type": ""
}
],
"src": "22130:355:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "22664:169:17",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "22681:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "22692:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "22674:6:17"
},
"nodeType": "YulFunctionCall",
"src": "22674:21:17"
},
"nodeType": "YulExpressionStatement",
"src": "22674:21:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "22715:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "22726:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "22711:3:17"
},
"nodeType": "YulFunctionCall",
"src": "22711:18:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "22731:2:17",
"type": "",
"value": "19"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "22704:6:17"
},
"nodeType": "YulFunctionCall",
"src": "22704:30:17"
},
"nodeType": "YulExpressionStatement",
"src": "22704:30:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "22754:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "22765:2:17",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "22750:3:17"
},
"nodeType": "YulFunctionCall",
"src": "22750:18:17"
},
{
"hexValue": "616d6f756e74203e206d617820616d6f756e74",
"kind": "string",
"nodeType": "YulLiteral",
"src": "22770:21:17",
"type": "",
"value": "amount > max amount"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "22743:6:17"
},
"nodeType": "YulFunctionCall",
"src": "22743:49:17"
},
"nodeType": "YulExpressionStatement",
"src": "22743:49:17"
},
{
"nodeType": "YulAssignment",
"src": "22801:26:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "22813:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "22824:2:17",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "22809:3:17"
},
"nodeType": "YulFunctionCall",
"src": "22809:18:17"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "22801:4:17"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_419651fe1c401e4153b20e9b96350fc94f339f9e471181d9df947ef58725b32c__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "22641:9:17",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "22655:4:17",
"type": ""
}
],
"src": "22490:343:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "23012:169:17",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "23029:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "23040:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "23022:6:17"
},
"nodeType": "YulFunctionCall",
"src": "23022:21:17"
},
"nodeType": "YulExpressionStatement",
"src": "23022:21:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "23063:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "23074:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "23059:3:17"
},
"nodeType": "YulFunctionCall",
"src": "23059:18:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "23079:2:17",
"type": "",
"value": "19"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "23052:6:17"
},
"nodeType": "YulFunctionCall",
"src": "23052:30:17"
},
"nodeType": "YulExpressionStatement",
"src": "23052:30:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "23102:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "23113:2:17",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "23098:3:17"
},
"nodeType": "YulFunctionCall",
"src": "23098:18:17"
},
{
"hexValue": "6e6f74206265747765656e2031302d31303021",
"kind": "string",
"nodeType": "YulLiteral",
"src": "23118:21:17",
"type": "",
"value": "not between 10-100!"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "23091:6:17"
},
"nodeType": "YulFunctionCall",
"src": "23091:49:17"
},
"nodeType": "YulExpressionStatement",
"src": "23091:49:17"
},
{
"nodeType": "YulAssignment",
"src": "23149:26:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "23161:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "23172:2:17",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "23157:3:17"
},
"nodeType": "YulFunctionCall",
"src": "23157:18:17"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "23149:4:17"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_8b7cc43a4c28bbb0626114fb0af8d35a42425294ee4e9cbba24bcdbfc925ab65__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "22989:9:17",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "23003:4:17",
"type": ""
}
],
"src": "22838:343:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "23360:170:17",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "23377:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "23388:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "23370:6:17"
},
"nodeType": "YulFunctionCall",
"src": "23370:21:17"
},
"nodeType": "YulExpressionStatement",
"src": "23370:21:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "23411:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "23422:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "23407:3:17"
},
"nodeType": "YulFunctionCall",
"src": "23407:18:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "23427:2:17",
"type": "",
"value": "20"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "23400:6:17"
},
"nodeType": "YulFunctionCall",
"src": "23400:30:17"
},
"nodeType": "YulExpressionStatement",
"src": "23400:30:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "23450:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "23461:2:17",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "23446:3:17"
},
"nodeType": "YulFunctionCall",
"src": "23446:18:17"
},
{
"hexValue": "496d61676520616c726561647920657869737473",
"kind": "string",
"nodeType": "YulLiteral",
"src": "23466:22:17",
"type": "",
"value": "Image already exists"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "23439:6:17"
},
"nodeType": "YulFunctionCall",
"src": "23439:50:17"
},
"nodeType": "YulExpressionStatement",
"src": "23439:50:17"
},
{
"nodeType": "YulAssignment",
"src": "23498:26:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "23510:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "23521:2:17",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "23506:3:17"
},
"nodeType": "YulFunctionCall",
"src": "23506:18:17"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "23498:4:17"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_ce8e87afbaedc350e403be878ca49a2a655a898d8e978961de696022327b6952__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "23337:9:17",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "23351:4:17",
"type": ""
}
],
"src": "23186:344:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "23587:116:17",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "23646:22:17",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "23648:16:17"
},
"nodeType": "YulFunctionCall",
"src": "23648:18:17"
},
"nodeType": "YulExpressionStatement",
"src": "23648:18:17"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "23618:1:17"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "23611:6:17"
},
"nodeType": "YulFunctionCall",
"src": "23611:9:17"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "23604:6:17"
},
"nodeType": "YulFunctionCall",
"src": "23604:17:17"
},
{
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "23626:1:17"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "23637:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "23633:3:17"
},
"nodeType": "YulFunctionCall",
"src": "23633:6:17"
},
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "23641:1:17"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "23629:3:17"
},
"nodeType": "YulFunctionCall",
"src": "23629:14:17"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "23623:2:17"
},
"nodeType": "YulFunctionCall",
"src": "23623:21:17"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "23600:3:17"
},
"nodeType": "YulFunctionCall",
"src": "23600:45:17"
},
"nodeType": "YulIf",
"src": "23597:71:17"
},
{
"nodeType": "YulAssignment",
"src": "23677:20:17",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "23692:1:17"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "23695:1:17"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "23688:3:17"
},
"nodeType": "YulFunctionCall",
"src": "23688:9:17"
},
"variableNames": [
{
"name": "product",
"nodeType": "YulIdentifier",
"src": "23677:7:17"
}
]
}
]
},
"name": "checked_mul_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "23566:1:17",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "23569:1:17",
"type": ""
}
],
"returnVariables": [
{
"name": "product",
"nodeType": "YulTypedName",
"src": "23575:7:17",
"type": ""
}
],
"src": "23535:168:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "23754:171:17",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "23785:111:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "23806:1:17",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "23813:3:17",
"type": "",
"value": "224"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "23818:10:17",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "23809:3:17"
},
"nodeType": "YulFunctionCall",
"src": "23809:20:17"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "23799:6:17"
},
"nodeType": "YulFunctionCall",
"src": "23799:31:17"
},
"nodeType": "YulExpressionStatement",
"src": "23799:31:17"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "23850:1:17",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "23853:4:17",
"type": "",
"value": "0x12"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "23843:6:17"
},
"nodeType": "YulFunctionCall",
"src": "23843:15:17"
},
"nodeType": "YulExpressionStatement",
"src": "23843:15:17"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "23878:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "23881:4:17",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "23871:6:17"
},
"nodeType": "YulFunctionCall",
"src": "23871:15:17"
},
"nodeType": "YulExpressionStatement",
"src": "23871:15:17"
}
]
},
"condition": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "23774:1:17"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "23767:6:17"
},
"nodeType": "YulFunctionCall",
"src": "23767:9:17"
},
"nodeType": "YulIf",
"src": "23764:132:17"
},
{
"nodeType": "YulAssignment",
"src": "23905:14:17",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "23914:1:17"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "23917:1:17"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "23910:3:17"
},
"nodeType": "YulFunctionCall",
"src": "23910:9:17"
},
"variableNames": [
{
"name": "r",
"nodeType": "YulIdentifier",
"src": "23905:1:17"
}
]
}
]
},
"name": "checked_div_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "23739:1:17",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "23742:1:17",
"type": ""
}
],
"returnVariables": [
{
"name": "r",
"nodeType": "YulTypedName",
"src": "23748:1:17",
"type": ""
}
],
"src": "23708:217:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "23979:76:17",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "24001:22:17",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "24003:16:17"
},
"nodeType": "YulFunctionCall",
"src": "24003:18:17"
},
"nodeType": "YulExpressionStatement",
"src": "24003:18:17"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "23995:1:17"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "23998:1:17"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "23992:2:17"
},
"nodeType": "YulFunctionCall",
"src": "23992:8:17"
},
"nodeType": "YulIf",
"src": "23989:34:17"
},
{
"nodeType": "YulAssignment",
"src": "24032:17:17",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "24044:1:17"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "24047:1:17"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "24040:3:17"
},
"nodeType": "YulFunctionCall",
"src": "24040:9:17"
},
"variableNames": [
{
"name": "diff",
"nodeType": "YulIdentifier",
"src": "24032:4:17"
}
]
}
]
},
"name": "checked_sub_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "23961:1:17",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "23964:1:17",
"type": ""
}
],
"returnVariables": [
{
"name": "diff",
"nodeType": "YulTypedName",
"src": "23970:4:17",
"type": ""
}
],
"src": "23930:125:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "24301:320:17",
"statements": [
{
"nodeType": "YulAssignment",
"src": "24311:27:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "24323:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "24334:3:17",
"type": "",
"value": "192"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "24319:3:17"
},
"nodeType": "YulFunctionCall",
"src": "24319:19:17"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "24311:4:17"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "24354:9:17"
},
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "24369:6:17"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "24385:3:17",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "24390:1:17",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "24381:3:17"
},
"nodeType": "YulFunctionCall",
"src": "24381:11:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "24394:1:17",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "24377:3:17"
},
"nodeType": "YulFunctionCall",
"src": "24377:19:17"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "24365:3:17"
},
"nodeType": "YulFunctionCall",
"src": "24365:32:17"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "24347:6:17"
},
"nodeType": "YulFunctionCall",
"src": "24347:51:17"
},
"nodeType": "YulExpressionStatement",
"src": "24347:51:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "24418:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "24429:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "24414:3:17"
},
"nodeType": "YulFunctionCall",
"src": "24414:18:17"
},
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "24434:6:17"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "24407:6:17"
},
"nodeType": "YulFunctionCall",
"src": "24407:34:17"
},
"nodeType": "YulExpressionStatement",
"src": "24407:34:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "24461:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "24472:2:17",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "24457:3:17"
},
"nodeType": "YulFunctionCall",
"src": "24457:18:17"
},
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "24477:6:17"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "24450:6:17"
},
"nodeType": "YulFunctionCall",
"src": "24450:34:17"
},
"nodeType": "YulExpressionStatement",
"src": "24450:34:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "24504:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "24515:2:17",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "24500:3:17"
},
"nodeType": "YulFunctionCall",
"src": "24500:18:17"
},
{
"name": "value3",
"nodeType": "YulIdentifier",
"src": "24520:6:17"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "24493:6:17"
},
"nodeType": "YulFunctionCall",
"src": "24493:34:17"
},
"nodeType": "YulExpressionStatement",
"src": "24493:34:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "24547:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "24558:3:17",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "24543:3:17"
},
"nodeType": "YulFunctionCall",
"src": "24543:19:17"
},
{
"name": "value4",
"nodeType": "YulIdentifier",
"src": "24564:6:17"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "24536:6:17"
},
"nodeType": "YulFunctionCall",
"src": "24536:35:17"
},
"nodeType": "YulExpressionStatement",
"src": "24536:35:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "24591:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "24602:3:17",
"type": "",
"value": "160"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "24587:3:17"
},
"nodeType": "YulFunctionCall",
"src": "24587:19:17"
},
{
"name": "value5",
"nodeType": "YulIdentifier",
"src": "24608:6:17"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "24580:6:17"
},
"nodeType": "YulFunctionCall",
"src": "24580:35:17"
},
"nodeType": "YulExpressionStatement",
"src": "24580:35:17"
}
]
},
"name": "abi_encode_tuple_t_address_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "24230:9:17",
"type": ""
},
{
"name": "value5",
"nodeType": "YulTypedName",
"src": "24241:6:17",
"type": ""
},
{
"name": "value4",
"nodeType": "YulTypedName",
"src": "24249:6:17",
"type": ""
},
{
"name": "value3",
"nodeType": "YulTypedName",
"src": "24257:6:17",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "24265:6:17",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "24273:6:17",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "24281:6:17",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "24292:4:17",
"type": ""
}
],
"src": "24060:561:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "24755:119:17",
"statements": [
{
"nodeType": "YulAssignment",
"src": "24765:26:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "24777:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "24788:2:17",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "24773:3:17"
},
"nodeType": "YulFunctionCall",
"src": "24773:18:17"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "24765:4:17"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "24807:9:17"
},
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "24818:6:17"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "24800:6:17"
},
"nodeType": "YulFunctionCall",
"src": "24800:25:17"
},
"nodeType": "YulExpressionStatement",
"src": "24800:25:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "24845:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "24856:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "24841:3:17"
},
"nodeType": "YulFunctionCall",
"src": "24841:18:17"
},
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "24861:6:17"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "24834:6:17"
},
"nodeType": "YulFunctionCall",
"src": "24834:34:17"
},
"nodeType": "YulExpressionStatement",
"src": "24834:34:17"
}
]
},
"name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "24716:9:17",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "24727:6:17",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "24735:6:17",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "24746:4:17",
"type": ""
}
],
"src": "24626:248:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "24926:89:17",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "24953:22:17",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "24955:16:17"
},
"nodeType": "YulFunctionCall",
"src": "24955:18:17"
},
"nodeType": "YulExpressionStatement",
"src": "24955:18:17"
}
]
},
"condition": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "24946:5:17"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "24939:6:17"
},
"nodeType": "YulFunctionCall",
"src": "24939:13:17"
},
"nodeType": "YulIf",
"src": "24936:39:17"
},
{
"nodeType": "YulAssignment",
"src": "24984:25:17",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "24995:5:17"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "25006:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "25002:3:17"
},
"nodeType": "YulFunctionCall",
"src": "25002:6:17"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "24991:3:17"
},
"nodeType": "YulFunctionCall",
"src": "24991:18:17"
},
"variableNames": [
{
"name": "ret",
"nodeType": "YulIdentifier",
"src": "24984:3:17"
}
]
}
]
},
"name": "decrement_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "24908:5:17",
"type": ""
}
],
"returnVariables": [
{
"name": "ret",
"nodeType": "YulTypedName",
"src": "24918:3:17",
"type": ""
}
],
"src": "24879:136:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "25194:182:17",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "25211:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "25222:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "25204:6:17"
},
"nodeType": "YulFunctionCall",
"src": "25204:21:17"
},
"nodeType": "YulExpressionStatement",
"src": "25204:21:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "25245:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "25256:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "25241:3:17"
},
"nodeType": "YulFunctionCall",
"src": "25241:18:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "25261:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "25234:6:17"
},
"nodeType": "YulFunctionCall",
"src": "25234:30:17"
},
"nodeType": "YulExpressionStatement",
"src": "25234:30:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "25284:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "25295:2:17",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "25280:3:17"
},
"nodeType": "YulFunctionCall",
"src": "25280:18:17"
},
{
"hexValue": "537472696e67733a20686578206c656e67746820696e73756666696369656e74",
"kind": "string",
"nodeType": "YulLiteral",
"src": "25300:34:17",
"type": "",
"value": "Strings: hex length insufficient"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "25273:6:17"
},
"nodeType": "YulFunctionCall",
"src": "25273:62:17"
},
"nodeType": "YulExpressionStatement",
"src": "25273:62:17"
},
{
"nodeType": "YulAssignment",
"src": "25344:26:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "25356:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "25367:2:17",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "25352:3:17"
},
"nodeType": "YulFunctionCall",
"src": "25352:18:17"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "25344:4:17"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "25171:9:17",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "25185:4:17",
"type": ""
}
],
"src": "25020:356:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "25712:496:17",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "25722:29:17",
"value": {
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "25740:3:17",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "25745:1:17",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "25736:3:17"
},
"nodeType": "YulFunctionCall",
"src": "25736:11:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "25749:1:17",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "25732:3:17"
},
"nodeType": "YulFunctionCall",
"src": "25732:19:17"
},
"variables": [
{
"name": "_1",
"nodeType": "YulTypedName",
"src": "25726:2:17",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "25767:9:17"
},
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "25782:6:17"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "25790:2:17"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "25778:3:17"
},
"nodeType": "YulFunctionCall",
"src": "25778:15:17"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "25760:6:17"
},
"nodeType": "YulFunctionCall",
"src": "25760:34:17"
},
"nodeType": "YulExpressionStatement",
"src": "25760:34:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "25814:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "25825:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "25810:3:17"
},
"nodeType": "YulFunctionCall",
"src": "25810:18:17"
},
{
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "25834:6:17"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "25842:2:17"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "25830:3:17"
},
"nodeType": "YulFunctionCall",
"src": "25830:15:17"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "25803:6:17"
},
"nodeType": "YulFunctionCall",
"src": "25803:43:17"
},
"nodeType": "YulExpressionStatement",
"src": "25803:43:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "25866:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "25877:2:17",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "25862:3:17"
},
"nodeType": "YulFunctionCall",
"src": "25862:18:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "25882:3:17",
"type": "",
"value": "160"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "25855:6:17"
},
"nodeType": "YulFunctionCall",
"src": "25855:31:17"
},
"nodeType": "YulExpressionStatement",
"src": "25855:31:17"
},
{
"nodeType": "YulVariableDeclaration",
"src": "25895:71:17",
"value": {
"arguments": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "25938:6:17"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "25950:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "25961:3:17",
"type": "",
"value": "160"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "25946:3:17"
},
"nodeType": "YulFunctionCall",
"src": "25946:19:17"
}
],
"functionName": {
"name": "abi_encode_array_uint256_dyn",
"nodeType": "YulIdentifier",
"src": "25909:28:17"
},
"nodeType": "YulFunctionCall",
"src": "25909:57:17"
},
"variables": [
{
"name": "tail_1",
"nodeType": "YulTypedName",
"src": "25899:6:17",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "25986:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "25997:2:17",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "25982:3:17"
},
"nodeType": "YulFunctionCall",
"src": "25982:18:17"
},
{
"arguments": [
{
"name": "tail_1",
"nodeType": "YulIdentifier",
"src": "26006:6:17"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "26014:9:17"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "26002:3:17"
},
"nodeType": "YulFunctionCall",
"src": "26002:22:17"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "25975:6:17"
},
"nodeType": "YulFunctionCall",
"src": "25975:50:17"
},
"nodeType": "YulExpressionStatement",
"src": "25975:50:17"
},
{
"nodeType": "YulVariableDeclaration",
"src": "26034:58:17",
"value": {
"arguments": [
{
"name": "value3",
"nodeType": "YulIdentifier",
"src": "26077:6:17"
},
{
"name": "tail_1",
"nodeType": "YulIdentifier",
"src": "26085:6:17"
}
],
"functionName": {
"name": "abi_encode_array_uint256_dyn",
"nodeType": "YulIdentifier",
"src": "26048:28:17"
},
"nodeType": "YulFunctionCall",
"src": "26048:44:17"
},
"variables": [
{
"name": "tail_2",
"nodeType": "YulTypedName",
"src": "26038:6:17",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "26112:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "26123:3:17",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "26108:3:17"
},
"nodeType": "YulFunctionCall",
"src": "26108:19:17"
},
{
"arguments": [
{
"name": "tail_2",
"nodeType": "YulIdentifier",
"src": "26133:6:17"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "26141:9:17"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "26129:3:17"
},
"nodeType": "YulFunctionCall",
"src": "26129:22:17"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "26101:6:17"
},
"nodeType": "YulFunctionCall",
"src": "26101:51:17"
},
"nodeType": "YulExpressionStatement",
"src": "26101:51:17"
},
{
"nodeType": "YulAssignment",
"src": "26161:41:17",
"value": {
"arguments": [
{
"name": "value4",
"nodeType": "YulIdentifier",
"src": "26187:6:17"
},
{
"name": "tail_2",
"nodeType": "YulIdentifier",
"src": "26195:6:17"
}
],
"functionName": {
"name": "abi_encode_string",
"nodeType": "YulIdentifier",
"src": "26169:17:17"
},
"nodeType": "YulFunctionCall",
"src": "26169:33:17"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "26161:4:17"
}
]
}
]
},
"name": "abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "25649:9:17",
"type": ""
},
{
"name": "value4",
"nodeType": "YulTypedName",
"src": "25660:6:17",
"type": ""
},
{
"name": "value3",
"nodeType": "YulTypedName",
"src": "25668:6:17",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "25676:6:17",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "25684:6:17",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "25692:6:17",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "25703:4:17",
"type": ""
}
],
"src": "25381:827:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "26293:169:17",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "26339:16:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "26348:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "26351:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "26341:6:17"
},
"nodeType": "YulFunctionCall",
"src": "26341:12:17"
},
"nodeType": "YulExpressionStatement",
"src": "26341:12:17"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "26314:7:17"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "26323:9:17"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "26310:3:17"
},
"nodeType": "YulFunctionCall",
"src": "26310:23:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "26335:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "26306:3:17"
},
"nodeType": "YulFunctionCall",
"src": "26306:32:17"
},
"nodeType": "YulIf",
"src": "26303:52:17"
},
{
"nodeType": "YulVariableDeclaration",
"src": "26364:29:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "26383:9:17"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "26377:5:17"
},
"nodeType": "YulFunctionCall",
"src": "26377:16:17"
},
"variables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "26368:5:17",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "26426:5:17"
}
],
"functionName": {
"name": "validator_revert_bytes4",
"nodeType": "YulIdentifier",
"src": "26402:23:17"
},
"nodeType": "YulFunctionCall",
"src": "26402:30:17"
},
"nodeType": "YulExpressionStatement",
"src": "26402:30:17"
},
{
"nodeType": "YulAssignment",
"src": "26441:15:17",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "26451:5:17"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "26441:6:17"
}
]
}
]
},
"name": "abi_decode_tuple_t_bytes4_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "26259:9:17",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "26270:7:17",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "26282:6:17",
"type": ""
}
],
"src": "26213:249:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "26510:136:17",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "26555:85:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "26584:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "26587:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "26590:1:17",
"type": "",
"value": "4"
}
],
"functionName": {
"name": "returndatacopy",
"nodeType": "YulIdentifier",
"src": "26569:14:17"
},
"nodeType": "YulFunctionCall",
"src": "26569:23:17"
},
"nodeType": "YulExpressionStatement",
"src": "26569:23:17"
},
{
"nodeType": "YulAssignment",
"src": "26605:25:17",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "26616:3:17",
"type": "",
"value": "224"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "26627:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "26621:5:17"
},
"nodeType": "YulFunctionCall",
"src": "26621:8:17"
}
],
"functionName": {
"name": "shr",
"nodeType": "YulIdentifier",
"src": "26612:3:17"
},
"nodeType": "YulFunctionCall",
"src": "26612:18:17"
},
"variableNames": [
{
"name": "sig",
"nodeType": "YulIdentifier",
"src": "26605:3:17"
}
]
}
]
},
"condition": {
"arguments": [
{
"arguments": [],
"functionName": {
"name": "returndatasize",
"nodeType": "YulIdentifier",
"src": "26526:14:17"
},
"nodeType": "YulFunctionCall",
"src": "26526:16:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "26544:1:17",
"type": "",
"value": "3"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "26523:2:17"
},
"nodeType": "YulFunctionCall",
"src": "26523:23:17"
},
"nodeType": "YulIf",
"src": "26520:120:17"
}
]
},
"name": "return_data_selector",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "sig",
"nodeType": "YulTypedName",
"src": "26502:3:17",
"type": ""
}
],
"src": "26467:179:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "26698:624:17",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "26738:9:17",
"statements": [
{
"nodeType": "YulLeave",
"src": "26740:5:17"
}
]
},
"condition": {
"arguments": [
{
"arguments": [],
"functionName": {
"name": "returndatasize",
"nodeType": "YulIdentifier",
"src": "26714:14:17"
},
"nodeType": "YulFunctionCall",
"src": "26714:16:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "26732:4:17",
"type": "",
"value": "0x44"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "26711:2:17"
},
"nodeType": "YulFunctionCall",
"src": "26711:26:17"
},
"nodeType": "YulIf",
"src": "26708:39:17"
},
{
"nodeType": "YulVariableDeclaration",
"src": "26756:21:17",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "26774:2:17",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "26768:5:17"
},
"nodeType": "YulFunctionCall",
"src": "26768:9:17"
},
"variables": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "26760:4:17",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "26786:16:17",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "26800:1:17",
"type": "",
"value": "3"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "26796:3:17"
},
"nodeType": "YulFunctionCall",
"src": "26796:6:17"
},
"variables": [
{
"name": "_1",
"nodeType": "YulTypedName",
"src": "26790:2:17",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "26826:4:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "26832:1:17",
"type": "",
"value": "4"
},
{
"arguments": [
{
"arguments": [],
"functionName": {
"name": "returndatasize",
"nodeType": "YulIdentifier",
"src": "26839:14:17"
},
"nodeType": "YulFunctionCall",
"src": "26839:16:17"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "26857:2:17"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "26835:3:17"
},
"nodeType": "YulFunctionCall",
"src": "26835:25:17"
}
],
"functionName": {
"name": "returndatacopy",
"nodeType": "YulIdentifier",
"src": "26811:14:17"
},
"nodeType": "YulFunctionCall",
"src": "26811:50:17"
},
"nodeType": "YulExpressionStatement",
"src": "26811:50:17"
},
{
"nodeType": "YulVariableDeclaration",
"src": "26870:25:17",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "26890:4:17"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "26884:5:17"
},
"nodeType": "YulFunctionCall",
"src": "26884:11:17"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "26874:6:17",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "26904:26:17",
"value": {
"arguments": [],
"functionName": {
"name": "returndatasize",
"nodeType": "YulIdentifier",
"src": "26914:14:17"
},
"nodeType": "YulFunctionCall",
"src": "26914:16:17"
},
"variables": [
{
"name": "_2",
"nodeType": "YulTypedName",
"src": "26908:2:17",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "26939:28:17",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "26949:18:17",
"type": "",
"value": "0xffffffffffffffff"
},
"variables": [
{
"name": "_3",
"nodeType": "YulTypedName",
"src": "26943:2:17",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "27025:9:17",
"statements": [
{
"nodeType": "YulLeave",
"src": "27027:5:17"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "26985:6:17"
},
{
"name": "_3",
"nodeType": "YulIdentifier",
"src": "26993:2:17"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "26982:2:17"
},
"nodeType": "YulFunctionCall",
"src": "26982:14:17"
},
{
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "27005:6:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "27013:4:17",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "27001:3:17"
},
"nodeType": "YulFunctionCall",
"src": "27001:17:17"
},
{
"name": "_2",
"nodeType": "YulIdentifier",
"src": "27020:2:17"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "26998:2:17"
},
"nodeType": "YulFunctionCall",
"src": "26998:25:17"
}
],
"functionName": {
"name": "or",
"nodeType": "YulIdentifier",
"src": "26979:2:17"
},
"nodeType": "YulFunctionCall",
"src": "26979:45:17"
},
"nodeType": "YulIf",
"src": "26976:58:17"
},
{
"nodeType": "YulVariableDeclaration",
"src": "27043:28:17",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "27058:4:17"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "27064:6:17"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "27054:3:17"
},
"nodeType": "YulFunctionCall",
"src": "27054:17:17"
},
"variables": [
{
"name": "msg",
"nodeType": "YulTypedName",
"src": "27047:3:17",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "27080:24:17",
"value": {
"arguments": [
{
"name": "msg",
"nodeType": "YulIdentifier",
"src": "27100:3:17"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "27094:5:17"
},
"nodeType": "YulFunctionCall",
"src": "27094:10:17"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "27084:6:17",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "27131:9:17",
"statements": [
{
"nodeType": "YulLeave",
"src": "27133:5:17"
}
]
},
"condition": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "27119:6:17"
},
{
"name": "_3",
"nodeType": "YulIdentifier",
"src": "27127:2:17"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "27116:2:17"
},
"nodeType": "YulFunctionCall",
"src": "27116:14:17"
},
"nodeType": "YulIf",
"src": "27113:27:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "27222:9:17",
"statements": [
{
"nodeType": "YulLeave",
"src": "27224:5:17"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "msg",
"nodeType": "YulIdentifier",
"src": "27163:3:17"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "27168:6:17"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "27159:3:17"
},
"nodeType": "YulFunctionCall",
"src": "27159:16:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "27177:4:17",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "27155:3:17"
},
"nodeType": "YulFunctionCall",
"src": "27155:27:17"
},
{
"arguments": [
{
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "27192:4:17"
},
{
"arguments": [],
"functionName": {
"name": "returndatasize",
"nodeType": "YulIdentifier",
"src": "27198:14:17"
},
"nodeType": "YulFunctionCall",
"src": "27198:16:17"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "27188:3:17"
},
"nodeType": "YulFunctionCall",
"src": "27188:27:17"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "27217:2:17"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "27184:3:17"
},
"nodeType": "YulFunctionCall",
"src": "27184:36:17"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "27152:2:17"
},
"nodeType": "YulFunctionCall",
"src": "27152:69:17"
},
"nodeType": "YulIf",
"src": "27149:82:17"
},
{
"expression": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "27260:4:17"
},
{
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "27274:6:17"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "27282:6:17"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "27270:3:17"
},
"nodeType": "YulFunctionCall",
"src": "27270:19:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "27291:4:17",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "27266:3:17"
},
"nodeType": "YulFunctionCall",
"src": "27266:30:17"
}
],
"functionName": {
"name": "finalize_allocation",
"nodeType": "YulIdentifier",
"src": "27240:19:17"
},
"nodeType": "YulFunctionCall",
"src": "27240:57:17"
},
"nodeType": "YulExpressionStatement",
"src": "27240:57:17"
},
{
"nodeType": "YulAssignment",
"src": "27306:10:17",
"value": {
"name": "msg",
"nodeType": "YulIdentifier",
"src": "27313:3:17"
},
"variableNames": [
{
"name": "ret",
"nodeType": "YulIdentifier",
"src": "27306:3:17"
}
]
}
]
},
"name": "try_decode_error_message",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "ret",
"nodeType": "YulTypedName",
"src": "26690:3:17",
"type": ""
}
],
"src": "26651:671:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "27501:242:17",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "27518:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "27529:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "27511:6:17"
},
"nodeType": "YulFunctionCall",
"src": "27511:21:17"
},
"nodeType": "YulExpressionStatement",
"src": "27511:21:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "27552:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "27563:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "27548:3:17"
},
"nodeType": "YulFunctionCall",
"src": "27548:18:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "27568:2:17",
"type": "",
"value": "52"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "27541:6:17"
},
"nodeType": "YulFunctionCall",
"src": "27541:30:17"
},
"nodeType": "YulExpressionStatement",
"src": "27541:30:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "27591:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "27602:2:17",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "27587:3:17"
},
"nodeType": "YulFunctionCall",
"src": "27587:18:17"
},
{
"hexValue": "455243313135353a207472616e7366657220746f206e6f6e2045524331313535",
"kind": "string",
"nodeType": "YulLiteral",
"src": "27607:34:17",
"type": "",
"value": "ERC1155: transfer to non ERC1155"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "27580:6:17"
},
"nodeType": "YulFunctionCall",
"src": "27580:62:17"
},
"nodeType": "YulExpressionStatement",
"src": "27580:62:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "27662:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "27673:2:17",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "27658:3:17"
},
"nodeType": "YulFunctionCall",
"src": "27658:18:17"
},
{
"hexValue": "526563656976657220696d706c656d656e746572",
"kind": "string",
"nodeType": "YulLiteral",
"src": "27678:22:17",
"type": "",
"value": "Receiver implementer"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "27651:6:17"
},
"nodeType": "YulFunctionCall",
"src": "27651:50:17"
},
"nodeType": "YulExpressionStatement",
"src": "27651:50:17"
},
{
"nodeType": "YulAssignment",
"src": "27710:27:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "27722:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "27733:3:17",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "27718:3:17"
},
"nodeType": "YulFunctionCall",
"src": "27718:19:17"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "27710:4:17"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_00aa752fb1526000e5241602affc3d70ef506da48a27ea57140102b439e655ed__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "27478:9:17",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "27492:4:17",
"type": ""
}
],
"src": "27327:416:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "27922:230:17",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "27939:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "27950:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "27932:6:17"
},
"nodeType": "YulFunctionCall",
"src": "27932:21:17"
},
"nodeType": "YulExpressionStatement",
"src": "27932:21:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "27973:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "27984:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "27969:3:17"
},
"nodeType": "YulFunctionCall",
"src": "27969:18:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "27989:2:17",
"type": "",
"value": "40"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "27962:6:17"
},
"nodeType": "YulFunctionCall",
"src": "27962:30:17"
},
"nodeType": "YulExpressionStatement",
"src": "27962:30:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "28012:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "28023:2:17",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "28008:3:17"
},
"nodeType": "YulFunctionCall",
"src": "28008:18:17"
},
{
"hexValue": "455243313135353a204552433131353552656365697665722072656a65637465",
"kind": "string",
"nodeType": "YulLiteral",
"src": "28028:34:17",
"type": "",
"value": "ERC1155: ERC1155Receiver rejecte"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "28001:6:17"
},
"nodeType": "YulFunctionCall",
"src": "28001:62:17"
},
"nodeType": "YulExpressionStatement",
"src": "28001:62:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "28083:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "28094:2:17",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "28079:3:17"
},
"nodeType": "YulFunctionCall",
"src": "28079:18:17"
},
{
"hexValue": "6420746f6b656e73",
"kind": "string",
"nodeType": "YulLiteral",
"src": "28099:10:17",
"type": "",
"value": "d tokens"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "28072:6:17"
},
"nodeType": "YulFunctionCall",
"src": "28072:38:17"
},
"nodeType": "YulExpressionStatement",
"src": "28072:38:17"
},
{
"nodeType": "YulAssignment",
"src": "28119:27:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "28131:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "28142:3:17",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "28127:3:17"
},
"nodeType": "YulFunctionCall",
"src": "28127:19:17"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "28119:4:17"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "27899:9:17",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "27913:4:17",
"type": ""
}
],
"src": "27748:404:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "28331:223:17",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "28348:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "28359:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "28341:6:17"
},
"nodeType": "YulFunctionCall",
"src": "28341:21:17"
},
"nodeType": "YulExpressionStatement",
"src": "28341:21:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "28382:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "28393:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "28378:3:17"
},
"nodeType": "YulFunctionCall",
"src": "28378:18:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "28398:2:17",
"type": "",
"value": "33"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "28371:6:17"
},
"nodeType": "YulFunctionCall",
"src": "28371:30:17"
},
"nodeType": "YulExpressionStatement",
"src": "28371:30:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "28421:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "28432:2:17",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "28417:3:17"
},
"nodeType": "YulFunctionCall",
"src": "28417:18:17"
},
{
"hexValue": "455243313135353a206d696e7420746f20746865207a65726f20616464726573",
"kind": "string",
"nodeType": "YulLiteral",
"src": "28437:34:17",
"type": "",
"value": "ERC1155: mint to the zero addres"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "28410:6:17"
},
"nodeType": "YulFunctionCall",
"src": "28410:62:17"
},
"nodeType": "YulExpressionStatement",
"src": "28410:62:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "28492:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "28503:2:17",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "28488:3:17"
},
"nodeType": "YulFunctionCall",
"src": "28488:18:17"
},
{
"hexValue": "73",
"kind": "string",
"nodeType": "YulLiteral",
"src": "28508:3:17",
"type": "",
"value": "s"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "28481:6:17"
},
"nodeType": "YulFunctionCall",
"src": "28481:31:17"
},
"nodeType": "YulExpressionStatement",
"src": "28481:31:17"
},
{
"nodeType": "YulAssignment",
"src": "28521:27:17",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "28533:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "28544:3:17",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "28529:3:17"
},
"nodeType": "YulFunctionCall",
"src": "28529:19:17"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "28521:4:17"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_ebf031a1b7ee1d0b3a7752b450a3268e8b6c334561b48c1c0ba0f5bac05749f2__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "28308:9:17",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "28322:4:17",
"type": ""
}
],
"src": "28157:397:17"
},
{
"body": {
"nodeType": "YulBlock",
"src": "28790:330:17",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "28800:29:17",
"value": {
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "28818:3:17",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "28823:1:17",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "28814:3:17"
},
"nodeType": "YulFunctionCall",
"src": "28814:11:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "28827:1:17",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "28810:3:17"
},
"nodeType": "YulFunctionCall",
"src": "28810:19:17"
},
"variables": [
{
"name": "_1",
"nodeType": "YulTypedName",
"src": "28804:2:17",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "28845:9:17"
},
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "28860:6:17"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "28868:2:17"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "28856:3:17"
},
"nodeType": "YulFunctionCall",
"src": "28856:15:17"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "28838:6:17"
},
"nodeType": "YulFunctionCall",
"src": "28838:34:17"
},
"nodeType": "YulExpressionStatement",
"src": "28838:34:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "28892:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "28903:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "28888:3:17"
},
"nodeType": "YulFunctionCall",
"src": "28888:18:17"
},
{
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "28912:6:17"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "28920:2:17"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "28908:3:17"
},
"nodeType": "YulFunctionCall",
"src": "28908:15:17"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "28881:6:17"
},
"nodeType": "YulFunctionCall",
"src": "28881:43:17"
},
"nodeType": "YulExpressionStatement",
"src": "28881:43:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "28944:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "28955:2:17",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "28940:3:17"
},
"nodeType": "YulFunctionCall",
"src": "28940:18:17"
},
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "28960:6:17"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "28933:6:17"
},
"nodeType": "YulFunctionCall",
"src": "28933:34:17"
},
"nodeType": "YulExpressionStatement",
"src": "28933:34:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "28987:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "28998:2:17",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "28983:3:17"
},
"nodeType": "YulFunctionCall",
"src": "28983:18:17"
},
{
"name": "value3",
"nodeType": "YulIdentifier",
"src": "29003:6:17"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "28976:6:17"
},
"nodeType": "YulFunctionCall",
"src": "28976:34:17"
},
"nodeType": "YulExpressionStatement",
"src": "28976:34:17"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "29030:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "29041:3:17",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "29026:3:17"
},
"nodeType": "YulFunctionCall",
"src": "29026:19:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "29047:3:17",
"type": "",
"value": "160"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "29019:6:17"
},
"nodeType": "YulFunctionCall",
"src": "29019:32:17"
},
"nodeType": "YulExpressionStatement",
"src": "29019:32:17"
},
{
"nodeType": "YulAssignment",
"src": "29060:54:17",
"value": {
"arguments": [
{
"name": "value4",
"nodeType": "YulIdentifier",
"src": "29086:6:17"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "29098:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "29109:3:17",
"type": "",
"value": "160"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "29094:3:17"
},
"nodeType": "YulFunctionCall",
"src": "29094:19:17"
}
],
"functionName": {
"name": "abi_encode_string",
"nodeType": "YulIdentifier",
"src": "29068:17:17"
},
"nodeType": "YulFunctionCall",
"src": "29068:46:17"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "29060:4:17"
}
]
}
]
},
"name": "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "28727:9:17",
"type": ""
},
{
"name": "value4",
"nodeType": "YulTypedName",
"src": "28738:6:17",
"type": ""
},
{
"name": "value3",
"nodeType": "YulTypedName",
"src": "28746:6:17",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "28754:6:17",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "28762:6:17",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "28770:6:17",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "28781:4:17",
"type": ""
}
],
"src": "28559:561:17"
}
]
},
"contents": "{\n { }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function validator_revert_bytes4(value)\n {\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_bytes4(value)\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function copy_memory_to_memory(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n if gt(i, length) { mstore(add(dst, length), 0) }\n }\n function abi_encode_string(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_string(value0, add(headStart, 32))\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_array$_t_uint256_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let offset := calldataload(headStart)\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let length := calldataload(_2)\n if gt(length, _1) { revert(0, 0) }\n if gt(add(add(_2, shl(5, length)), 32), dataEnd) { revert(0, 0) }\n value0 := add(_2, 32)\n value1 := length\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function finalize_allocation(memPtr, size)\n {\n let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n function array_allocation_size_array_uint256_dyn(length) -> size\n {\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n size := add(shl(5, length), 0x20)\n }\n function abi_decode_array_uint256_dyn(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := calldataload(offset)\n let _2 := 0x20\n let _3 := array_allocation_size_array_uint256_dyn(_1)\n let memPtr := mload(64)\n finalize_allocation(memPtr, _3)\n let dst := memPtr\n mstore(memPtr, _1)\n dst := add(memPtr, _2)\n let srcEnd := add(add(offset, shl(5, _1)), _2)\n if gt(srcEnd, end) { revert(0, 0) }\n let src := add(offset, _2)\n for { } lt(src, srcEnd) { src := add(src, _2) }\n {\n mstore(dst, calldataload(src))\n dst := add(dst, _2)\n }\n array := memPtr\n }\n function abi_decode_available_length_bytes(src, length, end) -> array\n {\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n let memPtr := mload(64)\n finalize_allocation(memPtr, add(and(add(length, 31), not(31)), 0x20))\n array := memPtr\n mstore(memPtr, length)\n if gt(add(src, length), end) { revert(0, 0) }\n calldatacopy(add(memPtr, 0x20), src, length)\n mstore(add(add(memPtr, length), 0x20), 0)\n }\n function abi_decode_bytes(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n array := abi_decode_available_length_bytes(add(offset, 0x20), calldataload(offset), end)\n }\n function abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n let offset := calldataload(add(headStart, 64))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n value2 := abi_decode_array_uint256_dyn(add(headStart, offset), dataEnd)\n let offset_1 := calldataload(add(headStart, 96))\n if gt(offset_1, _1) { revert(0, 0) }\n value3 := abi_decode_array_uint256_dyn(add(headStart, offset_1), dataEnd)\n let offset_2 := calldataload(add(headStart, 128))\n if gt(offset_2, _1) { revert(0, 0) }\n value4 := abi_decode_bytes(add(headStart, offset_2), dataEnd)\n }\n function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n }\n function abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let offset := calldataload(headStart)\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n let _4 := 0x20\n let _5 := array_allocation_size_array_uint256_dyn(_3)\n let memPtr := mload(64)\n finalize_allocation(memPtr, _5)\n let dst := memPtr\n mstore(memPtr, _3)\n dst := add(memPtr, _4)\n let srcEnd := add(add(_2, shl(5, _3)), _4)\n if gt(srcEnd, dataEnd) { revert(0, 0) }\n let src := add(_2, _4)\n for { } lt(src, srcEnd) { src := add(src, _4) }\n {\n mstore(dst, abi_decode_address(src))\n dst := add(dst, _4)\n }\n value0 := memPtr\n let offset_1 := calldataload(add(headStart, _4))\n if gt(offset_1, _1) { revert(0, 0) }\n value1 := abi_decode_array_uint256_dyn(add(headStart, offset_1), dataEnd)\n }\n function abi_encode_array_uint256_dyn(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n let _1 := 0x20\n pos := add(pos, _1)\n let srcPtr := add(value, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, mload(srcPtr))\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n end := pos\n }\n function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_array_uint256_dyn(value0, add(headStart, 32))\n }\n function abi_decode_tuple_t_string_memory_ptr(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let offset := calldataload(headStart)\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n let _1 := add(headStart, offset)\n if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n value0 := abi_decode_available_length_bytes(add(_1, 32), calldataload(_1), dataEnd)\n }\n function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let value := calldataload(add(headStart, 32))\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value1 := value\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_decode_string_calldata(offset, end) -> arrayPos, length\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n arrayPos := add(offset, 0x20)\n if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n }\n function abi_decode_tuple_t_string_calldata_ptrt_uint256t_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n let offset := calldataload(headStart)\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n let value0_1, value1_1 := abi_decode_string_calldata(add(headStart, offset), dataEnd)\n value0 := value0_1\n value1 := value1_1\n value2 := calldataload(add(headStart, 32))\n value3 := calldataload(add(headStart, 64))\n value4 := calldataload(add(headStart, 96))\n }\n function abi_decode_tuple_t_addresst_string_calldata_ptrt_uint256t_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n {\n if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n let value1_1, value2_1 := abi_decode_string_calldata(add(headStart, offset), dataEnd)\n value1 := value1_1\n value2 := value2_1\n value3 := calldataload(add(headStart, 64))\n value4 := calldataload(add(headStart, 96))\n value5 := calldataload(add(headStart, 128))\n }\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n value3 := calldataload(add(headStart, 96))\n let offset := calldataload(add(headStart, 128))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value4 := abi_decode_bytes(add(headStart, offset), dataEnd)\n }\n function abi_encode_tuple_t_stringliteral_1f4de6a436172e7f7b1540476031cb037fc18ede9cc346a56da1697cbd352aa9__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 43)\n mstore(add(headStart, 64), \"ERC1155: balance query for the z\")\n mstore(add(headStart, 96), \"ero address\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_b980d5d5dbc9150a1ffd9a811f6ca09e5bfe75769d104fa147d91f848d36e2cc__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 22)\n mstore(add(headStart, 64), \"is not between 1-2500!\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_ad8e5d4b3b9467d759997fe6cc6b37e09e9a9a5883ed6b0e801720f3653f6f49__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 18)\n mstore(add(headStart, 64), \"No FM with this Id\")\n tail := add(headStart, 96)\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function abi_encode_tuple_t_stringliteral_b1477f47748ae8dbb5961dc8cdbb64ed84393a09222e6184413c607f82662112__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 20)\n mstore(add(headStart, 64), \"FM is already hidden\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_0aab944e9bfebdf7d3170fc8055bb0e48f3c75af3fa1da0385c5eb5cf0ca9dd5__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 16)\n mstore(add(headStart, 64), \"is more than 10!\")\n tail := add(headStart, 96)\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function increment_t_uint256(value) -> ret\n {\n if eq(value, not(0)) { panic_error_0x11() }\n ret := add(value, 1)\n }\n function abi_encode_tuple_t_stringliteral_70a41c66829f5508884cda9ef3d2f72551b34f23e4035be97941681123d2d686__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 50)\n mstore(add(headStart, 64), \"ERC1155: transfer caller is not \")\n mstore(add(headStart, 96), \"owner nor approved\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 47)\n mstore(add(headStart, 64), \"AccessControl: can only renounce\")\n mstore(add(headStart, 96), \" roles for self\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_8e6f827f3090d5517c29a88eb0975f479e761f521dc9b8ec82496c8913643ef0__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 13)\n mstore(add(headStart, 64), \"No address(0)\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_e155f5d69798c6205436a388a4f3a5fd42f54147b40f4d63a2c8071ff8a9fee5__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 41)\n mstore(add(headStart, 64), \"ERC1155: accounts and ids length\")\n mstore(add(headStart, 96), \" mismatch\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_f18b3768d605a51198d79e77c6892ee320e8af3541710613f31c8ca735436b6b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 16)\n mstore(add(headStart, 64), \"FM is not hidden\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 16)\n mstore(add(headStart, 64), \"Pausable: paused\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_ce5a8e2ce9141c10493280226df71a5840530f55dae75b983ca87a88e799e150__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 20)\n mstore(add(headStart, 64), \"No mint for yourself\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_c340052cbb66403c576fcd9fee0ed29be6a40df0e37c6c861ee069dd74ef28c0__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 33)\n mstore(add(headStart, 64), \"creator address need MINTER_ROLE\")\n mstore(add(headStart, 96), \"!\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_1a1910774d5d674fa1d70bd183b57a2e6aca23b471940eb7ed5a5631b823403f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 22)\n mstore(add(headStart, 64), \"is not between 10-100!\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_394ac917f53b95ee25db2a5da5874c5b1f0af95a4fdf34992ff8b19c458f239a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 41)\n mstore(add(headStart, 64), \"ERC1155: caller is not owner nor\")\n mstore(add(headStart, 96), \" approved\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_packed_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_t_string_memory_ptr_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n {\n mstore(pos, \"AccessControl: account \")\n let length := mload(value0)\n copy_memory_to_memory(add(value0, 0x20), add(pos, 23), length)\n let _1 := add(pos, length)\n mstore(add(_1, 23), \" is missing role \")\n let length_1 := mload(value1)\n copy_memory_to_memory(add(value1, 0x20), add(_1, 40), length_1)\n end := add(add(_1, length_1), 40)\n }\n function abi_encode_tuple_t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 40)\n mstore(add(headStart, 64), \"ERC1155: ids and amounts length \")\n mstore(add(headStart, 96), \"mismatch\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 37)\n mstore(add(headStart, 64), \"ERC1155: transfer to the zero ad\")\n mstore(add(headStart, 96), \"dress\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 42)\n mstore(add(headStart, 64), \"ERC1155: insufficient balance fo\")\n mstore(add(headStart, 96), \"r transfer\")\n tail := add(headStart, 128)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n if gt(x, not(y)) { panic_error_0x11() }\n sum := add(x, y)\n }\n function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, 64)\n let tail_1 := abi_encode_array_uint256_dyn(value0, add(headStart, 64))\n mstore(add(headStart, 32), sub(tail_1, headStart))\n tail := abi_encode_array_uint256_dyn(value1, tail_1)\n }\n function abi_encode_tuple_t_stringliteral_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 20)\n mstore(add(headStart, 64), \"Pausable: not paused\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 27)\n mstore(add(headStart, 64), \"Counter: decrement overflow\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 41)\n mstore(add(headStart, 64), \"ERC1155: setting approval status\")\n mstore(add(headStart, 96), \" for self\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 31)\n mstore(add(headStart, 64), \"ReentrancyGuard: reentrant call\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_419651fe1c401e4153b20e9b96350fc94f339f9e471181d9df947ef58725b32c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 19)\n mstore(add(headStart, 64), \"amount > max amount\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_8b7cc43a4c28bbb0626114fb0af8d35a42425294ee4e9cbba24bcdbfc925ab65__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 19)\n mstore(add(headStart, 64), \"not between 10-100!\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_ce8e87afbaedc350e403be878ca49a2a655a898d8e978961de696022327b6952__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 20)\n mstore(add(headStart, 64), \"Image already exists\")\n tail := add(headStart, 96)\n }\n function checked_mul_t_uint256(x, y) -> product\n {\n if and(iszero(iszero(x)), gt(y, div(not(0), x))) { panic_error_0x11() }\n product := mul(x, y)\n }\n function checked_div_t_uint256(x, y) -> r\n {\n if iszero(y)\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n r := div(x, y)\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n if lt(x, y) { panic_error_0x11() }\n diff := sub(x, y)\n }\n function abi_encode_tuple_t_address_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 192)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n mstore(add(headStart, 128), value4)\n mstore(add(headStart, 160), value5)\n }\n function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n }\n function decrement_t_uint256(value) -> ret\n {\n if iszero(value) { panic_error_0x11() }\n ret := add(value, not(0))\n }\n function abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 32)\n mstore(add(headStart, 64), \"Strings: hex length insufficient\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), 160)\n let tail_1 := abi_encode_array_uint256_dyn(value2, add(headStart, 160))\n mstore(add(headStart, 96), sub(tail_1, headStart))\n let tail_2 := abi_encode_array_uint256_dyn(value3, tail_1)\n mstore(add(headStart, 128), sub(tail_2, headStart))\n tail := abi_encode_string(value4, tail_2)\n }\n function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n validator_revert_bytes4(value)\n value0 := value\n }\n function return_data_selector() -> sig\n {\n if gt(returndatasize(), 3)\n {\n returndatacopy(0, 0, 4)\n sig := shr(224, mload(0))\n }\n }\n function try_decode_error_message() -> ret\n {\n if lt(returndatasize(), 0x44) { leave }\n let data := mload(64)\n let _1 := not(3)\n returndatacopy(data, 4, add(returndatasize(), _1))\n let offset := mload(data)\n let _2 := returndatasize()\n let _3 := 0xffffffffffffffff\n if or(gt(offset, _3), gt(add(offset, 0x24), _2)) { leave }\n let msg := add(data, offset)\n let length := mload(msg)\n if gt(length, _3) { leave }\n if gt(add(add(msg, length), 0x20), add(add(data, returndatasize()), _1)) { leave }\n finalize_allocation(data, add(add(offset, length), 0x20))\n ret := msg\n }\n function abi_encode_tuple_t_stringliteral_00aa752fb1526000e5241602affc3d70ef506da48a27ea57140102b439e655ed__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 52)\n mstore(add(headStart, 64), \"ERC1155: transfer to non ERC1155\")\n mstore(add(headStart, 96), \"Receiver implementer\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 40)\n mstore(add(headStart, 64), \"ERC1155: ERC1155Receiver rejecte\")\n mstore(add(headStart, 96), \"d tokens\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_ebf031a1b7ee1d0b3a7752b450a3268e8b6c334561b48c1c0ba0f5bac05749f2__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 33)\n mstore(add(headStart, 64), \"ERC1155: mint to the zero addres\")\n mstore(add(headStart, 96), \"s\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n mstore(add(headStart, 128), 160)\n tail := abi_encode_string(value4, add(headStart, 160))\n }\n}",
"id": 17,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "608060405234801561001057600080fd5b506004361061027e5760003560e01c806369c8b3441161015c578063a4939d1d116100ce578063d085a34711610087578063d085a347146105c4578063d547741f146105cd578063e985e9c5146105e0578063f242432a1461061c578063f5cb57ab1461062f578063f61454ae1461063757600080fd5b8063a4939d1d14610545578063a8bfb0b414610558578063b2a999c71461056b578063bd85b0391461057e578063bf39ec9a1461059e578063cbe526b2146105b157600080fd5b806391d148541161012057806391d14854146104c357806395d89b41146104d6578063a217fddf146104f6578063a22cb465146104fe578063a268ac7014610511578063a276e4e51461053c57600080fd5b806369c8b344146104795780636c4535e71461048c578063727e7379146104955780638456cb59146104a857806387572836146104b057600080fd5b806328ce98e5116101f55780633f4ba83a116101b95780633f4ba83a146103fe57806343c9f97a146104065780634cb80fd5146104195780634e1273f41461042c5780634f558e791461044c5780635c975abb1461046e57600080fd5b806328ce98e5146103a85780632eb2c2d6146103bb5780632f2ff15d146103ce57806336568abe146103e15780633896b504146103f457600080fd5b80631410d4b4116102475780631410d4b414610323578063172bd4581461033657806318cdf140146103495780631ffb53f614610369578063239c70ae1461037c578063248a9ca31461038557600080fd5b8062fdd58e1461028357806301ffc9a7146102a957806306fdde03146102cc578063088a4ed0146102fb5780630e89341c14610310575b600080fd5b6102966102913660046125de565b61065a565b6040519081526020015b60405180910390f35b6102bc6102b736600461261e565b6106f1565b60405190151581526020016102a0565b60408051808201909152600a81526946616e7461737469636f60b01b60208201525b6040516102a09190612693565b61030e6103093660046126a6565b610702565b005b6102ee61031e3660046126a6565b610777565b61030e6103313660046126a6565b61086f565b61030e6103443660046126a6565b610954565b6102966103573660046126a6565b600a6020526000908152604090205481565b61030e6103773660046126a6565b6109b6565b61029660115481565b6102966103933660046126a6565b60009081526003602052604090206001015490565b61030e6103b63660046126bf565b610a18565b61030e6103c9366004612886565b610a75565b61030e6103dc36600461292f565b610b0c565b61030e6103ef36600461292f565b610b37565b6008546102969081565b61030e610bb5565b6102bc6104143660046126a6565b610bd9565b61030e61042736600461295b565b610c2c565b61043f61043a366004612976565b610cae565b6040516102a09190612a7b565b6102bc61045a3660046126a6565b600090815260056020526040902054151590565b60045460ff166102bc565b61043f61048736600461295b565b610dd7565b61029660105481565b61030e6104a33660046126a6565b610ecb565b61030e610f95565b61030e6104be366004612a8e565b610fb6565b6102bc6104d136600461292f565b610fe2565b6040805180820190915260048152635449434f60e01b60208201526102ee565b610296600081565b61030e61050c366004612ade565b61100d565b600d54610524906001600160a01b031681565b6040516001600160a01b0390911681526020016102a0565b610296600f5481565b61030e610553366004612b62565b611018565b61030e610566366004612bbb565b61107d565b6105246105793660046126a6565b6111d6565b61029661058c3660046126a6565b60009081526005602052604090205490565b61030e6105ac3660046126a6565b611220565b61030e6105bf3660046126bf565b611294565b610296600e5481565b61030e6105db36600461292f565b6112eb565b6102bc6105ee366004612c27565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b61030e61062a366004612c51565b611311565b6102ee611398565b6102bc6106453660046126a6565b600b6020526000908152604090205460ff1681565b60006001600160a01b0383166106cb5760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b60648201526084015b60405180910390fd5b506000908152602081815260408083206001600160a01b03949094168352929052205490565b60006106fc82611426565b92915050565b6000805160206130e383398151915261071b813361144b565b60008211801561072c57506109c582105b6107715760405162461bcd60e51b81526020600482015260166024820152756973206e6f74206265747765656e20312d323530302160501b60448201526064016106c2565b50601155565b6000818152600560205260409020546060906107a55760405162461bcd60e51b81526004016106c290612cb5565b600082815260096020526040902060030154640100000000900460ff166107dc5760008281526009602052604090206001016107df565b600c5b80546107ea90612ce1565b80601f016020809104026020016040519081016040528092919081815260200182805461081690612ce1565b80156108635780601f1061083857610100808354040283529160200191610863565b820191906000526020600020905b81548152906001019060200180831161084657829003601f168201915b50505050509050919050565b6000805160206130e3833981519152610888813361144b565b61089182610bd9565b156108d55760405162461bcd60e51b815260206004820152601460248201527323269034b99030b63932b0b23c903434b23232b760611b60448201526064016106c2565b6000828152600960209081526040808320600301805464ff000000001916640100000000179055600b9091529020805460ff1916600117905561091c600880546001019055565b6040518281527fc306f319fd0c3025b8574dcdfa0f7dd262569a291526163a978e85f0d7afeed9906020015b60405180910390a15050565b6000805160206130e383398151915261096d813361144b565b600b82106109b05760405162461bcd60e51b815260206004820152601060248201526f6973206d6f7265207468616e2031302160801b60448201526064016106c2565b50600f55565b6000805160206130e38339815191526109cf813361144b565b600b8210610a125760405162461bcd60e51b815260206004820152601060248201526f6973206d6f7265207468616e2031302160801b60448201526064016106c2565b50600e55565b6000805160206130e3833981519152610a31813361144b565b60005b82811015610a6f57610a5d848483818110610a5157610a51612d16565b90506020020135610ecb565b80610a6781612d42565b915050610a34565b50505050565b6001600160a01b038516331480610a915750610a9185336105ee565b610af85760405162461bcd60e51b815260206004820152603260248201527f455243313135353a207472616e736665722063616c6c6572206973206e6f74206044820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b60648201526084016106c2565b610b0585858585856114af565b5050505050565b600082815260036020526040902060010154610b28813361144b565b610b32838361169a565b505050565b6001600160a01b0381163314610ba75760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016106c2565b610bb18282611720565b5050565b6000805160206130e3833981519152610bce813361144b565b610bd6611787565b50565b6000818152600560205260408120548290610c065760405162461bcd60e51b81526004016106c290612cb5565b600083815260096020526040902060030154640100000000900460ff1691505b50919050565b6000805160206130e3833981519152610c45813361144b565b6001600160a01b038216610c8b5760405162461bcd60e51b815260206004820152600d60248201526c4e6f206164647265737328302960981b60448201526064016106c2565b50600d80546001600160a01b0319166001600160a01b0392909216919091179055565b60608151835114610d135760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b60648201526084016106c2565b600083516001600160401b03811115610d2e57610d2e612733565b604051908082528060200260200182016040528015610d57578160200160208202803683370190505b50905060005b8451811015610dcf57610da2858281518110610d7b57610d7b612d16565b6020026020010151858381518110610d9557610d95612d16565b602002602001015161065a565b828281518110610db457610db4612d16565b6020908102919091010152610dc881612d42565b9050610d5d565b509392505050565b6060600080610de560075490565b905060015b818111610e2057610dfb858261065a565b15610e0e5782610e0a81612d42565b9350505b80610e1881612d42565b915050610dea565b506000826001600160401b03811115610e3b57610e3b612733565b604051908082528060200260200182016040528015610e64578160200160208202803683370190505b509050600060015b838111610ec057610e7d878261065a565b15610eae5780838381518110610e9557610e95612d16565b602090810291909101015281610eaa81612d42565b9250505b80610eb881612d42565b915050610e6c565b509095945050505050565b6000805160206130e3833981519152610ee4813361144b565b610eed82610bd9565b610f2c5760405162461bcd60e51b815260206004820152601060248201526f23269034b9903737ba103434b23232b760811b60448201526064016106c2565b6000828152600960209081526040808320600301805464ff0000000019169055600b9091529020805460ff19169055610f65600861181a565b6040518281527f1861a8dc40124affba5fe8313842a0100cba57ca600961d1d33575a655ffab3390602001610948565b6000805160206130e3833981519152610fae813361144b565b610bd6611871565b6000805160206130e3833981519152610fcf813361144b565b8151610b3290600c906020850190612529565b60009182526003602090815260408084206001600160a01b0393909316845291905290205460ff1690565b610bb13383836118c9565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6611043813361144b565b60045460ff16156110665760405162461bcd60e51b81526004016106c290612d5d565b6110743387878787876119aa565b50505050505050565b7f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b086110a8813361144b565b6001600160a01b0387166110ee5760405162461bcd60e51b815260206004820152600d60248201526c4e6f206164647265737328302960981b60448201526064016106c2565b6001600160a01b03871633141561113e5760405162461bcd60e51b815260206004820152601460248201527327379036b4b73a103337b9103cb7bab939b2b63360611b60448201526064016106c2565b6111687f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a688610fe2565b6111be5760405162461bcd60e51b815260206004820152602160248201527f63726561746f722061646472657373206e656564204d494e5445525f524f4c456044820152602160f81b60648201526084016106c2565b6111cc8787878787876119aa565b5050505050505050565b60008181526005602052604081205482906112035760405162461bcd60e51b81526004016106c290612cb5565b50506000908152600960205260409020546001600160a01b031690565b6000805160206130e3833981519152611239813361144b565b6009821180156112495750606582105b61128e5760405162461bcd60e51b81526020600482015260166024820152756973206e6f74206265747765656e2031302d3130302160501b60448201526064016106c2565b50601055565b6000805160206130e38339815191526112ad813361144b565b60005b82811015610a6f576112d98484838181106112cd576112cd612d16565b9050602002013561086f565b806112e381612d42565b9150506112b0565b600082815260036020526040902060010154611307813361144b565b610b328383611720565b6001600160a01b03851633148061132d575061132d85336105ee565b61138b5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b60648201526084016106c2565b610b058585858585611d74565b600c80546113a590612ce1565b80601f01602080910402602001604051908101604052809291908181526020018280546113d190612ce1565b801561141e5780601f106113f35761010080835404028352916020019161141e565b820191906000526020600020905b81548152906001019060200180831161140157829003601f168201915b505050505081565b60006001600160e01b03198216637965db0b60e01b14806106fc57506106fc82611e97565b6114558282610fe2565b610bb15761146d816001600160a01b03166014611ee7565b611478836020611ee7565b604051602001611489929190612d87565b60408051601f198184030181529082905262461bcd60e51b82526106c291600401612693565b81518351146115115760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b60648201526084016106c2565b6001600160a01b0384166115375760405162461bcd60e51b81526004016106c290612dfc565b33611546818787878787612089565b60005b845181101561162c57600085828151811061156657611566612d16565b60200260200101519050600085838151811061158457611584612d16565b602090810291909101810151600084815280835260408082206001600160a01b038e1683529093529190912054909150818110156115d45760405162461bcd60e51b81526004016106c290612e41565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290611611908490612e8b565b925050819055505050508061162590612d42565b9050611549565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161167c929190612ea3565b60405180910390a46116928187878787876120ba565b505050505050565b6116a48282610fe2565b610bb15760008281526003602090815260408083206001600160a01b03851684529091529020805460ff191660011790556116dc3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b61172a8282610fe2565b15610bb15760008281526003602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60045460ff166117d05760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016106c2565b6004805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b8054806118695760405162461bcd60e51b815260206004820152601b60248201527f436f756e7465723a2064656372656d656e74206f766572666c6f77000000000060448201526064016106c2565b600019019055565b60045460ff16156118945760405162461bcd60e51b81526004016106c290612d5d565b6004805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586117fd3390565b816001600160a01b0316836001600160a01b0316141561193d5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b60648201526084016106c2565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6000600260065414156119ff5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106c2565b60026006558215801590611a1557506011548311155b611a575760405162461bcd60e51b8152602060048201526013602482015272185b5bdd5b9d080f881b585e08185b5bdd5b9d606a1b60448201526064016106c2565b6010548210158015611a695750606582105b611aab5760405162461bcd60e51b81526020600482015260136024820152726e6f74206265747765656e2031302d3130302160681b60448201526064016106c2565b6000848152600a602052604090205415611afe5760405162461bcd60e51b8152602060048201526014602482015273496d61676520616c72656164792065786973747360601b60448201526064016106c2565b600e54600090849015611b535760068510611b415760158510611b3a576064600e5486611b2b9190612ed1565b611b359190612ef0565b611b44565b6001611b44565b60005b9150611b508286612f12565b90505b611b61600780546001019055565b6000611b6c60075490565b90506040518060e001604052808b6001600160a01b031681526020018a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525093855250505060208083018b905261ffff8a16604080850191909152600f5460ff90811660608601528a16608085015260a090930182905284825260098152919020825181546001600160a01b0319166001600160a01b039091161781558282015180519192611c3292600185019290910190612529565b506040828101516002830155606083015160039092018054608085015160a086015160c09096015161ffff90951662ffffff19909216919091176201000060ff928316021764ffff00000019166301000000919095160264ff0000000019169390931764010000000092151592909202919091179091556000888152600a602090815282822084905582519081019092528152611cd4908b9083908590612216565b8215611d0357600d54604080516020810190915260008152611d03916001600160a01b03169083908690612216565b604080516001600160a01b038c16815260208101839052908101889052606081018790526080810183905260a081018490527f099895753745b248c3cd5ff15a17b3dba7a694c996161feda4069a91095cd98b9060c00160405180910390a160016006559998505050505050505050565b6001600160a01b038416611d9a5760405162461bcd60e51b81526004016106c290612dfc565b33611db9818787611daa88612317565b611db388612317565b87612089565b6000848152602081815260408083206001600160a01b038a16845290915290205483811015611dfa5760405162461bcd60e51b81526004016106c290612e41565b6000858152602081815260408083206001600160a01b038b8116855292528083208785039055908816825281208054869290611e37908490612e8b565b909155505060408051868152602081018690526001600160a01b03808916928a821692918616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4611074828888888888612362565b60006001600160e01b03198216636cdb3d1360e11b1480611ec857506001600160e01b031982166303a24d0760e21b145b806106fc57506301ffc9a760e01b6001600160e01b03198316146106fc565b60606000611ef6836002612ed1565b611f01906002612e8b565b6001600160401b03811115611f1857611f18612733565b6040519080825280601f01601f191660200182016040528015611f42576020820181803683370190505b509050600360fc1b81600081518110611f5d57611f5d612d16565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611f8c57611f8c612d16565b60200101906001600160f81b031916908160001a9053506000611fb0846002612ed1565b611fbb906001612e8b565b90505b6001811115612033576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611fef57611fef612d16565b1a60f81b82828151811061200557612005612d16565b60200101906001600160f81b031916908160001a90535060049490941c9361202c81612f29565b9050611fbe565b5083156120825760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016106c2565b9392505050565b60045460ff16156120ac5760405162461bcd60e51b81526004016106c290612d5d565b61169286868686868661241d565b6001600160a01b0384163b156116925760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906120fe9089908990889088908890600401612f40565b6020604051808303816000875af1925050508015612139575060408051601f3d908101601f1916820190925261213691810190612f9e565b60015b6121e657612145612fbb565b806308c379a0141561217f575061215a612fd7565b806121655750612181565b8060405162461bcd60e51b81526004016106c29190612693565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b60648201526084016106c2565b6001600160e01b0319811663bc197c8160e01b146110745760405162461bcd60e51b81526004016106c290613055565b6001600160a01b0384166122765760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b60648201526084016106c2565b3361228781600087611daa88612317565b6000848152602081815260408083206001600160a01b0389168452909152812080548592906122b7908490612e8b565b909155505060408051858152602081018590526001600160a01b0380881692600092918516917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4610b0581600087878787612362565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061235157612351612d16565b602090810291909101015292915050565b6001600160a01b0384163b156116925760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906123a6908990899088908890889060040161309d565b6020604051808303816000875af19250505080156123e1575060408051601f3d908101601f191682019092526123de91810190612f9e565b60015b6123ed57612145612fbb565b6001600160e01b0319811663f23a6e6160e01b146110745760405162461bcd60e51b81526004016106c290613055565b6001600160a01b0385166124a45760005b83518110156124a25782818151811061244957612449612d16565b60200260200101516005600086848151811061246757612467612d16565b60200260200101518152602001908152602001600020600082825461248c9190612e8b565b9091555061249b905081612d42565b905061242e565b505b6001600160a01b0384166116925760005b8351811015611074578281815181106124d0576124d0612d16565b6020026020010151600560008684815181106124ee576124ee612d16565b6020026020010151815260200190815260200160002060008282546125139190612f12565b90915550612522905081612d42565b90506124b5565b82805461253590612ce1565b90600052602060002090601f016020900481019282612557576000855561259d565b82601f1061257057805160ff191683800117855561259d565b8280016001018555821561259d579182015b8281111561259d578251825591602001919060010190612582565b506125a99291506125ad565b5090565b5b808211156125a957600081556001016125ae565b80356001600160a01b03811681146125d957600080fd5b919050565b600080604083850312156125f157600080fd5b6125fa836125c2565b946020939093013593505050565b6001600160e01b031981168114610bd657600080fd5b60006020828403121561263057600080fd5b813561208281612608565b60005b8381101561265657818101518382015260200161263e565b83811115610a6f5750506000910152565b6000815180845261267f81602086016020860161263b565b601f01601f19169290920160200192915050565b6020815260006120826020830184612667565b6000602082840312156126b857600080fd5b5035919050565b600080602083850312156126d257600080fd5b82356001600160401b03808211156126e957600080fd5b818501915085601f8301126126fd57600080fd5b81358181111561270c57600080fd5b8660208260051b850101111561272157600080fd5b60209290920196919550909350505050565b634e487b7160e01b600052604160045260246000fd5b601f8201601f191681016001600160401b038111828210171561276e5761276e612733565b6040525050565b60006001600160401b0382111561278e5761278e612733565b5060051b60200190565b600082601f8301126127a957600080fd5b813560206127b682612775565b6040516127c38282612749565b83815260059390931b85018201928281019150868411156127e357600080fd5b8286015b848110156127fe57803583529183019183016127e7565b509695505050505050565b60006001600160401b0383111561282257612822612733565b604051612839601f8501601f191660200182612749565b80915083815284848401111561284e57600080fd5b83836020830137600060208583010152509392505050565b600082601f83011261287757600080fd5b61208283833560208501612809565b600080600080600060a0868803121561289e57600080fd5b6128a7866125c2565b94506128b5602087016125c2565b935060408601356001600160401b03808211156128d157600080fd5b6128dd89838a01612798565b945060608801359150808211156128f357600080fd5b6128ff89838a01612798565b9350608088013591508082111561291557600080fd5b5061292288828901612866565b9150509295509295909350565b6000806040838503121561294257600080fd5b82359150612952602084016125c2565b90509250929050565b60006020828403121561296d57600080fd5b612082826125c2565b6000806040838503121561298957600080fd5b82356001600160401b03808211156129a057600080fd5b818501915085601f8301126129b457600080fd5b813560206129c182612775565b6040516129ce8282612749565b83815260059390931b85018201928281019150898411156129ee57600080fd5b948201945b83861015612a1357612a04866125c2565b825294820194908201906129f3565b96505086013592505080821115612a2957600080fd5b50612a3685828601612798565b9150509250929050565b600081518084526020808501945080840160005b83811015612a7057815187529582019590820190600101612a54565b509495945050505050565b6020815260006120826020830184612a40565b600060208284031215612aa057600080fd5b81356001600160401b03811115612ab657600080fd5b8201601f81018413612ac757600080fd5b612ad684823560208401612809565b949350505050565b60008060408385031215612af157600080fd5b612afa836125c2565b915060208301358015158114612b0f57600080fd5b809150509250929050565b60008083601f840112612b2c57600080fd5b5081356001600160401b03811115612b4357600080fd5b602083019150836020828501011115612b5b57600080fd5b9250929050565b600080600080600060808688031215612b7a57600080fd5b85356001600160401b03811115612b9057600080fd5b612b9c88828901612b1a565b9099909850602088013597604081013597506060013595509350505050565b60008060008060008060a08789031215612bd457600080fd5b612bdd876125c2565b955060208701356001600160401b03811115612bf857600080fd5b612c0489828a01612b1a565b979a90995096976040810135976060820135975060809091013595509350505050565b60008060408385031215612c3a57600080fd5b612c43836125c2565b9150612952602084016125c2565b600080600080600060a08688031215612c6957600080fd5b612c72866125c2565b9450612c80602087016125c2565b9350604086013592506060860135915060808601356001600160401b03811115612ca957600080fd5b61292288828901612866565b602080825260129082015271139bc81193481dda5d1a081d1a1a5cc8125960721b604082015260600190565b600181811c90821680612cf557607f821691505b60208210811415610c2657634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415612d5657612d56612d2c565b5060010190565b60208082526010908201526f14185d5cd8589b194e881c185d5cd95960821b604082015260600190565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612dbf81601785016020880161263b565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612df081602884016020880161263b565b01602801949350505050565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b60008219821115612e9e57612e9e612d2c565b500190565b604081526000612eb66040830185612a40565b8281036020840152612ec88185612a40565b95945050505050565b6000816000190483118215151615612eeb57612eeb612d2c565b500290565b600082612f0d57634e487b7160e01b600052601260045260246000fd5b500490565b600082821015612f2457612f24612d2c565b500390565b600081612f3857612f38612d2c565b506000190190565b6001600160a01b0386811682528516602082015260a060408201819052600090612f6c90830186612a40565b8281036060840152612f7e8186612a40565b90508281036080840152612f928185612667565b98975050505050505050565b600060208284031215612fb057600080fd5b815161208281612608565b600060033d1115612fd45760046000803e5060005160e01c5b90565b600060443d1015612fe55790565b6040516003193d81016004833e81513d6001600160401b03816024840111818411171561301457505050505090565b828501915081518181111561302c5750505050505090565b843d87010160208285010111156130465750505050505090565b610ec060208286010187612749565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190526000906130d790830184612667565b97965050505050505056fea49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775a26469706673582212204ad9efbf176e2117e55daa64e651bc462701bd6be76cdf0fe7eb840097a6d9c064736f6c634300080c0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x27E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x69C8B344 GT PUSH2 0x15C JUMPI DUP1 PUSH4 0xA4939D1D GT PUSH2 0xCE JUMPI DUP1 PUSH4 0xD085A347 GT PUSH2 0x87 JUMPI DUP1 PUSH4 0xD085A347 EQ PUSH2 0x5C4 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x5CD JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x5E0 JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x61C JUMPI DUP1 PUSH4 0xF5CB57AB EQ PUSH2 0x62F JUMPI DUP1 PUSH4 0xF61454AE EQ PUSH2 0x637 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA4939D1D EQ PUSH2 0x545 JUMPI DUP1 PUSH4 0xA8BFB0B4 EQ PUSH2 0x558 JUMPI DUP1 PUSH4 0xB2A999C7 EQ PUSH2 0x56B JUMPI DUP1 PUSH4 0xBD85B039 EQ PUSH2 0x57E JUMPI DUP1 PUSH4 0xBF39EC9A EQ PUSH2 0x59E JUMPI DUP1 PUSH4 0xCBE526B2 EQ PUSH2 0x5B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x91D14854 GT PUSH2 0x120 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x4C3 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x4D6 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x4F6 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x4FE JUMPI DUP1 PUSH4 0xA268AC70 EQ PUSH2 0x511 JUMPI DUP1 PUSH4 0xA276E4E5 EQ PUSH2 0x53C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x69C8B344 EQ PUSH2 0x479 JUMPI DUP1 PUSH4 0x6C4535E7 EQ PUSH2 0x48C JUMPI DUP1 PUSH4 0x727E7379 EQ PUSH2 0x495 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x4A8 JUMPI DUP1 PUSH4 0x87572836 EQ PUSH2 0x4B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x28CE98E5 GT PUSH2 0x1F5 JUMPI DUP1 PUSH4 0x3F4BA83A GT PUSH2 0x1B9 JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x3FE JUMPI DUP1 PUSH4 0x43C9F97A EQ PUSH2 0x406 JUMPI DUP1 PUSH4 0x4CB80FD5 EQ PUSH2 0x419 JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x42C JUMPI DUP1 PUSH4 0x4F558E79 EQ PUSH2 0x44C JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x46E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x28CE98E5 EQ PUSH2 0x3A8 JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x3BB JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x3CE JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x3E1 JUMPI DUP1 PUSH4 0x3896B504 EQ PUSH2 0x3F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1410D4B4 GT PUSH2 0x247 JUMPI DUP1 PUSH4 0x1410D4B4 EQ PUSH2 0x323 JUMPI DUP1 PUSH4 0x172BD458 EQ PUSH2 0x336 JUMPI DUP1 PUSH4 0x18CDF140 EQ PUSH2 0x349 JUMPI DUP1 PUSH4 0x1FFB53F6 EQ PUSH2 0x369 JUMPI DUP1 PUSH4 0x239C70AE EQ PUSH2 0x37C JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x385 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0x283 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x2A9 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x2CC JUMPI DUP1 PUSH4 0x88A4ED0 EQ PUSH2 0x2FB JUMPI DUP1 PUSH4 0xE89341C EQ PUSH2 0x310 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x296 PUSH2 0x291 CALLDATASIZE PUSH1 0x4 PUSH2 0x25DE JUMP JUMPDEST PUSH2 0x65A JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2BC PUSH2 0x2B7 CALLDATASIZE PUSH1 0x4 PUSH2 0x261E JUMP JUMPDEST PUSH2 0x6F1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2A0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0xA DUP2 MSTORE PUSH10 0x46616E7461737469636F PUSH1 0xB0 SHL PUSH1 0x20 DUP3 ADD MSTORE JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A0 SWAP2 SWAP1 PUSH2 0x2693 JUMP JUMPDEST PUSH2 0x30E PUSH2 0x309 CALLDATASIZE PUSH1 0x4 PUSH2 0x26A6 JUMP JUMPDEST PUSH2 0x702 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2EE PUSH2 0x31E CALLDATASIZE PUSH1 0x4 PUSH2 0x26A6 JUMP JUMPDEST PUSH2 0x777 JUMP JUMPDEST PUSH2 0x30E PUSH2 0x331 CALLDATASIZE PUSH1 0x4 PUSH2 0x26A6 JUMP JUMPDEST PUSH2 0x86F JUMP JUMPDEST PUSH2 0x30E PUSH2 0x344 CALLDATASIZE PUSH1 0x4 PUSH2 0x26A6 JUMP JUMPDEST PUSH2 0x954 JUMP JUMPDEST PUSH2 0x296 PUSH2 0x357 CALLDATASIZE PUSH1 0x4 PUSH2 0x26A6 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x30E PUSH2 0x377 CALLDATASIZE PUSH1 0x4 PUSH2 0x26A6 JUMP JUMPDEST PUSH2 0x9B6 JUMP JUMPDEST PUSH2 0x296 PUSH1 0x11 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x296 PUSH2 0x393 CALLDATASIZE PUSH1 0x4 PUSH2 0x26A6 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x30E PUSH2 0x3B6 CALLDATASIZE PUSH1 0x4 PUSH2 0x26BF JUMP JUMPDEST PUSH2 0xA18 JUMP JUMPDEST PUSH2 0x30E PUSH2 0x3C9 CALLDATASIZE PUSH1 0x4 PUSH2 0x2886 JUMP JUMPDEST PUSH2 0xA75 JUMP JUMPDEST PUSH2 0x30E PUSH2 0x3DC CALLDATASIZE PUSH1 0x4 PUSH2 0x292F JUMP JUMPDEST PUSH2 0xB0C JUMP JUMPDEST PUSH2 0x30E PUSH2 0x3EF CALLDATASIZE PUSH1 0x4 PUSH2 0x292F JUMP JUMPDEST PUSH2 0xB37 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH2 0x296 SWAP1 DUP2 JUMP JUMPDEST PUSH2 0x30E PUSH2 0xBB5 JUMP JUMPDEST PUSH2 0x2BC PUSH2 0x414 CALLDATASIZE PUSH1 0x4 PUSH2 0x26A6 JUMP JUMPDEST PUSH2 0xBD9 JUMP JUMPDEST PUSH2 0x30E PUSH2 0x427 CALLDATASIZE PUSH1 0x4 PUSH2 0x295B JUMP JUMPDEST PUSH2 0xC2C JUMP JUMPDEST PUSH2 0x43F PUSH2 0x43A CALLDATASIZE PUSH1 0x4 PUSH2 0x2976 JUMP JUMPDEST PUSH2 0xCAE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A0 SWAP2 SWAP1 PUSH2 0x2A7B JUMP JUMPDEST PUSH2 0x2BC PUSH2 0x45A CALLDATASIZE PUSH1 0x4 PUSH2 0x26A6 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0xFF AND PUSH2 0x2BC JUMP JUMPDEST PUSH2 0x43F PUSH2 0x487 CALLDATASIZE PUSH1 0x4 PUSH2 0x295B JUMP JUMPDEST PUSH2 0xDD7 JUMP JUMPDEST PUSH2 0x296 PUSH1 0x10 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x30E PUSH2 0x4A3 CALLDATASIZE PUSH1 0x4 PUSH2 0x26A6 JUMP JUMPDEST PUSH2 0xECB JUMP JUMPDEST PUSH2 0x30E PUSH2 0xF95 JUMP JUMPDEST PUSH2 0x30E PUSH2 0x4BE CALLDATASIZE PUSH1 0x4 PUSH2 0x2A8E JUMP JUMPDEST PUSH2 0xFB6 JUMP JUMPDEST PUSH2 0x2BC PUSH2 0x4D1 CALLDATASIZE PUSH1 0x4 PUSH2 0x292F JUMP JUMPDEST PUSH2 0xFE2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x4 DUP2 MSTORE PUSH4 0x5449434F PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x2EE JUMP JUMPDEST PUSH2 0x296 PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH2 0x30E PUSH2 0x50C CALLDATASIZE PUSH1 0x4 PUSH2 0x2ADE JUMP JUMPDEST PUSH2 0x100D JUMP JUMPDEST PUSH1 0xD SLOAD PUSH2 0x524 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2A0 JUMP JUMPDEST PUSH2 0x296 PUSH1 0xF SLOAD DUP2 JUMP JUMPDEST PUSH2 0x30E PUSH2 0x553 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B62 JUMP JUMPDEST PUSH2 0x1018 JUMP JUMPDEST PUSH2 0x30E PUSH2 0x566 CALLDATASIZE PUSH1 0x4 PUSH2 0x2BBB JUMP JUMPDEST PUSH2 0x107D JUMP JUMPDEST PUSH2 0x524 PUSH2 0x579 CALLDATASIZE PUSH1 0x4 PUSH2 0x26A6 JUMP JUMPDEST PUSH2 0x11D6 JUMP JUMPDEST PUSH2 0x296 PUSH2 0x58C CALLDATASIZE PUSH1 0x4 PUSH2 0x26A6 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x30E PUSH2 0x5AC CALLDATASIZE PUSH1 0x4 PUSH2 0x26A6 JUMP JUMPDEST PUSH2 0x1220 JUMP JUMPDEST PUSH2 0x30E PUSH2 0x5BF CALLDATASIZE PUSH1 0x4 PUSH2 0x26BF JUMP JUMPDEST PUSH2 0x1294 JUMP JUMPDEST PUSH2 0x296 PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH2 0x30E PUSH2 0x5DB CALLDATASIZE PUSH1 0x4 PUSH2 0x292F JUMP JUMPDEST PUSH2 0x12EB JUMP JUMPDEST PUSH2 0x2BC PUSH2 0x5EE CALLDATASIZE PUSH1 0x4 PUSH2 0x2C27 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x30E PUSH2 0x62A CALLDATASIZE PUSH1 0x4 PUSH2 0x2C51 JUMP JUMPDEST PUSH2 0x1311 JUMP JUMPDEST PUSH2 0x2EE PUSH2 0x1398 JUMP JUMPDEST PUSH2 0x2BC PUSH2 0x645 CALLDATASIZE PUSH1 0x4 PUSH2 0x26A6 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x6CB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2062616C616E636520717565727920666F7220746865207A PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x65726F2061646472657373 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6FC DUP3 PUSH2 0x1426 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x30E3 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x71B DUP2 CALLER PUSH2 0x144B JUMP JUMPDEST PUSH1 0x0 DUP3 GT DUP1 ISZERO PUSH2 0x72C JUMPI POP PUSH2 0x9C5 DUP3 LT JUMPDEST PUSH2 0x771 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x6973206E6F74206265747765656E20312D3235303021 PUSH1 0x50 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6C2 JUMP JUMPDEST POP PUSH1 0x11 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 SWAP1 PUSH2 0x7A5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1
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