Created
February 1, 2023 06:26
-
-
Save jongan69/a5639e3ac90a5a7b1b63429a1c3c399c 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.17+commit.8df45f5f.js&optimize=false&runs=200&gist=
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // SPDX-License-Identifier: MIT | |
| // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) | |
| pragma solidity ^0.8.0; | |
| import "../utils/Context.sol"; | |
| /** | |
| * @dev Contract module which provides a basic access control mechanism, where | |
| * there is an account (an owner) that can be granted exclusive access to | |
| * specific functions. | |
| * | |
| * By default, the owner account will be the one that deploys the contract. This | |
| * can later be changed with {transferOwnership}. | |
| * | |
| * This module is used through inheritance. It will make available the modifier | |
| * `onlyOwner`, which can be applied to your functions to restrict their use to | |
| * the owner. | |
| */ | |
| abstract contract Ownable is Context { | |
| address private _owner; | |
| event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); | |
| /** | |
| * @dev Initializes the contract setting the deployer as the initial owner. | |
| */ | |
| constructor() { | |
| _transferOwnership(_msgSender()); | |
| } | |
| /** | |
| * @dev Throws if called by any account other than the owner. | |
| */ | |
| modifier onlyOwner() { | |
| _checkOwner(); | |
| _; | |
| } | |
| /** | |
| * @dev Returns the address of the current owner. | |
| */ | |
| function owner() public view virtual returns (address) { | |
| return _owner; | |
| } | |
| /** | |
| * @dev Throws if the sender is not the owner. | |
| */ | |
| function _checkOwner() internal view virtual { | |
| require(owner() == _msgSender(), "Ownable: caller is not the owner"); | |
| } | |
| /** | |
| * @dev Leaves the contract without owner. It will not be possible to call | |
| * `onlyOwner` functions anymore. Can only be called by the current owner. | |
| * | |
| * NOTE: Renouncing ownership will leave the contract without an owner, | |
| * thereby removing any functionality that is only available to the owner. | |
| */ | |
| function renounceOwnership() public virtual onlyOwner { | |
| _transferOwnership(address(0)); | |
| } | |
| /** | |
| * @dev Transfers ownership of the contract to a new account (`newOwner`). | |
| * Can only be called by the current owner. | |
| */ | |
| function transferOwnership(address newOwner) public virtual onlyOwner { | |
| require(newOwner != address(0), "Ownable: new owner is the zero address"); | |
| _transferOwnership(newOwner); | |
| } | |
| /** | |
| * @dev Transfers ownership of the contract to a new account (`newOwner`). | |
| * Internal function without access restriction. | |
| */ | |
| function _transferOwnership(address newOwner) internal virtual { | |
| address oldOwner = _owner; | |
| _owner = newOwner; | |
| emit OwnershipTransferred(oldOwner, newOwner); | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // SPDX-License-Identifier: MIT | |
| // OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/ERC20.sol) | |
| pragma solidity ^0.8.0; | |
| import "./IERC20.sol"; | |
| import "./extensions/IERC20Metadata.sol"; | |
| import "../../utils/Context.sol"; | |
| /** | |
| * @dev Implementation of the {IERC20} interface. | |
| * | |
| * This implementation is agnostic to the way tokens are created. This means | |
| * that a supply mechanism has to be added in a derived contract using {_mint}. | |
| * For a generic mechanism see {ERC20PresetMinterPauser}. | |
| * | |
| * TIP: For a detailed writeup see our guide | |
| * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How | |
| * to implement supply mechanisms]. | |
| * | |
| * We have followed general OpenZeppelin Contracts guidelines: functions revert | |
| * instead returning `false` on failure. This behavior is nonetheless | |
| * conventional and does not conflict with the expectations of ERC20 | |
| * applications. | |
| * | |
| * Additionally, an {Approval} event is emitted on calls to {transferFrom}. | |
| * This allows applications to reconstruct the allowance for all accounts just | |
| * by listening to said events. Other implementations of the EIP may not emit | |
| * these events, as it isn't required by the specification. | |
| * | |
| * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} | |
| * functions have been added to mitigate the well-known issues around setting | |
| * allowances. See {IERC20-approve}. | |
| */ | |
| contract ERC20 is Context, IERC20, IERC20Metadata { | |
| mapping(address => uint256) private _balances; | |
| mapping(address => mapping(address => uint256)) private _allowances; | |
| uint256 private _totalSupply; | |
| string private _name; | |
| string private _symbol; | |
| /** | |
| * @dev Sets the values for {name} and {symbol}. | |
| * | |
| * The default value of {decimals} is 18. To select a different value for | |
| * {decimals} you should overload it. | |
| * | |
| * All two of these values are immutable: they can only be set once during | |
| * construction. | |
| */ | |
| constructor(string memory name_, string memory symbol_) { | |
| _name = name_; | |
| _symbol = symbol_; | |
| } | |
| /** | |
| * @dev Returns the name of the token. | |
| */ | |
| function name() public view virtual override returns (string memory) { | |
| return _name; | |
| } | |
| /** | |
| * @dev Returns the symbol of the token, usually a shorter version of the | |
| * name. | |
| */ | |
| function symbol() public view virtual override returns (string memory) { | |
| return _symbol; | |
| } | |
| /** | |
| * @dev Returns the number of decimals used to get its user representation. | |
| * For example, if `decimals` equals `2`, a balance of `505` tokens should | |
| * be displayed to a user as `5.05` (`505 / 10 ** 2`). | |
| * | |
| * Tokens usually opt for a value of 18, imitating the relationship between | |
| * Ether and Wei. This is the value {ERC20} uses, unless this function is | |
| * overridden; | |
| * | |
| * NOTE: This information is only used for _display_ purposes: it in | |
| * no way affects any of the arithmetic of the contract, including | |
| * {IERC20-balanceOf} and {IERC20-transfer}. | |
| */ | |
| function decimals() public view virtual override returns (uint8) { | |
| return 18; | |
| } | |
| /** | |
| * @dev See {IERC20-totalSupply}. | |
| */ | |
| function totalSupply() public view virtual override returns (uint256) { | |
| return _totalSupply; | |
| } | |
| /** | |
| * @dev See {IERC20-balanceOf}. | |
| */ | |
| function balanceOf(address account) public view virtual override returns (uint256) { | |
| return _balances[account]; | |
| } | |
| /** | |
| * @dev See {IERC20-transfer}. | |
| * | |
| * Requirements: | |
| * | |
| * - `to` cannot be the zero address. | |
| * - the caller must have a balance of at least `amount`. | |
| */ | |
| function transfer(address to, uint256 amount) public virtual override returns (bool) { | |
| address owner = _msgSender(); | |
| _transfer(owner, to, amount); | |
| return true; | |
| } | |
| /** | |
| * @dev See {IERC20-allowance}. | |
| */ | |
| function allowance(address owner, address spender) public view virtual override returns (uint256) { | |
| return _allowances[owner][spender]; | |
| } | |
| /** | |
| * @dev See {IERC20-approve}. | |
| * | |
| * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on | |
| * `transferFrom`. This is semantically equivalent to an infinite approval. | |
| * | |
| * Requirements: | |
| * | |
| * - `spender` cannot be the zero address. | |
| */ | |
| function approve(address spender, uint256 amount) public virtual override returns (bool) { | |
| address owner = _msgSender(); | |
| _approve(owner, spender, amount); | |
| return true; | |
| } | |
| /** | |
| * @dev See {IERC20-transferFrom}. | |
| * | |
| * Emits an {Approval} event indicating the updated allowance. This is not | |
| * required by the EIP. See the note at the beginning of {ERC20}. | |
| * | |
| * NOTE: Does not update the allowance if the current allowance | |
| * is the maximum `uint256`. | |
| * | |
| * Requirements: | |
| * | |
| * - `from` and `to` cannot be the zero address. | |
| * - `from` must have a balance of at least `amount`. | |
| * - the caller must have allowance for ``from``'s tokens of at least | |
| * `amount`. | |
| */ | |
| function transferFrom( | |
| address from, | |
| address to, | |
| uint256 amount | |
| ) public virtual override returns (bool) { | |
| address spender = _msgSender(); | |
| _spendAllowance(from, spender, amount); | |
| _transfer(from, to, amount); | |
| return true; | |
| } | |
| /** | |
| * @dev Atomically increases the allowance granted to `spender` by the caller. | |
| * | |
| * This is an alternative to {approve} that can be used as a mitigation for | |
| * problems described in {IERC20-approve}. | |
| * | |
| * Emits an {Approval} event indicating the updated allowance. | |
| * | |
| * Requirements: | |
| * | |
| * - `spender` cannot be the zero address. | |
| */ | |
| function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { | |
| address owner = _msgSender(); | |
| _approve(owner, spender, allowance(owner, spender) + addedValue); | |
| return true; | |
| } | |
| /** | |
| * @dev Atomically decreases the allowance granted to `spender` by the caller. | |
| * | |
| * This is an alternative to {approve} that can be used as a mitigation for | |
| * problems described in {IERC20-approve}. | |
| * | |
| * Emits an {Approval} event indicating the updated allowance. | |
| * | |
| * Requirements: | |
| * | |
| * - `spender` cannot be the zero address. | |
| * - `spender` must have allowance for the caller of at least | |
| * `subtractedValue`. | |
| */ | |
| function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { | |
| address owner = _msgSender(); | |
| uint256 currentAllowance = allowance(owner, spender); | |
| require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); | |
| unchecked { | |
| _approve(owner, spender, currentAllowance - subtractedValue); | |
| } | |
| return true; | |
| } | |
| /** | |
| * @dev Moves `amount` of tokens from `from` to `to`. | |
| * | |
| * This internal function is equivalent to {transfer}, and can be used to | |
| * e.g. implement automatic token fees, slashing mechanisms, etc. | |
| * | |
| * Emits a {Transfer} event. | |
| * | |
| * Requirements: | |
| * | |
| * - `from` cannot be the zero address. | |
| * - `to` cannot be the zero address. | |
| * - `from` must have a balance of at least `amount`. | |
| */ | |
| function _transfer( | |
| address from, | |
| address to, | |
| uint256 amount | |
| ) internal virtual { | |
| require(from != address(0), "ERC20: transfer from the zero address"); | |
| require(to != address(0), "ERC20: transfer to the zero address"); | |
| _beforeTokenTransfer(from, to, amount); | |
| uint256 fromBalance = _balances[from]; | |
| require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); | |
| unchecked { | |
| _balances[from] = fromBalance - amount; | |
| // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by | |
| // decrementing then incrementing. | |
| _balances[to] += amount; | |
| } | |
| emit Transfer(from, to, amount); | |
| _afterTokenTransfer(from, to, amount); | |
| } | |
| /** @dev Creates `amount` tokens and assigns them to `account`, increasing | |
| * the total supply. | |
| * | |
| * Emits a {Transfer} event with `from` set to the zero address. | |
| * | |
| * Requirements: | |
| * | |
| * - `account` cannot be the zero address. | |
| */ | |
| function _mint(address account, uint256 amount) internal virtual { | |
| require(account != address(0), "ERC20: mint to the zero address"); | |
| _beforeTokenTransfer(address(0), account, amount); | |
| _totalSupply += amount; | |
| unchecked { | |
| // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above. | |
| _balances[account] += amount; | |
| } | |
| emit Transfer(address(0), account, amount); | |
| _afterTokenTransfer(address(0), account, amount); | |
| } | |
| /** | |
| * @dev Destroys `amount` tokens from `account`, reducing the | |
| * total supply. | |
| * | |
| * Emits a {Transfer} event with `to` set to the zero address. | |
| * | |
| * Requirements: | |
| * | |
| * - `account` cannot be the zero address. | |
| * - `account` must have at least `amount` tokens. | |
| */ | |
| function _burn(address account, uint256 amount) internal virtual { | |
| require(account != address(0), "ERC20: burn from the zero address"); | |
| _beforeTokenTransfer(account, address(0), amount); | |
| uint256 accountBalance = _balances[account]; | |
| require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); | |
| unchecked { | |
| _balances[account] = accountBalance - amount; | |
| // Overflow not possible: amount <= accountBalance <= totalSupply. | |
| _totalSupply -= amount; | |
| } | |
| emit Transfer(account, address(0), amount); | |
| _afterTokenTransfer(account, address(0), amount); | |
| } | |
| /** | |
| * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. | |
| * | |
| * This internal function is equivalent to `approve`, and can be used to | |
| * e.g. set automatic allowances for certain subsystems, etc. | |
| * | |
| * Emits an {Approval} event. | |
| * | |
| * Requirements: | |
| * | |
| * - `owner` cannot be the zero address. | |
| * - `spender` cannot be the zero address. | |
| */ | |
| function _approve( | |
| address owner, | |
| address spender, | |
| uint256 amount | |
| ) internal virtual { | |
| require(owner != address(0), "ERC20: approve from the zero address"); | |
| require(spender != address(0), "ERC20: approve to the zero address"); | |
| _allowances[owner][spender] = amount; | |
| emit Approval(owner, spender, amount); | |
| } | |
| /** | |
| * @dev Updates `owner` s allowance for `spender` based on spent `amount`. | |
| * | |
| * Does not update the allowance amount in case of infinite allowance. | |
| * Revert if not enough allowance is available. | |
| * | |
| * Might emit an {Approval} event. | |
| */ | |
| function _spendAllowance( | |
| address owner, | |
| address spender, | |
| uint256 amount | |
| ) internal virtual { | |
| uint256 currentAllowance = allowance(owner, spender); | |
| if (currentAllowance != type(uint256).max) { | |
| require(currentAllowance >= amount, "ERC20: insufficient allowance"); | |
| unchecked { | |
| _approve(owner, spender, currentAllowance - amount); | |
| } | |
| } | |
| } | |
| /** | |
| * @dev Hook that is called before any transfer of tokens. This includes | |
| * minting and burning. | |
| * | |
| * Calling conditions: | |
| * | |
| * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens | |
| * will be transferred to `to`. | |
| * - when `from` is zero, `amount` tokens will be minted for `to`. | |
| * - when `to` is zero, `amount` of ``from``'s tokens will be burned. | |
| * - `from` and `to` are never both zero. | |
| * | |
| * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. | |
| */ | |
| function _beforeTokenTransfer( | |
| address from, | |
| address to, | |
| uint256 amount | |
| ) internal virtual {} | |
| /** | |
| * @dev Hook that is called after any transfer of tokens. This includes | |
| * minting and burning. | |
| * | |
| * Calling conditions: | |
| * | |
| * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens | |
| * has been transferred to `to`. | |
| * - when `from` is zero, `amount` tokens have been minted for `to`. | |
| * - when `to` is zero, `amount` of ``from``'s tokens have been burned. | |
| * - `from` and `to` are never both zero. | |
| * | |
| * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. | |
| */ | |
| function _afterTokenTransfer( | |
| address from, | |
| address to, | |
| uint256 amount | |
| ) internal virtual {} | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // SPDX-License-Identifier: MIT | |
| // OpenZeppelin Contracts (last updated v4.7.0) (token/ERC20/extensions/ERC20Snapshot.sol) | |
| pragma solidity ^0.8.0; | |
| import "../ERC20.sol"; | |
| import "../../../utils/Arrays.sol"; | |
| import "../../../utils/Counters.sol"; | |
| /** | |
| * @dev This contract extends an ERC20 token with a snapshot mechanism. When a snapshot is created, the balances and | |
| * total supply at the time are recorded for later access. | |
| * | |
| * This can be used to safely create mechanisms based on token balances such as trustless dividends or weighted voting. | |
| * In naive implementations it's possible to perform a "double spend" attack by reusing the same balance from different | |
| * accounts. By using snapshots to calculate dividends or voting power, those attacks no longer apply. It can also be | |
| * used to create an efficient ERC20 forking mechanism. | |
| * | |
| * Snapshots are created by the internal {_snapshot} function, which will emit the {Snapshot} event and return a | |
| * snapshot id. To get the total supply at the time of a snapshot, call the function {totalSupplyAt} with the snapshot | |
| * id. To get the balance of an account at the time of a snapshot, call the {balanceOfAt} function with the snapshot id | |
| * and the account address. | |
| * | |
| * NOTE: Snapshot policy can be customized by overriding the {_getCurrentSnapshotId} method. For example, having it | |
| * return `block.number` will trigger the creation of snapshot at the beginning of each new block. When overriding this | |
| * function, be careful about the monotonicity of its result. Non-monotonic snapshot ids will break the contract. | |
| * | |
| * Implementing snapshots for every block using this method will incur significant gas costs. For a gas-efficient | |
| * alternative consider {ERC20Votes}. | |
| * | |
| * ==== Gas Costs | |
| * | |
| * Snapshots are efficient. Snapshot creation is _O(1)_. Retrieval of balances or total supply from a snapshot is _O(log | |
| * n)_ in the number of snapshots that have been created, although _n_ for a specific account will generally be much | |
| * smaller since identical balances in subsequent snapshots are stored as a single entry. | |
| * | |
| * There is a constant overhead for normal ERC20 transfers due to the additional snapshot bookkeeping. This overhead is | |
| * only significant for the first transfer that immediately follows a snapshot for a particular account. Subsequent | |
| * transfers will have normal cost until the next snapshot, and so on. | |
| */ | |
| abstract contract ERC20Snapshot is ERC20 { | |
| // Inspired by Jordi Baylina's MiniMeToken to record historical balances: | |
| // https://github.com/Giveth/minime/blob/ea04d950eea153a04c51fa510b068b9dded390cb/contracts/MiniMeToken.sol | |
| using Arrays for uint256[]; | |
| using Counters for Counters.Counter; | |
| // Snapshotted values have arrays of ids and the value corresponding to that id. These could be an array of a | |
| // Snapshot struct, but that would impede usage of functions that work on an array. | |
| struct Snapshots { | |
| uint256[] ids; | |
| uint256[] values; | |
| } | |
| mapping(address => Snapshots) private _accountBalanceSnapshots; | |
| Snapshots private _totalSupplySnapshots; | |
| // Snapshot ids increase monotonically, with the first value being 1. An id of 0 is invalid. | |
| Counters.Counter private _currentSnapshotId; | |
| /** | |
| * @dev Emitted by {_snapshot} when a snapshot identified by `id` is created. | |
| */ | |
| event Snapshot(uint256 id); | |
| /** | |
| * @dev Creates a new snapshot and returns its snapshot id. | |
| * | |
| * Emits a {Snapshot} event that contains the same id. | |
| * | |
| * {_snapshot} is `internal` and you have to decide how to expose it externally. Its usage may be restricted to a | |
| * set of accounts, for example using {AccessControl}, or it may be open to the public. | |
| * | |
| * [WARNING] | |
| * ==== | |
| * While an open way of calling {_snapshot} is required for certain trust minimization mechanisms such as forking, | |
| * you must consider that it can potentially be used by attackers in two ways. | |
| * | |
| * First, it can be used to increase the cost of retrieval of values from snapshots, although it will grow | |
| * logarithmically thus rendering this attack ineffective in the long term. Second, it can be used to target | |
| * specific accounts and increase the cost of ERC20 transfers for them, in the ways specified in the Gas Costs | |
| * section above. | |
| * | |
| * We haven't measured the actual numbers; if this is something you're interested in please reach out to us. | |
| * ==== | |
| */ | |
| function _snapshot() internal virtual returns (uint256) { | |
| _currentSnapshotId.increment(); | |
| uint256 currentId = _getCurrentSnapshotId(); | |
| emit Snapshot(currentId); | |
| return currentId; | |
| } | |
| /** | |
| * @dev Get the current snapshotId | |
| */ | |
| function _getCurrentSnapshotId() internal view virtual returns (uint256) { | |
| return _currentSnapshotId.current(); | |
| } | |
| /** | |
| * @dev Retrieves the balance of `account` at the time `snapshotId` was created. | |
| */ | |
| function balanceOfAt(address account, uint256 snapshotId) public view virtual returns (uint256) { | |
| (bool snapshotted, uint256 value) = _valueAt(snapshotId, _accountBalanceSnapshots[account]); | |
| return snapshotted ? value : balanceOf(account); | |
| } | |
| /** | |
| * @dev Retrieves the total supply at the time `snapshotId` was created. | |
| */ | |
| function totalSupplyAt(uint256 snapshotId) public view virtual returns (uint256) { | |
| (bool snapshotted, uint256 value) = _valueAt(snapshotId, _totalSupplySnapshots); | |
| return snapshotted ? value : totalSupply(); | |
| } | |
| // Update balance and/or total supply snapshots before the values are modified. This is implemented | |
| // in the _beforeTokenTransfer hook, which is executed for _mint, _burn, and _transfer operations. | |
| function _beforeTokenTransfer( | |
| address from, | |
| address to, | |
| uint256 amount | |
| ) internal virtual override { | |
| super._beforeTokenTransfer(from, to, amount); | |
| if (from == address(0)) { | |
| // mint | |
| _updateAccountSnapshot(to); | |
| _updateTotalSupplySnapshot(); | |
| } else if (to == address(0)) { | |
| // burn | |
| _updateAccountSnapshot(from); | |
| _updateTotalSupplySnapshot(); | |
| } else { | |
| // transfer | |
| _updateAccountSnapshot(from); | |
| _updateAccountSnapshot(to); | |
| } | |
| } | |
| function _valueAt(uint256 snapshotId, Snapshots storage snapshots) private view returns (bool, uint256) { | |
| require(snapshotId > 0, "ERC20Snapshot: id is 0"); | |
| require(snapshotId <= _getCurrentSnapshotId(), "ERC20Snapshot: nonexistent id"); | |
| // When a valid snapshot is queried, there are three possibilities: | |
| // a) The queried value was not modified after the snapshot was taken. Therefore, a snapshot entry was never | |
| // created for this id, and all stored snapshot ids are smaller than the requested one. The value that corresponds | |
| // to this id is the current one. | |
| // b) The queried value was modified after the snapshot was taken. Therefore, there will be an entry with the | |
| // requested id, and its value is the one to return. | |
| // c) More snapshots were created after the requested one, and the queried value was later modified. There will be | |
| // no entry for the requested id: the value that corresponds to it is that of the smallest snapshot id that is | |
| // larger than the requested one. | |
| // | |
| // In summary, we need to find an element in an array, returning the index of the smallest value that is larger if | |
| // it is not found, unless said value doesn't exist (e.g. when all values are smaller). Arrays.findUpperBound does | |
| // exactly this. | |
| uint256 index = snapshots.ids.findUpperBound(snapshotId); | |
| if (index == snapshots.ids.length) { | |
| return (false, 0); | |
| } else { | |
| return (true, snapshots.values[index]); | |
| } | |
| } | |
| function _updateAccountSnapshot(address account) private { | |
| _updateSnapshot(_accountBalanceSnapshots[account], balanceOf(account)); | |
| } | |
| function _updateTotalSupplySnapshot() private { | |
| _updateSnapshot(_totalSupplySnapshots, totalSupply()); | |
| } | |
| function _updateSnapshot(Snapshots storage snapshots, uint256 currentValue) private { | |
| uint256 currentId = _getCurrentSnapshotId(); | |
| if (_lastSnapshotId(snapshots.ids) < currentId) { | |
| snapshots.ids.push(currentId); | |
| snapshots.values.push(currentValue); | |
| } | |
| } | |
| function _lastSnapshotId(uint256[] storage ids) private view returns (uint256) { | |
| if (ids.length == 0) { | |
| return 0; | |
| } else { | |
| return ids[ids.length - 1]; | |
| } | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // SPDX-License-Identifier: MIT | |
| // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol) | |
| pragma solidity ^0.8.0; | |
| import "../IERC20.sol"; | |
| /** | |
| * @dev Interface for the optional metadata functions from the ERC20 standard. | |
| * | |
| * _Available since v4.1._ | |
| */ | |
| interface IERC20Metadata is IERC20 { | |
| /** | |
| * @dev Returns the name of the token. | |
| */ | |
| function name() external view returns (string memory); | |
| /** | |
| * @dev Returns the symbol of the token. | |
| */ | |
| function symbol() external view returns (string memory); | |
| /** | |
| * @dev Returns the decimals places of the token. | |
| */ | |
| function decimals() external view returns (uint8); | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // SPDX-License-Identifier: MIT | |
| // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) | |
| pragma solidity ^0.8.0; | |
| /** | |
| * @dev Interface of the ERC20 standard as defined in the EIP. | |
| */ | |
| interface IERC20 { | |
| /** | |
| * @dev Emitted when `value` tokens are moved from one account (`from`) to | |
| * another (`to`). | |
| * | |
| * Note that `value` may be zero. | |
| */ | |
| event Transfer(address indexed from, address indexed to, uint256 value); | |
| /** | |
| * @dev Emitted when the allowance of a `spender` for an `owner` is set by | |
| * a call to {approve}. `value` is the new allowance. | |
| */ | |
| event Approval(address indexed owner, address indexed spender, uint256 value); | |
| /** | |
| * @dev Returns the amount of tokens in existence. | |
| */ | |
| function totalSupply() external view returns (uint256); | |
| /** | |
| * @dev Returns the amount of tokens owned by `account`. | |
| */ | |
| function balanceOf(address account) external view returns (uint256); | |
| /** | |
| * @dev Moves `amount` tokens from the caller's account to `to`. | |
| * | |
| * Returns a boolean value indicating whether the operation succeeded. | |
| * | |
| * Emits a {Transfer} event. | |
| */ | |
| function transfer(address to, uint256 amount) external returns (bool); | |
| /** | |
| * @dev Returns the remaining number of tokens that `spender` will be | |
| * allowed to spend on behalf of `owner` through {transferFrom}. This is | |
| * zero by default. | |
| * | |
| * This value changes when {approve} or {transferFrom} are called. | |
| */ | |
| function allowance(address owner, address spender) external view returns (uint256); | |
| /** | |
| * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. | |
| * | |
| * Returns a boolean value indicating whether the operation succeeded. | |
| * | |
| * IMPORTANT: Beware that changing an allowance with this method brings the risk | |
| * that someone may use both the old and the new allowance by unfortunate | |
| * transaction ordering. One possible solution to mitigate this race | |
| * condition is to first reduce the spender's allowance to 0 and set the | |
| * desired value afterwards: | |
| * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 | |
| * | |
| * Emits an {Approval} event. | |
| */ | |
| function approve(address spender, uint256 amount) external returns (bool); | |
| /** | |
| * @dev Moves `amount` tokens from `from` to `to` using the | |
| * allowance mechanism. `amount` is then deducted from the caller's | |
| * allowance. | |
| * | |
| * Returns a boolean value indicating whether the operation succeeded. | |
| * | |
| * Emits a {Transfer} event. | |
| */ | |
| function transferFrom( | |
| address from, | |
| address to, | |
| uint256 amount | |
| ) external returns (bool); | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // SPDX-License-Identifier: MIT | |
| // OpenZeppelin Contracts (last updated v4.8.0) (utils/Arrays.sol) | |
| pragma solidity ^0.8.0; | |
| import "./StorageSlot.sol"; | |
| import "./math/Math.sol"; | |
| /** | |
| * @dev Collection of functions related to array types. | |
| */ | |
| library Arrays { | |
| using StorageSlot for bytes32; | |
| /** | |
| * @dev Searches a sorted `array` and returns the first index that contains | |
| * a value greater or equal to `element`. If no such index exists (i.e. all | |
| * values in the array are strictly less than `element`), the array length is | |
| * returned. Time complexity O(log n). | |
| * | |
| * `array` is expected to be sorted in ascending order, and to contain no | |
| * repeated elements. | |
| */ | |
| function findUpperBound(uint256[] storage array, uint256 element) internal view returns (uint256) { | |
| if (array.length == 0) { | |
| return 0; | |
| } | |
| uint256 low = 0; | |
| uint256 high = array.length; | |
| while (low < high) { | |
| uint256 mid = Math.average(low, high); | |
| // Note that mid will always be strictly less than high (i.e. it will be a valid array index) | |
| // because Math.average rounds down (it does integer division with truncation). | |
| if (unsafeAccess(array, mid).value > element) { | |
| high = mid; | |
| } else { | |
| low = mid + 1; | |
| } | |
| } | |
| // At this point `low` is the exclusive upper bound. We will return the inclusive upper bound. | |
| if (low > 0 && unsafeAccess(array, low - 1).value == element) { | |
| return low - 1; | |
| } else { | |
| return low; | |
| } | |
| } | |
| /** | |
| * @dev Access an array in an "unsafe" way. Skips solidity "index-out-of-range" check. | |
| * | |
| * WARNING: Only use if you are certain `pos` is lower than the array length. | |
| */ | |
| function unsafeAccess(address[] storage arr, uint256 pos) internal pure returns (StorageSlot.AddressSlot storage) { | |
| bytes32 slot; | |
| /// @solidity memory-safe-assembly | |
| assembly { | |
| mstore(0, arr.slot) | |
| slot := add(keccak256(0, 0x20), pos) | |
| } | |
| return slot.getAddressSlot(); | |
| } | |
| /** | |
| * @dev Access an array in an "unsafe" way. Skips solidity "index-out-of-range" check. | |
| * | |
| * WARNING: Only use if you are certain `pos` is lower than the array length. | |
| */ | |
| function unsafeAccess(bytes32[] storage arr, uint256 pos) internal pure returns (StorageSlot.Bytes32Slot storage) { | |
| bytes32 slot; | |
| /// @solidity memory-safe-assembly | |
| assembly { | |
| mstore(0, arr.slot) | |
| slot := add(keccak256(0, 0x20), pos) | |
| } | |
| return slot.getBytes32Slot(); | |
| } | |
| /** | |
| * @dev Access an array in an "unsafe" way. Skips solidity "index-out-of-range" check. | |
| * | |
| * WARNING: Only use if you are certain `pos` is lower than the array length. | |
| */ | |
| function unsafeAccess(uint256[] storage arr, uint256 pos) internal pure returns (StorageSlot.Uint256Slot storage) { | |
| bytes32 slot; | |
| /// @solidity memory-safe-assembly | |
| assembly { | |
| mstore(0, arr.slot) | |
| slot := add(keccak256(0, 0x20), pos) | |
| } | |
| return slot.getUint256Slot(); | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // 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; | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // 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; | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // SPDX-License-Identifier: MIT | |
| // OpenZeppelin Contracts (last updated v4.8.0) (utils/math/Math.sol) | |
| pragma solidity ^0.8.0; | |
| /** | |
| * @dev Standard math utilities missing in the Solidity language. | |
| */ | |
| library Math { | |
| enum Rounding { | |
| Down, // Toward negative infinity | |
| Up, // Toward infinity | |
| Zero // Toward zero | |
| } | |
| /** | |
| * @dev Returns the largest of two numbers. | |
| */ | |
| function max(uint256 a, uint256 b) internal pure returns (uint256) { | |
| return a > b ? a : b; | |
| } | |
| /** | |
| * @dev Returns the smallest of two numbers. | |
| */ | |
| function min(uint256 a, uint256 b) internal pure returns (uint256) { | |
| return a < b ? a : b; | |
| } | |
| /** | |
| * @dev Returns the average of two numbers. The result is rounded towards | |
| * zero. | |
| */ | |
| function average(uint256 a, uint256 b) internal pure returns (uint256) { | |
| // (a + b) / 2 can overflow. | |
| return (a & b) + (a ^ b) / 2; | |
| } | |
| /** | |
| * @dev Returns the ceiling of the division of two numbers. | |
| * | |
| * This differs from standard division with `/` in that it rounds up instead | |
| * of rounding down. | |
| */ | |
| function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) { | |
| // (a + b - 1) / b can overflow on addition, so we distribute. | |
| return a == 0 ? 0 : (a - 1) / b + 1; | |
| } | |
| /** | |
| * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0 | |
| * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) | |
| * with further edits by Uniswap Labs also under MIT license. | |
| */ | |
| function mulDiv( | |
| uint256 x, | |
| uint256 y, | |
| uint256 denominator | |
| ) internal pure returns (uint256 result) { | |
| unchecked { | |
| // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use | |
| // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256 | |
| // variables such that product = prod1 * 2^256 + prod0. | |
| uint256 prod0; // Least significant 256 bits of the product | |
| uint256 prod1; // Most significant 256 bits of the product | |
| assembly { | |
| let mm := mulmod(x, y, not(0)) | |
| prod0 := mul(x, y) | |
| prod1 := sub(sub(mm, prod0), lt(mm, prod0)) | |
| } | |
| // Handle non-overflow cases, 256 by 256 division. | |
| if (prod1 == 0) { | |
| return prod0 / denominator; | |
| } | |
| // Make sure the result is less than 2^256. Also prevents denominator == 0. | |
| require(denominator > prod1); | |
| /////////////////////////////////////////////// | |
| // 512 by 256 division. | |
| /////////////////////////////////////////////// | |
| // Make division exact by subtracting the remainder from [prod1 prod0]. | |
| uint256 remainder; | |
| assembly { | |
| // Compute remainder using mulmod. | |
| remainder := mulmod(x, y, denominator) | |
| // Subtract 256 bit number from 512 bit number. | |
| prod1 := sub(prod1, gt(remainder, prod0)) | |
| prod0 := sub(prod0, remainder) | |
| } | |
| // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1. | |
| // See https://cs.stackexchange.com/q/138556/92363. | |
| // Does not overflow because the denominator cannot be zero at this stage in the function. | |
| uint256 twos = denominator & (~denominator + 1); | |
| assembly { | |
| // Divide denominator by twos. | |
| denominator := div(denominator, twos) | |
| // Divide [prod1 prod0] by twos. | |
| prod0 := div(prod0, twos) | |
| // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one. | |
| twos := add(div(sub(0, twos), twos), 1) | |
| } | |
| // Shift in bits from prod1 into prod0. | |
| prod0 |= prod1 * twos; | |
| // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such | |
| // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for | |
| // four bits. That is, denominator * inv = 1 mod 2^4. | |
| uint256 inverse = (3 * denominator) ^ 2; | |
| // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works | |
| // in modular arithmetic, doubling the correct bits in each step. | |
| inverse *= 2 - denominator * inverse; // inverse mod 2^8 | |
| inverse *= 2 - denominator * inverse; // inverse mod 2^16 | |
| inverse *= 2 - denominator * inverse; // inverse mod 2^32 | |
| inverse *= 2 - denominator * inverse; // inverse mod 2^64 | |
| inverse *= 2 - denominator * inverse; // inverse mod 2^128 | |
| inverse *= 2 - denominator * inverse; // inverse mod 2^256 | |
| // Because the division is now exact we can divide by multiplying with the modular inverse of denominator. | |
| // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is | |
| // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1 | |
| // is no longer required. | |
| result = prod0 * inverse; | |
| return result; | |
| } | |
| } | |
| /** | |
| * @notice Calculates x * y / denominator with full precision, following the selected rounding direction. | |
| */ | |
| function mulDiv( | |
| uint256 x, | |
| uint256 y, | |
| uint256 denominator, | |
| Rounding rounding | |
| ) internal pure returns (uint256) { | |
| uint256 result = mulDiv(x, y, denominator); | |
| if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) { | |
| result += 1; | |
| } | |
| return result; | |
| } | |
| /** | |
| * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down. | |
| * | |
| * Inspired by Henry S. Warren, Jr.'s "Hacker's Delight" (Chapter 11). | |
| */ | |
| function sqrt(uint256 a) internal pure returns (uint256) { | |
| if (a == 0) { | |
| return 0; | |
| } | |
| // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target. | |
| // | |
| // We know that the "msb" (most significant bit) of our target number `a` is a power of 2 such that we have | |
| // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`. | |
| // | |
| // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)` | |
| // → `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))` | |
| // → `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)` | |
| // | |
| // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit. | |
| uint256 result = 1 << (log2(a) >> 1); | |
| // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128, | |
| // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at | |
| // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision | |
| // into the expected uint128 result. | |
| unchecked { | |
| result = (result + a / result) >> 1; | |
| result = (result + a / result) >> 1; | |
| result = (result + a / result) >> 1; | |
| result = (result + a / result) >> 1; | |
| result = (result + a / result) >> 1; | |
| result = (result + a / result) >> 1; | |
| result = (result + a / result) >> 1; | |
| return min(result, a / result); | |
| } | |
| } | |
| /** | |
| * @notice Calculates sqrt(a), following the selected rounding direction. | |
| */ | |
| function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) { | |
| unchecked { | |
| uint256 result = sqrt(a); | |
| return result + (rounding == Rounding.Up && result * result < a ? 1 : 0); | |
| } | |
| } | |
| /** | |
| * @dev Return the log in base 2, rounded down, of a positive value. | |
| * Returns 0 if given 0. | |
| */ | |
| function log2(uint256 value) internal pure returns (uint256) { | |
| uint256 result = 0; | |
| unchecked { | |
| if (value >> 128 > 0) { | |
| value >>= 128; | |
| result += 128; | |
| } | |
| if (value >> 64 > 0) { | |
| value >>= 64; | |
| result += 64; | |
| } | |
| if (value >> 32 > 0) { | |
| value >>= 32; | |
| result += 32; | |
| } | |
| if (value >> 16 > 0) { | |
| value >>= 16; | |
| result += 16; | |
| } | |
| if (value >> 8 > 0) { | |
| value >>= 8; | |
| result += 8; | |
| } | |
| if (value >> 4 > 0) { | |
| value >>= 4; | |
| result += 4; | |
| } | |
| if (value >> 2 > 0) { | |
| value >>= 2; | |
| result += 2; | |
| } | |
| if (value >> 1 > 0) { | |
| result += 1; | |
| } | |
| } | |
| return result; | |
| } | |
| /** | |
| * @dev Return the log in base 2, following the selected rounding direction, of a positive value. | |
| * Returns 0 if given 0. | |
| */ | |
| function log2(uint256 value, Rounding rounding) internal pure returns (uint256) { | |
| unchecked { | |
| uint256 result = log2(value); | |
| return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0); | |
| } | |
| } | |
| /** | |
| * @dev Return the log in base 10, rounded down, of a positive value. | |
| * Returns 0 if given 0. | |
| */ | |
| function log10(uint256 value) internal pure returns (uint256) { | |
| uint256 result = 0; | |
| unchecked { | |
| if (value >= 10**64) { | |
| value /= 10**64; | |
| result += 64; | |
| } | |
| if (value >= 10**32) { | |
| value /= 10**32; | |
| result += 32; | |
| } | |
| if (value >= 10**16) { | |
| value /= 10**16; | |
| result += 16; | |
| } | |
| if (value >= 10**8) { | |
| value /= 10**8; | |
| result += 8; | |
| } | |
| if (value >= 10**4) { | |
| value /= 10**4; | |
| result += 4; | |
| } | |
| if (value >= 10**2) { | |
| value /= 10**2; | |
| result += 2; | |
| } | |
| if (value >= 10**1) { | |
| result += 1; | |
| } | |
| } | |
| return result; | |
| } | |
| /** | |
| * @dev Return the log in base 10, following the selected rounding direction, of a positive value. | |
| * Returns 0 if given 0. | |
| */ | |
| function log10(uint256 value, Rounding rounding) internal pure returns (uint256) { | |
| unchecked { | |
| uint256 result = log10(value); | |
| return result + (rounding == Rounding.Up && 10**result < value ? 1 : 0); | |
| } | |
| } | |
| /** | |
| * @dev Return the log in base 256, rounded down, of a positive value. | |
| * Returns 0 if given 0. | |
| * | |
| * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string. | |
| */ | |
| function log256(uint256 value) internal pure returns (uint256) { | |
| uint256 result = 0; | |
| unchecked { | |
| if (value >> 128 > 0) { | |
| value >>= 128; | |
| result += 16; | |
| } | |
| if (value >> 64 > 0) { | |
| value >>= 64; | |
| result += 8; | |
| } | |
| if (value >> 32 > 0) { | |
| value >>= 32; | |
| result += 4; | |
| } | |
| if (value >> 16 > 0) { | |
| value >>= 16; | |
| result += 2; | |
| } | |
| if (value >> 8 > 0) { | |
| result += 1; | |
| } | |
| } | |
| return result; | |
| } | |
| /** | |
| * @dev Return the log in base 10, following the selected rounding direction, of a positive value. | |
| * Returns 0 if given 0. | |
| */ | |
| function log256(uint256 value, Rounding rounding) internal pure returns (uint256) { | |
| unchecked { | |
| uint256 result = log256(value); | |
| return result + (rounding == Rounding.Up && 1 << (result * 8) < value ? 1 : 0); | |
| } | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // SPDX-License-Identifier: MIT | |
| // OpenZeppelin Contracts (last updated v4.7.0) (utils/StorageSlot.sol) | |
| pragma solidity ^0.8.0; | |
| /** | |
| * @dev Library for reading and writing primitive types to specific storage slots. | |
| * | |
| * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. | |
| * This library helps with reading and writing to such slots without the need for inline assembly. | |
| * | |
| * The functions in this library return Slot structs that contain a `value` member that can be used to read or write. | |
| * | |
| * Example usage to set ERC1967 implementation slot: | |
| * ``` | |
| * contract ERC1967 { | |
| * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; | |
| * | |
| * function _getImplementation() internal view returns (address) { | |
| * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; | |
| * } | |
| * | |
| * function _setImplementation(address newImplementation) internal { | |
| * require(Address.isContract(newImplementation), "ERC1967: new implementation is not a contract"); | |
| * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; | |
| * } | |
| * } | |
| * ``` | |
| * | |
| * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._ | |
| */ | |
| library StorageSlot { | |
| struct AddressSlot { | |
| address value; | |
| } | |
| struct BooleanSlot { | |
| bool value; | |
| } | |
| struct Bytes32Slot { | |
| bytes32 value; | |
| } | |
| struct Uint256Slot { | |
| uint256 value; | |
| } | |
| /** | |
| * @dev Returns an `AddressSlot` with member `value` located at `slot`. | |
| */ | |
| function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) { | |
| /// @solidity memory-safe-assembly | |
| assembly { | |
| r.slot := slot | |
| } | |
| } | |
| /** | |
| * @dev Returns an `BooleanSlot` with member `value` located at `slot`. | |
| */ | |
| function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) { | |
| /// @solidity memory-safe-assembly | |
| assembly { | |
| r.slot := slot | |
| } | |
| } | |
| /** | |
| * @dev Returns an `Bytes32Slot` with member `value` located at `slot`. | |
| */ | |
| function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) { | |
| /// @solidity memory-safe-assembly | |
| assembly { | |
| r.slot := slot | |
| } | |
| } | |
| /** | |
| * @dev Returns an `Uint256Slot` with member `value` located at `slot`. | |
| */ | |
| function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) { | |
| /// @solidity memory-safe-assembly | |
| assembly { | |
| r.slot := slot | |
| } | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "deploy": { | |
| "VM:-": { | |
| "linkReferences": {}, | |
| "autoDeployLib": true | |
| }, | |
| "main:1": { | |
| "linkReferences": {}, | |
| "autoDeployLib": true | |
| }, | |
| "ropsten:3": { | |
| "linkReferences": {}, | |
| "autoDeployLib": true | |
| }, | |
| "rinkeby:4": { | |
| "linkReferences": {}, | |
| "autoDeployLib": true | |
| }, | |
| "kovan:42": { | |
| "linkReferences": {}, | |
| "autoDeployLib": true | |
| }, | |
| "goerli:5": { | |
| "linkReferences": {}, | |
| "autoDeployLib": true | |
| }, | |
| "Custom": { | |
| "linkReferences": {}, | |
| "autoDeployLib": true | |
| } | |
| }, | |
| "data": { | |
| "bytecode": { | |
| "functionDebugData": { | |
| "@_157": { | |
| "entryPoint": null, | |
| "id": 157, | |
| "parameterSlots": 2, | |
| "returnSlots": 0 | |
| }, | |
| "@_23": { | |
| "entryPoint": null, | |
| "id": 23, | |
| "parameterSlots": 0, | |
| "returnSlots": 0 | |
| }, | |
| "@_2326": { | |
| "entryPoint": null, | |
| "id": 2326, | |
| "parameterSlots": 0, | |
| "returnSlots": 0 | |
| }, | |
| "@_msgSender_1298": { | |
| "entryPoint": 202, | |
| "id": 1298, | |
| "parameterSlots": 0, | |
| "returnSlots": 1 | |
| }, | |
| "@_transferOwnership_111": { | |
| "entryPoint": 210, | |
| "id": 111, | |
| "parameterSlots": 1, | |
| "returnSlots": 0 | |
| }, | |
| "array_dataslot_t_string_storage": { | |
| "entryPoint": 566, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "array_length_t_string_memory_ptr": { | |
| "entryPoint": 408, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "clean_up_bytearray_end_slots_t_string_storage": { | |
| "entryPoint": 887, | |
| "id": null, | |
| "parameterSlots": 3, | |
| "returnSlots": 0 | |
| }, | |
| "cleanup_t_uint256": { | |
| "entryPoint": 702, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "clear_storage_range_t_bytes1": { | |
| "entryPoint": 848, | |
| "id": null, | |
| "parameterSlots": 2, | |
| "returnSlots": 0 | |
| }, | |
| "convert_t_uint256_to_t_uint256": { | |
| "entryPoint": 722, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage": { | |
| "entryPoint": 1042, | |
| "id": null, | |
| "parameterSlots": 2, | |
| "returnSlots": 0 | |
| }, | |
| "divide_by_32_ceil": { | |
| "entryPoint": 587, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "extract_byte_array_length": { | |
| "entryPoint": 513, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "extract_used_part_and_set_length_of_short_byte_array": { | |
| "entryPoint": 1012, | |
| "id": null, | |
| "parameterSlots": 2, | |
| "returnSlots": 1 | |
| }, | |
| "identity": { | |
| "entryPoint": 712, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "mask_bytes_dynamic": { | |
| "entryPoint": 980, | |
| "id": null, | |
| "parameterSlots": 2, | |
| "returnSlots": 1 | |
| }, | |
| "panic_error_0x22": { | |
| "entryPoint": 466, | |
| "id": null, | |
| "parameterSlots": 0, | |
| "returnSlots": 0 | |
| }, | |
| "panic_error_0x41": { | |
| "entryPoint": 419, | |
| "id": null, | |
| "parameterSlots": 0, | |
| "returnSlots": 0 | |
| }, | |
| "prepare_store_t_uint256": { | |
| "entryPoint": 762, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "shift_left_dynamic": { | |
| "entryPoint": 603, | |
| "id": null, | |
| "parameterSlots": 2, | |
| "returnSlots": 1 | |
| }, | |
| "shift_right_unsigned_dynamic": { | |
| "entryPoint": 967, | |
| "id": null, | |
| "parameterSlots": 2, | |
| "returnSlots": 1 | |
| }, | |
| "storage_set_to_zero_t_uint256": { | |
| "entryPoint": 820, | |
| "id": null, | |
| "parameterSlots": 2, | |
| "returnSlots": 0 | |
| }, | |
| "update_byte_slice_dynamic32": { | |
| "entryPoint": 616, | |
| "id": null, | |
| "parameterSlots": 3, | |
| "returnSlots": 1 | |
| }, | |
| "update_storage_value_t_uint256_to_t_uint256": { | |
| "entryPoint": 772, | |
| "id": null, | |
| "parameterSlots": 3, | |
| "returnSlots": 0 | |
| }, | |
| "zero_value_for_split_t_uint256": { | |
| "entryPoint": 815, | |
| "id": null, | |
| "parameterSlots": 0, | |
| "returnSlots": 1 | |
| } | |
| }, | |
| "generatedSources": [ | |
| { | |
| "ast": { | |
| "nodeType": "YulBlock", | |
| "src": "0:5231:11", | |
| "statements": [ | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "66:40:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "77:22:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulIdentifier", | |
| "src": "93:5:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mload", | |
| "nodeType": "YulIdentifier", | |
| "src": "87:5:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "87:12:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "length", | |
| "nodeType": "YulIdentifier", | |
| "src": "77:6:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "array_length_t_string_memory_ptr", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulTypedName", | |
| "src": "49:5:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "length", | |
| "nodeType": "YulTypedName", | |
| "src": "59:6:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "7:99:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "140:152:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "157:1:11", | |
| "type": "", | |
| "value": "0" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "160:77:11", | |
| "type": "", | |
| "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "150:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "150:88:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "150:88:11" | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "254:1:11", | |
| "type": "", | |
| "value": "4" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "257:4:11", | |
| "type": "", | |
| "value": "0x41" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "247:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "247:15:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "247:15:11" | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "278:1:11", | |
| "type": "", | |
| "value": "0" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "281:4:11", | |
| "type": "", | |
| "value": "0x24" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "revert", | |
| "nodeType": "YulIdentifier", | |
| "src": "271:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "271:15:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "271:15:11" | |
| } | |
| ] | |
| }, | |
| "name": "panic_error_0x41", | |
| "nodeType": "YulFunctionDefinition", | |
| "src": "112:180:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "326:152:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "343:1:11", | |
| "type": "", | |
| "value": "0" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "346:77:11", | |
| "type": "", | |
| "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "336:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "336:88:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "336:88:11" | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "440:1:11", | |
| "type": "", | |
| "value": "4" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "443:4:11", | |
| "type": "", | |
| "value": "0x22" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "433:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "433:15:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "433:15:11" | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "464:1:11", | |
| "type": "", | |
| "value": "0" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "467:4:11", | |
| "type": "", | |
| "value": "0x24" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "revert", | |
| "nodeType": "YulIdentifier", | |
| "src": "457:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "457:15:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "457:15:11" | |
| } | |
| ] | |
| }, | |
| "name": "panic_error_0x22", | |
| "nodeType": "YulFunctionDefinition", | |
| "src": "298:180:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "535:269:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "545:22:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "data", | |
| "nodeType": "YulIdentifier", | |
| "src": "559:4:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "565:1:11", | |
| "type": "", | |
| "value": "2" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "div", | |
| "nodeType": "YulIdentifier", | |
| "src": "555:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "555:12:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "length", | |
| "nodeType": "YulIdentifier", | |
| "src": "545:6:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "nodeType": "YulVariableDeclaration", | |
| "src": "576:38:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "data", | |
| "nodeType": "YulIdentifier", | |
| "src": "606:4:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "612:1:11", | |
| "type": "", | |
| "value": "1" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "and", | |
| "nodeType": "YulIdentifier", | |
| "src": "602:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "602:12:11" | |
| }, | |
| "variables": [ | |
| { | |
| "name": "outOfPlaceEncoding", | |
| "nodeType": "YulTypedName", | |
| "src": "580:18:11", | |
| "type": "" | |
| } | |
| ] | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "653:51:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "667:27:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "length", | |
| "nodeType": "YulIdentifier", | |
| "src": "681:6:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "689:4:11", | |
| "type": "", | |
| "value": "0x7f" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "and", | |
| "nodeType": "YulIdentifier", | |
| "src": "677:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "677:17:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "length", | |
| "nodeType": "YulIdentifier", | |
| "src": "667:6:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "condition": { | |
| "arguments": [ | |
| { | |
| "name": "outOfPlaceEncoding", | |
| "nodeType": "YulIdentifier", | |
| "src": "633:18:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "iszero", | |
| "nodeType": "YulIdentifier", | |
| "src": "626:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "626:26:11" | |
| }, | |
| "nodeType": "YulIf", | |
| "src": "623:81:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "756:42:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [], | |
| "functionName": { | |
| "name": "panic_error_0x22", | |
| "nodeType": "YulIdentifier", | |
| "src": "770:16:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "770:18:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "770:18:11" | |
| } | |
| ] | |
| }, | |
| "condition": { | |
| "arguments": [ | |
| { | |
| "name": "outOfPlaceEncoding", | |
| "nodeType": "YulIdentifier", | |
| "src": "720:18:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "name": "length", | |
| "nodeType": "YulIdentifier", | |
| "src": "743:6:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "751:2:11", | |
| "type": "", | |
| "value": "32" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "lt", | |
| "nodeType": "YulIdentifier", | |
| "src": "740:2:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "740:14:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "eq", | |
| "nodeType": "YulIdentifier", | |
| "src": "717:2:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "717:38:11" | |
| }, | |
| "nodeType": "YulIf", | |
| "src": "714:84:11" | |
| } | |
| ] | |
| }, | |
| "name": "extract_byte_array_length", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "data", | |
| "nodeType": "YulTypedName", | |
| "src": "519:4:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "length", | |
| "nodeType": "YulTypedName", | |
| "src": "528:6:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "484:320:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "864:87:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "874:11:11", | |
| "value": { | |
| "name": "ptr", | |
| "nodeType": "YulIdentifier", | |
| "src": "882:3:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "data", | |
| "nodeType": "YulIdentifier", | |
| "src": "874:4:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "902:1:11", | |
| "type": "", | |
| "value": "0" | |
| }, | |
| { | |
| "name": "ptr", | |
| "nodeType": "YulIdentifier", | |
| "src": "905:3:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "895:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "895:14:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "895:14:11" | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "918:26:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "936:1:11", | |
| "type": "", | |
| "value": "0" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "939:4:11", | |
| "type": "", | |
| "value": "0x20" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "keccak256", | |
| "nodeType": "YulIdentifier", | |
| "src": "926:9:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "926:18:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "data", | |
| "nodeType": "YulIdentifier", | |
| "src": "918:4:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "array_dataslot_t_string_storage", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "ptr", | |
| "nodeType": "YulTypedName", | |
| "src": "851:3:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "data", | |
| "nodeType": "YulTypedName", | |
| "src": "859:4:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "810:141:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "1001:49:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "1011:33:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulIdentifier", | |
| "src": "1029:5:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "1036:2:11", | |
| "type": "", | |
| "value": "31" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "1025:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "1025:14:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "1041:2:11", | |
| "type": "", | |
| "value": "32" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "div", | |
| "nodeType": "YulIdentifier", | |
| "src": "1021:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "1021:23:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "result", | |
| "nodeType": "YulIdentifier", | |
| "src": "1011:6:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "divide_by_32_ceil", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulTypedName", | |
| "src": "984:5:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "result", | |
| "nodeType": "YulTypedName", | |
| "src": "994:6:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "957:93:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "1109:54:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "1119:37:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "bits", | |
| "nodeType": "YulIdentifier", | |
| "src": "1144:4:11" | |
| }, | |
| { | |
| "name": "value", | |
| "nodeType": "YulIdentifier", | |
| "src": "1150:5:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "shl", | |
| "nodeType": "YulIdentifier", | |
| "src": "1140:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "1140:16:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "newValue", | |
| "nodeType": "YulIdentifier", | |
| "src": "1119:8:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "shift_left_dynamic", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "bits", | |
| "nodeType": "YulTypedName", | |
| "src": "1084:4:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "value", | |
| "nodeType": "YulTypedName", | |
| "src": "1090:5:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "newValue", | |
| "nodeType": "YulTypedName", | |
| "src": "1100:8:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "1056:107:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "1245:317:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulVariableDeclaration", | |
| "src": "1255:35:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "shiftBytes", | |
| "nodeType": "YulIdentifier", | |
| "src": "1276:10:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "1288:1:11", | |
| "type": "", | |
| "value": "8" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mul", | |
| "nodeType": "YulIdentifier", | |
| "src": "1272:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "1272:18:11" | |
| }, | |
| "variables": [ | |
| { | |
| "name": "shiftBits", | |
| "nodeType": "YulTypedName", | |
| "src": "1259:9:11", | |
| "type": "" | |
| } | |
| ] | |
| }, | |
| { | |
| "nodeType": "YulVariableDeclaration", | |
| "src": "1299:109:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "shiftBits", | |
| "nodeType": "YulIdentifier", | |
| "src": "1330:9:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "1341:66:11", | |
| "type": "", | |
| "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "shift_left_dynamic", | |
| "nodeType": "YulIdentifier", | |
| "src": "1311:18:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "1311:97:11" | |
| }, | |
| "variables": [ | |
| { | |
| "name": "mask", | |
| "nodeType": "YulTypedName", | |
| "src": "1303:4:11", | |
| "type": "" | |
| } | |
| ] | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "1417:51:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "shiftBits", | |
| "nodeType": "YulIdentifier", | |
| "src": "1448:9:11" | |
| }, | |
| { | |
| "name": "toInsert", | |
| "nodeType": "YulIdentifier", | |
| "src": "1459:8:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "shift_left_dynamic", | |
| "nodeType": "YulIdentifier", | |
| "src": "1429:18:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "1429:39:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "toInsert", | |
| "nodeType": "YulIdentifier", | |
| "src": "1417:8:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "1477:30:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulIdentifier", | |
| "src": "1490:5:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "name": "mask", | |
| "nodeType": "YulIdentifier", | |
| "src": "1501:4:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "not", | |
| "nodeType": "YulIdentifier", | |
| "src": "1497:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "1497:9:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "and", | |
| "nodeType": "YulIdentifier", | |
| "src": "1486:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "1486:21:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulIdentifier", | |
| "src": "1477:5:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "1516:40:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulIdentifier", | |
| "src": "1529:5:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "name": "toInsert", | |
| "nodeType": "YulIdentifier", | |
| "src": "1540:8:11" | |
| }, | |
| { | |
| "name": "mask", | |
| "nodeType": "YulIdentifier", | |
| "src": "1550:4:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "and", | |
| "nodeType": "YulIdentifier", | |
| "src": "1536:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "1536:19:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "or", | |
| "nodeType": "YulIdentifier", | |
| "src": "1526:2:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "1526:30:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "result", | |
| "nodeType": "YulIdentifier", | |
| "src": "1516:6:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "update_byte_slice_dynamic32", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulTypedName", | |
| "src": "1206:5:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "shiftBytes", | |
| "nodeType": "YulTypedName", | |
| "src": "1213:10:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "toInsert", | |
| "nodeType": "YulTypedName", | |
| "src": "1225:8:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "result", | |
| "nodeType": "YulTypedName", | |
| "src": "1238:6:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "1169:393:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "1613:32:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "1623:16:11", | |
| "value": { | |
| "name": "value", | |
| "nodeType": "YulIdentifier", | |
| "src": "1634:5:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "cleaned", | |
| "nodeType": "YulIdentifier", | |
| "src": "1623:7:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "cleanup_t_uint256", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulTypedName", | |
| "src": "1595:5:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "cleaned", | |
| "nodeType": "YulTypedName", | |
| "src": "1605:7:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "1568:77:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "1683:28:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "1693:12:11", | |
| "value": { | |
| "name": "value", | |
| "nodeType": "YulIdentifier", | |
| "src": "1700:5:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "ret", | |
| "nodeType": "YulIdentifier", | |
| "src": "1693:3:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "identity", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulTypedName", | |
| "src": "1669:5:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "ret", | |
| "nodeType": "YulTypedName", | |
| "src": "1679:3:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "1651:60:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "1777:82:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "1787:66:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulIdentifier", | |
| "src": "1845:5:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "cleanup_t_uint256", | |
| "nodeType": "YulIdentifier", | |
| "src": "1827:17:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "1827:24:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "identity", | |
| "nodeType": "YulIdentifier", | |
| "src": "1818:8:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "1818:34:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "cleanup_t_uint256", | |
| "nodeType": "YulIdentifier", | |
| "src": "1800:17:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "1800:53:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "converted", | |
| "nodeType": "YulIdentifier", | |
| "src": "1787:9:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "convert_t_uint256_to_t_uint256", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulTypedName", | |
| "src": "1757:5:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "converted", | |
| "nodeType": "YulTypedName", | |
| "src": "1767:9:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "1717:142:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "1912:28:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "1922:12:11", | |
| "value": { | |
| "name": "value", | |
| "nodeType": "YulIdentifier", | |
| "src": "1929:5:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "ret", | |
| "nodeType": "YulIdentifier", | |
| "src": "1922:3:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "prepare_store_t_uint256", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulTypedName", | |
| "src": "1898:5:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "ret", | |
| "nodeType": "YulTypedName", | |
| "src": "1908:3:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "1865:75:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "2022:193:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulVariableDeclaration", | |
| "src": "2032:63:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "value_0", | |
| "nodeType": "YulIdentifier", | |
| "src": "2087:7:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "convert_t_uint256_to_t_uint256", | |
| "nodeType": "YulIdentifier", | |
| "src": "2056:30:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "2056:39:11" | |
| }, | |
| "variables": [ | |
| { | |
| "name": "convertedValue_0", | |
| "nodeType": "YulTypedName", | |
| "src": "2036:16:11", | |
| "type": "" | |
| } | |
| ] | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "name": "slot", | |
| "nodeType": "YulIdentifier", | |
| "src": "2111:4:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "slot", | |
| "nodeType": "YulIdentifier", | |
| "src": "2151:4:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "sload", | |
| "nodeType": "YulIdentifier", | |
| "src": "2145:5:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "2145:11:11" | |
| }, | |
| { | |
| "name": "offset", | |
| "nodeType": "YulIdentifier", | |
| "src": "2158:6:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "name": "convertedValue_0", | |
| "nodeType": "YulIdentifier", | |
| "src": "2190:16:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "prepare_store_t_uint256", | |
| "nodeType": "YulIdentifier", | |
| "src": "2166:23:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "2166:41:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "update_byte_slice_dynamic32", | |
| "nodeType": "YulIdentifier", | |
| "src": "2117:27:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "2117:91:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "sstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "2104:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "2104:105:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "2104:105:11" | |
| } | |
| ] | |
| }, | |
| "name": "update_storage_value_t_uint256_to_t_uint256", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "slot", | |
| "nodeType": "YulTypedName", | |
| "src": "1999:4:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "offset", | |
| "nodeType": "YulTypedName", | |
| "src": "2005:6:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "value_0", | |
| "nodeType": "YulTypedName", | |
| "src": "2013:7:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "1946:269:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "2270:24:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "2280:8:11", | |
| "value": { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "2287:1:11", | |
| "type": "", | |
| "value": "0" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "ret", | |
| "nodeType": "YulIdentifier", | |
| "src": "2280:3:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "zero_value_for_split_t_uint256", | |
| "nodeType": "YulFunctionDefinition", | |
| "returnVariables": [ | |
| { | |
| "name": "ret", | |
| "nodeType": "YulTypedName", | |
| "src": "2266:3:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "2221:73:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "2353:136:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulVariableDeclaration", | |
| "src": "2363:46:11", | |
| "value": { | |
| "arguments": [], | |
| "functionName": { | |
| "name": "zero_value_for_split_t_uint256", | |
| "nodeType": "YulIdentifier", | |
| "src": "2377:30:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "2377:32:11" | |
| }, | |
| "variables": [ | |
| { | |
| "name": "zero_0", | |
| "nodeType": "YulTypedName", | |
| "src": "2367:6:11", | |
| "type": "" | |
| } | |
| ] | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "name": "slot", | |
| "nodeType": "YulIdentifier", | |
| "src": "2462:4:11" | |
| }, | |
| { | |
| "name": "offset", | |
| "nodeType": "YulIdentifier", | |
| "src": "2468:6:11" | |
| }, | |
| { | |
| "name": "zero_0", | |
| "nodeType": "YulIdentifier", | |
| "src": "2476:6:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "update_storage_value_t_uint256_to_t_uint256", | |
| "nodeType": "YulIdentifier", | |
| "src": "2418:43:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "2418:65:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "2418:65:11" | |
| } | |
| ] | |
| }, | |
| "name": "storage_set_to_zero_t_uint256", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "slot", | |
| "nodeType": "YulTypedName", | |
| "src": "2339:4:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "offset", | |
| "nodeType": "YulTypedName", | |
| "src": "2345:6:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "2300:189:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "2545:136:11", | |
| "statements": [ | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "2612:63:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "name": "start", | |
| "nodeType": "YulIdentifier", | |
| "src": "2656:5:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "2663:1:11", | |
| "type": "", | |
| "value": "0" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "storage_set_to_zero_t_uint256", | |
| "nodeType": "YulIdentifier", | |
| "src": "2626:29:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "2626:39:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "2626:39:11" | |
| } | |
| ] | |
| }, | |
| "condition": { | |
| "arguments": [ | |
| { | |
| "name": "start", | |
| "nodeType": "YulIdentifier", | |
| "src": "2565:5:11" | |
| }, | |
| { | |
| "name": "end", | |
| "nodeType": "YulIdentifier", | |
| "src": "2572:3:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "lt", | |
| "nodeType": "YulIdentifier", | |
| "src": "2562:2:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "2562:14:11" | |
| }, | |
| "nodeType": "YulForLoop", | |
| "post": { | |
| "nodeType": "YulBlock", | |
| "src": "2577:26:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "2579:22:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "start", | |
| "nodeType": "YulIdentifier", | |
| "src": "2592:5:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "2599:1:11", | |
| "type": "", | |
| "value": "1" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "2588:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "2588:13:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "start", | |
| "nodeType": "YulIdentifier", | |
| "src": "2579:5:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "pre": { | |
| "nodeType": "YulBlock", | |
| "src": "2559:2:11", | |
| "statements": [] | |
| }, | |
| "src": "2555:120:11" | |
| } | |
| ] | |
| }, | |
| "name": "clear_storage_range_t_bytes1", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "start", | |
| "nodeType": "YulTypedName", | |
| "src": "2533:5:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "end", | |
| "nodeType": "YulTypedName", | |
| "src": "2540:3:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "2495:186:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "2766:464:11", | |
| "statements": [ | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "2792:431:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulVariableDeclaration", | |
| "src": "2806:54:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "array", | |
| "nodeType": "YulIdentifier", | |
| "src": "2854:5:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "array_dataslot_t_string_storage", | |
| "nodeType": "YulIdentifier", | |
| "src": "2822:31:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "2822:38:11" | |
| }, | |
| "variables": [ | |
| { | |
| "name": "dataArea", | |
| "nodeType": "YulTypedName", | |
| "src": "2810:8:11", | |
| "type": "" | |
| } | |
| ] | |
| }, | |
| { | |
| "nodeType": "YulVariableDeclaration", | |
| "src": "2873:63:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "dataArea", | |
| "nodeType": "YulIdentifier", | |
| "src": "2896:8:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "name": "startIndex", | |
| "nodeType": "YulIdentifier", | |
| "src": "2924:10:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "divide_by_32_ceil", | |
| "nodeType": "YulIdentifier", | |
| "src": "2906:17:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "2906:29:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "2892:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "2892:44:11" | |
| }, | |
| "variables": [ | |
| { | |
| "name": "deleteStart", | |
| "nodeType": "YulTypedName", | |
| "src": "2877:11:11", | |
| "type": "" | |
| } | |
| ] | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "3093:27:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "3095:23:11", | |
| "value": { | |
| "name": "dataArea", | |
| "nodeType": "YulIdentifier", | |
| "src": "3110:8:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "deleteStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "3095:11:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "condition": { | |
| "arguments": [ | |
| { | |
| "name": "startIndex", | |
| "nodeType": "YulIdentifier", | |
| "src": "3077:10:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "3089:2:11", | |
| "type": "", | |
| "value": "32" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "lt", | |
| "nodeType": "YulIdentifier", | |
| "src": "3074:2:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "3074:18:11" | |
| }, | |
| "nodeType": "YulIf", | |
| "src": "3071:49:11" | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "name": "deleteStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "3162:11:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "name": "dataArea", | |
| "nodeType": "YulIdentifier", | |
| "src": "3179:8:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "name": "len", | |
| "nodeType": "YulIdentifier", | |
| "src": "3207:3:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "divide_by_32_ceil", | |
| "nodeType": "YulIdentifier", | |
| "src": "3189:17:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "3189:22:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "3175:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "3175:37:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "clear_storage_range_t_bytes1", | |
| "nodeType": "YulIdentifier", | |
| "src": "3133:28:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "3133:80:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "3133:80:11" | |
| } | |
| ] | |
| }, | |
| "condition": { | |
| "arguments": [ | |
| { | |
| "name": "len", | |
| "nodeType": "YulIdentifier", | |
| "src": "2783:3:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "2788:2:11", | |
| "type": "", | |
| "value": "31" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "gt", | |
| "nodeType": "YulIdentifier", | |
| "src": "2780:2:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "2780:11:11" | |
| }, | |
| "nodeType": "YulIf", | |
| "src": "2777:446:11" | |
| } | |
| ] | |
| }, | |
| "name": "clean_up_bytearray_end_slots_t_string_storage", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "array", | |
| "nodeType": "YulTypedName", | |
| "src": "2742:5:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "len", | |
| "nodeType": "YulTypedName", | |
| "src": "2749:3:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "startIndex", | |
| "nodeType": "YulTypedName", | |
| "src": "2754:10:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "2687:543:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "3299:54:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "3309:37:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "bits", | |
| "nodeType": "YulIdentifier", | |
| "src": "3334:4:11" | |
| }, | |
| { | |
| "name": "value", | |
| "nodeType": "YulIdentifier", | |
| "src": "3340:5:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "shr", | |
| "nodeType": "YulIdentifier", | |
| "src": "3330:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "3330:16:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "newValue", | |
| "nodeType": "YulIdentifier", | |
| "src": "3309:8:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "shift_right_unsigned_dynamic", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "bits", | |
| "nodeType": "YulTypedName", | |
| "src": "3274:4:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "value", | |
| "nodeType": "YulTypedName", | |
| "src": "3280:5:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "newValue", | |
| "nodeType": "YulTypedName", | |
| "src": "3290:8:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "3236:117:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "3410:118:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulVariableDeclaration", | |
| "src": "3420:68:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "3469:1:11", | |
| "type": "", | |
| "value": "8" | |
| }, | |
| { | |
| "name": "bytes", | |
| "nodeType": "YulIdentifier", | |
| "src": "3472:5:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mul", | |
| "nodeType": "YulIdentifier", | |
| "src": "3465:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "3465:13:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "3484:1:11", | |
| "type": "", | |
| "value": "0" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "not", | |
| "nodeType": "YulIdentifier", | |
| "src": "3480:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "3480:6:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "shift_right_unsigned_dynamic", | |
| "nodeType": "YulIdentifier", | |
| "src": "3436:28:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "3436:51:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "not", | |
| "nodeType": "YulIdentifier", | |
| "src": "3432:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "3432:56:11" | |
| }, | |
| "variables": [ | |
| { | |
| "name": "mask", | |
| "nodeType": "YulTypedName", | |
| "src": "3424:4:11", | |
| "type": "" | |
| } | |
| ] | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "3497:25:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "data", | |
| "nodeType": "YulIdentifier", | |
| "src": "3511:4:11" | |
| }, | |
| { | |
| "name": "mask", | |
| "nodeType": "YulIdentifier", | |
| "src": "3517:4:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "and", | |
| "nodeType": "YulIdentifier", | |
| "src": "3507:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "3507:15:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "result", | |
| "nodeType": "YulIdentifier", | |
| "src": "3497:6:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "mask_bytes_dynamic", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "data", | |
| "nodeType": "YulTypedName", | |
| "src": "3387:4:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "bytes", | |
| "nodeType": "YulTypedName", | |
| "src": "3393:5:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "result", | |
| "nodeType": "YulTypedName", | |
| "src": "3403:6:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "3359:169:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "3614:214:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "3747:37:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "data", | |
| "nodeType": "YulIdentifier", | |
| "src": "3774:4:11" | |
| }, | |
| { | |
| "name": "len", | |
| "nodeType": "YulIdentifier", | |
| "src": "3780:3:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mask_bytes_dynamic", | |
| "nodeType": "YulIdentifier", | |
| "src": "3755:18:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "3755:29:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "data", | |
| "nodeType": "YulIdentifier", | |
| "src": "3747:4:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "3793:29:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "data", | |
| "nodeType": "YulIdentifier", | |
| "src": "3804:4:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "3814:1:11", | |
| "type": "", | |
| "value": "2" | |
| }, | |
| { | |
| "name": "len", | |
| "nodeType": "YulIdentifier", | |
| "src": "3817:3:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mul", | |
| "nodeType": "YulIdentifier", | |
| "src": "3810:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "3810:11:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "or", | |
| "nodeType": "YulIdentifier", | |
| "src": "3801:2:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "3801:21:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "used", | |
| "nodeType": "YulIdentifier", | |
| "src": "3793:4:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "extract_used_part_and_set_length_of_short_byte_array", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "data", | |
| "nodeType": "YulTypedName", | |
| "src": "3595:4:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "len", | |
| "nodeType": "YulTypedName", | |
| "src": "3601:3:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "used", | |
| "nodeType": "YulTypedName", | |
| "src": "3609:4:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "3533:295:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "3925:1303:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulVariableDeclaration", | |
| "src": "3936:51:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "src", | |
| "nodeType": "YulIdentifier", | |
| "src": "3983:3:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "array_length_t_string_memory_ptr", | |
| "nodeType": "YulIdentifier", | |
| "src": "3950:32:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "3950:37:11" | |
| }, | |
| "variables": [ | |
| { | |
| "name": "newLen", | |
| "nodeType": "YulTypedName", | |
| "src": "3940:6:11", | |
| "type": "" | |
| } | |
| ] | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "4072:22:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [], | |
| "functionName": { | |
| "name": "panic_error_0x41", | |
| "nodeType": "YulIdentifier", | |
| "src": "4074:16:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4074:18:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "4074:18:11" | |
| } | |
| ] | |
| }, | |
| "condition": { | |
| "arguments": [ | |
| { | |
| "name": "newLen", | |
| "nodeType": "YulIdentifier", | |
| "src": "4044:6:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "4052:18:11", | |
| "type": "", | |
| "value": "0xffffffffffffffff" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "gt", | |
| "nodeType": "YulIdentifier", | |
| "src": "4041:2:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4041:30:11" | |
| }, | |
| "nodeType": "YulIf", | |
| "src": "4038:56:11" | |
| }, | |
| { | |
| "nodeType": "YulVariableDeclaration", | |
| "src": "4104:52:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "slot", | |
| "nodeType": "YulIdentifier", | |
| "src": "4150:4:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "sload", | |
| "nodeType": "YulIdentifier", | |
| "src": "4144:5:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4144:11:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "extract_byte_array_length", | |
| "nodeType": "YulIdentifier", | |
| "src": "4118:25:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4118:38:11" | |
| }, | |
| "variables": [ | |
| { | |
| "name": "oldLen", | |
| "nodeType": "YulTypedName", | |
| "src": "4108:6:11", | |
| "type": "" | |
| } | |
| ] | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "name": "slot", | |
| "nodeType": "YulIdentifier", | |
| "src": "4249:4:11" | |
| }, | |
| { | |
| "name": "oldLen", | |
| "nodeType": "YulIdentifier", | |
| "src": "4255:6:11" | |
| }, | |
| { | |
| "name": "newLen", | |
| "nodeType": "YulIdentifier", | |
| "src": "4263:6:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "clean_up_bytearray_end_slots_t_string_storage", | |
| "nodeType": "YulIdentifier", | |
| "src": "4203:45:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4203:67:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "4203:67:11" | |
| }, | |
| { | |
| "nodeType": "YulVariableDeclaration", | |
| "src": "4280:18:11", | |
| "value": { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "4297:1:11", | |
| "type": "", | |
| "value": "0" | |
| }, | |
| "variables": [ | |
| { | |
| "name": "srcOffset", | |
| "nodeType": "YulTypedName", | |
| "src": "4284:9:11", | |
| "type": "" | |
| } | |
| ] | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "4308:17:11", | |
| "value": { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "4321:4:11", | |
| "type": "", | |
| "value": "0x20" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "srcOffset", | |
| "nodeType": "YulIdentifier", | |
| "src": "4308:9:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "cases": [ | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "4372:611:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulVariableDeclaration", | |
| "src": "4386:37:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "newLen", | |
| "nodeType": "YulIdentifier", | |
| "src": "4405:6:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "4417:4:11", | |
| "type": "", | |
| "value": "0x1f" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "not", | |
| "nodeType": "YulIdentifier", | |
| "src": "4413:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4413:9:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "and", | |
| "nodeType": "YulIdentifier", | |
| "src": "4401:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4401:22:11" | |
| }, | |
| "variables": [ | |
| { | |
| "name": "loopEnd", | |
| "nodeType": "YulTypedName", | |
| "src": "4390:7:11", | |
| "type": "" | |
| } | |
| ] | |
| }, | |
| { | |
| "nodeType": "YulVariableDeclaration", | |
| "src": "4437:51:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "slot", | |
| "nodeType": "YulIdentifier", | |
| "src": "4483:4:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "array_dataslot_t_string_storage", | |
| "nodeType": "YulIdentifier", | |
| "src": "4451:31:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4451:37:11" | |
| }, | |
| "variables": [ | |
| { | |
| "name": "dstPtr", | |
| "nodeType": "YulTypedName", | |
| "src": "4441:6:11", | |
| "type": "" | |
| } | |
| ] | |
| }, | |
| { | |
| "nodeType": "YulVariableDeclaration", | |
| "src": "4501:10:11", | |
| "value": { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "4510:1:11", | |
| "type": "", | |
| "value": "0" | |
| }, | |
| "variables": [ | |
| { | |
| "name": "i", | |
| "nodeType": "YulTypedName", | |
| "src": "4505:1:11", | |
| "type": "" | |
| } | |
| ] | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "4569:163:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "name": "dstPtr", | |
| "nodeType": "YulIdentifier", | |
| "src": "4594:6:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "src", | |
| "nodeType": "YulIdentifier", | |
| "src": "4612:3:11" | |
| }, | |
| { | |
| "name": "srcOffset", | |
| "nodeType": "YulIdentifier", | |
| "src": "4617:9:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "4608:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4608:19:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mload", | |
| "nodeType": "YulIdentifier", | |
| "src": "4602:5:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4602:26:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "sstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "4587:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4587:42:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "4587:42:11" | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "4646:24:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "dstPtr", | |
| "nodeType": "YulIdentifier", | |
| "src": "4660:6:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "4668:1:11", | |
| "type": "", | |
| "value": "1" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "4656:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4656:14:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "dstPtr", | |
| "nodeType": "YulIdentifier", | |
| "src": "4646:6:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "4687:31:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "srcOffset", | |
| "nodeType": "YulIdentifier", | |
| "src": "4704:9:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "4715:2:11", | |
| "type": "", | |
| "value": "32" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "4700:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4700:18:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "srcOffset", | |
| "nodeType": "YulIdentifier", | |
| "src": "4687:9:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "condition": { | |
| "arguments": [ | |
| { | |
| "name": "i", | |
| "nodeType": "YulIdentifier", | |
| "src": "4535:1:11" | |
| }, | |
| { | |
| "name": "loopEnd", | |
| "nodeType": "YulIdentifier", | |
| "src": "4538:7:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "lt", | |
| "nodeType": "YulIdentifier", | |
| "src": "4532:2:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4532:14:11" | |
| }, | |
| "nodeType": "YulForLoop", | |
| "post": { | |
| "nodeType": "YulBlock", | |
| "src": "4547:21:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "4549:17:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "i", | |
| "nodeType": "YulIdentifier", | |
| "src": "4558:1:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "4561:4:11", | |
| "type": "", | |
| "value": "0x20" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "4554:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4554:12:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "i", | |
| "nodeType": "YulIdentifier", | |
| "src": "4549:1:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "pre": { | |
| "nodeType": "YulBlock", | |
| "src": "4528:3:11", | |
| "statements": [] | |
| }, | |
| "src": "4524:208:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "4768:156:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulVariableDeclaration", | |
| "src": "4786:43:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "src", | |
| "nodeType": "YulIdentifier", | |
| "src": "4813:3:11" | |
| }, | |
| { | |
| "name": "srcOffset", | |
| "nodeType": "YulIdentifier", | |
| "src": "4818:9:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "4809:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4809:19:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mload", | |
| "nodeType": "YulIdentifier", | |
| "src": "4803:5:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4803:26:11" | |
| }, | |
| "variables": [ | |
| { | |
| "name": "lastValue", | |
| "nodeType": "YulTypedName", | |
| "src": "4790:9:11", | |
| "type": "" | |
| } | |
| ] | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "name": "dstPtr", | |
| "nodeType": "YulIdentifier", | |
| "src": "4853:6:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "name": "lastValue", | |
| "nodeType": "YulIdentifier", | |
| "src": "4880:9:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "name": "newLen", | |
| "nodeType": "YulIdentifier", | |
| "src": "4895:6:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "4903:4:11", | |
| "type": "", | |
| "value": "0x1f" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "and", | |
| "nodeType": "YulIdentifier", | |
| "src": "4891:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4891:17:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mask_bytes_dynamic", | |
| "nodeType": "YulIdentifier", | |
| "src": "4861:18:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4861:48:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "sstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "4846:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4846:64:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "4846:64:11" | |
| } | |
| ] | |
| }, | |
| "condition": { | |
| "arguments": [ | |
| { | |
| "name": "loopEnd", | |
| "nodeType": "YulIdentifier", | |
| "src": "4751:7:11" | |
| }, | |
| { | |
| "name": "newLen", | |
| "nodeType": "YulIdentifier", | |
| "src": "4760:6:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "lt", | |
| "nodeType": "YulIdentifier", | |
| "src": "4748:2:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4748:19:11" | |
| }, | |
| "nodeType": "YulIf", | |
| "src": "4745:179:11" | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "name": "slot", | |
| "nodeType": "YulIdentifier", | |
| "src": "4944:4:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "newLen", | |
| "nodeType": "YulIdentifier", | |
| "src": "4958:6:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "4966:1:11", | |
| "type": "", | |
| "value": "2" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mul", | |
| "nodeType": "YulIdentifier", | |
| "src": "4954:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4954:14:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "4970:1:11", | |
| "type": "", | |
| "value": "1" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "4950:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4950:22:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "sstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "4937:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4937:36:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "4937:36:11" | |
| } | |
| ] | |
| }, | |
| "nodeType": "YulCase", | |
| "src": "4365:618:11", | |
| "value": { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "4370:1:11", | |
| "type": "", | |
| "value": "1" | |
| } | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "5000:222:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulVariableDeclaration", | |
| "src": "5014:14:11", | |
| "value": { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "5027:1:11", | |
| "type": "", | |
| "value": "0" | |
| }, | |
| "variables": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulTypedName", | |
| "src": "5018:5:11", | |
| "type": "" | |
| } | |
| ] | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "5051:67:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "5069:35:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "src", | |
| "nodeType": "YulIdentifier", | |
| "src": "5088:3:11" | |
| }, | |
| { | |
| "name": "srcOffset", | |
| "nodeType": "YulIdentifier", | |
| "src": "5093:9:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "5084:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "5084:19:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mload", | |
| "nodeType": "YulIdentifier", | |
| "src": "5078:5:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "5078:26:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulIdentifier", | |
| "src": "5069:5:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "condition": { | |
| "name": "newLen", | |
| "nodeType": "YulIdentifier", | |
| "src": "5044:6:11" | |
| }, | |
| "nodeType": "YulIf", | |
| "src": "5041:77:11" | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "name": "slot", | |
| "nodeType": "YulIdentifier", | |
| "src": "5138:4:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulIdentifier", | |
| "src": "5197:5:11" | |
| }, | |
| { | |
| "name": "newLen", | |
| "nodeType": "YulIdentifier", | |
| "src": "5204:6:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "extract_used_part_and_set_length_of_short_byte_array", | |
| "nodeType": "YulIdentifier", | |
| "src": "5144:52:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "5144:67:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "sstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "5131:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "5131:81:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "5131:81:11" | |
| } | |
| ] | |
| }, | |
| "nodeType": "YulCase", | |
| "src": "4992:230:11", | |
| "value": "default" | |
| } | |
| ], | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "name": "newLen", | |
| "nodeType": "YulIdentifier", | |
| "src": "4345:6:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "4353:2:11", | |
| "type": "", | |
| "value": "31" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "gt", | |
| "nodeType": "YulIdentifier", | |
| "src": "4342:2:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4342:14:11" | |
| }, | |
| "nodeType": "YulSwitch", | |
| "src": "4335:887:11" | |
| } | |
| ] | |
| }, | |
| "name": "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "slot", | |
| "nodeType": "YulTypedName", | |
| "src": "3914:4:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "src", | |
| "nodeType": "YulTypedName", | |
| "src": "3920:3:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "3833:1395:11" | |
| } | |
| ] | |
| }, | |
| "contents": "{\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function array_dataslot_t_string_storage(ptr) -> data {\n data := ptr\n\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n\n }\n\n function divide_by_32_ceil(value) -> result {\n result := div(add(value, 31), 32)\n }\n\n function shift_left_dynamic(bits, value) -> newValue {\n newValue :=\n\n shl(bits, value)\n\n }\n\n function update_byte_slice_dynamic32(value, shiftBytes, toInsert) -> result {\n let shiftBits := mul(shiftBytes, 8)\n let mask := shift_left_dynamic(shiftBits, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n toInsert := shift_left_dynamic(shiftBits, toInsert)\n value := and(value, not(mask))\n result := or(value, and(toInsert, mask))\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint256_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_uint256(value)))\n }\n\n function prepare_store_t_uint256(value) -> ret {\n ret := value\n }\n\n function update_storage_value_t_uint256_to_t_uint256(slot, offset, value_0) {\n let convertedValue_0 := convert_t_uint256_to_t_uint256(value_0)\n sstore(slot, update_byte_slice_dynamic32(sload(slot), offset, prepare_store_t_uint256(convertedValue_0)))\n }\n\n function zero_value_for_split_t_uint256() -> ret {\n ret := 0\n }\n\n function storage_set_to_zero_t_uint256(slot, offset) {\n let zero_0 := zero_value_for_split_t_uint256()\n update_storage_value_t_uint256_to_t_uint256(slot, offset, zero_0)\n }\n\n function clear_storage_range_t_bytes1(start, end) {\n for {} lt(start, end) { start := add(start, 1) }\n {\n storage_set_to_zero_t_uint256(start, 0)\n }\n }\n\n function clean_up_bytearray_end_slots_t_string_storage(array, len, startIndex) {\n\n if gt(len, 31) {\n let dataArea := array_dataslot_t_string_storage(array)\n let deleteStart := add(dataArea, divide_by_32_ceil(startIndex))\n // If we are clearing array to be short byte array, we want to clear only data starting from array data area.\n if lt(startIndex, 32) { deleteStart := dataArea }\n clear_storage_range_t_bytes1(deleteStart, add(dataArea, divide_by_32_ceil(len)))\n }\n\n }\n\n function shift_right_unsigned_dynamic(bits, value) -> newValue {\n newValue :=\n\n shr(bits, value)\n\n }\n\n function mask_bytes_dynamic(data, bytes) -> result {\n let mask := not(shift_right_unsigned_dynamic(mul(8, bytes), not(0)))\n result := and(data, mask)\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used {\n // we want to save only elements that are part of the array after resizing\n // others should be set to zero\n data := mask_bytes_dynamic(data, len)\n used := or(data, mul(2, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src) {\n\n let newLen := array_length_t_string_memory_ptr(src)\n // Make sure array length is sane\n if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n\n let oldLen := extract_byte_array_length(sload(slot))\n\n // potentially truncate data\n clean_up_bytearray_end_slots_t_string_storage(slot, oldLen, newLen)\n\n let srcOffset := 0\n\n srcOffset := 0x20\n\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(0x1f))\n\n let dstPtr := array_dataslot_t_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, 0x20) } {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, 32)\n }\n if lt(loopEnd, newLen) {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, mask_bytes_dynamic(lastValue, and(newLen, 0x1f)))\n }\n sstore(slot, add(mul(newLen, 2), 1))\n }\n default {\n let value := 0\n if newLen {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n\n}\n", | |
| "id": 11, | |
| "language": "Yul", | |
| "name": "#utility.yul" | |
| } | |
| ], | |
| "linkReferences": {}, | |
| "object": "60806040523480156200001157600080fd5b506040518060400160405280600781526020017f4669746d696e74000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f466974000000000000000000000000000000000000000000000000000000000081525081600390816200008f919062000412565b508060049081620000a1919062000412565b505050620000c4620000b8620000ca60201b60201c565b620000d260201b60201c565b620004f9565b600033905090565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200021a57607f821691505b60208210810362000230576200022f620001d2565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200029a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200025b565b620002a686836200025b565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620002f3620002ed620002e784620002be565b620002c8565b620002be565b9050919050565b6000819050919050565b6200030f83620002d2565b620003276200031e82620002fa565b84845462000268565b825550505050565b600090565b6200033e6200032f565b6200034b81848462000304565b505050565b5b8181101562000373576200036760008262000334565b60018101905062000351565b5050565b601f821115620003c2576200038c8162000236565b62000397846200024b565b81016020851015620003a7578190505b620003bf620003b6856200024b565b83018262000350565b50505b505050565b600082821c905092915050565b6000620003e760001984600802620003c7565b1980831691505092915050565b6000620004028383620003d4565b9150826002028217905092915050565b6200041d8262000198565b67ffffffffffffffff811115620004395762000438620001a3565b5b62000445825462000201565b6200045282828562000377565b600060209050601f8311600181146200048a576000841562000475578287015190505b620004818582620003f4565b865550620004f1565b601f1984166200049a8662000236565b60005b82811015620004c4578489015182556001820191506020850194506020810190506200049d565b86831015620004e45784890151620004e0601f891682620003d4565b8355505b6001600288020188555050505b505050505050565b611f6880620005096000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063715018a6116100a2578063981b24d011610071578063981b24d0146102d1578063a457c2d714610301578063a9059cbb14610331578063dd62ed3e14610361578063f2fde38b1461039157610116565b8063715018a6146102815780638da5cb5b1461028b57806395d89b41146102a95780639711715a146102c757610116565b8063313ce567116100e9578063313ce567146101b757806339509351146101d557806340c10f19146102055780634ee2cd7e1461022157806370a082311461025157610116565b806306fdde031461011b578063095ea7b31461013957806318160ddd1461016957806323b872dd14610187575b600080fd5b6101236103ad565b60405161013091906114e9565b60405180910390f35b610153600480360381019061014e91906115a4565b61043f565b60405161016091906115ff565b60405180910390f35b610171610462565b60405161017e9190611629565b60405180910390f35b6101a1600480360381019061019c9190611644565b61046c565b6040516101ae91906115ff565b60405180910390f35b6101bf61049b565b6040516101cc91906116b3565b60405180910390f35b6101ef60048036038101906101ea91906115a4565b6104a4565b6040516101fc91906115ff565b60405180910390f35b61021f600480360381019061021a91906115a4565b6104db565b005b61023b600480360381019061023691906115a4565b6104f1565b6040516102489190611629565b60405180910390f35b61026b600480360381019061026691906116ce565b610561565b6040516102789190611629565b60405180910390f35b6102896105a9565b005b6102936105bd565b6040516102a0919061170a565b60405180910390f35b6102b16105e7565b6040516102be91906114e9565b60405180910390f35b6102cf610679565b005b6102eb60048036038101906102e69190611725565b61068c565b6040516102f89190611629565b60405180910390f35b61031b600480360381019061031691906115a4565b6106bd565b60405161032891906115ff565b60405180910390f35b61034b600480360381019061034691906115a4565b610734565b60405161035891906115ff565b60405180910390f35b61037b60048036038101906103769190611752565b610757565b6040516103889190611629565b60405180910390f35b6103ab60048036038101906103a691906116ce565b6107de565b005b6060600380546103bc906117c1565b80601f01602080910402602001604051908101604052809291908181526020018280546103e8906117c1565b80156104355780601f1061040a57610100808354040283529160200191610435565b820191906000526020600020905b81548152906001019060200180831161041857829003601f168201915b5050505050905090565b60008061044a610861565b9050610457818585610869565b600191505092915050565b6000600254905090565b600080610477610861565b9050610484858285610a32565b61048f858585610abe565b60019150509392505050565b60006012905090565b6000806104af610861565b90506104d08185856104c18589610757565b6104cb9190611821565b610869565b600191505092915050565b6104e3610d34565b6104ed8282610db2565b5050565b600080600061053e84600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020610f08565b91509150816105555761055085610561565b610557565b805b9250505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6105b1610d34565b6105bb6000610ffd565b565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546105f6906117c1565b80601f0160208091040260200160405190810160405280929190818152602001828054610622906117c1565b801561066f5780601f106106445761010080835404028352916020019161066f565b820191906000526020600020905b81548152906001019060200180831161065257829003601f168201915b5050505050905090565b610681610d34565b6106896110c3565b50565b600080600061069c846006610f08565b91509150816106b2576106ad610462565b6106b4565b805b92505050919050565b6000806106c8610861565b905060006106d68286610757565b90508381101561071b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610712906118c7565b60405180910390fd5b6107288286868403610869565b60019250505092915050565b60008061073f610861565b905061074c818585610abe565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6107e6610d34565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084c90611959565b60405180910390fd5b61085e81610ffd565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036108d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108cf906119eb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610947576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093e90611a7d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610a259190611629565b60405180910390a3505050565b6000610a3e8484610757565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610ab85781811015610aaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa190611ae9565b60405180910390fd5b610ab78484848403610869565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2490611b7b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9390611c0d565b60405180910390fd5b610ba7838383611119565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610c2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2490611c9f565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d1b9190611629565b60405180910390a3610d2e848484611129565b50505050565b610d3c610861565b73ffffffffffffffffffffffffffffffffffffffff16610d5a6105bd565b73ffffffffffffffffffffffffffffffffffffffff1614610db0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da790611d0b565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1890611d77565b60405180910390fd5b610e2d60008383611119565b8060026000828254610e3f9190611821565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ef09190611629565b60405180910390a3610f0460008383611129565b5050565b60008060008411610f4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4590611de3565b60405180910390fd5b610f5661112e565b841115610f98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8f90611e4f565b60405180910390fd5b6000610fb0858560000161113f90919063ffffffff16565b905083600001805490508103610fcd576000809250925050610ff6565b6001846001018281548110610fe557610fe4611e6f565b5b906000526020600020015492509250505b9250929050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006110cf60086111f8565b60006110d961112e565b90507f8030e83b04d87bef53480e26263266d6ca66863aa8506aca6f2559d18aa1cb678160405161110a9190611629565b60405180910390a18091505090565b61112483838361120e565b505050565b505050565b600061113a60086112c6565b905090565b60008083805490500361115557600090506111f2565b600080848054905090505b808210156111a957600061117483836112d4565b90508461118187836112fa565b600001541115611193578091506111a3565b6001816111a09190611821565b92505b50611160565b6000821180156111d15750836111cb866001856111c69190611e9e565b6112fa565b60000154145b156111ec576001826111e39190611e9e565b925050506111f2565b81925050505b92915050565b6001816000016000828254019250508190555050565b61121983838361131c565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112635761125682611321565b61125e611374565b6112c1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112ad576112a083611321565b6112a8611374565b6112c0565b6112b683611321565b6112bf82611321565b5b5b505050565b600081600001549050919050565b600060028284186112e59190611f01565b8284166112f29190611821565b905092915050565b6000808360005282602060002001905061131381611388565b91505092915050565b505050565b611371600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061136c83610561565b611392565b50565b6113866006611381610462565b611392565b565b6000819050919050565b600061139c61112e565b9050806113ab8460000161140d565b10156114085782600001819080600181540180825580915050600190039060005260206000200160009091909190915055826001018290806001815401808255809150506001900390600052602060002001600090919091909150555b505050565b6000808280549050036114235760009050611454565b81600183805490506114359190611e9e565b8154811061144657611445611e6f565b5b906000526020600020015490505b919050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611493578082015181840152602081019050611478565b60008484015250505050565b6000601f19601f8301169050919050565b60006114bb82611459565b6114c58185611464565b93506114d5818560208601611475565b6114de8161149f565b840191505092915050565b6000602082019050818103600083015261150381846114b0565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061153b82611510565b9050919050565b61154b81611530565b811461155657600080fd5b50565b60008135905061156881611542565b92915050565b6000819050919050565b6115818161156e565b811461158c57600080fd5b50565b60008135905061159e81611578565b92915050565b600080604083850312156115bb576115ba61150b565b5b60006115c985828601611559565b92505060206115da8582860161158f565b9150509250929050565b60008115159050919050565b6115f9816115e4565b82525050565b600060208201905061161460008301846115f0565b92915050565b6116238161156e565b82525050565b600060208201905061163e600083018461161a565b92915050565b60008060006060848603121561165d5761165c61150b565b5b600061166b86828701611559565b935050602061167c86828701611559565b925050604061168d8682870161158f565b9150509250925092565b600060ff82169050919050565b6116ad81611697565b82525050565b60006020820190506116c860008301846116a4565b92915050565b6000602082840312156116e4576116e361150b565b5b60006116f284828501611559565b91505092915050565b61170481611530565b82525050565b600060208201905061171f60008301846116fb565b92915050565b60006020828403121561173b5761173a61150b565b5b60006117498482850161158f565b91505092915050565b600080604083850312156117695761176861150b565b5b600061177785828601611559565b925050602061178885828601611559565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806117d957607f821691505b6020821081036117ec576117eb611792565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061182c8261156e565b91506118378361156e565b925082820190508082111561184f5761184e6117f2565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006118b1602583611464565b91506118bc82611855565b604082019050919050565b600060208201905081810360008301526118e0816118a4565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611943602683611464565b915061194e826118e7565b604082019050919050565b6000602082019050818103600083015261197281611936565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006119d5602483611464565b91506119e082611979565b604082019050919050565b60006020820190508181036000830152611a04816119c8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611a67602283611464565b9150611a7282611a0b565b604082019050919050565b60006020820190508181036000830152611a9681611a5a565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611ad3601d83611464565b9150611ade82611a9d565b602082019050919050565b60006020820190508181036000830152611b0281611ac6565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611b65602583611464565b9150611b7082611b09565b604082019050919050565b60006020820190508181036000830152611b9481611b58565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611bf7602383611464565b9150611c0282611b9b565b604082019050919050565b60006020820190508181036000830152611c2681611bea565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611c89602683611464565b9150611c9482611c2d565b604082019050919050565b60006020820190508181036000830152611cb881611c7c565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611cf5602083611464565b9150611d0082611cbf565b602082019050919050565b60006020820190508181036000830152611d2481611ce8565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000611d61601f83611464565b9150611d6c82611d2b565b602082019050919050565b60006020820190508181036000830152611d9081611d54565b9050919050565b7f4552433230536e617073686f743a206964206973203000000000000000000000600082015250565b6000611dcd601683611464565b9150611dd882611d97565b602082019050919050565b60006020820190508181036000830152611dfc81611dc0565b9050919050565b7f4552433230536e617073686f743a206e6f6e6578697374656e74206964000000600082015250565b6000611e39601d83611464565b9150611e4482611e03565b602082019050919050565b60006020820190508181036000830152611e6881611e2c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000611ea98261156e565b9150611eb48361156e565b9250828203905081811115611ecc57611ecb6117f2565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611f0c8261156e565b9150611f178361156e565b925082611f2757611f26611ed2565b5b82820490509291505056fea264697066735822122090ceb333cd36317dad9dc0014a3ca2ba76e6e63004204e5e1ccf04558e0e41f864736f6c63430008110033", | |
| "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x7 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4669746D696E7400000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4669740000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 PUSH1 0x3 SWAP1 DUP2 PUSH3 0x8F SWAP2 SWAP1 PUSH3 0x412 JUMP JUMPDEST POP DUP1 PUSH1 0x4 SWAP1 DUP2 PUSH3 0xA1 SWAP2 SWAP1 PUSH3 0x412 JUMP JUMPDEST POP POP POP PUSH3 0xC4 PUSH3 0xB8 PUSH3 0xCA PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0xD2 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x4F9 JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x9 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH3 0x21A JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x230 JUMPI PUSH3 0x22F PUSH3 0x1D2 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 PUSH1 0x1F DUP4 ADD DIV SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP4 MUL PUSH3 0x29A PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH3 0x25B JUMP JUMPDEST PUSH3 0x2A6 DUP7 DUP4 PUSH3 0x25B JUMP JUMPDEST SWAP6 POP DUP1 NOT DUP5 AND SWAP4 POP DUP1 DUP7 AND DUP5 OR SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x2F3 PUSH3 0x2ED PUSH3 0x2E7 DUP5 PUSH3 0x2BE JUMP JUMPDEST PUSH3 0x2C8 JUMP JUMPDEST PUSH3 0x2BE JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x30F DUP4 PUSH3 0x2D2 JUMP JUMPDEST PUSH3 0x327 PUSH3 0x31E DUP3 PUSH3 0x2FA JUMP JUMPDEST DUP5 DUP5 SLOAD PUSH3 0x268 JUMP JUMPDEST DUP3 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH3 0x33E PUSH3 0x32F JUMP JUMPDEST PUSH3 0x34B DUP2 DUP5 DUP5 PUSH3 0x304 JUMP JUMPDEST POP POP POP JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x373 JUMPI PUSH3 0x367 PUSH1 0x0 DUP3 PUSH3 0x334 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH3 0x351 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH3 0x3C2 JUMPI PUSH3 0x38C DUP2 PUSH3 0x236 JUMP JUMPDEST PUSH3 0x397 DUP5 PUSH3 0x24B JUMP JUMPDEST DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH3 0x3A7 JUMPI DUP2 SWAP1 POP JUMPDEST PUSH3 0x3BF PUSH3 0x3B6 DUP6 PUSH3 0x24B JUMP JUMPDEST DUP4 ADD DUP3 PUSH3 0x350 JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x3E7 PUSH1 0x0 NOT DUP5 PUSH1 0x8 MUL PUSH3 0x3C7 JUMP JUMPDEST NOT DUP1 DUP4 AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x402 DUP4 DUP4 PUSH3 0x3D4 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0x2 MUL DUP3 OR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x41D DUP3 PUSH3 0x198 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x439 JUMPI PUSH3 0x438 PUSH3 0x1A3 JUMP JUMPDEST JUMPDEST PUSH3 0x445 DUP3 SLOAD PUSH3 0x201 JUMP JUMPDEST PUSH3 0x452 DUP3 DUP3 DUP6 PUSH3 0x377 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 SWAP1 POP PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH3 0x48A JUMPI PUSH1 0x0 DUP5 ISZERO PUSH3 0x475 JUMPI DUP3 DUP8 ADD MLOAD SWAP1 POP JUMPDEST PUSH3 0x481 DUP6 DUP3 PUSH3 0x3F4 JUMP JUMPDEST DUP7 SSTORE POP PUSH3 0x4F1 JUMP JUMPDEST PUSH1 0x1F NOT DUP5 AND PUSH3 0x49A DUP7 PUSH3 0x236 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x4C4 JUMPI DUP5 DUP10 ADD MLOAD DUP3 SSTORE PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP6 ADD SWAP5 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH3 0x49D JUMP JUMPDEST DUP7 DUP4 LT ISZERO PUSH3 0x4E4 JUMPI DUP5 DUP10 ADD MLOAD PUSH3 0x4E0 PUSH1 0x1F DUP10 AND DUP3 PUSH3 0x3D4 JUMP JUMPDEST DUP4 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP9 MUL ADD DUP9 SSTORE POP POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1F68 DUP1 PUSH3 0x509 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 0x116 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x715018A6 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0x981B24D0 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x981B24D0 EQ PUSH2 0x2D1 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x301 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x331 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x361 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x391 JUMPI PUSH2 0x116 JUMP JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x281 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x28B JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x2A9 JUMPI DUP1 PUSH4 0x9711715A EQ PUSH2 0x2C7 JUMPI PUSH2 0x116 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1B7 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x1D5 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x205 JUMPI DUP1 PUSH4 0x4EE2CD7E EQ PUSH2 0x221 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x251 JUMPI PUSH2 0x116 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x11B JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x139 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x169 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x187 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x123 PUSH2 0x3AD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x130 SWAP2 SWAP1 PUSH2 0x14E9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x153 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x14E SWAP2 SWAP1 PUSH2 0x15A4 JUMP JUMPDEST PUSH2 0x43F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x160 SWAP2 SWAP1 PUSH2 0x15FF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x171 PUSH2 0x462 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x17E SWAP2 SWAP1 PUSH2 0x1629 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1A1 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x19C SWAP2 SWAP1 PUSH2 0x1644 JUMP JUMPDEST PUSH2 0x46C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1AE SWAP2 SWAP1 PUSH2 0x15FF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1BF PUSH2 0x49B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1CC SWAP2 SWAP1 PUSH2 0x16B3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1EF PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1EA SWAP2 SWAP1 PUSH2 0x15A4 JUMP JUMPDEST PUSH2 0x4A4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FC SWAP2 SWAP1 PUSH2 0x15FF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x21F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x21A SWAP2 SWAP1 PUSH2 0x15A4 JUMP JUMPDEST PUSH2 0x4DB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x23B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x236 SWAP2 SWAP1 PUSH2 0x15A4 JUMP JUMPDEST PUSH2 0x4F1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x248 SWAP2 SWAP1 PUSH2 0x1629 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x26B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x266 SWAP2 SWAP1 PUSH2 0x16CE JUMP JUMPDEST PUSH2 0x561 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x278 SWAP2 SWAP1 PUSH2 0x1629 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x289 PUSH2 0x5A9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x293 PUSH2 0x5BD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A0 SWAP2 SWAP1 PUSH2 0x170A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2B1 PUSH2 0x5E7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2BE SWAP2 SWAP1 PUSH2 0x14E9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2CF PUSH2 0x679 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2EB PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2E6 SWAP2 SWAP1 PUSH2 0x1725 JUMP JUMPDEST PUSH2 0x68C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2F8 SWAP2 SWAP1 PUSH2 0x1629 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x31B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x316 SWAP2 SWAP1 PUSH2 0x15A4 JUMP JUMPDEST PUSH2 0x6BD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x328 SWAP2 SWAP1 PUSH2 0x15FF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x34B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x346 SWAP2 SWAP1 PUSH2 0x15A4 JUMP JUMPDEST PUSH2 0x734 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x358 SWAP2 SWAP1 PUSH2 0x15FF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x37B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x376 SWAP2 SWAP1 PUSH2 0x1752 JUMP JUMPDEST PUSH2 0x757 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x388 SWAP2 SWAP1 PUSH2 0x1629 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3AB PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3A6 SWAP2 SWAP1 PUSH2 0x16CE JUMP JUMPDEST PUSH2 0x7DE JUMP JUMPDEST STOP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x3BC SWAP1 PUSH2 0x17C1 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 0x3E8 SWAP1 PUSH2 0x17C1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x435 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x40A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x435 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 0x418 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x44A PUSH2 0x861 JUMP JUMPDEST SWAP1 POP PUSH2 0x457 DUP2 DUP6 DUP6 PUSH2 0x869 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x477 PUSH2 0x861 JUMP JUMPDEST SWAP1 POP PUSH2 0x484 DUP6 DUP3 DUP6 PUSH2 0xA32 JUMP JUMPDEST PUSH2 0x48F DUP6 DUP6 DUP6 PUSH2 0xABE JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x12 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x4AF PUSH2 0x861 JUMP JUMPDEST SWAP1 POP PUSH2 0x4D0 DUP2 DUP6 DUP6 PUSH2 0x4C1 DUP6 DUP10 PUSH2 0x757 JUMP JUMPDEST PUSH2 0x4CB SWAP2 SWAP1 PUSH2 0x1821 JUMP JUMPDEST PUSH2 0x869 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x4E3 PUSH2 0xD34 JUMP JUMPDEST PUSH2 0x4ED DUP3 DUP3 PUSH2 0xDB2 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x53E DUP5 PUSH1 0x5 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH2 0xF08 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH2 0x555 JUMPI PUSH2 0x550 DUP6 PUSH2 0x561 JUMP JUMPDEST PUSH2 0x557 JUMP JUMPDEST DUP1 JUMPDEST SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5B1 PUSH2 0xD34 JUMP JUMPDEST PUSH2 0x5BB PUSH1 0x0 PUSH2 0xFFD JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x5F6 SWAP1 PUSH2 0x17C1 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 0x622 SWAP1 PUSH2 0x17C1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x66F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x644 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x66F 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 0x652 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x681 PUSH2 0xD34 JUMP JUMPDEST PUSH2 0x689 PUSH2 0x10C3 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x69C DUP5 PUSH1 0x6 PUSH2 0xF08 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH2 0x6B2 JUMPI PUSH2 0x6AD PUSH2 0x462 JUMP JUMPDEST PUSH2 0x6B4 JUMP JUMPDEST DUP1 JUMPDEST SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x6C8 PUSH2 0x861 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x6D6 DUP3 DUP7 PUSH2 0x757 JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x71B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x712 SWAP1 PUSH2 0x18C7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x728 DUP3 DUP7 DUP7 DUP5 SUB PUSH2 0x869 JUMP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x73F PUSH2 0x861 JUMP JUMPDEST SWAP1 POP PUSH2 0x74C DUP2 DUP6 DUP6 PUSH2 0xABE JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x7E6 PUSH2 0xD34 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x855 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x84C SWAP1 PUSH2 0x1959 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x85E DUP2 PUSH2 0xFFD JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x8D8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8CF SWAP1 PUSH2 0x19EB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x947 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x93E SWAP1 PUSH2 0x1A7D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD PUSH2 0xA25 SWAP2 SWAP1 PUSH2 0x1629 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA3E DUP5 DUP5 PUSH2 0x757 JUMP JUMPDEST SWAP1 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH2 0xAB8 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0xAAA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAA1 SWAP1 PUSH2 0x1AE9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xAB7 DUP5 DUP5 DUP5 DUP5 SUB PUSH2 0x869 JUMP JUMPDEST JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xB2D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB24 SWAP1 PUSH2 0x1B7B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xB9C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB93 SWAP1 PUSH2 0x1C0D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xBA7 DUP4 DUP4 DUP4 PUSH2 0x1119 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0xC2D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC24 SWAP1 PUSH2 0x1C9F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP2 SUB PUSH1 0x0 DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD PUSH2 0xD1B SWAP2 SWAP1 PUSH2 0x1629 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0xD2E DUP5 DUP5 DUP5 PUSH2 0x1129 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0xD3C PUSH2 0x861 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xD5A PUSH2 0x5BD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xDB0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDA7 SWAP1 PUSH2 0x1D0B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xE21 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE18 SWAP1 PUSH2 0x1D77 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xE2D PUSH1 0x0 DUP4 DUP4 PUSH2 0x1119 JUMP JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xE3F SWAP2 SWAP1 PUSH2 0x1821 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0xEF0 SWAP2 SWAP1 PUSH2 0x1629 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0xF04 PUSH1 0x0 DUP4 DUP4 PUSH2 0x1129 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 GT PUSH2 0xF4E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF45 SWAP1 PUSH2 0x1DE3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xF56 PUSH2 0x112E JUMP JUMPDEST DUP5 GT ISZERO PUSH2 0xF98 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF8F SWAP1 PUSH2 0x1E4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xFB0 DUP6 DUP6 PUSH1 0x0 ADD PUSH2 0x113F SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x0 ADD DUP1 SLOAD SWAP1 POP DUP2 SUB PUSH2 0xFCD JUMPI PUSH1 0x0 DUP1 SWAP3 POP SWAP3 POP POP PUSH2 0xFF6 JUMP JUMPDEST PUSH1 0x1 DUP5 PUSH1 0x1 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xFE5 JUMPI PUSH2 0xFE4 PUSH2 0x1E6F JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP3 POP SWAP3 POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x9 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10CF PUSH1 0x8 PUSH2 0x11F8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10D9 PUSH2 0x112E JUMP JUMPDEST SWAP1 POP PUSH32 0x8030E83B04D87BEF53480E26263266D6CA66863AA8506ACA6F2559D18AA1CB67 DUP2 PUSH1 0x40 MLOAD PUSH2 0x110A SWAP2 SWAP1 PUSH2 0x1629 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH2 0x1124 DUP4 DUP4 DUP4 PUSH2 0x120E JUMP JUMPDEST POP POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x113A PUSH1 0x8 PUSH2 0x12C6 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP1 SLOAD SWAP1 POP SUB PUSH2 0x1155 JUMPI PUSH1 0x0 SWAP1 POP PUSH2 0x11F2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 DUP1 SLOAD SWAP1 POP SWAP1 POP JUMPDEST DUP1 DUP3 LT ISZERO PUSH2 0x11A9 JUMPI PUSH1 0x0 PUSH2 0x1174 DUP4 DUP4 PUSH2 0x12D4 JUMP JUMPDEST SWAP1 POP DUP5 PUSH2 0x1181 DUP8 DUP4 PUSH2 0x12FA JUMP JUMPDEST PUSH1 0x0 ADD SLOAD GT ISZERO PUSH2 0x1193 JUMPI DUP1 SWAP2 POP PUSH2 0x11A3 JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH2 0x11A0 SWAP2 SWAP1 PUSH2 0x1821 JUMP JUMPDEST SWAP3 POP JUMPDEST POP PUSH2 0x1160 JUMP JUMPDEST PUSH1 0x0 DUP3 GT DUP1 ISZERO PUSH2 0x11D1 JUMPI POP DUP4 PUSH2 0x11CB DUP7 PUSH1 0x1 DUP6 PUSH2 0x11C6 SWAP2 SWAP1 PUSH2 0x1E9E JUMP JUMPDEST PUSH2 0x12FA JUMP JUMPDEST PUSH1 0x0 ADD SLOAD EQ JUMPDEST ISZERO PUSH2 0x11EC JUMPI PUSH1 0x1 DUP3 PUSH2 0x11E3 SWAP2 SWAP1 PUSH2 0x1E9E JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x11F2 JUMP JUMPDEST DUP2 SWAP3 POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x0 ADD PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH2 0x1219 DUP4 DUP4 DUP4 PUSH2 0x131C JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1263 JUMPI PUSH2 0x1256 DUP3 PUSH2 0x1321 JUMP JUMPDEST PUSH2 0x125E PUSH2 0x1374 JUMP JUMPDEST PUSH2 0x12C1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x12AD JUMPI PUSH2 0x12A0 DUP4 PUSH2 0x1321 JUMP JUMPDEST PUSH2 0x12A8 PUSH2 0x1374 JUMP JUMPDEST PUSH2 0x12C0 JUMP JUMPDEST PUSH2 0x12B6 DUP4 PUSH2 0x1321 JUMP JUMPDEST PUSH2 0x12BF DUP3 PUSH2 0x1321 JUMP JUMPDEST JUMPDEST JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 ADD SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DUP5 XOR PUSH2 0x12E5 SWAP2 SWAP1 PUSH2 0x1F01 JUMP JUMPDEST DUP3 DUP5 AND PUSH2 0x12F2 SWAP2 SWAP1 PUSH2 0x1821 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x0 MSTORE DUP3 PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SWAP1 POP PUSH2 0x1313 DUP2 PUSH2 0x1388 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x1371 PUSH1 0x5 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH2 0x136C DUP4 PUSH2 0x561 JUMP JUMPDEST PUSH2 0x1392 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x1386 PUSH1 0x6 PUSH2 0x1381 PUSH2 0x462 JUMP JUMPDEST PUSH2 0x1392 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x139C PUSH2 0x112E JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x13AB DUP5 PUSH1 0x0 ADD PUSH2 0x140D JUMP JUMPDEST LT ISZERO PUSH2 0x1408 JUMPI DUP3 PUSH1 0x0 ADD DUP2 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP SSTORE DUP3 PUSH1 0x1 ADD DUP3 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP SSTORE JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP1 SLOAD SWAP1 POP SUB PUSH2 0x1423 JUMPI PUSH1 0x0 SWAP1 POP PUSH2 0x1454 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP4 DUP1 SLOAD SWAP1 POP PUSH2 0x1435 SWAP2 SWAP1 PUSH2 0x1E9E JUMP JUMPDEST DUP2 SLOAD DUP2 LT PUSH2 0x1446 JUMPI PUSH2 0x1445 PUSH2 0x1E6F JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1493 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x1478 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14BB DUP3 PUSH2 0x1459 JUMP JUMPDEST PUSH2 0x14C5 DUP2 DUP6 PUSH2 0x1464 JUMP JUMPDEST SWAP4 POP PUSH2 0x14D5 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1475 JUMP JUMPDEST PUSH2 0x14DE DUP2 PUSH2 0x149F JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1503 DUP2 DUP5 PUSH2 0x14B0 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x153B DUP3 PUSH2 0x1510 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x154B DUP2 PUSH2 0x1530 JUMP JUMPDEST DUP2 EQ PUSH2 0x1556 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1568 DUP2 PUSH2 0x1542 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1581 DUP2 PUSH2 0x156E JUMP JUMPDEST DUP2 EQ PUSH2 0x158C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x159E DUP2 PUSH2 0x1578 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x15BB JUMPI PUSH2 0x15BA PUSH2 0x150B JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x15C9 DUP6 DUP3 DUP7 ADD PUSH2 0x1559 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x15DA DUP6 DUP3 DUP7 ADD PUSH2 0x158F JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x15F9 DUP2 PUSH2 0x15E4 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1614 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x15F0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1623 DUP2 PUSH2 0x156E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x163E PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x161A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x165D JUMPI PUSH2 0x165C PUSH2 0x150B JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x166B DUP7 DUP3 DUP8 ADD PUSH2 0x1559 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x167C DUP7 DUP3 DUP8 ADD PUSH2 0x1559 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x168D DUP7 DUP3 DUP8 ADD PUSH2 0x158F JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x16AD DUP2 PUSH2 0x1697 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x16C8 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x16A4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x16E4 JUMPI PUSH2 0x16E3 PUSH2 0x150B JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x16F2 DUP5 DUP3 DUP6 ADD PUSH2 0x1559 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1704 DUP2 PUSH2 0x1530 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x171F PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x16FB JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x173B JUMPI PUSH2 0x173A PUSH2 0x150B JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1749 DUP5 DUP3 DUP6 ADD PUSH2 0x158F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1769 JUMPI PUSH2 0x1768 PUSH2 0x150B JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1777 DUP6 DUP3 DUP7 ADD PUSH2 0x1559 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x1788 DUP6 DUP3 DUP7 ADD PUSH2 0x1559 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x17D9 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x17EC JUMPI PUSH2 0x17EB PUSH2 0x1792 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x182C DUP3 PUSH2 0x156E JUMP JUMPDEST SWAP2 POP PUSH2 0x1837 DUP4 PUSH2 0x156E JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x184F JUMPI PUSH2 0x184E PUSH2 0x17F2 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x45524332303A2064656372656173656420616C6C6F77616E63652062656C6F77 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x207A65726F000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x18B1 PUSH1 0x25 DUP4 PUSH2 0x1464 JUMP JUMPDEST SWAP2 POP PUSH2 0x18BC DUP3 PUSH2 0x1855 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x18E0 DUP2 PUSH2 0x18A4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1943 PUSH1 0x26 DUP4 PUSH2 0x1464 JUMP JUMPDEST SWAP2 POP PUSH2 0x194E DUP3 PUSH2 0x18E7 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1972 DUP2 PUSH2 0x1936 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19D5 PUSH1 0x24 DUP4 PUSH2 0x1464 JUMP JUMPDEST SWAP2 POP PUSH2 0x19E0 DUP3 PUSH2 0x1979 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1A04 DUP2 PUSH2 0x19C8 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7373000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A67 PUSH1 0x22 DUP4 PUSH2 0x1464 JUMP JUMPDEST SWAP2 POP PUSH2 0x1A72 DUP3 PUSH2 0x1A0B JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1A96 DUP2 PUSH2 0x1A5A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A20696E73756666696369656E7420616C6C6F77616E6365000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1AD3 PUSH1 0x1D DUP4 PUSH2 0x1464 JUMP JUMPDEST SWAP2 POP PUSH2 0x1ADE DUP3 PUSH2 0x1A9D JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1B02 DUP2 PUSH2 0x1AC6 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B65 PUSH1 0x25 DUP4 PUSH2 0x1464 JUMP JUMPDEST SWAP2 POP PUSH2 0x1B70 DUP3 PUSH2 0x1B09 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1B94 DUP2 PUSH2 0x1B58 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6573730000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BF7 PUSH1 0x23 DUP4 PUSH2 0x1464 JUMP JUMPDEST SWAP2 POP PUSH2 0x1C02 DUP3 PUSH2 0x1B9B JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1C26 DUP2 PUSH2 0x1BEA JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732062 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x616C616E63650000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C89 PUSH1 0x26 DUP4 PUSH2 0x1464 JUMP JUMPDEST SWAP2 POP PUSH2 0x1C94 DUP3 PUSH2 0x1C2D JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1CB8 DUP2 PUSH2 0x1C7C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CF5 PUSH1 0x20 DUP4 PUSH2 0x1464 JUMP JUMPDEST SWAP2 POP PUSH2 0x1D00 DUP3 PUSH2 0x1CBF JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1D24 DUP2 PUSH2 0x1CE8 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D61 PUSH1 0x1F DUP4 PUSH2 0x1464 JUMP JUMPDEST SWAP2 POP PUSH2 0x1D6C DUP3 PUSH2 0x1D2B JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1D90 DUP2 PUSH2 0x1D54 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433230536E617073686F743A206964206973203000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1DCD PUSH1 0x16 DUP4 PUSH2 0x1464 JUMP JUMPDEST SWAP2 POP PUSH2 0x1DD8 DUP3 PUSH2 0x1D97 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1DFC DUP2 PUSH2 0x1DC0 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433230536E617073686F743A206E6F6E6578697374656E74206964000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E39 PUSH1 0x1D DUP4 PUSH2 0x1464 JUMP JUMPDEST SWAP2 POP PUSH2 0x1E44 DUP3 PUSH2 0x1E03 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1E68 DUP2 PUSH2 0x1E2C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1EA9 DUP3 PUSH2 0x156E JUMP JUMPDEST SWAP2 POP PUSH2 0x1EB4 DUP4 PUSH2 0x156E JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0x1ECC JUMPI PUSH2 0x1ECB PUSH2 0x17F2 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1F0C DUP3 PUSH2 0x156E JUMP JUMPDEST SWAP2 POP PUSH2 0x1F17 DUP4 PUSH2 0x156E JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x1F27 JUMPI PUSH2 0x1F26 PUSH2 0x1ED2 JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP1 0xCE 0xB3 CALLER 0xCD CALLDATASIZE BALANCE PUSH30 0xAD9DC0014A3CA2BA76E6E63004204E5E1CCF04558E0E41F864736F6C6343 STOP ADDMOD GT STOP CALLER ", | |
| "sourceMap": "260:535:10:-:0;;;316:40;;;;;;;;;;1976:113:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2050:5;2042;:13;;;;;;:::i;:::-;;2075:7;2065;:17;;;;;;:::i;:::-;;1976:113;;936:32:0;955:12;:10;;;:12;;:::i;:::-;936:18;;;:32;;:::i;:::-;260:535:10;;640:96:6;693:7;719:10;712:17;;640:96;:::o;2433:187:0:-;2506:16;2525:6;;;;;;;;;;;2506:25;;2550:8;2541:6;;:17;;;;;;;;;;;;;;;;;;2604:8;2573:40;;2594:8;2573:40;;;;;;;;;;;;2496:124;2433:187;:::o;7:99:11:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:180::-;160:77;157:1;150:88;257:4;254:1;247:15;281:4;278:1;271:15;298:180;346:77;343:1;336:88;443:4;440:1;433:15;467:4;464:1;457:15;484:320;528:6;565:1;559:4;555:12;545:22;;612:1;606:4;602:12;633:18;623:81;;689:4;681:6;677:17;667:27;;623:81;751:2;743:6;740:14;720:18;717:38;714:84;;770:18;;:::i;:::-;714:84;535:269;484:320;;;:::o;810:141::-;859:4;882:3;874:11;;905:3;902:1;895:14;939:4;936:1;926:18;918:26;;810:141;;;:::o;957:93::-;994:6;1041:2;1036;1029:5;1025:14;1021:23;1011:33;;957:93;;;:::o;1056:107::-;1100:8;1150:5;1144:4;1140:16;1119:37;;1056:107;;;;:::o;1169:393::-;1238:6;1288:1;1276:10;1272:18;1311:97;1341:66;1330:9;1311:97;:::i;:::-;1429:39;1459:8;1448:9;1429:39;:::i;:::-;1417:51;;1501:4;1497:9;1490:5;1486:21;1477:30;;1550:4;1540:8;1536:19;1529:5;1526:30;1516:40;;1245:317;;1169:393;;;;;:::o;1568:77::-;1605:7;1634:5;1623:16;;1568:77;;;:::o;1651:60::-;1679:3;1700:5;1693:12;;1651:60;;;:::o;1717:142::-;1767:9;1800:53;1818:34;1827:24;1845:5;1827:24;:::i;:::-;1818:34;:::i;:::-;1800:53;:::i;:::-;1787:66;;1717:142;;;:::o;1865:75::-;1908:3;1929:5;1922:12;;1865:75;;;:::o;1946:269::-;2056:39;2087:7;2056:39;:::i;:::-;2117:91;2166:41;2190:16;2166:41;:::i;:::-;2158:6;2151:4;2145:11;2117:91;:::i;:::-;2111:4;2104:105;2022:193;1946:269;;;:::o;2221:73::-;2266:3;2221:73;:::o;2300:189::-;2377:32;;:::i;:::-;2418:65;2476:6;2468;2462:4;2418:65;:::i;:::-;2353:136;2300:189;;:::o;2495:186::-;2555:120;2572:3;2565:5;2562:14;2555:120;;;2626:39;2663:1;2656:5;2626:39;:::i;:::-;2599:1;2592:5;2588:13;2579:22;;2555:120;;;2495:186;;:::o;2687:543::-;2788:2;2783:3;2780:11;2777:446;;;2822:38;2854:5;2822:38;:::i;:::-;2906:29;2924:10;2906:29;:::i;:::-;2896:8;2892:44;3089:2;3077:10;3074:18;3071:49;;;3110:8;3095:23;;3071:49;3133:80;3189:22;3207:3;3189:22;:::i;:::-;3179:8;3175:37;3162:11;3133:80;:::i;:::-;2792:431;;2777:446;2687:543;;;:::o;3236:117::-;3290:8;3340:5;3334:4;3330:16;3309:37;;3236:117;;;;:::o;3359:169::-;3403:6;3436:51;3484:1;3480:6;3472:5;3469:1;3465:13;3436:51;:::i;:::-;3432:56;3517:4;3511;3507:15;3497:25;;3410:118;3359:169;;;;:::o;3533:295::-;3609:4;3755:29;3780:3;3774:4;3755:29;:::i;:::-;3747:37;;3817:3;3814:1;3810:11;3804:4;3801:21;3793:29;;3533:295;;;;:::o;3833:1395::-;3950:37;3983:3;3950:37;:::i;:::-;4052:18;4044:6;4041:30;4038:56;;;4074:18;;:::i;:::-;4038:56;4118:38;4150:4;4144:11;4118:38;:::i;:::-;4203:67;4263:6;4255;4249:4;4203:67;:::i;:::-;4297:1;4321:4;4308:17;;4353:2;4345:6;4342:14;4370:1;4365:618;;;;5027:1;5044:6;5041:77;;;5093:9;5088:3;5084:19;5078:26;5069:35;;5041:77;5144:67;5204:6;5197:5;5144:67;:::i;:::-;5138:4;5131:81;5000:222;4335:887;;4365:618;4417:4;4413:9;4405:6;4401:22;4451:37;4483:4;4451:37;:::i;:::-;4510:1;4524:208;4538:7;4535:1;4532:14;4524:208;;;4617:9;4612:3;4608:19;4602:26;4594:6;4587:42;4668:1;4660:6;4656:14;4646:24;;4715:2;4704:9;4700:18;4687:31;;4561:4;4558:1;4554:12;4549:17;;4524:208;;;4760:6;4751:7;4748:19;4745:179;;;4818:9;4813:3;4809:19;4803:26;4861:48;4903:4;4895:6;4891:17;4880:9;4861:48;:::i;:::-;4853:6;4846:64;4768:156;4745:179;4970:1;4966;4958:6;4954:14;4950:22;4944:4;4937:36;4372:611;;;4335:887;;3925:1303;;;3833:1395;;:::o;260:535:10:-;;;;;;;" | |
| }, | |
| "deployedBytecode": { | |
| "functionDebugData": { | |
| "@_afterTokenTransfer_698": { | |
| "entryPoint": 4393, | |
| "id": 698, | |
| "parameterSlots": 3, | |
| "returnSlots": 0 | |
| }, | |
| "@_approve_633": { | |
| "entryPoint": 2153, | |
| "id": 633, | |
| "parameterSlots": 3, | |
| "returnSlots": 0 | |
| }, | |
| "@_beforeTokenTransfer_2371": { | |
| "entryPoint": 4377, | |
| "id": 2371, | |
| "parameterSlots": 3, | |
| "returnSlots": 0 | |
| }, | |
| "@_beforeTokenTransfer_687": { | |
| "entryPoint": 4892, | |
| "id": 687, | |
| "parameterSlots": 3, | |
| "returnSlots": 0 | |
| }, | |
| "@_beforeTokenTransfer_961": { | |
| "entryPoint": 4622, | |
| "id": 961, | |
| "parameterSlots": 3, | |
| "returnSlots": 0 | |
| }, | |
| "@_checkOwner_54": { | |
| "entryPoint": 3380, | |
| "id": 54, | |
| "parameterSlots": 0, | |
| "returnSlots": 0 | |
| }, | |
| "@_getCurrentSnapshotId_850": { | |
| "entryPoint": 4398, | |
| "id": 850, | |
| "parameterSlots": 0, | |
| "returnSlots": 1 | |
| }, | |
| "@_lastSnapshotId_1104": { | |
| "entryPoint": 5133, | |
| "id": 1104, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "@_mint_516": { | |
| "entryPoint": 3506, | |
| "id": 516, | |
| "parameterSlots": 2, | |
| "returnSlots": 0 | |
| }, | |
| "@_msgSender_1298": { | |
| "entryPoint": 2145, | |
| "id": 1298, | |
| "parameterSlots": 0, | |
| "returnSlots": 1 | |
| }, | |
| "@_snapshot_839": { | |
| "entryPoint": 4291, | |
| "id": 839, | |
| "parameterSlots": 0, | |
| "returnSlots": 1 | |
| }, | |
| "@_spendAllowance_676": { | |
| "entryPoint": 2610, | |
| "id": 676, | |
| "parameterSlots": 3, | |
| "returnSlots": 0 | |
| }, | |
| "@_transferOwnership_111": { | |
| "entryPoint": 4093, | |
| "id": 111, | |
| "parameterSlots": 1, | |
| "returnSlots": 0 | |
| }, | |
| "@_transfer_459": { | |
| "entryPoint": 2750, | |
| "id": 459, | |
| "parameterSlots": 3, | |
| "returnSlots": 0 | |
| }, | |
| "@_updateAccountSnapshot_1031": { | |
| "entryPoint": 4897, | |
| "id": 1031, | |
| "parameterSlots": 1, | |
| "returnSlots": 0 | |
| }, | |
| "@_updateSnapshot_1079": { | |
| "entryPoint": 5010, | |
| "id": 1079, | |
| "parameterSlots": 2, | |
| "returnSlots": 0 | |
| }, | |
| "@_updateTotalSupplySnapshot_1041": { | |
| "entryPoint": 4980, | |
| "id": 1041, | |
| "parameterSlots": 0, | |
| "returnSlots": 0 | |
| }, | |
| "@_valueAt_1016": { | |
| "entryPoint": 3848, | |
| "id": 1016, | |
| "parameterSlots": 2, | |
| "returnSlots": 2 | |
| }, | |
| "@allowance_254": { | |
| "entryPoint": 1879, | |
| "id": 254, | |
| "parameterSlots": 2, | |
| "returnSlots": 1 | |
| }, | |
| "@approve_279": { | |
| "entryPoint": 1087, | |
| "id": 279, | |
| "parameterSlots": 2, | |
| "returnSlots": 1 | |
| }, | |
| "@average_1508": { | |
| "entryPoint": 4820, | |
| "id": 1508, | |
| "parameterSlots": 2, | |
| "returnSlots": 1 | |
| }, | |
| "@balanceOfAt_879": { | |
| "entryPoint": 1265, | |
| "id": 879, | |
| "parameterSlots": 2, | |
| "returnSlots": 1 | |
| }, | |
| "@balanceOf_211": { | |
| "entryPoint": 1377, | |
| "id": 211, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "@current_1326": { | |
| "entryPoint": 4806, | |
| "id": 1326, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "@decimals_187": { | |
| "entryPoint": 1179, | |
| "id": 187, | |
| "parameterSlots": 0, | |
| "returnSlots": 1 | |
| }, | |
| "@decreaseAllowance_382": { | |
| "entryPoint": 1725, | |
| "id": 382, | |
| "parameterSlots": 2, | |
| "returnSlots": 1 | |
| }, | |
| "@findUpperBound_1222": { | |
| "entryPoint": 4415, | |
| "id": 1222, | |
| "parameterSlots": 2, | |
| "returnSlots": 1 | |
| }, | |
| "@getUint256Slot_1441": { | |
| "entryPoint": 5000, | |
| "id": 1441, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "@increaseAllowance_341": { | |
| "entryPoint": 1188, | |
| "id": 341, | |
| "parameterSlots": 2, | |
| "returnSlots": 1 | |
| }, | |
| "@increment_1340": { | |
| "entryPoint": 4600, | |
| "id": 1340, | |
| "parameterSlots": 1, | |
| "returnSlots": 0 | |
| }, | |
| "@mint_2350": { | |
| "entryPoint": 1243, | |
| "id": 2350, | |
| "parameterSlots": 2, | |
| "returnSlots": 0 | |
| }, | |
| "@name_167": { | |
| "entryPoint": 941, | |
| "id": 167, | |
| "parameterSlots": 0, | |
| "returnSlots": 1 | |
| }, | |
| "@owner_40": { | |
| "entryPoint": 1469, | |
| "id": 40, | |
| "parameterSlots": 0, | |
| "returnSlots": 1 | |
| }, | |
| "@renounceOwnership_68": { | |
| "entryPoint": 1449, | |
| "id": 68, | |
| "parameterSlots": 0, | |
| "returnSlots": 0 | |
| }, | |
| "@snapshot_2335": { | |
| "entryPoint": 1657, | |
| "id": 2335, | |
| "parameterSlots": 0, | |
| "returnSlots": 0 | |
| }, | |
| "@symbol_177": { | |
| "entryPoint": 1511, | |
| "id": 177, | |
| "parameterSlots": 0, | |
| "returnSlots": 1 | |
| }, | |
| "@totalSupplyAt_903": { | |
| "entryPoint": 1676, | |
| "id": 903, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "@totalSupply_197": { | |
| "entryPoint": 1122, | |
| "id": 197, | |
| "parameterSlots": 0, | |
| "returnSlots": 1 | |
| }, | |
| "@transferFrom_312": { | |
| "entryPoint": 1132, | |
| "id": 312, | |
| "parameterSlots": 3, | |
| "returnSlots": 1 | |
| }, | |
| "@transferOwnership_91": { | |
| "entryPoint": 2014, | |
| "id": 91, | |
| "parameterSlots": 1, | |
| "returnSlots": 0 | |
| }, | |
| "@transfer_236": { | |
| "entryPoint": 1844, | |
| "id": 236, | |
| "parameterSlots": 2, | |
| "returnSlots": 1 | |
| }, | |
| "@unsafeAccess_1285": { | |
| "entryPoint": 4858, | |
| "id": 1285, | |
| "parameterSlots": 2, | |
| "returnSlots": 1 | |
| }, | |
| "abi_decode_t_address": { | |
| "entryPoint": 5465, | |
| "id": null, | |
| "parameterSlots": 2, | |
| "returnSlots": 1 | |
| }, | |
| "abi_decode_t_uint256": { | |
| "entryPoint": 5519, | |
| "id": null, | |
| "parameterSlots": 2, | |
| "returnSlots": 1 | |
| }, | |
| "abi_decode_tuple_t_address": { | |
| "entryPoint": 5838, | |
| "id": null, | |
| "parameterSlots": 2, | |
| "returnSlots": 1 | |
| }, | |
| "abi_decode_tuple_t_addresst_address": { | |
| "entryPoint": 5970, | |
| "id": null, | |
| "parameterSlots": 2, | |
| "returnSlots": 2 | |
| }, | |
| "abi_decode_tuple_t_addresst_addresst_uint256": { | |
| "entryPoint": 5700, | |
| "id": null, | |
| "parameterSlots": 2, | |
| "returnSlots": 3 | |
| }, | |
| "abi_decode_tuple_t_addresst_uint256": { | |
| "entryPoint": 5540, | |
| "id": null, | |
| "parameterSlots": 2, | |
| "returnSlots": 2 | |
| }, | |
| "abi_decode_tuple_t_uint256": { | |
| "entryPoint": 5925, | |
| "id": null, | |
| "parameterSlots": 2, | |
| "returnSlots": 1 | |
| }, | |
| "abi_encode_t_address_to_t_address_fromStack": { | |
| "entryPoint": 5883, | |
| "id": null, | |
| "parameterSlots": 2, | |
| "returnSlots": 0 | |
| }, | |
| "abi_encode_t_bool_to_t_bool_fromStack": { | |
| "entryPoint": 5616, | |
| "id": null, | |
| "parameterSlots": 2, | |
| "returnSlots": 0 | |
| }, | |
| "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack": { | |
| "entryPoint": 5296, | |
| "id": null, | |
| "parameterSlots": 2, | |
| "returnSlots": 1 | |
| }, | |
| "abi_encode_t_stringliteral_031e0835d070e7bbd2c8dcce466eadb8c6b9fd22432b0357ab8c37bd9a385940_to_t_string_memory_ptr_fromStack": { | |
| "entryPoint": 7724, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "abi_encode_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f_to_t_string_memory_ptr_fromStack": { | |
| "entryPoint": 7146, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack": { | |
| "entryPoint": 6454, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "abi_encode_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029_to_t_string_memory_ptr_fromStack": { | |
| "entryPoint": 6746, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "abi_encode_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe_to_t_string_memory_ptr_fromStack": { | |
| "entryPoint": 6854, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "abi_encode_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6_to_t_string_memory_ptr_fromStack": { | |
| "entryPoint": 7292, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack": { | |
| "entryPoint": 7400, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "abi_encode_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea_to_t_string_memory_ptr_fromStack": { | |
| "entryPoint": 7000, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "abi_encode_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208_to_t_string_memory_ptr_fromStack": { | |
| "entryPoint": 6600, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "abi_encode_t_stringliteral_d85a3cdc203c5cdc6dda93c12cd017145671a0ed9058a16c7aa00b8398a4a8e6_to_t_string_memory_ptr_fromStack": { | |
| "entryPoint": 7616, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "abi_encode_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8_to_t_string_memory_ptr_fromStack": { | |
| "entryPoint": 6308, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "abi_encode_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e_to_t_string_memory_ptr_fromStack": { | |
| "entryPoint": 7508, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "abi_encode_t_uint256_to_t_uint256_fromStack": { | |
| "entryPoint": 5658, | |
| "id": null, | |
| "parameterSlots": 2, | |
| "returnSlots": 0 | |
| }, | |
| "abi_encode_t_uint8_to_t_uint8_fromStack": { | |
| "entryPoint": 5796, | |
| "id": null, | |
| "parameterSlots": 2, | |
| "returnSlots": 0 | |
| }, | |
| "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { | |
| "entryPoint": 5898, | |
| "id": null, | |
| "parameterSlots": 2, | |
| "returnSlots": 1 | |
| }, | |
| "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": { | |
| "entryPoint": 5631, | |
| "id": null, | |
| "parameterSlots": 2, | |
| "returnSlots": 1 | |
| }, | |
| "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": { | |
| "entryPoint": 5353, | |
| "id": null, | |
| "parameterSlots": 2, | |
| "returnSlots": 1 | |
| }, | |
| "abi_encode_tuple_t_stringliteral_031e0835d070e7bbd2c8dcce466eadb8c6b9fd22432b0357ab8c37bd9a385940__to_t_string_memory_ptr__fromStack_reversed": { | |
| "entryPoint": 7759, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed": { | |
| "entryPoint": 7181, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed": { | |
| "entryPoint": 6489, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed": { | |
| "entryPoint": 6781, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "abi_encode_tuple_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe__to_t_string_memory_ptr__fromStack_reversed": { | |
| "entryPoint": 6889, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed": { | |
| "entryPoint": 7327, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed": { | |
| "entryPoint": 7435, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed": { | |
| "entryPoint": 7035, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed": { | |
| "entryPoint": 6635, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "abi_encode_tuple_t_stringliteral_d85a3cdc203c5cdc6dda93c12cd017145671a0ed9058a16c7aa00b8398a4a8e6__to_t_string_memory_ptr__fromStack_reversed": { | |
| "entryPoint": 7651, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed": { | |
| "entryPoint": 6343, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed": { | |
| "entryPoint": 7543, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { | |
| "entryPoint": 5673, | |
| "id": null, | |
| "parameterSlots": 2, | |
| "returnSlots": 1 | |
| }, | |
| "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed": { | |
| "entryPoint": 5811, | |
| "id": null, | |
| "parameterSlots": 2, | |
| "returnSlots": 1 | |
| }, | |
| "allocate_unbounded": { | |
| "entryPoint": null, | |
| "id": null, | |
| "parameterSlots": 0, | |
| "returnSlots": 1 | |
| }, | |
| "array_length_t_string_memory_ptr": { | |
| "entryPoint": 5209, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "array_storeLengthForEncoding_t_string_memory_ptr_fromStack": { | |
| "entryPoint": 5220, | |
| "id": null, | |
| "parameterSlots": 2, | |
| "returnSlots": 1 | |
| }, | |
| "checked_add_t_uint256": { | |
| "entryPoint": 6177, | |
| "id": null, | |
| "parameterSlots": 2, | |
| "returnSlots": 1 | |
| }, | |
| "checked_div_t_uint256": { | |
| "entryPoint": 7937, | |
| "id": null, | |
| "parameterSlots": 2, | |
| "returnSlots": 1 | |
| }, | |
| "checked_sub_t_uint256": { | |
| "entryPoint": 7838, | |
| "id": null, | |
| "parameterSlots": 2, | |
| "returnSlots": 1 | |
| }, | |
| "cleanup_t_address": { | |
| "entryPoint": 5424, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "cleanup_t_bool": { | |
| "entryPoint": 5604, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "cleanup_t_uint160": { | |
| "entryPoint": 5392, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "cleanup_t_uint256": { | |
| "entryPoint": 5486, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "cleanup_t_uint8": { | |
| "entryPoint": 5783, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "copy_memory_to_memory_with_cleanup": { | |
| "entryPoint": 5237, | |
| "id": null, | |
| "parameterSlots": 3, | |
| "returnSlots": 0 | |
| }, | |
| "extract_byte_array_length": { | |
| "entryPoint": 6081, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "panic_error_0x11": { | |
| "entryPoint": 6130, | |
| "id": null, | |
| "parameterSlots": 0, | |
| "returnSlots": 0 | |
| }, | |
| "panic_error_0x12": { | |
| "entryPoint": 7890, | |
| "id": null, | |
| "parameterSlots": 0, | |
| "returnSlots": 0 | |
| }, | |
| "panic_error_0x22": { | |
| "entryPoint": 6034, | |
| "id": null, | |
| "parameterSlots": 0, | |
| "returnSlots": 0 | |
| }, | |
| "panic_error_0x32": { | |
| "entryPoint": 7791, | |
| "id": null, | |
| "parameterSlots": 0, | |
| "returnSlots": 0 | |
| }, | |
| "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": { | |
| "entryPoint": null, | |
| "id": null, | |
| "parameterSlots": 0, | |
| "returnSlots": 0 | |
| }, | |
| "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": { | |
| "entryPoint": 5387, | |
| "id": null, | |
| "parameterSlots": 0, | |
| "returnSlots": 0 | |
| }, | |
| "round_up_to_mul_of_32": { | |
| "entryPoint": 5279, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "store_literal_in_memory_031e0835d070e7bbd2c8dcce466eadb8c6b9fd22432b0357ab8c37bd9a385940": { | |
| "entryPoint": 7683, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 0 | |
| }, | |
| "store_literal_in_memory_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f": { | |
| "entryPoint": 7067, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 0 | |
| }, | |
| "store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe": { | |
| "entryPoint": 6375, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 0 | |
| }, | |
| "store_literal_in_memory_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029": { | |
| "entryPoint": 6667, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 0 | |
| }, | |
| "store_literal_in_memory_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe": { | |
| "entryPoint": 6813, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 0 | |
| }, | |
| "store_literal_in_memory_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6": { | |
| "entryPoint": 7213, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 0 | |
| }, | |
| "store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe": { | |
| "entryPoint": 7359, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 0 | |
| }, | |
| "store_literal_in_memory_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea": { | |
| "entryPoint": 6921, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 0 | |
| }, | |
| "store_literal_in_memory_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208": { | |
| "entryPoint": 6521, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 0 | |
| }, | |
| "store_literal_in_memory_d85a3cdc203c5cdc6dda93c12cd017145671a0ed9058a16c7aa00b8398a4a8e6": { | |
| "entryPoint": 7575, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 0 | |
| }, | |
| "store_literal_in_memory_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8": { | |
| "entryPoint": 6229, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 0 | |
| }, | |
| "store_literal_in_memory_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e": { | |
| "entryPoint": 7467, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 0 | |
| }, | |
| "validator_revert_t_address": { | |
| "entryPoint": 5442, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 0 | |
| }, | |
| "validator_revert_t_uint256": { | |
| "entryPoint": 5496, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 0 | |
| } | |
| }, | |
| "generatedSources": [ | |
| { | |
| "ast": { | |
| "nodeType": "YulBlock", | |
| "src": "0:20103:11", | |
| "statements": [ | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "66:40:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "77:22:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulIdentifier", | |
| "src": "93:5:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mload", | |
| "nodeType": "YulIdentifier", | |
| "src": "87:5:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "87:12:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "length", | |
| "nodeType": "YulIdentifier", | |
| "src": "77:6:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "array_length_t_string_memory_ptr", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulTypedName", | |
| "src": "49:5:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "length", | |
| "nodeType": "YulTypedName", | |
| "src": "59:6:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "7:99:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "208:73:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "225:3:11" | |
| }, | |
| { | |
| "name": "length", | |
| "nodeType": "YulIdentifier", | |
| "src": "230:6:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "218:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "218:19:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "218:19:11" | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "246:29:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "265:3:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "270:4:11", | |
| "type": "", | |
| "value": "0x20" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "261:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "261:14:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "updated_pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "246:11:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulTypedName", | |
| "src": "180:3:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "length", | |
| "nodeType": "YulTypedName", | |
| "src": "185:6:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "updated_pos", | |
| "nodeType": "YulTypedName", | |
| "src": "196:11:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "112:169:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "349:184:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulVariableDeclaration", | |
| "src": "359:10:11", | |
| "value": { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "368:1:11", | |
| "type": "", | |
| "value": "0" | |
| }, | |
| "variables": [ | |
| { | |
| "name": "i", | |
| "nodeType": "YulTypedName", | |
| "src": "363:1:11", | |
| "type": "" | |
| } | |
| ] | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "428:63:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "dst", | |
| "nodeType": "YulIdentifier", | |
| "src": "453:3:11" | |
| }, | |
| { | |
| "name": "i", | |
| "nodeType": "YulIdentifier", | |
| "src": "458:1:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "449:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "449:11:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "src", | |
| "nodeType": "YulIdentifier", | |
| "src": "472:3:11" | |
| }, | |
| { | |
| "name": "i", | |
| "nodeType": "YulIdentifier", | |
| "src": "477:1:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "468:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "468:11:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mload", | |
| "nodeType": "YulIdentifier", | |
| "src": "462:5:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "462:18:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "442:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "442:39:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "442:39:11" | |
| } | |
| ] | |
| }, | |
| "condition": { | |
| "arguments": [ | |
| { | |
| "name": "i", | |
| "nodeType": "YulIdentifier", | |
| "src": "389:1:11" | |
| }, | |
| { | |
| "name": "length", | |
| "nodeType": "YulIdentifier", | |
| "src": "392:6:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "lt", | |
| "nodeType": "YulIdentifier", | |
| "src": "386:2:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "386:13:11" | |
| }, | |
| "nodeType": "YulForLoop", | |
| "post": { | |
| "nodeType": "YulBlock", | |
| "src": "400:19:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "402:15:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "i", | |
| "nodeType": "YulIdentifier", | |
| "src": "411:1:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "414:2:11", | |
| "type": "", | |
| "value": "32" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "407:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "407:10:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "i", | |
| "nodeType": "YulIdentifier", | |
| "src": "402:1:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "pre": { | |
| "nodeType": "YulBlock", | |
| "src": "382:3:11", | |
| "statements": [] | |
| }, | |
| "src": "378:113:11" | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "dst", | |
| "nodeType": "YulIdentifier", | |
| "src": "511:3:11" | |
| }, | |
| { | |
| "name": "length", | |
| "nodeType": "YulIdentifier", | |
| "src": "516:6:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "507:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "507:16:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "525:1:11", | |
| "type": "", | |
| "value": "0" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "500:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "500:27:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "500:27:11" | |
| } | |
| ] | |
| }, | |
| "name": "copy_memory_to_memory_with_cleanup", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "src", | |
| "nodeType": "YulTypedName", | |
| "src": "331:3:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "dst", | |
| "nodeType": "YulTypedName", | |
| "src": "336:3:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "length", | |
| "nodeType": "YulTypedName", | |
| "src": "341:6:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "287:246:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "587:54:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "597:38:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulIdentifier", | |
| "src": "615:5:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "622:2:11", | |
| "type": "", | |
| "value": "31" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "611:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "611:14:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "631:2:11", | |
| "type": "", | |
| "value": "31" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "not", | |
| "nodeType": "YulIdentifier", | |
| "src": "627:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "627:7:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "and", | |
| "nodeType": "YulIdentifier", | |
| "src": "607:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "607:28:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "result", | |
| "nodeType": "YulIdentifier", | |
| "src": "597:6:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "round_up_to_mul_of_32", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulTypedName", | |
| "src": "570:5:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "result", | |
| "nodeType": "YulTypedName", | |
| "src": "580:6:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "539:102:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "739:285:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulVariableDeclaration", | |
| "src": "749:53:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulIdentifier", | |
| "src": "796:5:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "array_length_t_string_memory_ptr", | |
| "nodeType": "YulIdentifier", | |
| "src": "763:32:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "763:39:11" | |
| }, | |
| "variables": [ | |
| { | |
| "name": "length", | |
| "nodeType": "YulTypedName", | |
| "src": "753:6:11", | |
| "type": "" | |
| } | |
| ] | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "811:78:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "877:3:11" | |
| }, | |
| { | |
| "name": "length", | |
| "nodeType": "YulIdentifier", | |
| "src": "882:6:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", | |
| "nodeType": "YulIdentifier", | |
| "src": "818:58:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "818:71:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "811:3:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulIdentifier", | |
| "src": "937:5:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "944:4:11", | |
| "type": "", | |
| "value": "0x20" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "933:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "933:16:11" | |
| }, | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "951:3:11" | |
| }, | |
| { | |
| "name": "length", | |
| "nodeType": "YulIdentifier", | |
| "src": "956:6:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "copy_memory_to_memory_with_cleanup", | |
| "nodeType": "YulIdentifier", | |
| "src": "898:34:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "898:65:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "898:65:11" | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "972:46:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "983:3:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "name": "length", | |
| "nodeType": "YulIdentifier", | |
| "src": "1010:6:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "round_up_to_mul_of_32", | |
| "nodeType": "YulIdentifier", | |
| "src": "988:21:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "988:29:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "979:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "979:39:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "end", | |
| "nodeType": "YulIdentifier", | |
| "src": "972:3:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulTypedName", | |
| "src": "720:5:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "pos", | |
| "nodeType": "YulTypedName", | |
| "src": "727:3:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "end", | |
| "nodeType": "YulTypedName", | |
| "src": "735:3:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "647:377:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "1148:195:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "1158:26:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "1170:9:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "1181:2:11", | |
| "type": "", | |
| "value": "32" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "1166:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "1166:18:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "1158:4:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "1205:9:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "1216:1:11", | |
| "type": "", | |
| "value": "0" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "1201:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "1201:17:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "1224:4:11" | |
| }, | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "1230:9:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "sub", | |
| "nodeType": "YulIdentifier", | |
| "src": "1220:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "1220:20:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "1194:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "1194:47:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "1194:47:11" | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "1250:86:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "value0", | |
| "nodeType": "YulIdentifier", | |
| "src": "1322:6:11" | |
| }, | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "1331:4:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack", | |
| "nodeType": "YulIdentifier", | |
| "src": "1258:63:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "1258:78:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "1250:4:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulTypedName", | |
| "src": "1120:9:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "value0", | |
| "nodeType": "YulTypedName", | |
| "src": "1132:6:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulTypedName", | |
| "src": "1143:4:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "1030:313:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "1389:35:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "1399:19:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "1415:2:11", | |
| "type": "", | |
| "value": "64" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mload", | |
| "nodeType": "YulIdentifier", | |
| "src": "1409:5:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "1409:9:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "memPtr", | |
| "nodeType": "YulIdentifier", | |
| "src": "1399:6:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "allocate_unbounded", | |
| "nodeType": "YulFunctionDefinition", | |
| "returnVariables": [ | |
| { | |
| "name": "memPtr", | |
| "nodeType": "YulTypedName", | |
| "src": "1382:6:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "1349:75:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "1519:28:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "1536:1:11", | |
| "type": "", | |
| "value": "0" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "1539:1:11", | |
| "type": "", | |
| "value": "0" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "revert", | |
| "nodeType": "YulIdentifier", | |
| "src": "1529:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "1529:12:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "1529:12:11" | |
| } | |
| ] | |
| }, | |
| "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", | |
| "nodeType": "YulFunctionDefinition", | |
| "src": "1430:117:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "1642:28:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "1659:1:11", | |
| "type": "", | |
| "value": "0" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "1662:1:11", | |
| "type": "", | |
| "value": "0" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "revert", | |
| "nodeType": "YulIdentifier", | |
| "src": "1652:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "1652:12:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "1652:12:11" | |
| } | |
| ] | |
| }, | |
| "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", | |
| "nodeType": "YulFunctionDefinition", | |
| "src": "1553:117:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "1721:81:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "1731:65:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulIdentifier", | |
| "src": "1746:5:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "1753:42:11", | |
| "type": "", | |
| "value": "0xffffffffffffffffffffffffffffffffffffffff" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "and", | |
| "nodeType": "YulIdentifier", | |
| "src": "1742:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "1742:54:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "cleaned", | |
| "nodeType": "YulIdentifier", | |
| "src": "1731:7:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "cleanup_t_uint160", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulTypedName", | |
| "src": "1703:5:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "cleaned", | |
| "nodeType": "YulTypedName", | |
| "src": "1713:7:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "1676:126:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "1853:51:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "1863:35:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulIdentifier", | |
| "src": "1892:5:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "cleanup_t_uint160", | |
| "nodeType": "YulIdentifier", | |
| "src": "1874:17:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "1874:24:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "cleaned", | |
| "nodeType": "YulIdentifier", | |
| "src": "1863:7:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "cleanup_t_address", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulTypedName", | |
| "src": "1835:5:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "cleaned", | |
| "nodeType": "YulTypedName", | |
| "src": "1845:7:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "1808:96:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "1953:79:11", | |
| "statements": [ | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "2010:16:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "2019:1:11", | |
| "type": "", | |
| "value": "0" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "2022:1:11", | |
| "type": "", | |
| "value": "0" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "revert", | |
| "nodeType": "YulIdentifier", | |
| "src": "2012:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "2012:12:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "2012:12:11" | |
| } | |
| ] | |
| }, | |
| "condition": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulIdentifier", | |
| "src": "1976:5:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulIdentifier", | |
| "src": "2001:5:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "cleanup_t_address", | |
| "nodeType": "YulIdentifier", | |
| "src": "1983:17:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "1983:24:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "eq", | |
| "nodeType": "YulIdentifier", | |
| "src": "1973:2:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "1973:35:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "iszero", | |
| "nodeType": "YulIdentifier", | |
| "src": "1966:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "1966:43:11" | |
| }, | |
| "nodeType": "YulIf", | |
| "src": "1963:63:11" | |
| } | |
| ] | |
| }, | |
| "name": "validator_revert_t_address", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulTypedName", | |
| "src": "1946:5:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "1910:122:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "2090:87:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "2100:29:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "offset", | |
| "nodeType": "YulIdentifier", | |
| "src": "2122:6:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "calldataload", | |
| "nodeType": "YulIdentifier", | |
| "src": "2109:12:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "2109:20:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulIdentifier", | |
| "src": "2100:5:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulIdentifier", | |
| "src": "2165:5:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "validator_revert_t_address", | |
| "nodeType": "YulIdentifier", | |
| "src": "2138:26:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "2138:33:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "2138:33:11" | |
| } | |
| ] | |
| }, | |
| "name": "abi_decode_t_address", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "offset", | |
| "nodeType": "YulTypedName", | |
| "src": "2068:6:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "end", | |
| "nodeType": "YulTypedName", | |
| "src": "2076:3:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulTypedName", | |
| "src": "2084:5:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "2038:139:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "2228:32:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "2238:16:11", | |
| "value": { | |
| "name": "value", | |
| "nodeType": "YulIdentifier", | |
| "src": "2249:5:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "cleaned", | |
| "nodeType": "YulIdentifier", | |
| "src": "2238:7:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "cleanup_t_uint256", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulTypedName", | |
| "src": "2210:5:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "cleaned", | |
| "nodeType": "YulTypedName", | |
| "src": "2220:7:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "2183:77:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "2309:79:11", | |
| "statements": [ | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "2366:16:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "2375:1:11", | |
| "type": "", | |
| "value": "0" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "2378:1:11", | |
| "type": "", | |
| "value": "0" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "revert", | |
| "nodeType": "YulIdentifier", | |
| "src": "2368:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "2368:12:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "2368:12:11" | |
| } | |
| ] | |
| }, | |
| "condition": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulIdentifier", | |
| "src": "2332:5:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulIdentifier", | |
| "src": "2357:5:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "cleanup_t_uint256", | |
| "nodeType": "YulIdentifier", | |
| "src": "2339:17:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "2339:24:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "eq", | |
| "nodeType": "YulIdentifier", | |
| "src": "2329:2:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "2329:35:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "iszero", | |
| "nodeType": "YulIdentifier", | |
| "src": "2322:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "2322:43:11" | |
| }, | |
| "nodeType": "YulIf", | |
| "src": "2319:63:11" | |
| } | |
| ] | |
| }, | |
| "name": "validator_revert_t_uint256", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulTypedName", | |
| "src": "2302:5:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "2266:122:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "2446:87:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "2456:29:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "offset", | |
| "nodeType": "YulIdentifier", | |
| "src": "2478:6:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "calldataload", | |
| "nodeType": "YulIdentifier", | |
| "src": "2465:12:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "2465:20:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulIdentifier", | |
| "src": "2456:5:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulIdentifier", | |
| "src": "2521:5:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "validator_revert_t_uint256", | |
| "nodeType": "YulIdentifier", | |
| "src": "2494:26:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "2494:33:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "2494:33:11" | |
| } | |
| ] | |
| }, | |
| "name": "abi_decode_t_uint256", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "offset", | |
| "nodeType": "YulTypedName", | |
| "src": "2424:6:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "end", | |
| "nodeType": "YulTypedName", | |
| "src": "2432:3:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulTypedName", | |
| "src": "2440:5:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "2394:139:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "2622:391:11", | |
| "statements": [ | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "2668:83:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [], | |
| "functionName": { | |
| "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", | |
| "nodeType": "YulIdentifier", | |
| "src": "2670:77:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "2670:79:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "2670:79:11" | |
| } | |
| ] | |
| }, | |
| "condition": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "dataEnd", | |
| "nodeType": "YulIdentifier", | |
| "src": "2643:7:11" | |
| }, | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "2652:9:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "sub", | |
| "nodeType": "YulIdentifier", | |
| "src": "2639:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "2639:23:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "2664:2:11", | |
| "type": "", | |
| "value": "64" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "slt", | |
| "nodeType": "YulIdentifier", | |
| "src": "2635:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "2635:32:11" | |
| }, | |
| "nodeType": "YulIf", | |
| "src": "2632:119:11" | |
| }, | |
| { | |
| "nodeType": "YulBlock", | |
| "src": "2761:117:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulVariableDeclaration", | |
| "src": "2776:15:11", | |
| "value": { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "2790:1:11", | |
| "type": "", | |
| "value": "0" | |
| }, | |
| "variables": [ | |
| { | |
| "name": "offset", | |
| "nodeType": "YulTypedName", | |
| "src": "2780:6:11", | |
| "type": "" | |
| } | |
| ] | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "2805:63:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "2840:9:11" | |
| }, | |
| { | |
| "name": "offset", | |
| "nodeType": "YulIdentifier", | |
| "src": "2851:6:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "2836:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "2836:22:11" | |
| }, | |
| { | |
| "name": "dataEnd", | |
| "nodeType": "YulIdentifier", | |
| "src": "2860:7:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "abi_decode_t_address", | |
| "nodeType": "YulIdentifier", | |
| "src": "2815:20:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "2815:53:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "value0", | |
| "nodeType": "YulIdentifier", | |
| "src": "2805:6:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| { | |
| "nodeType": "YulBlock", | |
| "src": "2888:118:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulVariableDeclaration", | |
| "src": "2903:16:11", | |
| "value": { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "2917:2:11", | |
| "type": "", | |
| "value": "32" | |
| }, | |
| "variables": [ | |
| { | |
| "name": "offset", | |
| "nodeType": "YulTypedName", | |
| "src": "2907:6:11", | |
| "type": "" | |
| } | |
| ] | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "2933:63:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "2968:9:11" | |
| }, | |
| { | |
| "name": "offset", | |
| "nodeType": "YulIdentifier", | |
| "src": "2979:6:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "2964:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "2964:22:11" | |
| }, | |
| { | |
| "name": "dataEnd", | |
| "nodeType": "YulIdentifier", | |
| "src": "2988:7:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "abi_decode_t_uint256", | |
| "nodeType": "YulIdentifier", | |
| "src": "2943:20:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "2943:53:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "value1", | |
| "nodeType": "YulIdentifier", | |
| "src": "2933:6:11" | |
| } | |
| ] | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "abi_decode_tuple_t_addresst_uint256", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulTypedName", | |
| "src": "2584:9:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "dataEnd", | |
| "nodeType": "YulTypedName", | |
| "src": "2595:7:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "value0", | |
| "nodeType": "YulTypedName", | |
| "src": "2607:6:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "value1", | |
| "nodeType": "YulTypedName", | |
| "src": "2615:6:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "2539:474:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "3061:48:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "3071:32:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulIdentifier", | |
| "src": "3096:5:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "iszero", | |
| "nodeType": "YulIdentifier", | |
| "src": "3089:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "3089:13:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "iszero", | |
| "nodeType": "YulIdentifier", | |
| "src": "3082:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "3082:21:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "cleaned", | |
| "nodeType": "YulIdentifier", | |
| "src": "3071:7:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "cleanup_t_bool", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulTypedName", | |
| "src": "3043:5:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "cleaned", | |
| "nodeType": "YulTypedName", | |
| "src": "3053:7:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "3019:90:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "3174:50:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "3191:3:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulIdentifier", | |
| "src": "3211:5:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "cleanup_t_bool", | |
| "nodeType": "YulIdentifier", | |
| "src": "3196:14:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "3196:21:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "3184:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "3184:34:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "3184:34:11" | |
| } | |
| ] | |
| }, | |
| "name": "abi_encode_t_bool_to_t_bool_fromStack", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulTypedName", | |
| "src": "3162:5:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "pos", | |
| "nodeType": "YulTypedName", | |
| "src": "3169:3:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "3115:109:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "3322:118:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "3332:26:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "3344:9:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "3355:2:11", | |
| "type": "", | |
| "value": "32" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "3340:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "3340:18:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "3332:4:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "name": "value0", | |
| "nodeType": "YulIdentifier", | |
| "src": "3406:6:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "3419:9:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "3430:1:11", | |
| "type": "", | |
| "value": "0" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "3415:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "3415:17:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "abi_encode_t_bool_to_t_bool_fromStack", | |
| "nodeType": "YulIdentifier", | |
| "src": "3368:37:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "3368:65:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "3368:65:11" | |
| } | |
| ] | |
| }, | |
| "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulTypedName", | |
| "src": "3294:9:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "value0", | |
| "nodeType": "YulTypedName", | |
| "src": "3306:6:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulTypedName", | |
| "src": "3317:4:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "3230:210:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "3511:53:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "3528:3:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulIdentifier", | |
| "src": "3551:5:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "cleanup_t_uint256", | |
| "nodeType": "YulIdentifier", | |
| "src": "3533:17:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "3533:24:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "3521:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "3521:37:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "3521:37:11" | |
| } | |
| ] | |
| }, | |
| "name": "abi_encode_t_uint256_to_t_uint256_fromStack", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulTypedName", | |
| "src": "3499:5:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "pos", | |
| "nodeType": "YulTypedName", | |
| "src": "3506:3:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "3446:118:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "3668:124:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "3678:26:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "3690:9:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "3701:2:11", | |
| "type": "", | |
| "value": "32" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "3686:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "3686:18:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "3678:4:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "name": "value0", | |
| "nodeType": "YulIdentifier", | |
| "src": "3758:6:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "3771:9:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "3782:1:11", | |
| "type": "", | |
| "value": "0" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "3767:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "3767:17:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "abi_encode_t_uint256_to_t_uint256_fromStack", | |
| "nodeType": "YulIdentifier", | |
| "src": "3714:43:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "3714:71:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "3714:71:11" | |
| } | |
| ] | |
| }, | |
| "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulTypedName", | |
| "src": "3640:9:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "value0", | |
| "nodeType": "YulTypedName", | |
| "src": "3652:6:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulTypedName", | |
| "src": "3663:4:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "3570:222:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "3898:519:11", | |
| "statements": [ | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "3944:83:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [], | |
| "functionName": { | |
| "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", | |
| "nodeType": "YulIdentifier", | |
| "src": "3946:77:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "3946:79:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "3946:79:11" | |
| } | |
| ] | |
| }, | |
| "condition": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "dataEnd", | |
| "nodeType": "YulIdentifier", | |
| "src": "3919:7:11" | |
| }, | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "3928:9:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "sub", | |
| "nodeType": "YulIdentifier", | |
| "src": "3915:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "3915:23:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "3940:2:11", | |
| "type": "", | |
| "value": "96" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "slt", | |
| "nodeType": "YulIdentifier", | |
| "src": "3911:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "3911:32:11" | |
| }, | |
| "nodeType": "YulIf", | |
| "src": "3908:119:11" | |
| }, | |
| { | |
| "nodeType": "YulBlock", | |
| "src": "4037:117:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulVariableDeclaration", | |
| "src": "4052:15:11", | |
| "value": { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "4066:1:11", | |
| "type": "", | |
| "value": "0" | |
| }, | |
| "variables": [ | |
| { | |
| "name": "offset", | |
| "nodeType": "YulTypedName", | |
| "src": "4056:6:11", | |
| "type": "" | |
| } | |
| ] | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "4081:63:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "4116:9:11" | |
| }, | |
| { | |
| "name": "offset", | |
| "nodeType": "YulIdentifier", | |
| "src": "4127:6:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "4112:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4112:22:11" | |
| }, | |
| { | |
| "name": "dataEnd", | |
| "nodeType": "YulIdentifier", | |
| "src": "4136:7:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "abi_decode_t_address", | |
| "nodeType": "YulIdentifier", | |
| "src": "4091:20:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4091:53:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "value0", | |
| "nodeType": "YulIdentifier", | |
| "src": "4081:6:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| { | |
| "nodeType": "YulBlock", | |
| "src": "4164:118:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulVariableDeclaration", | |
| "src": "4179:16:11", | |
| "value": { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "4193:2:11", | |
| "type": "", | |
| "value": "32" | |
| }, | |
| "variables": [ | |
| { | |
| "name": "offset", | |
| "nodeType": "YulTypedName", | |
| "src": "4183:6:11", | |
| "type": "" | |
| } | |
| ] | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "4209:63:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "4244:9:11" | |
| }, | |
| { | |
| "name": "offset", | |
| "nodeType": "YulIdentifier", | |
| "src": "4255:6:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "4240:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4240:22:11" | |
| }, | |
| { | |
| "name": "dataEnd", | |
| "nodeType": "YulIdentifier", | |
| "src": "4264:7:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "abi_decode_t_address", | |
| "nodeType": "YulIdentifier", | |
| "src": "4219:20:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4219:53:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "value1", | |
| "nodeType": "YulIdentifier", | |
| "src": "4209:6:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| { | |
| "nodeType": "YulBlock", | |
| "src": "4292:118:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulVariableDeclaration", | |
| "src": "4307:16:11", | |
| "value": { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "4321:2:11", | |
| "type": "", | |
| "value": "64" | |
| }, | |
| "variables": [ | |
| { | |
| "name": "offset", | |
| "nodeType": "YulTypedName", | |
| "src": "4311:6:11", | |
| "type": "" | |
| } | |
| ] | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "4337:63:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "4372:9:11" | |
| }, | |
| { | |
| "name": "offset", | |
| "nodeType": "YulIdentifier", | |
| "src": "4383:6:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "4368:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4368:22:11" | |
| }, | |
| { | |
| "name": "dataEnd", | |
| "nodeType": "YulIdentifier", | |
| "src": "4392:7:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "abi_decode_t_uint256", | |
| "nodeType": "YulIdentifier", | |
| "src": "4347:20:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4347:53:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "value2", | |
| "nodeType": "YulIdentifier", | |
| "src": "4337:6:11" | |
| } | |
| ] | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "abi_decode_tuple_t_addresst_addresst_uint256", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulTypedName", | |
| "src": "3852:9:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "dataEnd", | |
| "nodeType": "YulTypedName", | |
| "src": "3863:7:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "value0", | |
| "nodeType": "YulTypedName", | |
| "src": "3875:6:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "value1", | |
| "nodeType": "YulTypedName", | |
| "src": "3883:6:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "value2", | |
| "nodeType": "YulTypedName", | |
| "src": "3891:6:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "3798:619:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "4466:43:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "4476:27:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulIdentifier", | |
| "src": "4491:5:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "4498:4:11", | |
| "type": "", | |
| "value": "0xff" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "and", | |
| "nodeType": "YulIdentifier", | |
| "src": "4487:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4487:16:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "cleaned", | |
| "nodeType": "YulIdentifier", | |
| "src": "4476:7:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "cleanup_t_uint8", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulTypedName", | |
| "src": "4448:5:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "cleaned", | |
| "nodeType": "YulTypedName", | |
| "src": "4458:7:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "4423:86:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "4576:51:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "4593:3:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulIdentifier", | |
| "src": "4614:5:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "cleanup_t_uint8", | |
| "nodeType": "YulIdentifier", | |
| "src": "4598:15:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4598:22:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "4586:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4586:35:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "4586:35:11" | |
| } | |
| ] | |
| }, | |
| "name": "abi_encode_t_uint8_to_t_uint8_fromStack", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulTypedName", | |
| "src": "4564:5:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "pos", | |
| "nodeType": "YulTypedName", | |
| "src": "4571:3:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "4515:112:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "4727:120:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "4737:26:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "4749:9:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "4760:2:11", | |
| "type": "", | |
| "value": "32" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "4745:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4745:18:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "4737:4:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "name": "value0", | |
| "nodeType": "YulIdentifier", | |
| "src": "4813:6:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "4826:9:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "4837:1:11", | |
| "type": "", | |
| "value": "0" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "4822:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4822:17:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "abi_encode_t_uint8_to_t_uint8_fromStack", | |
| "nodeType": "YulIdentifier", | |
| "src": "4773:39:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4773:67:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "4773:67:11" | |
| } | |
| ] | |
| }, | |
| "name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulTypedName", | |
| "src": "4699:9:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "value0", | |
| "nodeType": "YulTypedName", | |
| "src": "4711:6:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulTypedName", | |
| "src": "4722:4:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "4633:214:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "4919:263:11", | |
| "statements": [ | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "4965:83:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [], | |
| "functionName": { | |
| "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", | |
| "nodeType": "YulIdentifier", | |
| "src": "4967:77:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4967:79:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "4967:79:11" | |
| } | |
| ] | |
| }, | |
| "condition": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "dataEnd", | |
| "nodeType": "YulIdentifier", | |
| "src": "4940:7:11" | |
| }, | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "4949:9:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "sub", | |
| "nodeType": "YulIdentifier", | |
| "src": "4936:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4936:23:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "4961:2:11", | |
| "type": "", | |
| "value": "32" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "slt", | |
| "nodeType": "YulIdentifier", | |
| "src": "4932:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4932:32:11" | |
| }, | |
| "nodeType": "YulIf", | |
| "src": "4929:119:11" | |
| }, | |
| { | |
| "nodeType": "YulBlock", | |
| "src": "5058:117:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulVariableDeclaration", | |
| "src": "5073:15:11", | |
| "value": { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "5087:1:11", | |
| "type": "", | |
| "value": "0" | |
| }, | |
| "variables": [ | |
| { | |
| "name": "offset", | |
| "nodeType": "YulTypedName", | |
| "src": "5077:6:11", | |
| "type": "" | |
| } | |
| ] | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "5102:63:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "5137:9:11" | |
| }, | |
| { | |
| "name": "offset", | |
| "nodeType": "YulIdentifier", | |
| "src": "5148:6:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "5133:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "5133:22:11" | |
| }, | |
| { | |
| "name": "dataEnd", | |
| "nodeType": "YulIdentifier", | |
| "src": "5157:7:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "abi_decode_t_address", | |
| "nodeType": "YulIdentifier", | |
| "src": "5112:20:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "5112:53:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "value0", | |
| "nodeType": "YulIdentifier", | |
| "src": "5102:6:11" | |
| } | |
| ] | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "abi_decode_tuple_t_address", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulTypedName", | |
| "src": "4889:9:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "dataEnd", | |
| "nodeType": "YulTypedName", | |
| "src": "4900:7:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "value0", | |
| "nodeType": "YulTypedName", | |
| "src": "4912:6:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "4853:329:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "5253:53:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "5270:3:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulIdentifier", | |
| "src": "5293:5:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "cleanup_t_address", | |
| "nodeType": "YulIdentifier", | |
| "src": "5275:17:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "5275:24:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "5263:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "5263:37:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "5263:37:11" | |
| } | |
| ] | |
| }, | |
| "name": "abi_encode_t_address_to_t_address_fromStack", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulTypedName", | |
| "src": "5241:5:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "pos", | |
| "nodeType": "YulTypedName", | |
| "src": "5248:3:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "5188:118:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "5410:124:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "5420:26:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "5432:9:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "5443:2:11", | |
| "type": "", | |
| "value": "32" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "5428:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "5428:18:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "5420:4:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "name": "value0", | |
| "nodeType": "YulIdentifier", | |
| "src": "5500:6:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "5513:9:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "5524:1:11", | |
| "type": "", | |
| "value": "0" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "5509:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "5509:17:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "abi_encode_t_address_to_t_address_fromStack", | |
| "nodeType": "YulIdentifier", | |
| "src": "5456:43:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "5456:71:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "5456:71:11" | |
| } | |
| ] | |
| }, | |
| "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulTypedName", | |
| "src": "5382:9:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "value0", | |
| "nodeType": "YulTypedName", | |
| "src": "5394:6:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulTypedName", | |
| "src": "5405:4:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "5312:222:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "5606:263:11", | |
| "statements": [ | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "5652:83:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [], | |
| "functionName": { | |
| "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", | |
| "nodeType": "YulIdentifier", | |
| "src": "5654:77:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "5654:79:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "5654:79:11" | |
| } | |
| ] | |
| }, | |
| "condition": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "dataEnd", | |
| "nodeType": "YulIdentifier", | |
| "src": "5627:7:11" | |
| }, | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "5636:9:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "sub", | |
| "nodeType": "YulIdentifier", | |
| "src": "5623:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "5623:23:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "5648:2:11", | |
| "type": "", | |
| "value": "32" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "slt", | |
| "nodeType": "YulIdentifier", | |
| "src": "5619:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "5619:32:11" | |
| }, | |
| "nodeType": "YulIf", | |
| "src": "5616:119:11" | |
| }, | |
| { | |
| "nodeType": "YulBlock", | |
| "src": "5745:117:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulVariableDeclaration", | |
| "src": "5760:15:11", | |
| "value": { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "5774:1:11", | |
| "type": "", | |
| "value": "0" | |
| }, | |
| "variables": [ | |
| { | |
| "name": "offset", | |
| "nodeType": "YulTypedName", | |
| "src": "5764:6:11", | |
| "type": "" | |
| } | |
| ] | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "5789:63:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "5824:9:11" | |
| }, | |
| { | |
| "name": "offset", | |
| "nodeType": "YulIdentifier", | |
| "src": "5835:6:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "5820:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "5820:22:11" | |
| }, | |
| { | |
| "name": "dataEnd", | |
| "nodeType": "YulIdentifier", | |
| "src": "5844:7:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "abi_decode_t_uint256", | |
| "nodeType": "YulIdentifier", | |
| "src": "5799:20:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "5799:53:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "value0", | |
| "nodeType": "YulIdentifier", | |
| "src": "5789:6:11" | |
| } | |
| ] | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "abi_decode_tuple_t_uint256", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulTypedName", | |
| "src": "5576:9:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "dataEnd", | |
| "nodeType": "YulTypedName", | |
| "src": "5587:7:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "value0", | |
| "nodeType": "YulTypedName", | |
| "src": "5599:6:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "5540:329:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "5958:391:11", | |
| "statements": [ | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "6004:83:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [], | |
| "functionName": { | |
| "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", | |
| "nodeType": "YulIdentifier", | |
| "src": "6006:77:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "6006:79:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "6006:79:11" | |
| } | |
| ] | |
| }, | |
| "condition": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "dataEnd", | |
| "nodeType": "YulIdentifier", | |
| "src": "5979:7:11" | |
| }, | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "5988:9:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "sub", | |
| "nodeType": "YulIdentifier", | |
| "src": "5975:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "5975:23:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "6000:2:11", | |
| "type": "", | |
| "value": "64" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "slt", | |
| "nodeType": "YulIdentifier", | |
| "src": "5971:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "5971:32:11" | |
| }, | |
| "nodeType": "YulIf", | |
| "src": "5968:119:11" | |
| }, | |
| { | |
| "nodeType": "YulBlock", | |
| "src": "6097:117:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulVariableDeclaration", | |
| "src": "6112:15:11", | |
| "value": { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "6126:1:11", | |
| "type": "", | |
| "value": "0" | |
| }, | |
| "variables": [ | |
| { | |
| "name": "offset", | |
| "nodeType": "YulTypedName", | |
| "src": "6116:6:11", | |
| "type": "" | |
| } | |
| ] | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "6141:63:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "6176:9:11" | |
| }, | |
| { | |
| "name": "offset", | |
| "nodeType": "YulIdentifier", | |
| "src": "6187:6:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "6172:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "6172:22:11" | |
| }, | |
| { | |
| "name": "dataEnd", | |
| "nodeType": "YulIdentifier", | |
| "src": "6196:7:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "abi_decode_t_address", | |
| "nodeType": "YulIdentifier", | |
| "src": "6151:20:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "6151:53:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "value0", | |
| "nodeType": "YulIdentifier", | |
| "src": "6141:6:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| { | |
| "nodeType": "YulBlock", | |
| "src": "6224:118:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulVariableDeclaration", | |
| "src": "6239:16:11", | |
| "value": { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "6253:2:11", | |
| "type": "", | |
| "value": "32" | |
| }, | |
| "variables": [ | |
| { | |
| "name": "offset", | |
| "nodeType": "YulTypedName", | |
| "src": "6243:6:11", | |
| "type": "" | |
| } | |
| ] | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "6269:63:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "6304:9:11" | |
| }, | |
| { | |
| "name": "offset", | |
| "nodeType": "YulIdentifier", | |
| "src": "6315:6:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "6300:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "6300:22:11" | |
| }, | |
| { | |
| "name": "dataEnd", | |
| "nodeType": "YulIdentifier", | |
| "src": "6324:7:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "abi_decode_t_address", | |
| "nodeType": "YulIdentifier", | |
| "src": "6279:20:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "6279:53:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "value1", | |
| "nodeType": "YulIdentifier", | |
| "src": "6269:6:11" | |
| } | |
| ] | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "abi_decode_tuple_t_addresst_address", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulTypedName", | |
| "src": "5920:9:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "dataEnd", | |
| "nodeType": "YulTypedName", | |
| "src": "5931:7:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "value0", | |
| "nodeType": "YulTypedName", | |
| "src": "5943:6:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "value1", | |
| "nodeType": "YulTypedName", | |
| "src": "5951:6:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "5875:474:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "6383:152:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "6400:1:11", | |
| "type": "", | |
| "value": "0" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "6403:77:11", | |
| "type": "", | |
| "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "6393:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "6393:88:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "6393:88:11" | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "6497:1:11", | |
| "type": "", | |
| "value": "4" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "6500:4:11", | |
| "type": "", | |
| "value": "0x22" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "6490:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "6490:15:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "6490:15:11" | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "6521:1:11", | |
| "type": "", | |
| "value": "0" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "6524:4:11", | |
| "type": "", | |
| "value": "0x24" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "revert", | |
| "nodeType": "YulIdentifier", | |
| "src": "6514:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "6514:15:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "6514:15:11" | |
| } | |
| ] | |
| }, | |
| "name": "panic_error_0x22", | |
| "nodeType": "YulFunctionDefinition", | |
| "src": "6355:180:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "6592:269:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "6602:22:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "data", | |
| "nodeType": "YulIdentifier", | |
| "src": "6616:4:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "6622:1:11", | |
| "type": "", | |
| "value": "2" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "div", | |
| "nodeType": "YulIdentifier", | |
| "src": "6612:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "6612:12:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "length", | |
| "nodeType": "YulIdentifier", | |
| "src": "6602:6:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "nodeType": "YulVariableDeclaration", | |
| "src": "6633:38:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "data", | |
| "nodeType": "YulIdentifier", | |
| "src": "6663:4:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "6669:1:11", | |
| "type": "", | |
| "value": "1" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "and", | |
| "nodeType": "YulIdentifier", | |
| "src": "6659:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "6659:12:11" | |
| }, | |
| "variables": [ | |
| { | |
| "name": "outOfPlaceEncoding", | |
| "nodeType": "YulTypedName", | |
| "src": "6637:18:11", | |
| "type": "" | |
| } | |
| ] | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "6710:51:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "6724:27:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "length", | |
| "nodeType": "YulIdentifier", | |
| "src": "6738:6:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "6746:4:11", | |
| "type": "", | |
| "value": "0x7f" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "and", | |
| "nodeType": "YulIdentifier", | |
| "src": "6734:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "6734:17:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "length", | |
| "nodeType": "YulIdentifier", | |
| "src": "6724:6:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "condition": { | |
| "arguments": [ | |
| { | |
| "name": "outOfPlaceEncoding", | |
| "nodeType": "YulIdentifier", | |
| "src": "6690:18:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "iszero", | |
| "nodeType": "YulIdentifier", | |
| "src": "6683:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "6683:26:11" | |
| }, | |
| "nodeType": "YulIf", | |
| "src": "6680:81:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "6813:42:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [], | |
| "functionName": { | |
| "name": "panic_error_0x22", | |
| "nodeType": "YulIdentifier", | |
| "src": "6827:16:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "6827:18:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "6827:18:11" | |
| } | |
| ] | |
| }, | |
| "condition": { | |
| "arguments": [ | |
| { | |
| "name": "outOfPlaceEncoding", | |
| "nodeType": "YulIdentifier", | |
| "src": "6777:18:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "name": "length", | |
| "nodeType": "YulIdentifier", | |
| "src": "6800:6:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "6808:2:11", | |
| "type": "", | |
| "value": "32" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "lt", | |
| "nodeType": "YulIdentifier", | |
| "src": "6797:2:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "6797:14:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "eq", | |
| "nodeType": "YulIdentifier", | |
| "src": "6774:2:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "6774:38:11" | |
| }, | |
| "nodeType": "YulIf", | |
| "src": "6771:84:11" | |
| } | |
| ] | |
| }, | |
| "name": "extract_byte_array_length", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "data", | |
| "nodeType": "YulTypedName", | |
| "src": "6576:4:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "length", | |
| "nodeType": "YulTypedName", | |
| "src": "6585:6:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "6541:320:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "6895:152:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "6912:1:11", | |
| "type": "", | |
| "value": "0" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "6915:77:11", | |
| "type": "", | |
| "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "6905:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "6905:88:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "6905:88:11" | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "7009:1:11", | |
| "type": "", | |
| "value": "4" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "7012:4:11", | |
| "type": "", | |
| "value": "0x11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "7002:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "7002:15:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "7002:15:11" | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "7033:1:11", | |
| "type": "", | |
| "value": "0" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "7036:4:11", | |
| "type": "", | |
| "value": "0x24" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "revert", | |
| "nodeType": "YulIdentifier", | |
| "src": "7026:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "7026:15:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "7026:15:11" | |
| } | |
| ] | |
| }, | |
| "name": "panic_error_0x11", | |
| "nodeType": "YulFunctionDefinition", | |
| "src": "6867:180:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "7097:147:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "7107:25:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "x", | |
| "nodeType": "YulIdentifier", | |
| "src": "7130:1:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "cleanup_t_uint256", | |
| "nodeType": "YulIdentifier", | |
| "src": "7112:17:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "7112:20:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "x", | |
| "nodeType": "YulIdentifier", | |
| "src": "7107:1:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "7141:25:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "y", | |
| "nodeType": "YulIdentifier", | |
| "src": "7164:1:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "cleanup_t_uint256", | |
| "nodeType": "YulIdentifier", | |
| "src": "7146:17:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "7146:20:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "y", | |
| "nodeType": "YulIdentifier", | |
| "src": "7141:1:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "7175:16:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "x", | |
| "nodeType": "YulIdentifier", | |
| "src": "7186:1:11" | |
| }, | |
| { | |
| "name": "y", | |
| "nodeType": "YulIdentifier", | |
| "src": "7189:1:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "7182:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "7182:9:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "sum", | |
| "nodeType": "YulIdentifier", | |
| "src": "7175:3:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "7215:22:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [], | |
| "functionName": { | |
| "name": "panic_error_0x11", | |
| "nodeType": "YulIdentifier", | |
| "src": "7217:16:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "7217:18:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "7217:18:11" | |
| } | |
| ] | |
| }, | |
| "condition": { | |
| "arguments": [ | |
| { | |
| "name": "x", | |
| "nodeType": "YulIdentifier", | |
| "src": "7207:1:11" | |
| }, | |
| { | |
| "name": "sum", | |
| "nodeType": "YulIdentifier", | |
| "src": "7210:3:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "gt", | |
| "nodeType": "YulIdentifier", | |
| "src": "7204:2:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "7204:10:11" | |
| }, | |
| "nodeType": "YulIf", | |
| "src": "7201:36:11" | |
| } | |
| ] | |
| }, | |
| "name": "checked_add_t_uint256", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "x", | |
| "nodeType": "YulTypedName", | |
| "src": "7084:1:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "y", | |
| "nodeType": "YulTypedName", | |
| "src": "7087:1:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "sum", | |
| "nodeType": "YulTypedName", | |
| "src": "7093:3:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "7053:191:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "7356:118:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "memPtr", | |
| "nodeType": "YulIdentifier", | |
| "src": "7378:6:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "7386:1:11", | |
| "type": "", | |
| "value": "0" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "7374:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "7374:14:11" | |
| }, | |
| { | |
| "hexValue": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77", | |
| "kind": "string", | |
| "nodeType": "YulLiteral", | |
| "src": "7390:34:11", | |
| "type": "", | |
| "value": "ERC20: decreased allowance below" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "7367:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "7367:58:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "7367:58:11" | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "memPtr", | |
| "nodeType": "YulIdentifier", | |
| "src": "7446:6:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "7454:2:11", | |
| "type": "", | |
| "value": "32" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "7442:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "7442:15:11" | |
| }, | |
| { | |
| "hexValue": "207a65726f", | |
| "kind": "string", | |
| "nodeType": "YulLiteral", | |
| "src": "7459:7:11", | |
| "type": "", | |
| "value": " zero" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "7435:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "7435:32:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "7435:32:11" | |
| } | |
| ] | |
| }, | |
| "name": "store_literal_in_memory_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "memPtr", | |
| "nodeType": "YulTypedName", | |
| "src": "7348:6:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "7250:224:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "7626:220:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "7636:74:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "7702:3:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "7707:2:11", | |
| "type": "", | |
| "value": "37" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", | |
| "nodeType": "YulIdentifier", | |
| "src": "7643:58:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "7643:67:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "7636:3:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "7808:3:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "store_literal_in_memory_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8", | |
| "nodeType": "YulIdentifier", | |
| "src": "7719:88:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "7719:93:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "7719:93:11" | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "7821:19:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "7832:3:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "7837:2:11", | |
| "type": "", | |
| "value": "64" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "7828:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "7828:12:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "end", | |
| "nodeType": "YulIdentifier", | |
| "src": "7821:3:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "abi_encode_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8_to_t_string_memory_ptr_fromStack", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulTypedName", | |
| "src": "7614:3:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "end", | |
| "nodeType": "YulTypedName", | |
| "src": "7622:3:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "7480:366:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "8023:248:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "8033:26:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "8045:9:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "8056:2:11", | |
| "type": "", | |
| "value": "32" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "8041:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "8041:18:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "8033:4:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "8080:9:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "8091:1:11", | |
| "type": "", | |
| "value": "0" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "8076:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "8076:17:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "8099:4:11" | |
| }, | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "8105:9:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "sub", | |
| "nodeType": "YulIdentifier", | |
| "src": "8095:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "8095:20:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "8069:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "8069:47:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "8069:47:11" | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "8125:139:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "8259:4:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "abi_encode_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8_to_t_string_memory_ptr_fromStack", | |
| "nodeType": "YulIdentifier", | |
| "src": "8133:124:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "8133:131:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "8125:4:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulTypedName", | |
| "src": "8003:9:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulTypedName", | |
| "src": "8018:4:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "7852:419:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "8383:119:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "memPtr", | |
| "nodeType": "YulIdentifier", | |
| "src": "8405:6:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "8413:1:11", | |
| "type": "", | |
| "value": "0" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "8401:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "8401:14:11" | |
| }, | |
| { | |
| "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061", | |
| "kind": "string", | |
| "nodeType": "YulLiteral", | |
| "src": "8417:34:11", | |
| "type": "", | |
| "value": "Ownable: new owner is the zero a" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "8394:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "8394:58:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "8394:58:11" | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "memPtr", | |
| "nodeType": "YulIdentifier", | |
| "src": "8473:6:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "8481:2:11", | |
| "type": "", | |
| "value": "32" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "8469:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "8469:15:11" | |
| }, | |
| { | |
| "hexValue": "646472657373", | |
| "kind": "string", | |
| "nodeType": "YulLiteral", | |
| "src": "8486:8:11", | |
| "type": "", | |
| "value": "ddress" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "8462:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "8462:33:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "8462:33:11" | |
| } | |
| ] | |
| }, | |
| "name": "store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "memPtr", | |
| "nodeType": "YulTypedName", | |
| "src": "8375:6:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "8277:225:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "8654:220:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "8664:74:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "8730:3:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "8735:2:11", | |
| "type": "", | |
| "value": "38" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", | |
| "nodeType": "YulIdentifier", | |
| "src": "8671:58:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "8671:67:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "8664:3:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "8836:3:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe", | |
| "nodeType": "YulIdentifier", | |
| "src": "8747:88:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "8747:93:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "8747:93:11" | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "8849:19:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "8860:3:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "8865:2:11", | |
| "type": "", | |
| "value": "64" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "8856:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "8856:12:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "end", | |
| "nodeType": "YulIdentifier", | |
| "src": "8849:3:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulTypedName", | |
| "src": "8642:3:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "end", | |
| "nodeType": "YulTypedName", | |
| "src": "8650:3:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "8508:366:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "9051:248:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "9061:26:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "9073:9:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "9084:2:11", | |
| "type": "", | |
| "value": "32" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "9069:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "9069:18:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "9061:4:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "9108:9:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "9119:1:11", | |
| "type": "", | |
| "value": "0" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "9104:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "9104:17:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "9127:4:11" | |
| }, | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "9133:9:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "sub", | |
| "nodeType": "YulIdentifier", | |
| "src": "9123:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "9123:20:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "9097:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "9097:47:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "9097:47:11" | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "9153:139:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "9287:4:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack", | |
| "nodeType": "YulIdentifier", | |
| "src": "9161:124:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "9161:131:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "9153:4:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulTypedName", | |
| "src": "9031:9:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulTypedName", | |
| "src": "9046:4:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "8880:419:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "9411:117:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "memPtr", | |
| "nodeType": "YulIdentifier", | |
| "src": "9433:6:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "9441:1:11", | |
| "type": "", | |
| "value": "0" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "9429:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "9429:14:11" | |
| }, | |
| { | |
| "hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f20616464", | |
| "kind": "string", | |
| "nodeType": "YulLiteral", | |
| "src": "9445:34:11", | |
| "type": "", | |
| "value": "ERC20: approve from the zero add" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "9422:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "9422:58:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "9422:58:11" | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "memPtr", | |
| "nodeType": "YulIdentifier", | |
| "src": "9501:6:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "9509:2:11", | |
| "type": "", | |
| "value": "32" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "9497:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "9497:15:11" | |
| }, | |
| { | |
| "hexValue": "72657373", | |
| "kind": "string", | |
| "nodeType": "YulLiteral", | |
| "src": "9514:6:11", | |
| "type": "", | |
| "value": "ress" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "9490:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "9490:31:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "9490:31:11" | |
| } | |
| ] | |
| }, | |
| "name": "store_literal_in_memory_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "memPtr", | |
| "nodeType": "YulTypedName", | |
| "src": "9403:6:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "9305:223:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "9680:220:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "9690:74:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "9756:3:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "9761:2:11", | |
| "type": "", | |
| "value": "36" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", | |
| "nodeType": "YulIdentifier", | |
| "src": "9697:58:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "9697:67:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "9690:3:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "9862:3:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "store_literal_in_memory_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208", | |
| "nodeType": "YulIdentifier", | |
| "src": "9773:88:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "9773:93:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "9773:93:11" | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "9875:19:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "9886:3:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "9891:2:11", | |
| "type": "", | |
| "value": "64" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "9882:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "9882:12:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "end", | |
| "nodeType": "YulIdentifier", | |
| "src": "9875:3:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "abi_encode_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208_to_t_string_memory_ptr_fromStack", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulTypedName", | |
| "src": "9668:3:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "end", | |
| "nodeType": "YulTypedName", | |
| "src": "9676:3:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "9534:366:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "10077:248:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "10087:26:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "10099:9:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "10110:2:11", | |
| "type": "", | |
| "value": "32" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "10095:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "10095:18:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "10087:4:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "10134:9:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "10145:1:11", | |
| "type": "", | |
| "value": "0" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "10130:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "10130:17:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "10153:4:11" | |
| }, | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "10159:9:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "sub", | |
| "nodeType": "YulIdentifier", | |
| "src": "10149:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "10149:20:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "10123:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "10123:47:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "10123:47:11" | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "10179:139:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "10313:4:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "abi_encode_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208_to_t_string_memory_ptr_fromStack", | |
| "nodeType": "YulIdentifier", | |
| "src": "10187:124:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "10187:131:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "10179:4:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulTypedName", | |
| "src": "10057:9:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulTypedName", | |
| "src": "10072:4:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "9906:419:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "10437:115:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "memPtr", | |
| "nodeType": "YulIdentifier", | |
| "src": "10459:6:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "10467:1:11", | |
| "type": "", | |
| "value": "0" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "10455:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "10455:14:11" | |
| }, | |
| { | |
| "hexValue": "45524332303a20617070726f766520746f20746865207a65726f206164647265", | |
| "kind": "string", | |
| "nodeType": "YulLiteral", | |
| "src": "10471:34:11", | |
| "type": "", | |
| "value": "ERC20: approve to the zero addre" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "10448:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "10448:58:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "10448:58:11" | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "memPtr", | |
| "nodeType": "YulIdentifier", | |
| "src": "10527:6:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "10535:2:11", | |
| "type": "", | |
| "value": "32" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "10523:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "10523:15:11" | |
| }, | |
| { | |
| "hexValue": "7373", | |
| "kind": "string", | |
| "nodeType": "YulLiteral", | |
| "src": "10540:4:11", | |
| "type": "", | |
| "value": "ss" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "10516:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "10516:29:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "10516:29:11" | |
| } | |
| ] | |
| }, | |
| "name": "store_literal_in_memory_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "memPtr", | |
| "nodeType": "YulTypedName", | |
| "src": "10429:6:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "10331:221:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "10704:220:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "10714:74:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "10780:3:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "10785:2:11", | |
| "type": "", | |
| "value": "34" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", | |
| "nodeType": "YulIdentifier", | |
| "src": "10721:58:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "10721:67:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "10714:3:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "10886:3:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "store_literal_in_memory_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029", | |
| "nodeType": "YulIdentifier", | |
| "src": "10797:88:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "10797:93:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "10797:93:11" | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "10899:19:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "10910:3:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "10915:2:11", | |
| "type": "", | |
| "value": "64" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "10906:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "10906:12:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "end", | |
| "nodeType": "YulIdentifier", | |
| "src": "10899:3:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "abi_encode_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029_to_t_string_memory_ptr_fromStack", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulTypedName", | |
| "src": "10692:3:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "end", | |
| "nodeType": "YulTypedName", | |
| "src": "10700:3:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "10558:366:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "11101:248:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "11111:26:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "11123:9:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "11134:2:11", | |
| "type": "", | |
| "value": "32" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "11119:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "11119:18:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "11111:4:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "11158:9:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "11169:1:11", | |
| "type": "", | |
| "value": "0" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "11154:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "11154:17:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "11177:4:11" | |
| }, | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "11183:9:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "sub", | |
| "nodeType": "YulIdentifier", | |
| "src": "11173:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "11173:20:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "11147:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "11147:47:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "11147:47:11" | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "11203:139:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "11337:4:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "abi_encode_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029_to_t_string_memory_ptr_fromStack", | |
| "nodeType": "YulIdentifier", | |
| "src": "11211:124:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "11211:131:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "11203:4:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulTypedName", | |
| "src": "11081:9:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulTypedName", | |
| "src": "11096:4:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "10930:419:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "11461:73:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "memPtr", | |
| "nodeType": "YulIdentifier", | |
| "src": "11483:6:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "11491:1:11", | |
| "type": "", | |
| "value": "0" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "11479:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "11479:14:11" | |
| }, | |
| { | |
| "hexValue": "45524332303a20696e73756666696369656e7420616c6c6f77616e6365", | |
| "kind": "string", | |
| "nodeType": "YulLiteral", | |
| "src": "11495:31:11", | |
| "type": "", | |
| "value": "ERC20: insufficient allowance" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "11472:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "11472:55:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "11472:55:11" | |
| } | |
| ] | |
| }, | |
| "name": "store_literal_in_memory_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "memPtr", | |
| "nodeType": "YulTypedName", | |
| "src": "11453:6:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "11355:179:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "11686:220:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "11696:74:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "11762:3:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "11767:2:11", | |
| "type": "", | |
| "value": "29" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", | |
| "nodeType": "YulIdentifier", | |
| "src": "11703:58:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "11703:67:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "11696:3:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "11868:3:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "store_literal_in_memory_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe", | |
| "nodeType": "YulIdentifier", | |
| "src": "11779:88:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "11779:93:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "11779:93:11" | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "11881:19:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "11892:3:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "11897:2:11", | |
| "type": "", | |
| "value": "32" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "11888:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "11888:12:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "end", | |
| "nodeType": "YulIdentifier", | |
| "src": "11881:3:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "abi_encode_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe_to_t_string_memory_ptr_fromStack", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulTypedName", | |
| "src": "11674:3:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "end", | |
| "nodeType": "YulTypedName", | |
| "src": "11682:3:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "11540:366:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "12083:248:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "12093:26:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "12105:9:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "12116:2:11", | |
| "type": "", | |
| "value": "32" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "12101:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "12101:18:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "12093:4:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "12140:9:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "12151:1:11", | |
| "type": "", | |
| "value": "0" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "12136:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "12136:17:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "12159:4:11" | |
| }, | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "12165:9:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "sub", | |
| "nodeType": "YulIdentifier", | |
| "src": "12155:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "12155:20:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "12129:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "12129:47:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "12129:47:11" | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "12185:139:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "12319:4:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "abi_encode_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe_to_t_string_memory_ptr_fromStack", | |
| "nodeType": "YulIdentifier", | |
| "src": "12193:124:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "12193:131:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "12185:4:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "abi_encode_tuple_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe__to_t_string_memory_ptr__fromStack_reversed", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulTypedName", | |
| "src": "12063:9:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulTypedName", | |
| "src": "12078:4:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "11912:419:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "12443:118:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "memPtr", | |
| "nodeType": "YulIdentifier", | |
| "src": "12465:6:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "12473:1:11", | |
| "type": "", | |
| "value": "0" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "12461:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "12461:14:11" | |
| }, | |
| { | |
| "hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f206164", | |
| "kind": "string", | |
| "nodeType": "YulLiteral", | |
| "src": "12477:34:11", | |
| "type": "", | |
| "value": "ERC20: transfer from the zero ad" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "12454:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "12454:58:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "12454:58:11" | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "memPtr", | |
| "nodeType": "YulIdentifier", | |
| "src": "12533:6:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "12541:2:11", | |
| "type": "", | |
| "value": "32" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "12529:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "12529:15:11" | |
| }, | |
| { | |
| "hexValue": "6472657373", | |
| "kind": "string", | |
| "nodeType": "YulLiteral", | |
| "src": "12546:7:11", | |
| "type": "", | |
| "value": "dress" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "12522:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "12522:32:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "12522:32:11" | |
| } | |
| ] | |
| }, | |
| "name": "store_literal_in_memory_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "memPtr", | |
| "nodeType": "YulTypedName", | |
| "src": "12435:6:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "12337:224:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "12713:220:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "12723:74:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "12789:3:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "12794:2:11", | |
| "type": "", | |
| "value": "37" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", | |
| "nodeType": "YulIdentifier", | |
| "src": "12730:58:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "12730:67:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "12723:3:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "12895:3:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "store_literal_in_memory_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea", | |
| "nodeType": "YulIdentifier", | |
| "src": "12806:88:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "12806:93:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "12806:93:11" | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "12908:19:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "12919:3:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "12924:2:11", | |
| "type": "", | |
| "value": "64" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "12915:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "12915:12:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "end", | |
| "nodeType": "YulIdentifier", | |
| "src": "12908:3:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "abi_encode_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea_to_t_string_memory_ptr_fromStack", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulTypedName", | |
| "src": "12701:3:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "end", | |
| "nodeType": "YulTypedName", | |
| "src": "12709:3:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "12567:366:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "13110:248:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "13120:26:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "13132:9:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "13143:2:11", | |
| "type": "", | |
| "value": "32" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "13128:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "13128:18:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "13120:4:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "13167:9:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "13178:1:11", | |
| "type": "", | |
| "value": "0" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "13163:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "13163:17:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "13186:4:11" | |
| }, | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "13192:9:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "sub", | |
| "nodeType": "YulIdentifier", | |
| "src": "13182:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "13182:20:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "13156:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "13156:47:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "13156:47:11" | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "13212:139:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "13346:4:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "abi_encode_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea_to_t_string_memory_ptr_fromStack", | |
| "nodeType": "YulIdentifier", | |
| "src": "13220:124:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "13220:131:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "13212:4:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulTypedName", | |
| "src": "13090:9:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulTypedName", | |
| "src": "13105:4:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "12939:419:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "13470:116:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "memPtr", | |
| "nodeType": "YulIdentifier", | |
| "src": "13492:6:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "13500:1:11", | |
| "type": "", | |
| "value": "0" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "13488:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "13488:14:11" | |
| }, | |
| { | |
| "hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472", | |
| "kind": "string", | |
| "nodeType": "YulLiteral", | |
| "src": "13504:34:11", | |
| "type": "", | |
| "value": "ERC20: transfer to the zero addr" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "13481:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "13481:58:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "13481:58:11" | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "memPtr", | |
| "nodeType": "YulIdentifier", | |
| "src": "13560:6:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "13568:2:11", | |
| "type": "", | |
| "value": "32" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "13556:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "13556:15:11" | |
| }, | |
| { | |
| "hexValue": "657373", | |
| "kind": "string", | |
| "nodeType": "YulLiteral", | |
| "src": "13573:5:11", | |
| "type": "", | |
| "value": "ess" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "13549:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "13549:30:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "13549:30:11" | |
| } | |
| ] | |
| }, | |
| "name": "store_literal_in_memory_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "memPtr", | |
| "nodeType": "YulTypedName", | |
| "src": "13462:6:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "13364:222:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "13738:220:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "13748:74:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "13814:3:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "13819:2:11", | |
| "type": "", | |
| "value": "35" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", | |
| "nodeType": "YulIdentifier", | |
| "src": "13755:58:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "13755:67:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "13748:3:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "13920:3:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "store_literal_in_memory_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f", | |
| "nodeType": "YulIdentifier", | |
| "src": "13831:88:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "13831:93:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "13831:93:11" | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "13933:19:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "13944:3:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "13949:2:11", | |
| "type": "", | |
| "value": "64" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "13940:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "13940:12:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "end", | |
| "nodeType": "YulIdentifier", | |
| "src": "13933:3:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "abi_encode_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f_to_t_string_memory_ptr_fromStack", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulTypedName", | |
| "src": "13726:3:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "end", | |
| "nodeType": "YulTypedName", | |
| "src": "13734:3:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "13592:366:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "14135:248:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "14145:26:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "14157:9:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "14168:2:11", | |
| "type": "", | |
| "value": "32" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "14153:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "14153:18:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "14145:4:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "14192:9:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "14203:1:11", | |
| "type": "", | |
| "value": "0" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "14188:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "14188:17:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "14211:4:11" | |
| }, | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "14217:9:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "sub", | |
| "nodeType": "YulIdentifier", | |
| "src": "14207:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "14207:20:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "14181:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "14181:47:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "14181:47:11" | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "14237:139:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "14371:4:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "abi_encode_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f_to_t_string_memory_ptr_fromStack", | |
| "nodeType": "YulIdentifier", | |
| "src": "14245:124:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "14245:131:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "14237:4:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulTypedName", | |
| "src": "14115:9:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulTypedName", | |
| "src": "14130:4:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "13964:419:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "14495:119:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "memPtr", | |
| "nodeType": "YulIdentifier", | |
| "src": "14517:6:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "14525:1:11", | |
| "type": "", | |
| "value": "0" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "14513:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "14513:14:11" | |
| }, | |
| { | |
| "hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732062", | |
| "kind": "string", | |
| "nodeType": "YulLiteral", | |
| "src": "14529:34:11", | |
| "type": "", | |
| "value": "ERC20: transfer amount exceeds b" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "14506:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "14506:58:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "14506:58:11" | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "memPtr", | |
| "nodeType": "YulIdentifier", | |
| "src": "14585:6:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "14593:2:11", | |
| "type": "", | |
| "value": "32" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "14581:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "14581:15:11" | |
| }, | |
| { | |
| "hexValue": "616c616e6365", | |
| "kind": "string", | |
| "nodeType": "YulLiteral", | |
| "src": "14598:8:11", | |
| "type": "", | |
| "value": "alance" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "14574:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "14574:33:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "14574:33:11" | |
| } | |
| ] | |
| }, | |
| "name": "store_literal_in_memory_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "memPtr", | |
| "nodeType": "YulTypedName", | |
| "src": "14487:6:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "14389:225:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "14766:220:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "14776:74:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "14842:3:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "14847:2:11", | |
| "type": "", | |
| "value": "38" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", | |
| "nodeType": "YulIdentifier", | |
| "src": "14783:58:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "14783:67:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "14776:3:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "14948:3:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "store_literal_in_memory_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6", | |
| "nodeType": "YulIdentifier", | |
| "src": "14859:88:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "14859:93:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "14859:93:11" | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "14961:19:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "14972:3:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "14977:2:11", | |
| "type": "", | |
| "value": "64" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "14968:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "14968:12:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "end", | |
| "nodeType": "YulIdentifier", | |
| "src": "14961:3:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "abi_encode_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6_to_t_string_memory_ptr_fromStack", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulTypedName", | |
| "src": "14754:3:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "end", | |
| "nodeType": "YulTypedName", | |
| "src": "14762:3:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "14620:366:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "15163:248:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "15173:26:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "15185:9:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "15196:2:11", | |
| "type": "", | |
| "value": "32" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "15181:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "15181:18:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "15173:4:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "15220:9:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "15231:1:11", | |
| "type": "", | |
| "value": "0" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "15216:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "15216:17:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "15239:4:11" | |
| }, | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "15245:9:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "sub", | |
| "nodeType": "YulIdentifier", | |
| "src": "15235:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "15235:20:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "15209:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "15209:47:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "15209:47:11" | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "15265:139:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "15399:4:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "abi_encode_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6_to_t_string_memory_ptr_fromStack", | |
| "nodeType": "YulIdentifier", | |
| "src": "15273:124:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "15273:131:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "15265:4:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulTypedName", | |
| "src": "15143:9:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulTypedName", | |
| "src": "15158:4:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "14992:419:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "15523:76:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "memPtr", | |
| "nodeType": "YulIdentifier", | |
| "src": "15545:6:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "15553:1:11", | |
| "type": "", | |
| "value": "0" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "15541:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "15541:14:11" | |
| }, | |
| { | |
| "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572", | |
| "kind": "string", | |
| "nodeType": "YulLiteral", | |
| "src": "15557:34:11", | |
| "type": "", | |
| "value": "Ownable: caller is not the owner" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "15534:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "15534:58:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "15534:58:11" | |
| } | |
| ] | |
| }, | |
| "name": "store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "memPtr", | |
| "nodeType": "YulTypedName", | |
| "src": "15515:6:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "15417:182:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "15751:220:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "15761:74:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "15827:3:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "15832:2:11", | |
| "type": "", | |
| "value": "32" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", | |
| "nodeType": "YulIdentifier", | |
| "src": "15768:58:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "15768:67:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "15761:3:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "15933:3:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe", | |
| "nodeType": "YulIdentifier", | |
| "src": "15844:88:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "15844:93:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "15844:93:11" | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "15946:19:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "15957:3:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "15962:2:11", | |
| "type": "", | |
| "value": "32" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "15953:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "15953:12:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "end", | |
| "nodeType": "YulIdentifier", | |
| "src": "15946:3:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulTypedName", | |
| "src": "15739:3:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "end", | |
| "nodeType": "YulTypedName", | |
| "src": "15747:3:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "15605:366:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "16148:248:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "16158:26:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "16170:9:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "16181:2:11", | |
| "type": "", | |
| "value": "32" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "16166:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "16166:18:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "16158:4:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "16205:9:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "16216:1:11", | |
| "type": "", | |
| "value": "0" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "16201:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "16201:17:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "16224:4:11" | |
| }, | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "16230:9:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "sub", | |
| "nodeType": "YulIdentifier", | |
| "src": "16220:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "16220:20:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "16194:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "16194:47:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "16194:47:11" | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "16250:139:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "16384:4:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack", | |
| "nodeType": "YulIdentifier", | |
| "src": "16258:124:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "16258:131:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "16250:4:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulTypedName", | |
| "src": "16128:9:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulTypedName", | |
| "src": "16143:4:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "15977:419:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "16508:75:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "memPtr", | |
| "nodeType": "YulIdentifier", | |
| "src": "16530:6:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "16538:1:11", | |
| "type": "", | |
| "value": "0" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "16526:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "16526:14:11" | |
| }, | |
| { | |
| "hexValue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373", | |
| "kind": "string", | |
| "nodeType": "YulLiteral", | |
| "src": "16542:33:11", | |
| "type": "", | |
| "value": "ERC20: mint to the zero address" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "16519:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "16519:57:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "16519:57:11" | |
| } | |
| ] | |
| }, | |
| "name": "store_literal_in_memory_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "memPtr", | |
| "nodeType": "YulTypedName", | |
| "src": "16500:6:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "16402:181:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "16735:220:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "16745:74:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "16811:3:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "16816:2:11", | |
| "type": "", | |
| "value": "31" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", | |
| "nodeType": "YulIdentifier", | |
| "src": "16752:58:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "16752:67:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "16745:3:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "16917:3:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "store_literal_in_memory_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e", | |
| "nodeType": "YulIdentifier", | |
| "src": "16828:88:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "16828:93:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "16828:93:11" | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "16930:19:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "16941:3:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "16946:2:11", | |
| "type": "", | |
| "value": "32" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "16937:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "16937:12:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "end", | |
| "nodeType": "YulIdentifier", | |
| "src": "16930:3:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "abi_encode_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e_to_t_string_memory_ptr_fromStack", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulTypedName", | |
| "src": "16723:3:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "end", | |
| "nodeType": "YulTypedName", | |
| "src": "16731:3:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "16589:366:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "17132:248:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "17142:26:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "17154:9:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "17165:2:11", | |
| "type": "", | |
| "value": "32" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "17150:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "17150:18:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "17142:4:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "17189:9:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "17200:1:11", | |
| "type": "", | |
| "value": "0" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "17185:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "17185:17:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "17208:4:11" | |
| }, | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "17214:9:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "sub", | |
| "nodeType": "YulIdentifier", | |
| "src": "17204:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "17204:20:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "17178:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "17178:47:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "17178:47:11" | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "17234:139:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "17368:4:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "abi_encode_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e_to_t_string_memory_ptr_fromStack", | |
| "nodeType": "YulIdentifier", | |
| "src": "17242:124:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "17242:131:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "17234:4:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulTypedName", | |
| "src": "17112:9:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulTypedName", | |
| "src": "17127:4:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "16961:419:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "17492:66:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "memPtr", | |
| "nodeType": "YulIdentifier", | |
| "src": "17514:6:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "17522:1:11", | |
| "type": "", | |
| "value": "0" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "17510:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "17510:14:11" | |
| }, | |
| { | |
| "hexValue": "4552433230536e617073686f743a2069642069732030", | |
| "kind": "string", | |
| "nodeType": "YulLiteral", | |
| "src": "17526:24:11", | |
| "type": "", | |
| "value": "ERC20Snapshot: id is 0" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "17503:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "17503:48:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "17503:48:11" | |
| } | |
| ] | |
| }, | |
| "name": "store_literal_in_memory_d85a3cdc203c5cdc6dda93c12cd017145671a0ed9058a16c7aa00b8398a4a8e6", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "memPtr", | |
| "nodeType": "YulTypedName", | |
| "src": "17484:6:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "17386:172:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "17710:220:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "17720:74:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "17786:3:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "17791:2:11", | |
| "type": "", | |
| "value": "22" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", | |
| "nodeType": "YulIdentifier", | |
| "src": "17727:58:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "17727:67:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "17720:3:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "17892:3:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "store_literal_in_memory_d85a3cdc203c5cdc6dda93c12cd017145671a0ed9058a16c7aa00b8398a4a8e6", | |
| "nodeType": "YulIdentifier", | |
| "src": "17803:88:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "17803:93:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "17803:93:11" | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "17905:19:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "17916:3:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "17921:2:11", | |
| "type": "", | |
| "value": "32" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "17912:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "17912:12:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "end", | |
| "nodeType": "YulIdentifier", | |
| "src": "17905:3:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "abi_encode_t_stringliteral_d85a3cdc203c5cdc6dda93c12cd017145671a0ed9058a16c7aa00b8398a4a8e6_to_t_string_memory_ptr_fromStack", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulTypedName", | |
| "src": "17698:3:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "end", | |
| "nodeType": "YulTypedName", | |
| "src": "17706:3:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "17564:366:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "18107:248:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "18117:26:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "18129:9:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "18140:2:11", | |
| "type": "", | |
| "value": "32" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "18125:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "18125:18:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "18117:4:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "18164:9:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "18175:1:11", | |
| "type": "", | |
| "value": "0" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "18160:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "18160:17:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "18183:4:11" | |
| }, | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "18189:9:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "sub", | |
| "nodeType": "YulIdentifier", | |
| "src": "18179:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "18179:20:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "18153:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "18153:47:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "18153:47:11" | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "18209:139:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "18343:4:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "abi_encode_t_stringliteral_d85a3cdc203c5cdc6dda93c12cd017145671a0ed9058a16c7aa00b8398a4a8e6_to_t_string_memory_ptr_fromStack", | |
| "nodeType": "YulIdentifier", | |
| "src": "18217:124:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "18217:131:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "18209:4:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "abi_encode_tuple_t_stringliteral_d85a3cdc203c5cdc6dda93c12cd017145671a0ed9058a16c7aa00b8398a4a8e6__to_t_string_memory_ptr__fromStack_reversed", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulTypedName", | |
| "src": "18087:9:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulTypedName", | |
| "src": "18102:4:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "17936:419:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "18467:73:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "memPtr", | |
| "nodeType": "YulIdentifier", | |
| "src": "18489:6:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "18497:1:11", | |
| "type": "", | |
| "value": "0" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "18485:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "18485:14:11" | |
| }, | |
| { | |
| "hexValue": "4552433230536e617073686f743a206e6f6e6578697374656e74206964", | |
| "kind": "string", | |
| "nodeType": "YulLiteral", | |
| "src": "18501:31:11", | |
| "type": "", | |
| "value": "ERC20Snapshot: nonexistent id" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "18478:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "18478:55:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "18478:55:11" | |
| } | |
| ] | |
| }, | |
| "name": "store_literal_in_memory_031e0835d070e7bbd2c8dcce466eadb8c6b9fd22432b0357ab8c37bd9a385940", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "memPtr", | |
| "nodeType": "YulTypedName", | |
| "src": "18459:6:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "18361:179:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "18692:220:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "18702:74:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "18768:3:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "18773:2:11", | |
| "type": "", | |
| "value": "29" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", | |
| "nodeType": "YulIdentifier", | |
| "src": "18709:58:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "18709:67:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "18702:3:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "18874:3:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "store_literal_in_memory_031e0835d070e7bbd2c8dcce466eadb8c6b9fd22432b0357ab8c37bd9a385940", | |
| "nodeType": "YulIdentifier", | |
| "src": "18785:88:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "18785:93:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "18785:93:11" | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "18887:19:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulIdentifier", | |
| "src": "18898:3:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "18903:2:11", | |
| "type": "", | |
| "value": "32" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "18894:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "18894:12:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "end", | |
| "nodeType": "YulIdentifier", | |
| "src": "18887:3:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "abi_encode_t_stringliteral_031e0835d070e7bbd2c8dcce466eadb8c6b9fd22432b0357ab8c37bd9a385940_to_t_string_memory_ptr_fromStack", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "pos", | |
| "nodeType": "YulTypedName", | |
| "src": "18680:3:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "end", | |
| "nodeType": "YulTypedName", | |
| "src": "18688:3:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "18546:366:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "19089:248:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "19099:26:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "19111:9:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "19122:2:11", | |
| "type": "", | |
| "value": "32" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "19107:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "19107:18:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "19099:4:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "19146:9:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "19157:1:11", | |
| "type": "", | |
| "value": "0" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "19142:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "19142:17:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "19165:4:11" | |
| }, | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "19171:9:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "sub", | |
| "nodeType": "YulIdentifier", | |
| "src": "19161:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "19161:20:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "19135:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "19135:47:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "19135:47:11" | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "19191:139:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "19325:4:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "abi_encode_t_stringliteral_031e0835d070e7bbd2c8dcce466eadb8c6b9fd22432b0357ab8c37bd9a385940_to_t_string_memory_ptr_fromStack", | |
| "nodeType": "YulIdentifier", | |
| "src": "19199:124:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "19199:131:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulIdentifier", | |
| "src": "19191:4:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "abi_encode_tuple_t_stringliteral_031e0835d070e7bbd2c8dcce466eadb8c6b9fd22432b0357ab8c37bd9a385940__to_t_string_memory_ptr__fromStack_reversed", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulTypedName", | |
| "src": "19069:9:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "tail", | |
| "nodeType": "YulTypedName", | |
| "src": "19084:4:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "18918:419:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "19371:152:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "19388:1:11", | |
| "type": "", | |
| "value": "0" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "19391:77:11", | |
| "type": "", | |
| "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "19381:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "19381:88:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "19381:88:11" | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "19485:1:11", | |
| "type": "", | |
| "value": "4" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "19488:4:11", | |
| "type": "", | |
| "value": "0x32" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "19478:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "19478:15:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "19478:15:11" | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "19509:1:11", | |
| "type": "", | |
| "value": "0" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "19512:4:11", | |
| "type": "", | |
| "value": "0x24" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "revert", | |
| "nodeType": "YulIdentifier", | |
| "src": "19502:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "19502:15:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "19502:15:11" | |
| } | |
| ] | |
| }, | |
| "name": "panic_error_0x32", | |
| "nodeType": "YulFunctionDefinition", | |
| "src": "19343:180:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "19574:149:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "19584:25:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "x", | |
| "nodeType": "YulIdentifier", | |
| "src": "19607:1:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "cleanup_t_uint256", | |
| "nodeType": "YulIdentifier", | |
| "src": "19589:17:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "19589:20:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "x", | |
| "nodeType": "YulIdentifier", | |
| "src": "19584:1:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "19618:25:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "y", | |
| "nodeType": "YulIdentifier", | |
| "src": "19641:1:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "cleanup_t_uint256", | |
| "nodeType": "YulIdentifier", | |
| "src": "19623:17:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "19623:20:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "y", | |
| "nodeType": "YulIdentifier", | |
| "src": "19618:1:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "19652:17:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "x", | |
| "nodeType": "YulIdentifier", | |
| "src": "19664:1:11" | |
| }, | |
| { | |
| "name": "y", | |
| "nodeType": "YulIdentifier", | |
| "src": "19667:1:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "sub", | |
| "nodeType": "YulIdentifier", | |
| "src": "19660:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "19660:9:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "diff", | |
| "nodeType": "YulIdentifier", | |
| "src": "19652:4:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "19694:22:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [], | |
| "functionName": { | |
| "name": "panic_error_0x11", | |
| "nodeType": "YulIdentifier", | |
| "src": "19696:16:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "19696:18:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "19696:18:11" | |
| } | |
| ] | |
| }, | |
| "condition": { | |
| "arguments": [ | |
| { | |
| "name": "diff", | |
| "nodeType": "YulIdentifier", | |
| "src": "19685:4:11" | |
| }, | |
| { | |
| "name": "x", | |
| "nodeType": "YulIdentifier", | |
| "src": "19691:1:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "gt", | |
| "nodeType": "YulIdentifier", | |
| "src": "19682:2:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "19682:11:11" | |
| }, | |
| "nodeType": "YulIf", | |
| "src": "19679:37:11" | |
| } | |
| ] | |
| }, | |
| "name": "checked_sub_t_uint256", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "x", | |
| "nodeType": "YulTypedName", | |
| "src": "19560:1:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "y", | |
| "nodeType": "YulTypedName", | |
| "src": "19563:1:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "diff", | |
| "nodeType": "YulTypedName", | |
| "src": "19569:4:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "19529:194:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "19757:152:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "19774:1:11", | |
| "type": "", | |
| "value": "0" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "19777:77:11", | |
| "type": "", | |
| "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "19767:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "19767:88:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "19767:88:11" | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "19871:1:11", | |
| "type": "", | |
| "value": "4" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "19874:4:11", | |
| "type": "", | |
| "value": "0x12" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "19864:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "19864:15:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "19864:15:11" | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "19895:1:11", | |
| "type": "", | |
| "value": "0" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "19898:4:11", | |
| "type": "", | |
| "value": "0x24" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "revert", | |
| "nodeType": "YulIdentifier", | |
| "src": "19888:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "19888:15:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "19888:15:11" | |
| } | |
| ] | |
| }, | |
| "name": "panic_error_0x12", | |
| "nodeType": "YulFunctionDefinition", | |
| "src": "19729:180:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "19957:143:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "19967:25:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "x", | |
| "nodeType": "YulIdentifier", | |
| "src": "19990:1:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "cleanup_t_uint256", | |
| "nodeType": "YulIdentifier", | |
| "src": "19972:17:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "19972:20:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "x", | |
| "nodeType": "YulIdentifier", | |
| "src": "19967:1:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "20001:25:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "y", | |
| "nodeType": "YulIdentifier", | |
| "src": "20024:1:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "cleanup_t_uint256", | |
| "nodeType": "YulIdentifier", | |
| "src": "20006:17:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "20006:20:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "y", | |
| "nodeType": "YulIdentifier", | |
| "src": "20001:1:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "20048:22:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [], | |
| "functionName": { | |
| "name": "panic_error_0x12", | |
| "nodeType": "YulIdentifier", | |
| "src": "20050:16:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "20050:18:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "20050:18:11" | |
| } | |
| ] | |
| }, | |
| "condition": { | |
| "arguments": [ | |
| { | |
| "name": "y", | |
| "nodeType": "YulIdentifier", | |
| "src": "20045:1:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "iszero", | |
| "nodeType": "YulIdentifier", | |
| "src": "20038:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "20038:9:11" | |
| }, | |
| "nodeType": "YulIf", | |
| "src": "20035:35:11" | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "20080:14:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "x", | |
| "nodeType": "YulIdentifier", | |
| "src": "20089:1:11" | |
| }, | |
| { | |
| "name": "y", | |
| "nodeType": "YulIdentifier", | |
| "src": "20092:1:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "div", | |
| "nodeType": "YulIdentifier", | |
| "src": "20085:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "20085:9:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "r", | |
| "nodeType": "YulIdentifier", | |
| "src": "20080:1:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "checked_div_t_uint256", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "x", | |
| "nodeType": "YulTypedName", | |
| "src": "19946:1:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "y", | |
| "nodeType": "YulTypedName", | |
| "src": "19949:1:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "r", | |
| "nodeType": "YulTypedName", | |
| "src": "19955:1:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "19915:185:11" | |
| } | |
| ] | |
| }, | |
| "contents": "{\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function copy_memory_to_memory_with_cleanup(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0, tail)\n\n }\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint8(value) -> cleaned {\n cleaned := and(value, 0xff)\n }\n\n function abi_encode_t_uint8_to_t_uint8_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint8(value))\n }\n\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint8_to_t_uint8_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n sum := add(x, y)\n\n if gt(x, sum) { panic_error_0x11() }\n\n }\n\n function store_literal_in_memory_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC20: decreased allowance below\")\n\n mstore(add(memPtr, 32), \" zero\")\n\n }\n\n function abi_encode_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 37)\n store_literal_in_memory_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe(memPtr) {\n\n mstore(add(memPtr, 0), \"Ownable: new owner is the zero a\")\n\n mstore(add(memPtr, 32), \"ddress\")\n\n }\n\n function abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 38)\n store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC20: approve from the zero add\")\n\n mstore(add(memPtr, 32), \"ress\")\n\n }\n\n function abi_encode_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 36)\n store_literal_in_memory_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC20: approve to the zero addre\")\n\n mstore(add(memPtr, 32), \"ss\")\n\n }\n\n function abi_encode_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 34)\n store_literal_in_memory_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC20: insufficient allowance\")\n\n }\n\n function abi_encode_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 29)\n store_literal_in_memory_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC20: transfer from the zero ad\")\n\n mstore(add(memPtr, 32), \"dress\")\n\n }\n\n function abi_encode_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 37)\n store_literal_in_memory_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC20: transfer to the zero addr\")\n\n mstore(add(memPtr, 32), \"ess\")\n\n }\n\n function abi_encode_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 35)\n store_literal_in_memory_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC20: transfer amount exceeds b\")\n\n mstore(add(memPtr, 32), \"alance\")\n\n }\n\n function abi_encode_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 38)\n store_literal_in_memory_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe(memPtr) {\n\n mstore(add(memPtr, 0), \"Ownable: caller is not the owner\")\n\n }\n\n function abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 32)\n store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC20: mint to the zero address\")\n\n }\n\n function abi_encode_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 31)\n store_literal_in_memory_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_d85a3cdc203c5cdc6dda93c12cd017145671a0ed9058a16c7aa00b8398a4a8e6(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC20Snapshot: id is 0\")\n\n }\n\n function abi_encode_t_stringliteral_d85a3cdc203c5cdc6dda93c12cd017145671a0ed9058a16c7aa00b8398a4a8e6_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 22)\n store_literal_in_memory_d85a3cdc203c5cdc6dda93c12cd017145671a0ed9058a16c7aa00b8398a4a8e6(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_d85a3cdc203c5cdc6dda93c12cd017145671a0ed9058a16c7aa00b8398a4a8e6__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_d85a3cdc203c5cdc6dda93c12cd017145671a0ed9058a16c7aa00b8398a4a8e6_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_031e0835d070e7bbd2c8dcce466eadb8c6b9fd22432b0357ab8c37bd9a385940(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC20Snapshot: nonexistent id\")\n\n }\n\n function abi_encode_t_stringliteral_031e0835d070e7bbd2c8dcce466eadb8c6b9fd22432b0357ab8c37bd9a385940_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 29)\n store_literal_in_memory_031e0835d070e7bbd2c8dcce466eadb8c6b9fd22432b0357ab8c37bd9a385940(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_031e0835d070e7bbd2c8dcce466eadb8c6b9fd22432b0357ab8c37bd9a385940__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_031e0835d070e7bbd2c8dcce466eadb8c6b9fd22432b0357ab8c37bd9a385940_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n function checked_sub_t_uint256(x, y) -> diff {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n diff := sub(x, y)\n\n if gt(diff, x) { panic_error_0x11() }\n\n }\n\n function panic_error_0x12() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n\n function checked_div_t_uint256(x, y) -> r {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n if iszero(y) { panic_error_0x12() }\n\n r := div(x, y)\n }\n\n}\n", | |
| "id": 11, | |
| "language": "Yul", | |
| "name": "#utility.yul" | |
| } | |
| ], | |
| "immutableReferences": {}, | |
| "linkReferences": {}, | |
| "object": "608060405234801561001057600080fd5b50600436106101165760003560e01c8063715018a6116100a2578063981b24d011610071578063981b24d0146102d1578063a457c2d714610301578063a9059cbb14610331578063dd62ed3e14610361578063f2fde38b1461039157610116565b8063715018a6146102815780638da5cb5b1461028b57806395d89b41146102a95780639711715a146102c757610116565b8063313ce567116100e9578063313ce567146101b757806339509351146101d557806340c10f19146102055780634ee2cd7e1461022157806370a082311461025157610116565b806306fdde031461011b578063095ea7b31461013957806318160ddd1461016957806323b872dd14610187575b600080fd5b6101236103ad565b60405161013091906114e9565b60405180910390f35b610153600480360381019061014e91906115a4565b61043f565b60405161016091906115ff565b60405180910390f35b610171610462565b60405161017e9190611629565b60405180910390f35b6101a1600480360381019061019c9190611644565b61046c565b6040516101ae91906115ff565b60405180910390f35b6101bf61049b565b6040516101cc91906116b3565b60405180910390f35b6101ef60048036038101906101ea91906115a4565b6104a4565b6040516101fc91906115ff565b60405180910390f35b61021f600480360381019061021a91906115a4565b6104db565b005b61023b600480360381019061023691906115a4565b6104f1565b6040516102489190611629565b60405180910390f35b61026b600480360381019061026691906116ce565b610561565b6040516102789190611629565b60405180910390f35b6102896105a9565b005b6102936105bd565b6040516102a0919061170a565b60405180910390f35b6102b16105e7565b6040516102be91906114e9565b60405180910390f35b6102cf610679565b005b6102eb60048036038101906102e69190611725565b61068c565b6040516102f89190611629565b60405180910390f35b61031b600480360381019061031691906115a4565b6106bd565b60405161032891906115ff565b60405180910390f35b61034b600480360381019061034691906115a4565b610734565b60405161035891906115ff565b60405180910390f35b61037b60048036038101906103769190611752565b610757565b6040516103889190611629565b60405180910390f35b6103ab60048036038101906103a691906116ce565b6107de565b005b6060600380546103bc906117c1565b80601f01602080910402602001604051908101604052809291908181526020018280546103e8906117c1565b80156104355780601f1061040a57610100808354040283529160200191610435565b820191906000526020600020905b81548152906001019060200180831161041857829003601f168201915b5050505050905090565b60008061044a610861565b9050610457818585610869565b600191505092915050565b6000600254905090565b600080610477610861565b9050610484858285610a32565b61048f858585610abe565b60019150509392505050565b60006012905090565b6000806104af610861565b90506104d08185856104c18589610757565b6104cb9190611821565b610869565b600191505092915050565b6104e3610d34565b6104ed8282610db2565b5050565b600080600061053e84600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020610f08565b91509150816105555761055085610561565b610557565b805b9250505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6105b1610d34565b6105bb6000610ffd565b565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546105f6906117c1565b80601f0160208091040260200160405190810160405280929190818152602001828054610622906117c1565b801561066f5780601f106106445761010080835404028352916020019161066f565b820191906000526020600020905b81548152906001019060200180831161065257829003601f168201915b5050505050905090565b610681610d34565b6106896110c3565b50565b600080600061069c846006610f08565b91509150816106b2576106ad610462565b6106b4565b805b92505050919050565b6000806106c8610861565b905060006106d68286610757565b90508381101561071b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610712906118c7565b60405180910390fd5b6107288286868403610869565b60019250505092915050565b60008061073f610861565b905061074c818585610abe565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6107e6610d34565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084c90611959565b60405180910390fd5b61085e81610ffd565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036108d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108cf906119eb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610947576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093e90611a7d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610a259190611629565b60405180910390a3505050565b6000610a3e8484610757565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610ab85781811015610aaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa190611ae9565b60405180910390fd5b610ab78484848403610869565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2490611b7b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9390611c0d565b60405180910390fd5b610ba7838383611119565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610c2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2490611c9f565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d1b9190611629565b60405180910390a3610d2e848484611129565b50505050565b610d3c610861565b73ffffffffffffffffffffffffffffffffffffffff16610d5a6105bd565b73ffffffffffffffffffffffffffffffffffffffff1614610db0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da790611d0b565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1890611d77565b60405180910390fd5b610e2d60008383611119565b8060026000828254610e3f9190611821565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ef09190611629565b60405180910390a3610f0460008383611129565b5050565b60008060008411610f4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4590611de3565b60405180910390fd5b610f5661112e565b841115610f98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8f90611e4f565b60405180910390fd5b6000610fb0858560000161113f90919063ffffffff16565b905083600001805490508103610fcd576000809250925050610ff6565b6001846001018281548110610fe557610fe4611e6f565b5b906000526020600020015492509250505b9250929050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006110cf60086111f8565b60006110d961112e565b90507f8030e83b04d87bef53480e26263266d6ca66863aa8506aca6f2559d18aa1cb678160405161110a9190611629565b60405180910390a18091505090565b61112483838361120e565b505050565b505050565b600061113a60086112c6565b905090565b60008083805490500361115557600090506111f2565b600080848054905090505b808210156111a957600061117483836112d4565b90508461118187836112fa565b600001541115611193578091506111a3565b6001816111a09190611821565b92505b50611160565b6000821180156111d15750836111cb866001856111c69190611e9e565b6112fa565b60000154145b156111ec576001826111e39190611e9e565b925050506111f2565b81925050505b92915050565b6001816000016000828254019250508190555050565b61121983838361131c565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112635761125682611321565b61125e611374565b6112c1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112ad576112a083611321565b6112a8611374565b6112c0565b6112b683611321565b6112bf82611321565b5b5b505050565b600081600001549050919050565b600060028284186112e59190611f01565b8284166112f29190611821565b905092915050565b6000808360005282602060002001905061131381611388565b91505092915050565b505050565b611371600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061136c83610561565b611392565b50565b6113866006611381610462565b611392565b565b6000819050919050565b600061139c61112e565b9050806113ab8460000161140d565b10156114085782600001819080600181540180825580915050600190039060005260206000200160009091909190915055826001018290806001815401808255809150506001900390600052602060002001600090919091909150555b505050565b6000808280549050036114235760009050611454565b81600183805490506114359190611e9e565b8154811061144657611445611e6f565b5b906000526020600020015490505b919050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611493578082015181840152602081019050611478565b60008484015250505050565b6000601f19601f8301169050919050565b60006114bb82611459565b6114c58185611464565b93506114d5818560208601611475565b6114de8161149f565b840191505092915050565b6000602082019050818103600083015261150381846114b0565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061153b82611510565b9050919050565b61154b81611530565b811461155657600080fd5b50565b60008135905061156881611542565b92915050565b6000819050919050565b6115818161156e565b811461158c57600080fd5b50565b60008135905061159e81611578565b92915050565b600080604083850312156115bb576115ba61150b565b5b60006115c985828601611559565b92505060206115da8582860161158f565b9150509250929050565b60008115159050919050565b6115f9816115e4565b82525050565b600060208201905061161460008301846115f0565b92915050565b6116238161156e565b82525050565b600060208201905061163e600083018461161a565b92915050565b60008060006060848603121561165d5761165c61150b565b5b600061166b86828701611559565b935050602061167c86828701611559565b925050604061168d8682870161158f565b9150509250925092565b600060ff82169050919050565b6116ad81611697565b82525050565b60006020820190506116c860008301846116a4565b92915050565b6000602082840312156116e4576116e361150b565b5b60006116f284828501611559565b91505092915050565b61170481611530565b82525050565b600060208201905061171f60008301846116fb565b92915050565b60006020828403121561173b5761173a61150b565b5b60006117498482850161158f565b91505092915050565b600080604083850312156117695761176861150b565b5b600061177785828601611559565b925050602061178885828601611559565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806117d957607f821691505b6020821081036117ec576117eb611792565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061182c8261156e565b91506118378361156e565b925082820190508082111561184f5761184e6117f2565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006118b1602583611464565b91506118bc82611855565b604082019050919050565b600060208201905081810360008301526118e0816118a4565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611943602683611464565b915061194e826118e7565b604082019050919050565b6000602082019050818103600083015261197281611936565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006119d5602483611464565b91506119e082611979565b604082019050919050565b60006020820190508181036000830152611a04816119c8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611a67602283611464565b9150611a7282611a0b565b604082019050919050565b60006020820190508181036000830152611a9681611a5a565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611ad3601d83611464565b9150611ade82611a9d565b602082019050919050565b60006020820190508181036000830152611b0281611ac6565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611b65602583611464565b9150611b7082611b09565b604082019050919050565b60006020820190508181036000830152611b9481611b58565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611bf7602383611464565b9150611c0282611b9b565b604082019050919050565b60006020820190508181036000830152611c2681611bea565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611c89602683611464565b9150611c9482611c2d565b604082019050919050565b60006020820190508181036000830152611cb881611c7c565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611cf5602083611464565b9150611d0082611cbf565b602082019050919050565b60006020820190508181036000830152611d2481611ce8565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000611d61601f83611464565b9150611d6c82611d2b565b602082019050919050565b60006020820190508181036000830152611d9081611d54565b9050919050565b7f4552433230536e617073686f743a206964206973203000000000000000000000600082015250565b6000611dcd601683611464565b9150611dd882611d97565b602082019050919050565b60006020820190508181036000830152611dfc81611dc0565b9050919050565b7f4552433230536e617073686f743a206e6f6e6578697374656e74206964000000600082015250565b6000611e39601d83611464565b9150611e4482611e03565b602082019050919050565b60006020820190508181036000830152611e6881611e2c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000611ea98261156e565b9150611eb48361156e565b9250828203905081811115611ecc57611ecb6117f2565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611f0c8261156e565b9150611f178361156e565b925082611f2757611f26611ed2565b5b82820490509291505056fea264697066735822122090ceb333cd36317dad9dc0014a3ca2ba76e6e63004204e5e1ccf04558e0e41f864736f6c63430008110033", | |
| "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x116 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x715018A6 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0x981B24D0 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x981B24D0 EQ PUSH2 0x2D1 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x301 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x331 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x361 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x391 JUMPI PUSH2 0x116 JUMP JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x281 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x28B JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x2A9 JUMPI DUP1 PUSH4 0x9711715A EQ PUSH2 0x2C7 JUMPI PUSH2 0x116 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1B7 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x1D5 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x205 JUMPI DUP1 PUSH4 0x4EE2CD7E EQ PUSH2 0x221 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x251 JUMPI PUSH2 0x116 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x11B JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x139 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x169 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x187 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x123 PUSH2 0x3AD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x130 SWAP2 SWAP1 PUSH2 0x14E9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x153 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x14E SWAP2 SWAP1 PUSH2 0x15A4 JUMP JUMPDEST PUSH2 0x43F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x160 SWAP2 SWAP1 PUSH2 0x15FF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x171 PUSH2 0x462 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x17E SWAP2 SWAP1 PUSH2 0x1629 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1A1 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x19C SWAP2 SWAP1 PUSH2 0x1644 JUMP JUMPDEST PUSH2 0x46C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1AE SWAP2 SWAP1 PUSH2 0x15FF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1BF PUSH2 0x49B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1CC SWAP2 SWAP1 PUSH2 0x16B3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1EF PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1EA SWAP2 SWAP1 PUSH2 0x15A4 JUMP JUMPDEST PUSH2 0x4A4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FC SWAP2 SWAP1 PUSH2 0x15FF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x21F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x21A SWAP2 SWAP1 PUSH2 0x15A4 JUMP JUMPDEST PUSH2 0x4DB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x23B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x236 SWAP2 SWAP1 PUSH2 0x15A4 JUMP JUMPDEST PUSH2 0x4F1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x248 SWAP2 SWAP1 PUSH2 0x1629 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x26B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x266 SWAP2 SWAP1 PUSH2 0x16CE JUMP JUMPDEST PUSH2 0x561 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x278 SWAP2 SWAP1 PUSH2 0x1629 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x289 PUSH2 0x5A9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x293 PUSH2 0x5BD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A0 SWAP2 SWAP1 PUSH2 0x170A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2B1 PUSH2 0x5E7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2BE SWAP2 SWAP1 PUSH2 0x14E9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2CF PUSH2 0x679 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2EB PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2E6 SWAP2 SWAP1 PUSH2 0x1725 JUMP JUMPDEST PUSH2 0x68C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2F8 SWAP2 SWAP1 PUSH2 0x1629 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x31B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x316 SWAP2 SWAP1 PUSH2 0x15A4 JUMP JUMPDEST PUSH2 0x6BD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x328 SWAP2 SWAP1 PUSH2 0x15FF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x34B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x346 SWAP2 SWAP1 PUSH2 0x15A4 JUMP JUMPDEST PUSH2 0x734 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x358 SWAP2 SWAP1 PUSH2 0x15FF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x37B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x376 SWAP2 SWAP1 PUSH2 0x1752 JUMP JUMPDEST PUSH2 0x757 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x388 SWAP2 SWAP1 PUSH2 0x1629 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3AB PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3A6 SWAP2 SWAP1 PUSH2 0x16CE JUMP JUMPDEST PUSH2 0x7DE JUMP JUMPDEST STOP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x3BC SWAP1 PUSH2 0x17C1 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 0x3E8 SWAP1 PUSH2 0x17C1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x435 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x40A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x435 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 0x418 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x44A PUSH2 0x861 JUMP JUMPDEST SWAP1 POP PUSH2 0x457 DUP2 DUP6 DUP6 PUSH2 0x869 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x477 PUSH2 0x861 JUMP JUMPDEST SWAP1 POP PUSH2 0x484 DUP6 DUP3 DUP6 PUSH2 0xA32 JUMP JUMPDEST PUSH2 0x48F DUP6 DUP6 DUP6 PUSH2 0xABE JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x12 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x4AF PUSH2 0x861 JUMP JUMPDEST SWAP1 POP PUSH2 0x4D0 DUP2 DUP6 DUP6 PUSH2 0x4C1 DUP6 DUP10 PUSH2 0x757 JUMP JUMPDEST PUSH2 0x4CB SWAP2 SWAP1 PUSH2 0x1821 JUMP JUMPDEST PUSH2 0x869 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x4E3 PUSH2 0xD34 JUMP JUMPDEST PUSH2 0x4ED DUP3 DUP3 PUSH2 0xDB2 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x53E DUP5 PUSH1 0x5 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH2 0xF08 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH2 0x555 JUMPI PUSH2 0x550 DUP6 PUSH2 0x561 JUMP JUMPDEST PUSH2 0x557 JUMP JUMPDEST DUP1 JUMPDEST SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5B1 PUSH2 0xD34 JUMP JUMPDEST PUSH2 0x5BB PUSH1 0x0 PUSH2 0xFFD JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x5F6 SWAP1 PUSH2 0x17C1 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 0x622 SWAP1 PUSH2 0x17C1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x66F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x644 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x66F 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 0x652 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x681 PUSH2 0xD34 JUMP JUMPDEST PUSH2 0x689 PUSH2 0x10C3 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x69C DUP5 PUSH1 0x6 PUSH2 0xF08 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH2 0x6B2 JUMPI PUSH2 0x6AD PUSH2 0x462 JUMP JUMPDEST PUSH2 0x6B4 JUMP JUMPDEST DUP1 JUMPDEST SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x6C8 PUSH2 0x861 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x6D6 DUP3 DUP7 PUSH2 0x757 JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x71B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x712 SWAP1 PUSH2 0x18C7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x728 DUP3 DUP7 DUP7 DUP5 SUB PUSH2 0x869 JUMP JUMPDEST PUSH1 0x1 SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x73F PUSH2 0x861 JUMP JUMPDEST SWAP1 POP PUSH2 0x74C DUP2 DUP6 DUP6 PUSH2 0xABE JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x7E6 PUSH2 0xD34 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x855 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x84C SWAP1 PUSH2 0x1959 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x85E DUP2 PUSH2 0xFFD JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x8D8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8CF SWAP1 PUSH2 0x19EB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x947 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x93E SWAP1 PUSH2 0x1A7D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD PUSH2 0xA25 SWAP2 SWAP1 PUSH2 0x1629 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA3E DUP5 DUP5 PUSH2 0x757 JUMP JUMPDEST SWAP1 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH2 0xAB8 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0xAAA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAA1 SWAP1 PUSH2 0x1AE9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xAB7 DUP5 DUP5 DUP5 DUP5 SUB PUSH2 0x869 JUMP JUMPDEST JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xB2D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB24 SWAP1 PUSH2 0x1B7B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xB9C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB93 SWAP1 PUSH2 0x1C0D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xBA7 DUP4 DUP4 DUP4 PUSH2 0x1119 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0xC2D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC24 SWAP1 PUSH2 0x1C9F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP2 SUB PUSH1 0x0 DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD PUSH2 0xD1B SWAP2 SWAP1 PUSH2 0x1629 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0xD2E DUP5 DUP5 DUP5 PUSH2 0x1129 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0xD3C PUSH2 0x861 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xD5A PUSH2 0x5BD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xDB0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDA7 SWAP1 PUSH2 0x1D0B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xE21 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE18 SWAP1 PUSH2 0x1D77 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xE2D PUSH1 0x0 DUP4 DUP4 PUSH2 0x1119 JUMP JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xE3F SWAP2 SWAP1 PUSH2 0x1821 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0xEF0 SWAP2 SWAP1 PUSH2 0x1629 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0xF04 PUSH1 0x0 DUP4 DUP4 PUSH2 0x1129 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 GT PUSH2 0xF4E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF45 SWAP1 PUSH2 0x1DE3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xF56 PUSH2 0x112E JUMP JUMPDEST DUP5 GT ISZERO PUSH2 0xF98 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF8F SWAP1 PUSH2 0x1E4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xFB0 DUP6 DUP6 PUSH1 0x0 ADD PUSH2 0x113F SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x0 ADD DUP1 SLOAD SWAP1 POP DUP2 SUB PUSH2 0xFCD JUMPI PUSH1 0x0 DUP1 SWAP3 POP SWAP3 POP POP PUSH2 0xFF6 JUMP JUMPDEST PUSH1 0x1 DUP5 PUSH1 0x1 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xFE5 JUMPI PUSH2 0xFE4 PUSH2 0x1E6F JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP3 POP SWAP3 POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x9 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10CF PUSH1 0x8 PUSH2 0x11F8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10D9 PUSH2 0x112E JUMP JUMPDEST SWAP1 POP PUSH32 0x8030E83B04D87BEF53480E26263266D6CA66863AA8506ACA6F2559D18AA1CB67 DUP2 PUSH1 0x40 MLOAD PUSH2 0x110A SWAP2 SWAP1 PUSH2 0x1629 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH2 0x1124 DUP4 DUP4 DUP4 PUSH2 0x120E JUMP JUMPDEST POP POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x113A PUSH1 0x8 PUSH2 0x12C6 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP1 SLOAD SWAP1 POP SUB PUSH2 0x1155 JUMPI PUSH1 0x0 SWAP1 POP PUSH2 0x11F2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 DUP1 SLOAD SWAP1 POP SWAP1 POP JUMPDEST DUP1 DUP3 LT ISZERO PUSH2 0x11A9 JUMPI PUSH1 0x0 PUSH2 0x1174 DUP4 DUP4 PUSH2 0x12D4 JUMP JUMPDEST SWAP1 POP DUP5 PUSH2 0x1181 DUP8 DUP4 PUSH2 0x12FA JUMP JUMPDEST PUSH1 0x0 ADD SLOAD GT ISZERO PUSH2 0x1193 JUMPI DUP1 SWAP2 POP PUSH2 0x11A3 JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH2 0x11A0 SWAP2 SWAP1 PUSH2 0x1821 JUMP JUMPDEST SWAP3 POP JUMPDEST POP PUSH2 0x1160 JUMP JUMPDEST PUSH1 0x0 DUP3 GT DUP1 ISZERO PUSH2 0x11D1 JUMPI POP DUP4 PUSH2 0x11CB DUP7 PUSH1 0x1 DUP6 PUSH2 0x11C6 SWAP2 SWAP1 PUSH2 0x1E9E JUMP JUMPDEST PUSH2 0x12FA JUMP JUMPDEST PUSH1 0x0 ADD SLOAD EQ JUMPDEST ISZERO PUSH2 0x11EC JUMPI PUSH1 0x1 DUP3 PUSH2 0x11E3 SWAP2 SWAP1 PUSH2 0x1E9E JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x11F2 JUMP JUMPDEST DUP2 SWAP3 POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x0 ADD PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH2 0x1219 DUP4 DUP4 DUP4 PUSH2 0x131C JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1263 JUMPI PUSH2 0x1256 DUP3 PUSH2 0x1321 JUMP JUMPDEST PUSH2 0x125E PUSH2 0x1374 JUMP JUMPDEST PUSH2 0x12C1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x12AD JUMPI PUSH2 0x12A0 DUP4 PUSH2 0x1321 JUMP JUMPDEST PUSH2 0x12A8 PUSH2 0x1374 JUMP JUMPDEST PUSH2 0x12C0 JUMP JUMPDEST PUSH2 0x12B6 DUP4 PUSH2 0x1321 JUMP JUMPDEST PUSH2 0x12BF DUP3 PUSH2 0x1321 JUMP JUMPDEST JUMPDEST JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 ADD SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DUP5 XOR PUSH2 0x12E5 SWAP2 SWAP1 PUSH2 0x1F01 JUMP JUMPDEST DUP3 DUP5 AND PUSH2 0x12F2 SWAP2 SWAP1 PUSH2 0x1821 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x0 MSTORE DUP3 PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SWAP1 POP PUSH2 0x1313 DUP2 PUSH2 0x1388 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x1371 PUSH1 0x5 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH2 0x136C DUP4 PUSH2 0x561 JUMP JUMPDEST PUSH2 0x1392 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x1386 PUSH1 0x6 PUSH2 0x1381 PUSH2 0x462 JUMP JUMPDEST PUSH2 0x1392 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x139C PUSH2 0x112E JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x13AB DUP5 PUSH1 0x0 ADD PUSH2 0x140D JUMP JUMPDEST LT ISZERO PUSH2 0x1408 JUMPI DUP3 PUSH1 0x0 ADD DUP2 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP SSTORE DUP3 PUSH1 0x1 ADD DUP3 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP SSTORE JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP1 SLOAD SWAP1 POP SUB PUSH2 0x1423 JUMPI PUSH1 0x0 SWAP1 POP PUSH2 0x1454 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP4 DUP1 SLOAD SWAP1 POP PUSH2 0x1435 SWAP2 SWAP1 PUSH2 0x1E9E JUMP JUMPDEST DUP2 SLOAD DUP2 LT PUSH2 0x1446 JUMPI PUSH2 0x1445 PUSH2 0x1E6F JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1493 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x1478 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14BB DUP3 PUSH2 0x1459 JUMP JUMPDEST PUSH2 0x14C5 DUP2 DUP6 PUSH2 0x1464 JUMP JUMPDEST SWAP4 POP PUSH2 0x14D5 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1475 JUMP JUMPDEST PUSH2 0x14DE DUP2 PUSH2 0x149F JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1503 DUP2 DUP5 PUSH2 0x14B0 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x153B DUP3 PUSH2 0x1510 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x154B DUP2 PUSH2 0x1530 JUMP JUMPDEST DUP2 EQ PUSH2 0x1556 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1568 DUP2 PUSH2 0x1542 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1581 DUP2 PUSH2 0x156E JUMP JUMPDEST DUP2 EQ PUSH2 0x158C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x159E DUP2 PUSH2 0x1578 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x15BB JUMPI PUSH2 0x15BA PUSH2 0x150B JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x15C9 DUP6 DUP3 DUP7 ADD PUSH2 0x1559 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x15DA DUP6 DUP3 DUP7 ADD PUSH2 0x158F JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x15F9 DUP2 PUSH2 0x15E4 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1614 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x15F0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1623 DUP2 PUSH2 0x156E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x163E PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x161A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x165D JUMPI PUSH2 0x165C PUSH2 0x150B JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x166B DUP7 DUP3 DUP8 ADD PUSH2 0x1559 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x167C DUP7 DUP3 DUP8 ADD PUSH2 0x1559 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x168D DUP7 DUP3 DUP8 ADD PUSH2 0x158F JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x16AD DUP2 PUSH2 0x1697 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x16C8 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x16A4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x16E4 JUMPI PUSH2 0x16E3 PUSH2 0x150B JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x16F2 DUP5 DUP3 DUP6 ADD PUSH2 0x1559 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1704 DUP2 PUSH2 0x1530 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x171F PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x16FB JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x173B JUMPI PUSH2 0x173A PUSH2 0x150B JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1749 DUP5 DUP3 DUP6 ADD PUSH2 0x158F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1769 JUMPI PUSH2 0x1768 PUSH2 0x150B JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1777 DUP6 DUP3 DUP7 ADD PUSH2 0x1559 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x1788 DUP6 DUP3 DUP7 ADD PUSH2 0x1559 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x17D9 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x17EC JUMPI PUSH2 0x17EB PUSH2 0x1792 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x182C DUP3 PUSH2 0x156E JUMP JUMPDEST SWAP2 POP PUSH2 0x1837 DUP4 PUSH2 0x156E JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x184F JUMPI PUSH2 0x184E PUSH2 0x17F2 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x45524332303A2064656372656173656420616C6C6F77616E63652062656C6F77 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x207A65726F000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x18B1 PUSH1 0x25 DUP4 PUSH2 0x1464 JUMP JUMPDEST SWAP2 POP PUSH2 0x18BC DUP3 PUSH2 0x1855 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x18E0 DUP2 PUSH2 0x18A4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1943 PUSH1 0x26 DUP4 PUSH2 0x1464 JUMP JUMPDEST SWAP2 POP PUSH2 0x194E DUP3 PUSH2 0x18E7 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1972 DUP2 PUSH2 0x1936 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19D5 PUSH1 0x24 DUP4 PUSH2 0x1464 JUMP JUMPDEST SWAP2 POP PUSH2 0x19E0 DUP3 PUSH2 0x1979 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1A04 DUP2 PUSH2 0x19C8 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7373000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A67 PUSH1 0x22 DUP4 PUSH2 0x1464 JUMP JUMPDEST SWAP2 POP PUSH2 0x1A72 DUP3 PUSH2 0x1A0B JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1A96 DUP2 PUSH2 0x1A5A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A20696E73756666696369656E7420616C6C6F77616E6365000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1AD3 PUSH1 0x1D DUP4 PUSH2 0x1464 JUMP JUMPDEST SWAP2 POP PUSH2 0x1ADE DUP3 PUSH2 0x1A9D JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1B02 DUP2 PUSH2 0x1AC6 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B65 PUSH1 0x25 DUP4 PUSH2 0x1464 JUMP JUMPDEST SWAP2 POP PUSH2 0x1B70 DUP3 PUSH2 0x1B09 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1B94 DUP2 PUSH2 0x1B58 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6573730000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BF7 PUSH1 0x23 DUP4 PUSH2 0x1464 JUMP JUMPDEST SWAP2 POP PUSH2 0x1C02 DUP3 PUSH2 0x1B9B JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1C26 DUP2 PUSH2 0x1BEA JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732062 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x616C616E63650000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C89 PUSH1 0x26 DUP4 PUSH2 0x1464 JUMP JUMPDEST SWAP2 POP PUSH2 0x1C94 DUP3 PUSH2 0x1C2D JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1CB8 DUP2 PUSH2 0x1C7C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CF5 PUSH1 0x20 DUP4 PUSH2 0x1464 JUMP JUMPDEST SWAP2 POP PUSH2 0x1D00 DUP3 PUSH2 0x1CBF JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1D24 DUP2 PUSH2 0x1CE8 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D61 PUSH1 0x1F DUP4 PUSH2 0x1464 JUMP JUMPDEST SWAP2 POP PUSH2 0x1D6C DUP3 PUSH2 0x1D2B JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1D90 DUP2 PUSH2 0x1D54 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433230536E617073686F743A206964206973203000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1DCD PUSH1 0x16 DUP4 PUSH2 0x1464 JUMP JUMPDEST SWAP2 POP PUSH2 0x1DD8 DUP3 PUSH2 0x1D97 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1DFC DUP2 PUSH2 0x1DC0 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433230536E617073686F743A206E6F6E6578697374656E74206964000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E39 PUSH1 0x1D DUP4 PUSH2 0x1464 JUMP JUMPDEST SWAP2 POP PUSH2 0x1E44 DUP3 PUSH2 0x1E03 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1E68 DUP2 PUSH2 0x1E2C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1EA9 DUP3 PUSH2 0x156E JUMP JUMPDEST SWAP2 POP PUSH2 0x1EB4 DUP4 PUSH2 0x156E JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0x1ECC JUMPI PUSH2 0x1ECB PUSH2 0x17F2 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1F0C DUP3 PUSH2 0x156E JUMP JUMPDEST SWAP2 POP PUSH2 0x1F17 DUP4 PUSH2 0x156E JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x1F27 JUMPI PUSH2 0x1F26 PUSH2 0x1ED2 JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP1 0xCE 0xB3 CALLER 0xCD CALLDATASIZE BALANCE PUSH30 0xAD9DC0014A3CA2BA76E6E63004204E5E1CCF04558E0E41F864736F6C6343 STOP ADDMOD GT STOP CALLER ", | |
| "sourceMap": "260:535:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2154:98:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4431:197;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3242:106;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5190:286;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3091:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5871:234;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;433:93:10;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4998:262:3;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3406:125:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1831:101:0;;;:::i;:::-;;1201:85;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2365:102:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;362:65:10;;;:::i;:::-;;5359:230:3;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6592:427:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3727:189;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3974:149;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2081:198:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2154:98:1;2208:13;2240:5;2233:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2154:98;:::o;4431:197::-;4514:4;4530:13;4546:12;:10;:12::i;:::-;4530:28;;4568:32;4577:5;4584:7;4593:6;4568:8;:32::i;:::-;4617:4;4610:11;;;4431:197;;;;:::o;3242:106::-;3303:7;3329:12;;3322:19;;3242:106;:::o;5190:286::-;5317:4;5333:15;5351:12;:10;:12::i;:::-;5333:30;;5373:38;5389:4;5395:7;5404:6;5373:15;:38::i;:::-;5421:27;5431:4;5437:2;5441:6;5421:9;:27::i;:::-;5465:4;5458:11;;;5190:286;;;;;:::o;3091:91::-;3149:5;3173:2;3166:9;;3091:91;:::o;5871:234::-;5959:4;5975:13;5991:12;:10;:12::i;:::-;5975:28;;6013:64;6022:5;6029:7;6066:10;6038:25;6048:5;6055:7;6038:9;:25::i;:::-;:38;;;;:::i;:::-;6013:8;:64::i;:::-;6094:4;6087:11;;;5871:234;;;;:::o;433:93:10:-;1094:13:0;:11;:13::i;:::-;502:17:10::1;508:2;512:6;502:5;:17::i;:::-;433:93:::0;;:::o;4998:262:3:-;5085:7;5105:16;5123:13;5140:55;5149:10;5161:24;:33;5186:7;5161:33;;;;;;;;;;;;;;;5140:8;:55::i;:::-;5104:91;;;;5213:11;:40;;5235:18;5245:7;5235:9;:18::i;:::-;5213:40;;;5227:5;5213:40;5206:47;;;;4998:262;;;;:::o;3406:125:1:-;3480:7;3506:9;:18;3516:7;3506:18;;;;;;;;;;;;;;;;3499:25;;3406:125;;;:::o;1831:101:0:-;1094:13;:11;:13::i;:::-;1895:30:::1;1922:1;1895:18;:30::i;:::-;1831:101::o:0;1201:85::-;1247:7;1273:6;;;;;;;;;;;1266:13;;1201:85;:::o;2365:102:1:-;2421:13;2453:7;2446:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2365:102;:::o;362:65:10:-;1094:13:0;:11;:13::i;:::-;409:11:10::1;:9;:11::i;:::-;;362:65::o:0;5359:230:3:-;5431:7;5451:16;5469:13;5486:43;5495:10;5507:21;5486:8;:43::i;:::-;5450:79;;;;5547:11;:35;;5569:13;:11;:13::i;:::-;5547:35;;;5561:5;5547:35;5540:42;;;;5359:230;;;:::o;6592:427:1:-;6685:4;6701:13;6717:12;:10;:12::i;:::-;6701:28;;6739:24;6766:25;6776:5;6783:7;6766:9;:25::i;:::-;6739:52;;6829:15;6809:16;:35;;6801:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6920:60;6929:5;6936:7;6964:15;6945:16;:34;6920:8;:60::i;:::-;7008:4;7001:11;;;;6592:427;;;;:::o;3727:189::-;3806:4;3822:13;3838:12;:10;:12::i;:::-;3822:28;;3860;3870:5;3877:2;3881:6;3860:9;:28::i;:::-;3905:4;3898:11;;;3727:189;;;;:::o;3974:149::-;4063:7;4089:11;:18;4101:5;4089:18;;;;;;;;;;;;;;;:27;4108:7;4089:27;;;;;;;;;;;;;;;;4082:34;;3974:149;;;;:::o;2081:198:0:-;1094:13;:11;:13::i;:::-;2189:1:::1;2169:22;;:8;:22;;::::0;2161:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2244:28;2263:8;2244:18;:28::i;:::-;2081:198:::0;:::o;640:96:6:-;693:7;719:10;712:17;;640:96;:::o;10504:370:1:-;10652:1;10635:19;;:5;:19;;;10627:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10732:1;10713:21;;:7;:21;;;10705:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10814:6;10784:11;:18;10796:5;10784:18;;;;;;;;;;;;;;;:27;10803:7;10784:27;;;;;;;;;;;;;;;:36;;;;10851:7;10835:32;;10844:5;10835:32;;;10860:6;10835:32;;;;;;:::i;:::-;;;;;;;;10504:370;;;:::o;11155:441::-;11285:24;11312:25;11322:5;11329:7;11312:9;:25::i;:::-;11285:52;;11371:17;11351:16;:37;11347:243;;11432:6;11412:16;:26;;11404:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11514:51;11523:5;11530:7;11558:6;11539:16;:25;11514:8;:51::i;:::-;11347:243;11275:321;11155:441;;;:::o;7473:818::-;7615:1;7599:18;;:4;:18;;;7591:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7691:1;7677:16;;:2;:16;;;7669:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7744:38;7765:4;7771:2;7775:6;7744:20;:38::i;:::-;7793:19;7815:9;:15;7825:4;7815:15;;;;;;;;;;;;;;;;7793:37;;7863:6;7848:11;:21;;7840:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;7978:6;7964:11;:20;7946:9;:15;7956:4;7946:15;;;;;;;;;;;;;;;:38;;;;8178:6;8161:9;:13;8171:2;8161:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;8225:2;8210:26;;8219:4;8210:26;;;8229:6;8210:26;;;;;;:::i;:::-;;;;;;;;8247:37;8267:4;8273:2;8277:6;8247:19;:37::i;:::-;7581:710;7473:818;;;:::o;1359:130:0:-;1433:12;:10;:12::i;:::-;1422:23;;:7;:5;:7::i;:::-;:23;;;1414:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1359:130::o;8567:535:1:-;8669:1;8650:21;;:7;:21;;;8642:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;8718:49;8747:1;8751:7;8760:6;8718:20;:49::i;:::-;8794:6;8778:12;;:22;;;;;;;:::i;:::-;;;;;;;;8968:6;8946:9;:18;8956:7;8946:18;;;;;;;;;;;;;;;;:28;;;;;;;;;;;9020:7;8999:37;;9016:1;8999:37;;;9029:6;8999:37;;;;;;:::i;:::-;;;;;;;;9047:48;9075:1;9079:7;9088:6;9047:19;:48::i;:::-;8567:535;;:::o;6410:1594:3:-;6499:4;6505:7;6545:1;6532:10;:14;6524:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;6605:23;:21;:23::i;:::-;6591:10;:37;;6583:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;7785:13;7801:40;7830:10;7801:9;:13;;:28;;:40;;;;:::i;:::-;7785:56;;7865:9;:13;;:20;;;;7856:5;:29;7852:146;;7909:5;7916:1;7901:17;;;;;;;7852:146;7957:4;7963:9;:16;;7980:5;7963:23;;;;;;;;:::i;:::-;;;;;;;;;;7949:38;;;;;6410:1594;;;;;;:::o;2433:187:0:-;2506:16;2525:6;;;;;;;;;;;2506:25;;2550:8;2541:6;;:17;;;;;;;;;;;;;;;;;;2604:8;2573:40;;2594:8;2573:40;;;;;;;;;;;;2496:124;2433:187;:::o;4488:217:3:-;4535:7;4554:30;:18;:28;:30::i;:::-;4595:17;4615:23;:21;:23::i;:::-;4595:43;;4653:19;4662:9;4653:19;;;;;;:::i;:::-;;;;;;;;4689:9;4682:16;;;4488:217;:::o;600:193:10:-;742:44;769:4;775:2;779:6;742:26;:44::i;:::-;600:193;;;:::o;12889:120:1:-;;;;:::o;4766:125:3:-;4830:7;4856:28;:18;:26;:28::i;:::-;4849:35;;4766:125;:::o;713:932:5:-;802:7;841:1;825:5;:12;;;;:17;821:56;;865:1;858:8;;;;821:56;887:11;912:12;927:5;:12;;;;912:27;;950:434;963:4;957:3;:10;950:434;;;983:11;997:23;1010:3;1015:4;997:12;:23::i;:::-;983:37;;1270:7;1237:24;1250:5;1257:3;1237:12;:24::i;:::-;:30;;;:40;1233:141;;;1304:3;1297:10;;1233:141;;;1358:1;1352:3;:7;;;;:::i;:::-;1346:13;;1233:141;969:415;950:434;;;1507:1;1501:3;:7;:56;;;;;1550:7;1512:28;1525:5;1538:1;1532:3;:7;;;;:::i;:::-;1512:12;:28::i;:::-;:34;;;:45;1501:56;1497:142;;;1586:1;1580:3;:7;;;;:::i;:::-;1573:14;;;;;;1497:142;1625:3;1618:10;;;;713:932;;;;;:::o;945:123:7:-;1050:1;1032:7;:14;;;:19;;;;;;;;;;;945:123;:::o;5802:602:3:-;5940:44;5967:4;5973:2;5977:6;5940:26;:44::i;:::-;6015:1;5999:18;;:4;:18;;;5995:403;;6053:26;6076:2;6053:22;:26::i;:::-;6093:28;:26;:28::i;:::-;5995:403;;;6156:1;6142:16;;:2;:16;;;6138:260;;6194:28;6217:4;6194:22;:28::i;:::-;6236;:26;:28::i;:::-;6138:260;;;6319:28;6342:4;6319:22;:28::i;:::-;6361:26;6384:2;6361:22;:26::i;:::-;6138:260;5995:403;5802:602;;;:::o;827:112:7:-;892:7;918;:14;;;911:21;;827:112;;;:::o;805:153:9:-;867:7;950:1;945;941;:5;940:11;;;;:::i;:::-;935:1;931;:5;930:21;;;;:::i;:::-;923:28;;805:153;;;;:::o;2919:334:5:-;3000:31;3043:12;3141:8;3138:1;3131:19;3195:3;3188:4;3185:1;3175:18;3171:28;3163:36;;3225:21;:4;:19;:21::i;:::-;3218:28;;;2919:334;;;;:::o;12180:121:1:-;;;;:::o;8010:144:3:-;8077:70;8093:24;:33;8118:7;8093:33;;;;;;;;;;;;;;;8128:18;8138:7;8128:9;:18::i;:::-;8077:15;:70::i;:::-;8010:144;:::o;8160:116::-;8216:53;8232:21;8255:13;:11;:13::i;:::-;8216:15;:53::i;:::-;8160:116::o;2478:190:8:-;2539:21;2648:4;2638:14;;2478:190;;;:::o;8282:304:3:-;8376:17;8396:23;:21;:23::i;:::-;8376:43;;8466:9;8433:30;8449:9;:13;;8433:15;:30::i;:::-;:42;8429:151;;;8491:9;:13;;8510:9;8491:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8534:9;:16;;8556:12;8534:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8429:151;8366:220;8282:304;;:::o;8592:206::-;8662:7;8699:1;8685:3;:10;;;;:15;8681:111;;8723:1;8716:8;;;;8681:111;8762:3;8779:1;8766:3;:10;;;;:14;;;;:::i;:::-;8762:19;;;;;;;;:::i;:::-;;;;;;;;;;8755:26;;8592:206;;;;:::o;7:99:11:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:329::-;4912:6;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;4853:329;;;;:::o;5188:118::-;5275:24;5293:5;5275:24;:::i;:::-;5270:3;5263:37;5188:118;;:::o;5312:222::-;5405:4;5443:2;5432:9;5428:18;5420:26;;5456:71;5524:1;5513:9;5509:17;5500:6;5456:71;:::i;:::-;5312:222;;;;:::o;5540:329::-;5599:6;5648:2;5636:9;5627:7;5623:23;5619:32;5616:119;;;5654:79;;:::i;:::-;5616:119;5774:1;5799:53;5844:7;5835:6;5824:9;5820:22;5799:53;:::i;:::-;5789:63;;5745:117;5540:329;;;;:::o;5875:474::-;5943:6;5951;6000:2;5988:9;5979:7;5975:23;5971:32;5968:119;;;6006:79;;:::i;:::-;5968:119;6126:1;6151:53;6196:7;6187:6;6176:9;6172:22;6151:53;:::i;:::-;6141:63;;6097:117;6253:2;6279:53;6324:7;6315:6;6304:9;6300:22;6279:53;:::i;:::-;6269:63;;6224:118;5875:474;;;;;:::o;6355:180::-;6403:77;6400:1;6393:88;6500:4;6497:1;6490:15;6524:4;6521:1;6514:15;6541:320;6585:6;6622:1;6616:4;6612:12;6602:22;;6669:1;6663:4;6659:12;6690:18;6680:81;;6746:4;6738:6;6734:17;6724:27;;6680:81;6808:2;6800:6;6797:14;6777:18;6774:38;6771:84;;6827:18;;:::i;:::-;6771:84;6592:269;6541:320;;;:::o;6867:180::-;6915:77;6912:1;6905:88;7012:4;7009:1;7002:15;7036:4;7033:1;7026:15;7053:191;7093:3;7112:20;7130:1;7112:20;:::i;:::-;7107:25;;7146:20;7164:1;7146:20;:::i;:::-;7141:25;;7189:1;7186;7182:9;7175:16;;7210:3;7207:1;7204:10;7201:36;;;7217:18;;:::i;:::-;7201:36;7053:191;;;;:::o;7250:224::-;7390:34;7386:1;7378:6;7374:14;7367:58;7459:7;7454:2;7446:6;7442:15;7435:32;7250:224;:::o;7480:366::-;7622:3;7643:67;7707:2;7702:3;7643:67;:::i;:::-;7636:74;;7719:93;7808:3;7719:93;:::i;:::-;7837:2;7832:3;7828:12;7821:19;;7480:366;;;:::o;7852:419::-;8018:4;8056:2;8045:9;8041:18;8033:26;;8105:9;8099:4;8095:20;8091:1;8080:9;8076:17;8069:47;8133:131;8259:4;8133:131;:::i;:::-;8125:139;;7852:419;;;:::o;8277:225::-;8417:34;8413:1;8405:6;8401:14;8394:58;8486:8;8481:2;8473:6;8469:15;8462:33;8277:225;:::o;8508:366::-;8650:3;8671:67;8735:2;8730:3;8671:67;:::i;:::-;8664:74;;8747:93;8836:3;8747:93;:::i;:::-;8865:2;8860:3;8856:12;8849:19;;8508:366;;;:::o;8880:419::-;9046:4;9084:2;9073:9;9069:18;9061:26;;9133:9;9127:4;9123:20;9119:1;9108:9;9104:17;9097:47;9161:131;9287:4;9161:131;:::i;:::-;9153:139;;8880:419;;;:::o;9305:223::-;9445:34;9441:1;9433:6;9429:14;9422:58;9514:6;9509:2;9501:6;9497:15;9490:31;9305:223;:::o;9534:366::-;9676:3;9697:67;9761:2;9756:3;9697:67;:::i;:::-;9690:74;;9773:93;9862:3;9773:93;:::i;:::-;9891:2;9886:3;9882:12;9875:19;;9534:366;;;:::o;9906:419::-;10072:4;10110:2;10099:9;10095:18;10087:26;;10159:9;10153:4;10149:20;10145:1;10134:9;10130:17;10123:47;10187:131;10313:4;10187:131;:::i;:::-;10179:139;;9906:419;;;:::o;10331:221::-;10471:34;10467:1;10459:6;10455:14;10448:58;10540:4;10535:2;10527:6;10523:15;10516:29;10331:221;:::o;10558:366::-;10700:3;10721:67;10785:2;10780:3;10721:67;:::i;:::-;10714:74;;10797:93;10886:3;10797:93;:::i;:::-;10915:2;10910:3;10906:12;10899:19;;10558:366;;;:::o;10930:419::-;11096:4;11134:2;11123:9;11119:18;11111:26;;11183:9;11177:4;11173:20;11169:1;11158:9;11154:17;11147:47;11211:131;11337:4;11211:131;:::i;:::-;11203:139;;10930:419;;;:::o;11355:179::-;11495:31;11491:1;11483:6;11479:14;11472:55;11355:179;:::o;11540:366::-;11682:3;11703:67;11767:2;11762:3;11703:67;:::i;:::-;11696:74;;11779:93;11868:3;11779:93;:::i;:::-;11897:2;11892:3;11888:12;11881:19;;11540:366;;;:::o;11912:419::-;12078:4;12116:2;12105:9;12101:18;12093:26;;12165:9;12159:4;12155:20;12151:1;12140:9;12136:17;12129:47;12193:131;12319:4;12193:131;:::i;:::-;12185:139;;11912:419;;;:::o;12337:224::-;12477:34;12473:1;12465:6;12461:14;12454:58;12546:7;12541:2;12533:6;12529:15;12522:32;12337:224;:::o;12567:366::-;12709:3;12730:67;12794:2;12789:3;12730:67;:::i;:::-;12723:74;;12806:93;12895:3;12806:93;:::i;:::-;12924:2;12919:3;12915:12;12908:19;;12567:366;;;:::o;12939:419::-;13105:4;13143:2;13132:9;13128:18;13120:26;;13192:9;13186:4;13182:20;13178:1;13167:9;13163:17;13156:47;13220:131;13346:4;13220:131;:::i;:::-;13212:139;;12939:419;;;:::o;13364:222::-;13504:34;13500:1;13492:6;13488:14;13481:58;13573:5;13568:2;13560:6;13556:15;13549:30;13364:222;:::o;13592:366::-;13734:3;13755:67;13819:2;13814:3;13755:67;:::i;:::-;13748:74;;13831:93;13920:3;13831:93;:::i;:::-;13949:2;13944:3;13940:12;13933:19;;13592:366;;;:::o;13964:419::-;14130:4;14168:2;14157:9;14153:18;14145:26;;14217:9;14211:4;14207:20;14203:1;14192:9;14188:17;14181:47;14245:131;14371:4;14245:131;:::i;:::-;14237:139;;13964:419;;;:::o;14389:225::-;14529:34;14525:1;14517:6;14513:14;14506:58;14598:8;14593:2;14585:6;14581:15;14574:33;14389:225;:::o;14620:366::-;14762:3;14783:67;14847:2;14842:3;14783:67;:::i;:::-;14776:74;;14859:93;14948:3;14859:93;:::i;:::-;14977:2;14972:3;14968:12;14961:19;;14620:366;;;:::o;14992:419::-;15158:4;15196:2;15185:9;15181:18;15173:26;;15245:9;15239:4;15235:20;15231:1;15220:9;15216:17;15209:47;15273:131;15399:4;15273:131;:::i;:::-;15265:139;;14992:419;;;:::o;15417:182::-;15557:34;15553:1;15545:6;15541:14;15534:58;15417:182;:::o;15605:366::-;15747:3;15768:67;15832:2;15827:3;15768:67;:::i;:::-;15761:74;;15844:93;15933:3;15844:93;:::i;:::-;15962:2;15957:3;15953:12;15946:19;;15605:366;;;:::o;15977:419::-;16143:4;16181:2;16170:9;16166:18;16158:26;;16230:9;16224:4;16220:20;16216:1;16205:9;16201:17;16194:47;16258:131;16384:4;16258:131;:::i;:::-;16250:139;;15977:419;;;:::o;16402:181::-;16542:33;16538:1;16530:6;16526:14;16519:57;16402:181;:::o;16589:366::-;16731:3;16752:67;16816:2;16811:3;16752:67;:::i;:::-;16745:74;;16828:93;16917:3;16828:93;:::i;:::-;16946:2;16941:3;16937:12;16930:19;;16589:366;;;:::o;16961:419::-;17127:4;17165:2;17154:9;17150:18;17142:26;;17214:9;17208:4;17204:20;17200:1;17189:9;17185:17;17178:47;17242:131;17368:4;17242:131;:::i;:::-;17234:139;;16961:419;;;:::o;17386:172::-;17526:24;17522:1;17514:6;17510:14;17503:48;17386:172;:::o;17564:366::-;17706:3;17727:67;17791:2;17786:3;17727:67;:::i;:::-;17720:74;;17803:93;17892:3;17803:93;:::i;:::-;17921:2;17916:3;17912:12;17905:19;;17564:366;;;:::o;17936:419::-;18102:4;18140:2;18129:9;18125:18;18117:26;;18189:9;18183:4;18179:20;18175:1;18164:9;18160:17;18153:47;18217:131;18343:4;18217:131;:::i;:::-;18209:139;;17936:419;;;:::o;18361:179::-;18501:31;18497:1;18489:6;18485:14;18478:55;18361:179;:::o;18546:366::-;18688:3;18709:67;18773:2;18768:3;18709:67;:::i;:::-;18702:74;;18785:93;18874:3;18785:93;:::i;:::-;18903:2;18898:3;18894:12;18887:19;;18546:366;;;:::o;18918:419::-;19084:4;19122:2;19111:9;19107:18;19099:26;;19171:9;19165:4;19161:20;19157:1;19146:9;19142:17;19135:47;19199:131;19325:4;19199:131;:::i;:::-;19191:139;;18918:419;;;:::o;19343:180::-;19391:77;19388:1;19381:88;19488:4;19485:1;19478:15;19512:4;19509:1;19502:15;19529:194;19569:4;19589:20;19607:1;19589:20;:::i;:::-;19584:25;;19623:20;19641:1;19623:20;:::i;:::-;19618:25;;19667:1;19664;19660:9;19652:17;;19691:1;19685:4;19682:11;19679:37;;;19696:18;;:::i;:::-;19679:37;19529:194;;;;:::o;19729:180::-;19777:77;19774:1;19767:88;19874:4;19871:1;19864:15;19898:4;19895:1;19888:15;19915:185;19955:1;19972:20;19990:1;19972:20;:::i;:::-;19967:25;;20006:20;20024:1;20006:20;:::i;:::-;20001:25;;20045:1;20035:35;;20050:18;;:::i;:::-;20035:35;20092:1;20089;20085:9;20080:14;;19915:185;;;;:::o" | |
| }, | |
| "gasEstimates": { | |
| "creation": { | |
| "codeDepositCost": "1608000", | |
| "executionCost": "infinite", | |
| "totalCost": "infinite" | |
| }, | |
| "external": { | |
| "allowance(address,address)": "infinite", | |
| "approve(address,uint256)": "infinite", | |
| "balanceOf(address)": "2952", | |
| "balanceOfAt(address,uint256)": "infinite", | |
| "decimals()": "366", | |
| "decreaseAllowance(address,uint256)": "infinite", | |
| "increaseAllowance(address,uint256)": "infinite", | |
| "mint(address,uint256)": "infinite", | |
| "name()": "infinite", | |
| "owner()": "2567", | |
| "renounceOwnership()": "30421", | |
| "snapshot()": "30193", | |
| "symbol()": "infinite", | |
| "totalSupply()": "2505", | |
| "totalSupplyAt(uint256)": "infinite", | |
| "transfer(address,uint256)": "infinite", | |
| "transferFrom(address,address,uint256)": "infinite", | |
| "transferOwnership(address)": "30854" | |
| }, | |
| "internal": { | |
| "_beforeTokenTransfer(address,address,uint256)": "infinite" | |
| } | |
| }, | |
| "methodIdentifiers": { | |
| "allowance(address,address)": "dd62ed3e", | |
| "approve(address,uint256)": "095ea7b3", | |
| "balanceOf(address)": "70a08231", | |
| "balanceOfAt(address,uint256)": "4ee2cd7e", | |
| "decimals()": "313ce567", | |
| "decreaseAllowance(address,uint256)": "a457c2d7", | |
| "increaseAllowance(address,uint256)": "39509351", | |
| "mint(address,uint256)": "40c10f19", | |
| "name()": "06fdde03", | |
| "owner()": "8da5cb5b", | |
| "renounceOwnership()": "715018a6", | |
| "snapshot()": "9711715a", | |
| "symbol()": "95d89b41", | |
| "totalSupply()": "18160ddd", | |
| "totalSupplyAt(uint256)": "981b24d0", | |
| "transfer(address,uint256)": "a9059cbb", | |
| "transferFrom(address,address,uint256)": "23b872dd", | |
| "transferOwnership(address)": "f2fde38b" | |
| } | |
| }, | |
| "abi": [ | |
| { | |
| "inputs": [], | |
| "stateMutability": "nonpayable", | |
| "type": "constructor" | |
| }, | |
| { | |
| "anonymous": false, | |
| "inputs": [ | |
| { | |
| "indexed": true, | |
| "internalType": "address", | |
| "name": "owner", | |
| "type": "address" | |
| }, | |
| { | |
| "indexed": true, | |
| "internalType": "address", | |
| "name": "spender", | |
| "type": "address" | |
| }, | |
| { | |
| "indexed": false, | |
| "internalType": "uint256", | |
| "name": "value", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "Approval", | |
| "type": "event" | |
| }, | |
| { | |
| "anonymous": false, | |
| "inputs": [ | |
| { | |
| "indexed": true, | |
| "internalType": "address", | |
| "name": "previousOwner", | |
| "type": "address" | |
| }, | |
| { | |
| "indexed": true, | |
| "internalType": "address", | |
| "name": "newOwner", | |
| "type": "address" | |
| } | |
| ], | |
| "name": "OwnershipTransferred", | |
| "type": "event" | |
| }, | |
| { | |
| "anonymous": false, | |
| "inputs": [ | |
| { | |
| "indexed": false, | |
| "internalType": "uint256", | |
| "name": "id", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "Snapshot", | |
| "type": "event" | |
| }, | |
| { | |
| "anonymous": false, | |
| "inputs": [ | |
| { | |
| "indexed": true, | |
| "internalType": "address", | |
| "name": "from", | |
| "type": "address" | |
| }, | |
| { | |
| "indexed": true, | |
| "internalType": "address", | |
| "name": "to", | |
| "type": "address" | |
| }, | |
| { | |
| "indexed": false, | |
| "internalType": "uint256", | |
| "name": "value", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "Transfer", | |
| "type": "event" | |
| }, | |
| { | |
| "inputs": [ | |
| { | |
| "internalType": "address", | |
| "name": "owner", | |
| "type": "address" | |
| }, | |
| { | |
| "internalType": "address", | |
| "name": "spender", | |
| "type": "address" | |
| } | |
| ], | |
| "name": "allowance", | |
| "outputs": [ | |
| { | |
| "internalType": "uint256", | |
| "name": "", | |
| "type": "uint256" | |
| } | |
| ], | |
| "stateMutability": "view", | |
| "type": "function" | |
| }, | |
| { | |
| "inputs": [ | |
| { | |
| "internalType": "address", | |
| "name": "spender", | |
| "type": "address" | |
| }, | |
| { | |
| "internalType": "uint256", | |
| "name": "amount", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "approve", | |
| "outputs": [ | |
| { | |
| "internalType": "bool", | |
| "name": "", | |
| "type": "bool" | |
| } | |
| ], | |
| "stateMutability": "nonpayable", | |
| "type": "function" | |
| }, | |
| { | |
| "inputs": [ | |
| { | |
| "internalType": "address", | |
| "name": "account", | |
| "type": "address" | |
| } | |
| ], | |
| "name": "balanceOf", | |
| "outputs": [ | |
| { | |
| "internalType": "uint256", | |
| "name": "", | |
| "type": "uint256" | |
| } | |
| ], | |
| "stateMutability": "view", | |
| "type": "function" | |
| }, | |
| { | |
| "inputs": [ | |
| { | |
| "internalType": "address", | |
| "name": "account", | |
| "type": "address" | |
| }, | |
| { | |
| "internalType": "uint256", | |
| "name": "snapshotId", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "balanceOfAt", | |
| "outputs": [ | |
| { | |
| "internalType": "uint256", | |
| "name": "", | |
| "type": "uint256" | |
| } | |
| ], | |
| "stateMutability": "view", | |
| "type": "function" | |
| }, | |
| { | |
| "inputs": [], | |
| "name": "decimals", | |
| "outputs": [ | |
| { | |
| "internalType": "uint8", | |
| "name": "", | |
| "type": "uint8" | |
| } | |
| ], | |
| "stateMutability": "view", | |
| "type": "function" | |
| }, | |
| { | |
| "inputs": [ | |
| { | |
| "internalType": "address", | |
| "name": "spender", | |
| "type": "address" | |
| }, | |
| { | |
| "internalType": "uint256", | |
| "name": "subtractedValue", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "decreaseAllowance", | |
| "outputs": [ | |
| { | |
| "internalType": "bool", | |
| "name": "", | |
| "type": "bool" | |
| } | |
| ], | |
| "stateMutability": "nonpayable", | |
| "type": "function" | |
| }, | |
| { | |
| "inputs": [ | |
| { | |
| "internalType": "address", | |
| "name": "spender", | |
| "type": "address" | |
| }, | |
| { | |
| "internalType": "uint256", | |
| "name": "addedValue", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "increaseAllowance", | |
| "outputs": [ | |
| { | |
| "internalType": "bool", | |
| "name": "", | |
| "type": "bool" | |
| } | |
| ], | |
| "stateMutability": "nonpayable", | |
| "type": "function" | |
| }, | |
| { | |
| "inputs": [ | |
| { | |
| "internalType": "address", | |
| "name": "to", | |
| "type": "address" | |
| }, | |
| { | |
| "internalType": "uint256", | |
| "name": "amount", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "mint", | |
| "outputs": [], | |
| "stateMutability": "nonpayable", | |
| "type": "function" | |
| }, | |
| { | |
| "inputs": [], | |
| "name": "name", | |
| "outputs": [ | |
| { | |
| "internalType": "string", | |
| "name": "", | |
| "type": "string" | |
| } | |
| ], | |
| "stateMutability": "view", | |
| "type": "function" | |
| }, | |
| { | |
| "inputs": [], | |
| "name": "owner", | |
| "outputs": [ | |
| { | |
| "internalType": "address", | |
| "name": "", | |
| "type": "address" | |
| } | |
| ], | |
| "stateMutability": "view", | |
| "type": "function" | |
| }, | |
| { | |
| "inputs": [], | |
| "name": "renounceOwnership", | |
| "outputs": [], | |
| "stateMutability": "nonpayable", | |
| "type": "function" | |
| }, | |
| { | |
| "inputs": [], | |
| "name": "snapshot", | |
| "outputs": [], | |
| "stateMutability": "nonpayable", | |
| "type": "function" | |
| }, | |
| { | |
| "inputs": [], | |
| "name": "symbol", | |
| "outputs": [ | |
| { | |
| "internalType": "string", | |
| "name": "", | |
| "type": "string" | |
| } | |
| ], | |
| "stateMutability": "view", | |
| "type": "function" | |
| }, | |
| { | |
| "inputs": [], | |
| "name": "totalSupply", | |
| "outputs": [ | |
| { | |
| "internalType": "uint256", | |
| "name": "", | |
| "type": "uint256" | |
| } | |
| ], | |
| "stateMutability": "view", | |
| "type": "function" | |
| }, | |
| { | |
| "inputs": [ | |
| { | |
| "internalType": "uint256", | |
| "name": "snapshotId", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "totalSupplyAt", | |
| "outputs": [ | |
| { | |
| "internalType": "uint256", | |
| "name": "", | |
| "type": "uint256" | |
| } | |
| ], | |
| "stateMutability": "view", | |
| "type": "function" | |
| }, | |
| { | |
| "inputs": [ | |
| { | |
| "internalType": "address", | |
| "name": "to", | |
| "type": "address" | |
| }, | |
| { | |
| "internalType": "uint256", | |
| "name": "amount", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "transfer", | |
| "outputs": [ | |
| { | |
| "internalType": "bool", | |
| "name": "", | |
| "type": "bool" | |
| } | |
| ], | |
| "stateMutability": "nonpayable", | |
| "type": "function" | |
| }, | |
| { | |
| "inputs": [ | |
| { | |
| "internalType": "address", | |
| "name": "from", | |
| "type": "address" | |
| }, | |
| { | |
| "internalType": "address", | |
| "name": "to", | |
| "type": "address" | |
| }, | |
| { | |
| "internalType": "uint256", | |
| "name": "amount", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "transferFrom", | |
| "outputs": [ | |
| { | |
| "internalType": "bool", | |
| "name": "", | |
| "type": "bool" | |
| } | |
| ], | |
| "stateMutability": "nonpayable", | |
| "type": "function" | |
| }, | |
| { | |
| "inputs": [ | |
| { | |
| "internalType": "address", | |
| "name": "newOwner", | |
| "type": "address" | |
| } | |
| ], | |
| "name": "transferOwnership", | |
| "outputs": [], | |
| "stateMutability": "nonpayable", | |
| "type": "function" | |
| } | |
| ] | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "compiler": { | |
| "version": "0.8.17+commit.8df45f5f" | |
| }, | |
| "language": "Solidity", | |
| "output": { | |
| "abi": [ | |
| { | |
| "inputs": [], | |
| "stateMutability": "nonpayable", | |
| "type": "constructor" | |
| }, | |
| { | |
| "anonymous": false, | |
| "inputs": [ | |
| { | |
| "indexed": true, | |
| "internalType": "address", | |
| "name": "owner", | |
| "type": "address" | |
| }, | |
| { | |
| "indexed": true, | |
| "internalType": "address", | |
| "name": "spender", | |
| "type": "address" | |
| }, | |
| { | |
| "indexed": false, | |
| "internalType": "uint256", | |
| "name": "value", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "Approval", | |
| "type": "event" | |
| }, | |
| { | |
| "anonymous": false, | |
| "inputs": [ | |
| { | |
| "indexed": true, | |
| "internalType": "address", | |
| "name": "previousOwner", | |
| "type": "address" | |
| }, | |
| { | |
| "indexed": true, | |
| "internalType": "address", | |
| "name": "newOwner", | |
| "type": "address" | |
| } | |
| ], | |
| "name": "OwnershipTransferred", | |
| "type": "event" | |
| }, | |
| { | |
| "anonymous": false, | |
| "inputs": [ | |
| { | |
| "indexed": false, | |
| "internalType": "uint256", | |
| "name": "id", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "Snapshot", | |
| "type": "event" | |
| }, | |
| { | |
| "anonymous": false, | |
| "inputs": [ | |
| { | |
| "indexed": true, | |
| "internalType": "address", | |
| "name": "from", | |
| "type": "address" | |
| }, | |
| { | |
| "indexed": true, | |
| "internalType": "address", | |
| "name": "to", | |
| "type": "address" | |
| }, | |
| { | |
| "indexed": false, | |
| "internalType": "uint256", | |
| "name": "value", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "Transfer", | |
| "type": "event" | |
| }, | |
| { | |
| "inputs": [ | |
| { | |
| "internalType": "address", | |
| "name": "owner", | |
| "type": "address" | |
| }, | |
| { | |
| "internalType": "address", | |
| "name": "spender", | |
| "type": "address" | |
| } | |
| ], | |
| "name": "allowance", | |
| "outputs": [ | |
| { | |
| "internalType": "uint256", | |
| "name": "", | |
| "type": "uint256" | |
| } | |
| ], | |
| "stateMutability": "view", | |
| "type": "function" | |
| }, | |
| { | |
| "inputs": [ | |
| { | |
| "internalType": "address", | |
| "name": "spender", | |
| "type": "address" | |
| }, | |
| { | |
| "internalType": "uint256", | |
| "name": "amount", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "approve", | |
| "outputs": [ | |
| { | |
| "internalType": "bool", | |
| "name": "", | |
| "type": "bool" | |
| } | |
| ], | |
| "stateMutability": "nonpayable", | |
| "type": "function" | |
| }, | |
| { | |
| "inputs": [ | |
| { | |
| "internalType": "address", | |
| "name": "account", | |
| "type": "address" | |
| } | |
| ], | |
| "name": "balanceOf", | |
| "outputs": [ | |
| { | |
| "internalType": "uint256", | |
| "name": "", | |
| "type": "uint256" | |
| } | |
| ], | |
| "stateMutability": "view", | |
| "type": "function" | |
| }, | |
| { | |
| "inputs": [ | |
| { | |
| "internalType": "address", | |
| "name": "account", | |
| "type": "address" | |
| }, | |
| { | |
| "internalType": "uint256", | |
| "name": "snapshotId", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "balanceOfAt", | |
| "outputs": [ | |
| { | |
| "internalType": "uint256", | |
| "name": "", | |
| "type": "uint256" | |
| } | |
| ], | |
| "stateMutability": "view", | |
| "type": "function" | |
| }, | |
| { | |
| "inputs": [], | |
| "name": "decimals", | |
| "outputs": [ | |
| { | |
| "internalType": "uint8", | |
| "name": "", | |
| "type": "uint8" | |
| } | |
| ], | |
| "stateMutability": "view", | |
| "type": "function" | |
| }, | |
| { | |
| "inputs": [ | |
| { | |
| "internalType": "address", | |
| "name": "spender", | |
| "type": "address" | |
| }, | |
| { | |
| "internalType": "uint256", | |
| "name": "subtractedValue", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "decreaseAllowance", | |
| "outputs": [ | |
| { | |
| "internalType": "bool", | |
| "name": "", | |
| "type": "bool" | |
| } | |
| ], | |
| "stateMutability": "nonpayable", | |
| "type": "function" | |
| }, | |
| { | |
| "inputs": [ | |
| { | |
| "internalType": "address", | |
| "name": "spender", | |
| "type": "address" | |
| }, | |
| { | |
| "internalType": "uint256", | |
| "name": "addedValue", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "increaseAllowance", | |
| "outputs": [ | |
| { | |
| "internalType": "bool", | |
| "name": "", | |
| "type": "bool" | |
| } | |
| ], | |
| "stateMutability": "nonpayable", | |
| "type": "function" | |
| }, | |
| { | |
| "inputs": [ | |
| { | |
| "internalType": "address", | |
| "name": "to", | |
| "type": "address" | |
| }, | |
| { | |
| "internalType": "uint256", | |
| "name": "amount", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "mint", | |
| "outputs": [], | |
| "stateMutability": "nonpayable", | |
| "type": "function" | |
| }, | |
| { | |
| "inputs": [], | |
| "name": "name", | |
| "outputs": [ | |
| { | |
| "internalType": "string", | |
| "name": "", | |
| "type": "string" | |
| } | |
| ], | |
| "stateMutability": "view", | |
| "type": "function" | |
| }, | |
| { | |
| "inputs": [], | |
| "name": "owner", | |
| "outputs": [ | |
| { | |
| "internalType": "address", | |
| "name": "", | |
| "type": "address" | |
| } | |
| ], | |
| "stateMutability": "view", | |
| "type": "function" | |
| }, | |
| { | |
| "inputs": [], | |
| "name": "renounceOwnership", | |
| "outputs": [], | |
| "stateMutability": "nonpayable", | |
| "type": "function" | |
| }, | |
| { | |
| "inputs": [], | |
| "name": "snapshot", | |
| "outputs": [], | |
| "stateMutability": "nonpayable", | |
| "type": "function" | |
| }, | |
| { | |
| "inputs": [], | |
| "name": "symbol", | |
| "outputs": [ | |
| { | |
| "internalType": "string", | |
| "name": "", | |
| "type": "string" | |
| } | |
| ], | |
| "stateMutability": "view", | |
| "type": "function" | |
| }, | |
| { | |
| "inputs": [], | |
| "name": "totalSupply", | |
| "outputs": [ | |
| { | |
| "internalType": "uint256", | |
| "name": "", | |
| "type": "uint256" | |
| } | |
| ], | |
| "stateMutability": "view", | |
| "type": "function" | |
| }, | |
| { | |
| "inputs": [ | |
| { | |
| "internalType": "uint256", | |
| "name": "snapshotId", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "totalSupplyAt", | |
| "outputs": [ | |
| { | |
| "internalType": "uint256", | |
| "name": "", | |
| "type": "uint256" | |
| } | |
| ], | |
| "stateMutability": "view", | |
| "type": "function" | |
| }, | |
| { | |
| "inputs": [ | |
| { | |
| "internalType": "address", | |
| "name": "to", | |
| "type": "address" | |
| }, | |
| { | |
| "internalType": "uint256", | |
| "name": "amount", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "transfer", | |
| "outputs": [ | |
| { | |
| "internalType": "bool", | |
| "name": "", | |
| "type": "bool" | |
| } | |
| ], | |
| "stateMutability": "nonpayable", | |
| "type": "function" | |
| }, | |
| { | |
| "inputs": [ | |
| { | |
| "internalType": "address", | |
| "name": "from", | |
| "type": "address" | |
| }, | |
| { | |
| "internalType": "address", | |
| "name": "to", | |
| "type": "address" | |
| }, | |
| { | |
| "internalType": "uint256", | |
| "name": "amount", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "transferFrom", | |
| "outputs": [ | |
| { | |
| "internalType": "bool", | |
| "name": "", | |
| "type": "bool" | |
| } | |
| ], | |
| "stateMutability": "nonpayable", | |
| "type": "function" | |
| }, | |
| { | |
| "inputs": [ | |
| { | |
| "internalType": "address", | |
| "name": "newOwner", | |
| "type": "address" | |
| } | |
| ], | |
| "name": "transferOwnership", | |
| "outputs": [], | |
| "stateMutability": "nonpayable", | |
| "type": "function" | |
| } | |
| ], | |
| "devdoc": { | |
| "kind": "dev", | |
| "methods": { | |
| "allowance(address,address)": { | |
| "details": "See {IERC20-allowance}." | |
| }, | |
| "approve(address,uint256)": { | |
| "details": "See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address." | |
| }, | |
| "balanceOf(address)": { | |
| "details": "See {IERC20-balanceOf}." | |
| }, | |
| "balanceOfAt(address,uint256)": { | |
| "details": "Retrieves the balance of `account` at the time `snapshotId` was created." | |
| }, | |
| "decimals()": { | |
| "details": "Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}." | |
| }, | |
| "decreaseAllowance(address,uint256)": { | |
| "details": "Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`." | |
| }, | |
| "increaseAllowance(address,uint256)": { | |
| "details": "Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address." | |
| }, | |
| "name()": { | |
| "details": "Returns the name of the token." | |
| }, | |
| "owner()": { | |
| "details": "Returns the address of the current owner." | |
| }, | |
| "renounceOwnership()": { | |
| "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner." | |
| }, | |
| "symbol()": { | |
| "details": "Returns the symbol of the token, usually a shorter version of the name." | |
| }, | |
| "totalSupply()": { | |
| "details": "See {IERC20-totalSupply}." | |
| }, | |
| "totalSupplyAt(uint256)": { | |
| "details": "Retrieves the total supply at the time `snapshotId` was created." | |
| }, | |
| "transfer(address,uint256)": { | |
| "details": "See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`." | |
| }, | |
| "transferFrom(address,address,uint256)": { | |
| "details": "See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`." | |
| }, | |
| "transferOwnership(address)": { | |
| "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner." | |
| } | |
| }, | |
| "version": 1 | |
| }, | |
| "userdoc": { | |
| "kind": "user", | |
| "methods": {}, | |
| "version": 1 | |
| } | |
| }, | |
| "settings": { | |
| "compilationTarget": { | |
| "contract-05b0f0ea18.sol": "Fitmint" | |
| }, | |
| "evmVersion": "london", | |
| "libraries": {}, | |
| "metadata": { | |
| "bytecodeHash": "ipfs" | |
| }, | |
| "optimizer": { | |
| "enabled": false, | |
| "runs": 200 | |
| }, | |
| "remappings": [] | |
| }, | |
| "sources": { | |
| "@openzeppelin/[email protected]/access/Ownable.sol": { | |
| "keccak256": "0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673", | |
| "license": "MIT", | |
| "urls": [ | |
| "bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2", | |
| "dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y" | |
| ] | |
| }, | |
| "@openzeppelin/[email protected]/token/ERC20/ERC20.sol": { | |
| "keccak256": "0x4ffc0547c02ad22925310c585c0f166f8759e2648a09e9b489100c42f15dd98d", | |
| "license": "MIT", | |
| "urls": [ | |
| "bzz-raw://15f52f51413a9de1ff191e2f6367c62178e1df7806d7880fe857a98b0b66253d", | |
| "dweb:/ipfs/QmaQG1fwfgUt5E9nu2cccFiV47B2V78MM1tCy1qB7n4MsH" | |
| ] | |
| }, | |
| "@openzeppelin/[email protected]/token/ERC20/IERC20.sol": { | |
| "keccak256": "0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b", | |
| "license": "MIT", | |
| "urls": [ | |
| "bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34", | |
| "dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr" | |
| ] | |
| }, | |
| "@openzeppelin/[email protected]/token/ERC20/extensions/ERC20Snapshot.sol": { | |
| "keccak256": "0x9f3a9fc338edd87bff11d626ee6f365ac72f03a8841c4a2938438ef81e8cf1d9", | |
| "license": "MIT", | |
| "urls": [ | |
| "bzz-raw://8d2192ec88279638f4866b2c09e017702699fdb995bf1ca167b7110bc5b29d51", | |
| "dweb:/ipfs/Qme2JhqYoH25xKpgC7qj8o9yKofJyragCuHfX4CQMuPuef" | |
| ] | |
| }, | |
| "@openzeppelin/[email protected]/token/ERC20/extensions/IERC20Metadata.sol": { | |
| "keccak256": "0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca", | |
| "license": "MIT", | |
| "urls": [ | |
| "bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd", | |
| "dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8" | |
| ] | |
| }, | |
| "@openzeppelin/[email protected]/utils/Arrays.sol": { | |
| "keccak256": "0x680e05d017ad097db73ea34e085c7c722c195c1f517f7311fcb3745571a18ba6", | |
| "license": "MIT", | |
| "urls": [ | |
| "bzz-raw://28f21c523cdacbe08106b89fd2aa4b1a85d1a22e0c80ec36628342cce546e67b", | |
| "dweb:/ipfs/QmYGMF9UVC7GScniiN5KEFP1whSF4YYHDLJTGbxDarr47B" | |
| ] | |
| }, | |
| "@openzeppelin/[email protected]/utils/Context.sol": { | |
| "keccak256": "0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7", | |
| "license": "MIT", | |
| "urls": [ | |
| "bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92", | |
| "dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3" | |
| ] | |
| }, | |
| "@openzeppelin/[email protected]/utils/Counters.sol": { | |
| "keccak256": "0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1", | |
| "license": "MIT", | |
| "urls": [ | |
| "bzz-raw://59e1c62884d55b70f3ae5432b44bb3166ad71ae3acd19c57ab6ddc3c87c325ee", | |
| "dweb:/ipfs/QmezuXg5GK5oeA4F91EZhozBFekhq5TD966bHPH18cCqhu" | |
| ] | |
| }, | |
| "@openzeppelin/[email protected]/utils/StorageSlot.sol": { | |
| "keccak256": "0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d", | |
| "license": "MIT", | |
| "urls": [ | |
| "bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4", | |
| "dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B" | |
| ] | |
| }, | |
| "@openzeppelin/[email protected]/utils/math/Math.sol": { | |
| "keccak256": "0xa1e8e83cd0087785df04ac79fb395d9f3684caeaf973d9e2c71caef723a3a5d6", | |
| "license": "MIT", | |
| "urls": [ | |
| "bzz-raw://33bbf48cc069be677705037ba7520c22b1b622c23b33e1a71495f2d36549d40b", | |
| "dweb:/ipfs/Qmct36zWXv3j7LZB83uwbg7TXwnZSN1fqHNDZ93GG98bGz" | |
| ] | |
| }, | |
| "contract-05b0f0ea18.sol": { | |
| "keccak256": "0x1531ea7cd948231156f5d0583454ddf4bf0efe6a279eff258507e5d7a539bb5c", | |
| "license": "MIT", | |
| "urls": [ | |
| "bzz-raw://1f2a3ab225f72123fb24195591064185bed2c816b38028bd48a49b8c1ec755f6", | |
| "dweb:/ipfs/QmV1w25GKEqvLCQpCY6k7XTmpSXjBghhk6wW1Mge5dhNSR" | |
| ] | |
| } | |
| }, | |
| "version": 1 | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // SPDX-License-Identifier: MIT | |
| pragma solidity ^0.8.9; | |
| import "@openzeppelin/[email protected]/token/ERC20/ERC20.sol"; | |
| import "@openzeppelin/[email protected]/token/ERC20/extensions/ERC20Snapshot.sol"; | |
| import "@openzeppelin/[email protected]/access/Ownable.sol"; | |
| contract Fitmint is ERC20, ERC20Snapshot, Ownable { | |
| constructor() ERC20("Fitmint", "Fit") {} | |
| function snapshot() public onlyOwner { | |
| _snapshot(); | |
| } | |
| function mint(address to, uint256 amount) public onlyOwner { | |
| _mint(to, amount); | |
| } | |
| // The following functions are overrides required by Solidity. | |
| function _beforeTokenTransfer(address from, address to, uint256 amount) | |
| internal | |
| override(ERC20, ERC20Snapshot) | |
| { | |
| super._beforeTokenTransfer(from, to, amount); | |
| } | |
| } |
This file has been truncated, but you can view the full file.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "id": "9187d9c4d2626680f613e776d6b14c86", | |
| "_format": "hh-sol-build-info-1", | |
| "solcVersion": "0.8.17", | |
| "solcLongVersion": "0.8.17+commit.8df45f5f", | |
| "input": { | |
| "language": "Solidity", | |
| "sources": { | |
| "contract-05b0f0ea18.sol": { | |
| "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\nimport \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\";\nimport \"@openzeppelin/[email protected]/token/ERC20/extensions/ERC20Snapshot.sol\";\nimport \"@openzeppelin/[email protected]/access/Ownable.sol\";\n\ncontract Fitmint is ERC20, ERC20Snapshot, Ownable {\n constructor() ERC20(\"Fitmint\", \"Fit\") {}\n\n function snapshot() public onlyOwner {\n _snapshot();\n }\n\n function mint(address to, uint256 amount) public onlyOwner {\n _mint(to, amount);\n }\n\n // The following functions are overrides required by Solidity.\n\n function _beforeTokenTransfer(address from, address to, uint256 amount)\n internal\n override(ERC20, ERC20Snapshot)\n {\n super._beforeTokenTransfer(from, to, amount);\n }\n}\n" | |
| }, | |
| "@openzeppelin/[email protected]/access/Ownable.sol": { | |
| "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is Context {\n address private _owner;\n\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n /**\n * @dev Initializes the contract setting the deployer as the initial owner.\n */\n constructor() {\n _transferOwnership(_msgSender());\n }\n\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n _checkOwner();\n _;\n }\n\n /**\n * @dev Returns the address of the current owner.\n */\n function owner() public view virtual returns (address) {\n return _owner;\n }\n\n /**\n * @dev Throws if the sender is not the owner.\n */\n function _checkOwner() internal view virtual {\n require(owner() == _msgSender(), \"Ownable: caller is not the owner\");\n }\n\n /**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions anymore. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby removing any functionality that is only available to the owner.\n */\n function renounceOwnership() public virtual onlyOwner {\n _transferOwnership(address(0));\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public virtual onlyOwner {\n require(newOwner != address(0), \"Ownable: new owner is the zero address\");\n _transferOwnership(newOwner);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Internal function without access restriction.\n */\n function _transferOwnership(address newOwner) internal virtual {\n address oldOwner = _owner;\n _owner = newOwner;\n emit OwnershipTransferred(oldOwner, newOwner);\n }\n}\n" | |
| }, | |
| "@openzeppelin/[email protected]/token/ERC20/extensions/ERC20Snapshot.sol": { | |
| "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC20/extensions/ERC20Snapshot.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../ERC20.sol\";\nimport \"../../../utils/Arrays.sol\";\nimport \"../../../utils/Counters.sol\";\n\n/**\n * @dev This contract extends an ERC20 token with a snapshot mechanism. When a snapshot is created, the balances and\n * total supply at the time are recorded for later access.\n *\n * This can be used to safely create mechanisms based on token balances such as trustless dividends or weighted voting.\n * In naive implementations it's possible to perform a \"double spend\" attack by reusing the same balance from different\n * accounts. By using snapshots to calculate dividends or voting power, those attacks no longer apply. It can also be\n * used to create an efficient ERC20 forking mechanism.\n *\n * Snapshots are created by the internal {_snapshot} function, which will emit the {Snapshot} event and return a\n * snapshot id. To get the total supply at the time of a snapshot, call the function {totalSupplyAt} with the snapshot\n * id. To get the balance of an account at the time of a snapshot, call the {balanceOfAt} function with the snapshot id\n * and the account address.\n *\n * NOTE: Snapshot policy can be customized by overriding the {_getCurrentSnapshotId} method. For example, having it\n * return `block.number` will trigger the creation of snapshot at the beginning of each new block. When overriding this\n * function, be careful about the monotonicity of its result. Non-monotonic snapshot ids will break the contract.\n *\n * Implementing snapshots for every block using this method will incur significant gas costs. For a gas-efficient\n * alternative consider {ERC20Votes}.\n *\n * ==== Gas Costs\n *\n * Snapshots are efficient. Snapshot creation is _O(1)_. Retrieval of balances or total supply from a snapshot is _O(log\n * n)_ in the number of snapshots that have been created, although _n_ for a specific account will generally be much\n * smaller since identical balances in subsequent snapshots are stored as a single entry.\n *\n * There is a constant overhead for normal ERC20 transfers due to the additional snapshot bookkeeping. This overhead is\n * only significant for the first transfer that immediately follows a snapshot for a particular account. Subsequent\n * transfers will have normal cost until the next snapshot, and so on.\n */\n\nabstract contract ERC20Snapshot is ERC20 {\n // Inspired by Jordi Baylina's MiniMeToken to record historical balances:\n // https://github.com/Giveth/minime/blob/ea04d950eea153a04c51fa510b068b9dded390cb/contracts/MiniMeToken.sol\n\n using Arrays for uint256[];\n using Counters for Counters.Counter;\n\n // Snapshotted values have arrays of ids and the value corresponding to that id. These could be an array of a\n // Snapshot struct, but that would impede usage of functions that work on an array.\n struct Snapshots {\n uint256[] ids;\n uint256[] values;\n }\n\n mapping(address => Snapshots) private _accountBalanceSnapshots;\n Snapshots private _totalSupplySnapshots;\n\n // Snapshot ids increase monotonically, with the first value being 1. An id of 0 is invalid.\n Counters.Counter private _currentSnapshotId;\n\n /**\n * @dev Emitted by {_snapshot} when a snapshot identified by `id` is created.\n */\n event Snapshot(uint256 id);\n\n /**\n * @dev Creates a new snapshot and returns its snapshot id.\n *\n * Emits a {Snapshot} event that contains the same id.\n *\n * {_snapshot} is `internal` and you have to decide how to expose it externally. Its usage may be restricted to a\n * set of accounts, for example using {AccessControl}, or it may be open to the public.\n *\n * [WARNING]\n * ====\n * While an open way of calling {_snapshot} is required for certain trust minimization mechanisms such as forking,\n * you must consider that it can potentially be used by attackers in two ways.\n *\n * First, it can be used to increase the cost of retrieval of values from snapshots, although it will grow\n * logarithmically thus rendering this attack ineffective in the long term. Second, it can be used to target\n * specific accounts and increase the cost of ERC20 transfers for them, in the ways specified in the Gas Costs\n * section above.\n *\n * We haven't measured the actual numbers; if this is something you're interested in please reach out to us.\n * ====\n */\n function _snapshot() internal virtual returns (uint256) {\n _currentSnapshotId.increment();\n\n uint256 currentId = _getCurrentSnapshotId();\n emit Snapshot(currentId);\n return currentId;\n }\n\n /**\n * @dev Get the current snapshotId\n */\n function _getCurrentSnapshotId() internal view virtual returns (uint256) {\n return _currentSnapshotId.current();\n }\n\n /**\n * @dev Retrieves the balance of `account` at the time `snapshotId` was created.\n */\n function balanceOfAt(address account, uint256 snapshotId) public view virtual returns (uint256) {\n (bool snapshotted, uint256 value) = _valueAt(snapshotId, _accountBalanceSnapshots[account]);\n\n return snapshotted ? value : balanceOf(account);\n }\n\n /**\n * @dev Retrieves the total supply at the time `snapshotId` was created.\n */\n function totalSupplyAt(uint256 snapshotId) public view virtual returns (uint256) {\n (bool snapshotted, uint256 value) = _valueAt(snapshotId, _totalSupplySnapshots);\n\n return snapshotted ? value : totalSupply();\n }\n\n // Update balance and/or total supply snapshots before the values are modified. This is implemented\n // in the _beforeTokenTransfer hook, which is executed for _mint, _burn, and _transfer operations.\n function _beforeTokenTransfer(\n address from,\n address to,\n uint256 amount\n ) internal virtual override {\n super._beforeTokenTransfer(from, to, amount);\n\n if (from == address(0)) {\n // mint\n _updateAccountSnapshot(to);\n _updateTotalSupplySnapshot();\n } else if (to == address(0)) {\n // burn\n _updateAccountSnapshot(from);\n _updateTotalSupplySnapshot();\n } else {\n // transfer\n _updateAccountSnapshot(from);\n _updateAccountSnapshot(to);\n }\n }\n\n function _valueAt(uint256 snapshotId, Snapshots storage snapshots) private view returns (bool, uint256) {\n require(snapshotId > 0, \"ERC20Snapshot: id is 0\");\n require(snapshotId <= _getCurrentSnapshotId(), \"ERC20Snapshot: nonexistent id\");\n\n // When a valid snapshot is queried, there are three possibilities:\n // a) The queried value was not modified after the snapshot was taken. Therefore, a snapshot entry was never\n // created for this id, and all stored snapshot ids are smaller than the requested one. The value that corresponds\n // to this id is the current one.\n // b) The queried value was modified after the snapshot was taken. Therefore, there will be an entry with the\n // requested id, and its value is the one to return.\n // c) More snapshots were created after the requested one, and the queried value was later modified. There will be\n // no entry for the requested id: the value that corresponds to it is that of the smallest snapshot id that is\n // larger than the requested one.\n //\n // In summary, we need to find an element in an array, returning the index of the smallest value that is larger if\n // it is not found, unless said value doesn't exist (e.g. when all values are smaller). Arrays.findUpperBound does\n // exactly this.\n\n uint256 index = snapshots.ids.findUpperBound(snapshotId);\n\n if (index == snapshots.ids.length) {\n return (false, 0);\n } else {\n return (true, snapshots.values[index]);\n }\n }\n\n function _updateAccountSnapshot(address account) private {\n _updateSnapshot(_accountBalanceSnapshots[account], balanceOf(account));\n }\n\n function _updateTotalSupplySnapshot() private {\n _updateSnapshot(_totalSupplySnapshots, totalSupply());\n }\n\n function _updateSnapshot(Snapshots storage snapshots, uint256 currentValue) private {\n uint256 currentId = _getCurrentSnapshotId();\n if (_lastSnapshotId(snapshots.ids) < currentId) {\n snapshots.ids.push(currentId);\n snapshots.values.push(currentValue);\n }\n }\n\n function _lastSnapshotId(uint256[] storage ids) private view returns (uint256) {\n if (ids.length == 0) {\n return 0;\n } else {\n return ids[ids.length - 1];\n }\n }\n}\n" | |
| }, | |
| "@openzeppelin/[email protected]/token/ERC20/ERC20.sol": { | |
| "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC20.sol\";\nimport \"./extensions/IERC20Metadata.sol\";\nimport \"../../utils/Context.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n * For a generic mechanism see {ERC20PresetMinterPauser}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\n * instead returning `false` on failure. This behavior is nonetheless\n * conventional and does not conflict with the expectations of ERC20\n * applications.\n *\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n * This allows applications to reconstruct the allowance for all accounts just\n * by listening to said events. Other implementations of the EIP may not emit\n * these events, as it isn't required by the specification.\n *\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n * functions have been added to mitigate the well-known issues around setting\n * allowances. See {IERC20-approve}.\n */\ncontract ERC20 is Context, IERC20, IERC20Metadata {\n mapping(address => uint256) private _balances;\n\n mapping(address => mapping(address => uint256)) private _allowances;\n\n uint256 private _totalSupply;\n\n string private _name;\n string private _symbol;\n\n /**\n * @dev Sets the values for {name} and {symbol}.\n *\n * The default value of {decimals} is 18. To select a different value for\n * {decimals} you should overload it.\n *\n * All two of these values are immutable: they can only be set once during\n * construction.\n */\n constructor(string memory name_, string memory symbol_) {\n _name = name_;\n _symbol = symbol_;\n }\n\n /**\n * @dev Returns the name of the token.\n */\n function name() public view virtual override returns (string memory) {\n return _name;\n }\n\n /**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */\n function symbol() public view virtual override returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev Returns the number of decimals used to get its user representation.\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\n * be displayed to a user as `5.05` (`505 / 10 ** 2`).\n *\n * Tokens usually opt for a value of 18, imitating the relationship between\n * Ether and Wei. This is the value {ERC20} uses, unless this function is\n * overridden;\n *\n * NOTE: This information is only used for _display_ purposes: it in\n * no way affects any of the arithmetic of the contract, including\n * {IERC20-balanceOf} and {IERC20-transfer}.\n */\n function decimals() public view virtual override returns (uint8) {\n return 18;\n }\n\n /**\n * @dev See {IERC20-totalSupply}.\n */\n function totalSupply() public view virtual override returns (uint256) {\n return _totalSupply;\n }\n\n /**\n * @dev See {IERC20-balanceOf}.\n */\n function balanceOf(address account) public view virtual override returns (uint256) {\n return _balances[account];\n }\n\n /**\n * @dev See {IERC20-transfer}.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - the caller must have a balance of at least `amount`.\n */\n function transfer(address to, uint256 amount) public virtual override returns (bool) {\n address owner = _msgSender();\n _transfer(owner, to, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-allowance}.\n */\n function allowance(address owner, address spender) public view virtual override returns (uint256) {\n return _allowances[owner][spender];\n }\n\n /**\n * @dev See {IERC20-approve}.\n *\n * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on\n * `transferFrom`. This is semantically equivalent to an infinite approval.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function approve(address spender, uint256 amount) public virtual override returns (bool) {\n address owner = _msgSender();\n _approve(owner, spender, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-transferFrom}.\n *\n * Emits an {Approval} event indicating the updated allowance. This is not\n * required by the EIP. See the note at the beginning of {ERC20}.\n *\n * NOTE: Does not update the allowance if the current allowance\n * is the maximum `uint256`.\n *\n * Requirements:\n *\n * - `from` and `to` cannot be the zero address.\n * - `from` must have a balance of at least `amount`.\n * - the caller must have allowance for ``from``'s tokens of at least\n * `amount`.\n */\n function transferFrom(\n address from,\n address to,\n uint256 amount\n ) public virtual override returns (bool) {\n address spender = _msgSender();\n _spendAllowance(from, spender, amount);\n _transfer(from, to, amount);\n return true;\n }\n\n /**\n * @dev Atomically increases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\n address owner = _msgSender();\n _approve(owner, spender, allowance(owner, spender) + addedValue);\n return true;\n }\n\n /**\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `spender` must have allowance for the caller of at least\n * `subtractedValue`.\n */\n function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\n address owner = _msgSender();\n uint256 currentAllowance = allowance(owner, spender);\n require(currentAllowance >= subtractedValue, \"ERC20: decreased allowance below zero\");\n unchecked {\n _approve(owner, spender, currentAllowance - subtractedValue);\n }\n\n return true;\n }\n\n /**\n * @dev Moves `amount` of tokens from `from` to `to`.\n *\n * This internal function is equivalent to {transfer}, and can be used to\n * e.g. implement automatic token fees, slashing mechanisms, etc.\n *\n * Emits a {Transfer} event.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `from` must have a balance of at least `amount`.\n */\n function _transfer(\n address from,\n address to,\n uint256 amount\n ) internal virtual {\n require(from != address(0), \"ERC20: transfer from the zero address\");\n require(to != address(0), \"ERC20: transfer to the zero address\");\n\n _beforeTokenTransfer(from, to, amount);\n\n uint256 fromBalance = _balances[from];\n require(fromBalance >= amount, \"ERC20: transfer amount exceeds balance\");\n unchecked {\n _balances[from] = fromBalance - amount;\n // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by\n // decrementing then incrementing.\n _balances[to] += amount;\n }\n\n emit Transfer(from, to, amount);\n\n _afterTokenTransfer(from, to, amount);\n }\n\n /** @dev Creates `amount` tokens and assigns them to `account`, increasing\n * the total supply.\n *\n * Emits a {Transfer} event with `from` set to the zero address.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n */\n function _mint(address account, uint256 amount) internal virtual {\n require(account != address(0), \"ERC20: mint to the zero address\");\n\n _beforeTokenTransfer(address(0), account, amount);\n\n _totalSupply += amount;\n unchecked {\n // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.\n _balances[account] += amount;\n }\n emit Transfer(address(0), account, amount);\n\n _afterTokenTransfer(address(0), account, amount);\n }\n\n /**\n * @dev Destroys `amount` tokens from `account`, reducing the\n * total supply.\n *\n * Emits a {Transfer} event with `to` set to the zero address.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n * - `account` must have at least `amount` tokens.\n */\n function _burn(address account, uint256 amount) internal virtual {\n require(account != address(0), \"ERC20: burn from the zero address\");\n\n _beforeTokenTransfer(account, address(0), amount);\n\n uint256 accountBalance = _balances[account];\n require(accountBalance >= amount, \"ERC20: burn amount exceeds balance\");\n unchecked {\n _balances[account] = accountBalance - amount;\n // Overflow not possible: amount <= accountBalance <= totalSupply.\n _totalSupply -= amount;\n }\n\n emit Transfer(account, address(0), amount);\n\n _afterTokenTransfer(account, address(0), amount);\n }\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n *\n * This internal function is equivalent to `approve`, and can be used to\n * e.g. set automatic allowances for certain subsystems, etc.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `owner` cannot be the zero address.\n * - `spender` cannot be the zero address.\n */\n function _approve(\n address owner,\n address spender,\n uint256 amount\n ) internal virtual {\n require(owner != address(0), \"ERC20: approve from the zero address\");\n require(spender != address(0), \"ERC20: approve to the zero address\");\n\n _allowances[owner][spender] = amount;\n emit Approval(owner, spender, amount);\n }\n\n /**\n * @dev Updates `owner` s allowance for `spender` based on spent `amount`.\n *\n * Does not update the allowance amount in case of infinite allowance.\n * Revert if not enough allowance is available.\n *\n * Might emit an {Approval} event.\n */\n function _spendAllowance(\n address owner,\n address spender,\n uint256 amount\n ) internal virtual {\n uint256 currentAllowance = allowance(owner, spender);\n if (currentAllowance != type(uint256).max) {\n require(currentAllowance >= amount, \"ERC20: insufficient allowance\");\n unchecked {\n _approve(owner, spender, currentAllowance - amount);\n }\n }\n }\n\n /**\n * @dev Hook that is called before any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * will be transferred to `to`.\n * - when `from` is zero, `amount` tokens will be minted for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _beforeTokenTransfer(\n address from,\n address to,\n uint256 amount\n ) internal virtual {}\n\n /**\n * @dev Hook that is called after any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * has been transferred to `to`.\n * - when `from` is zero, `amount` tokens have been minted for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens have been burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _afterTokenTransfer(\n address from,\n address to,\n uint256 amount\n ) internal virtual {}\n}\n" | |
| }, | |
| "@openzeppelin/[email protected]/utils/Counters.sol": { | |
| "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @title Counters\n * @author Matt Condon (@shrugs)\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\n *\n * Include with `using Counters for Counters.Counter;`\n */\nlibrary Counters {\n struct Counter {\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\n // this feature: see https://github.com/ethereum/solidity/issues/4637\n uint256 _value; // default: 0\n }\n\n function current(Counter storage counter) internal view returns (uint256) {\n return counter._value;\n }\n\n function increment(Counter storage counter) internal {\n unchecked {\n counter._value += 1;\n }\n }\n\n function decrement(Counter storage counter) internal {\n uint256 value = counter._value;\n require(value > 0, \"Counter: decrement overflow\");\n unchecked {\n counter._value = value - 1;\n }\n }\n\n function reset(Counter storage counter) internal {\n counter._value = 0;\n }\n}\n" | |
| }, | |
| "@openzeppelin/[email protected]/utils/Arrays.sol": { | |
| "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/Arrays.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./StorageSlot.sol\";\nimport \"./math/Math.sol\";\n\n/**\n * @dev Collection of functions related to array types.\n */\nlibrary Arrays {\n using StorageSlot for bytes32;\n\n /**\n * @dev Searches a sorted `array` and returns the first index that contains\n * a value greater or equal to `element`. If no such index exists (i.e. all\n * values in the array are strictly less than `element`), the array length is\n * returned. Time complexity O(log n).\n *\n * `array` is expected to be sorted in ascending order, and to contain no\n * repeated elements.\n */\n function findUpperBound(uint256[] storage array, uint256 element) internal view returns (uint256) {\n if (array.length == 0) {\n return 0;\n }\n\n uint256 low = 0;\n uint256 high = array.length;\n\n while (low < high) {\n uint256 mid = Math.average(low, high);\n\n // Note that mid will always be strictly less than high (i.e. it will be a valid array index)\n // because Math.average rounds down (it does integer division with truncation).\n if (unsafeAccess(array, mid).value > element) {\n high = mid;\n } else {\n low = mid + 1;\n }\n }\n\n // At this point `low` is the exclusive upper bound. We will return the inclusive upper bound.\n if (low > 0 && unsafeAccess(array, low - 1).value == element) {\n return low - 1;\n } else {\n return low;\n }\n }\n\n /**\n * @dev Access an array in an \"unsafe\" way. Skips solidity \"index-out-of-range\" check.\n *\n * WARNING: Only use if you are certain `pos` is lower than the array length.\n */\n function unsafeAccess(address[] storage arr, uint256 pos) internal pure returns (StorageSlot.AddressSlot storage) {\n bytes32 slot;\n /// @solidity memory-safe-assembly\n assembly {\n mstore(0, arr.slot)\n slot := add(keccak256(0, 0x20), pos)\n }\n return slot.getAddressSlot();\n }\n\n /**\n * @dev Access an array in an \"unsafe\" way. Skips solidity \"index-out-of-range\" check.\n *\n * WARNING: Only use if you are certain `pos` is lower than the array length.\n */\n function unsafeAccess(bytes32[] storage arr, uint256 pos) internal pure returns (StorageSlot.Bytes32Slot storage) {\n bytes32 slot;\n /// @solidity memory-safe-assembly\n assembly {\n mstore(0, arr.slot)\n slot := add(keccak256(0, 0x20), pos)\n }\n return slot.getBytes32Slot();\n }\n\n /**\n * @dev Access an array in an \"unsafe\" way. Skips solidity \"index-out-of-range\" check.\n *\n * WARNING: Only use if you are certain `pos` is lower than the array length.\n */\n function unsafeAccess(uint256[] storage arr, uint256 pos) internal pure returns (StorageSlot.Uint256Slot storage) {\n bytes32 slot;\n /// @solidity memory-safe-assembly\n assembly {\n mstore(0, arr.slot)\n slot := add(keccak256(0, 0x20), pos)\n }\n return slot.getUint256Slot();\n }\n}\n" | |
| }, | |
| "@openzeppelin/[email protected]/utils/Context.sol": { | |
| "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n}\n" | |
| }, | |
| "@openzeppelin/[email protected]/token/ERC20/extensions/IERC20Metadata.sol": { | |
| "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC20.sol\";\n\n/**\n * @dev Interface for the optional metadata functions from the ERC20 standard.\n *\n * _Available since v4.1._\n */\ninterface IERC20Metadata is IERC20 {\n /**\n * @dev Returns the name of the token.\n */\n function name() external view returns (string memory);\n\n /**\n * @dev Returns the symbol of the token.\n */\n function symbol() external view returns (string memory);\n\n /**\n * @dev Returns the decimals places of the token.\n */\n function decimals() external view returns (uint8);\n}\n" | |
| }, | |
| "@openzeppelin/[email protected]/token/ERC20/IERC20.sol": { | |
| "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n /**\n * @dev Returns the amount of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address to, uint256 amount) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 amount) external returns (bool);\n\n /**\n * @dev Moves `amount` tokens from `from` to `to` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(\n address from,\n address to,\n uint256 amount\n ) external returns (bool);\n}\n" | |
| }, | |
| "@openzeppelin/[email protected]/utils/math/Math.sol": { | |
| "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/Math.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Standard math utilities missing in the Solidity language.\n */\nlibrary Math {\n enum Rounding {\n Down, // Toward negative infinity\n Up, // Toward infinity\n Zero // Toward zero\n }\n\n /**\n * @dev Returns the largest of two numbers.\n */\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\n return a > b ? a : b;\n }\n\n /**\n * @dev Returns the smallest of two numbers.\n */\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\n return a < b ? a : b;\n }\n\n /**\n * @dev Returns the average of two numbers. The result is rounded towards\n * zero.\n */\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\n // (a + b) / 2 can overflow.\n return (a & b) + (a ^ b) / 2;\n }\n\n /**\n * @dev Returns the ceiling of the division of two numbers.\n *\n * This differs from standard division with `/` in that it rounds up instead\n * of rounding down.\n */\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\n // (a + b - 1) / b can overflow on addition, so we distribute.\n return a == 0 ? 0 : (a - 1) / b + 1;\n }\n\n /**\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\n * with further edits by Uniswap Labs also under MIT license.\n */\n function mulDiv(\n uint256 x,\n uint256 y,\n uint256 denominator\n ) internal pure returns (uint256 result) {\n unchecked {\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\n // variables such that product = prod1 * 2^256 + prod0.\n uint256 prod0; // Least significant 256 bits of the product\n uint256 prod1; // Most significant 256 bits of the product\n assembly {\n let mm := mulmod(x, y, not(0))\n prod0 := mul(x, y)\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\n }\n\n // Handle non-overflow cases, 256 by 256 division.\n if (prod1 == 0) {\n return prod0 / denominator;\n }\n\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\n require(denominator > prod1);\n\n ///////////////////////////////////////////////\n // 512 by 256 division.\n ///////////////////////////////////////////////\n\n // Make division exact by subtracting the remainder from [prod1 prod0].\n uint256 remainder;\n assembly {\n // Compute remainder using mulmod.\n remainder := mulmod(x, y, denominator)\n\n // Subtract 256 bit number from 512 bit number.\n prod1 := sub(prod1, gt(remainder, prod0))\n prod0 := sub(prod0, remainder)\n }\n\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\n // See https://cs.stackexchange.com/q/138556/92363.\n\n // Does not overflow because the denominator cannot be zero at this stage in the function.\n uint256 twos = denominator & (~denominator + 1);\n assembly {\n // Divide denominator by twos.\n denominator := div(denominator, twos)\n\n // Divide [prod1 prod0] by twos.\n prod0 := div(prod0, twos)\n\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\n twos := add(div(sub(0, twos), twos), 1)\n }\n\n // Shift in bits from prod1 into prod0.\n prod0 |= prod1 * twos;\n\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\n // four bits. That is, denominator * inv = 1 mod 2^4.\n uint256 inverse = (3 * denominator) ^ 2;\n\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\n // in modular arithmetic, doubling the correct bits in each step.\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\n\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\n // is no longer required.\n result = prod0 * inverse;\n return result;\n }\n }\n\n /**\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\n */\n function mulDiv(\n uint256 x,\n uint256 y,\n uint256 denominator,\n Rounding rounding\n ) internal pure returns (uint256) {\n uint256 result = mulDiv(x, y, denominator);\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\n result += 1;\n }\n return result;\n }\n\n /**\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\n *\n * Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11).\n */\n function sqrt(uint256 a) internal pure returns (uint256) {\n if (a == 0) {\n return 0;\n }\n\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\n //\n // We know that the \"msb\" (most significant bit) of our target number `a` is a power of 2 such that we have\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\n //\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\n // → `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\n // → `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\n //\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\n uint256 result = 1 << (log2(a) >> 1);\n\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\n // into the expected uint128 result.\n unchecked {\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n return min(result, a / result);\n }\n }\n\n /**\n * @notice Calculates sqrt(a), following the selected rounding direction.\n */\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = sqrt(a);\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 2, rounded down, of a positive value.\n * Returns 0 if given 0.\n */\n function log2(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >> 128 > 0) {\n value >>= 128;\n result += 128;\n }\n if (value >> 64 > 0) {\n value >>= 64;\n result += 64;\n }\n if (value >> 32 > 0) {\n value >>= 32;\n result += 32;\n }\n if (value >> 16 > 0) {\n value >>= 16;\n result += 16;\n }\n if (value >> 8 > 0) {\n value >>= 8;\n result += 8;\n }\n if (value >> 4 > 0) {\n value >>= 4;\n result += 4;\n }\n if (value >> 2 > 0) {\n value >>= 2;\n result += 2;\n }\n if (value >> 1 > 0) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log2(value);\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 10, rounded down, of a positive value.\n * Returns 0 if given 0.\n */\n function log10(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >= 10**64) {\n value /= 10**64;\n result += 64;\n }\n if (value >= 10**32) {\n value /= 10**32;\n result += 32;\n }\n if (value >= 10**16) {\n value /= 10**16;\n result += 16;\n }\n if (value >= 10**8) {\n value /= 10**8;\n result += 8;\n }\n if (value >= 10**4) {\n value /= 10**4;\n result += 4;\n }\n if (value >= 10**2) {\n value /= 10**2;\n result += 2;\n }\n if (value >= 10**1) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log10(value);\n return result + (rounding == Rounding.Up && 10**result < value ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 256, rounded down, of a positive value.\n * Returns 0 if given 0.\n *\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\n */\n function log256(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >> 128 > 0) {\n value >>= 128;\n result += 16;\n }\n if (value >> 64 > 0) {\n value >>= 64;\n result += 8;\n }\n if (value >> 32 > 0) {\n value >>= 32;\n result += 4;\n }\n if (value >> 16 > 0) {\n value >>= 16;\n result += 2;\n }\n if (value >> 8 > 0) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log256(value);\n return result + (rounding == Rounding.Up && 1 << (result * 8) < value ? 1 : 0);\n }\n }\n}\n" | |
| }, | |
| "@openzeppelin/[email protected]/utils/StorageSlot.sol": { | |
| "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/StorageSlot.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Library for reading and writing primitive types to specific storage slots.\n *\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n * This library helps with reading and writing to such slots without the need for inline assembly.\n *\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n *\n * Example usage to set ERC1967 implementation slot:\n * ```\n * contract ERC1967 {\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n *\n * function _getImplementation() internal view returns (address) {\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n * }\n *\n * function _setImplementation(address newImplementation) internal {\n * require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n * }\n * }\n * ```\n *\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\n */\nlibrary StorageSlot {\n struct AddressSlot {\n address value;\n }\n\n struct BooleanSlot {\n bool value;\n }\n\n struct Bytes32Slot {\n bytes32 value;\n }\n\n struct Uint256Slot {\n uint256 value;\n }\n\n /**\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\n */\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\n */\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\n */\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\n */\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n}\n" | |
| } | |
| }, | |
| "settings": { | |
| "optimizer": { | |
| "enabled": false, | |
| "runs": 200 | |
| }, | |
| "outputSelection": { | |
| "*": { | |
| "": [ | |
| "ast" | |
| ], | |
| "*": [ | |
| "abi", | |
| "metadata", | |
| "devdoc", | |
| "userdoc", | |
| "storageLayout", | |
| "evm.legacyAssembly", | |
| "evm.bytecode", | |
| "evm.deployedBytecode", | |
| "evm.methodIdentifiers", | |
| "evm.gasEstimates", | |
| "evm.assembly" | |
| ] | |
| } | |
| } | |
| } | |
| }, | |
| "output": { | |
| "contracts": { | |
| "@openzeppelin/[email protected]/access/Ownable.sol": { | |
| "Ownable": { | |
| "abi": [ | |
| { | |
| "anonymous": false, | |
| "inputs": [ | |
| { | |
| "indexed": true, | |
| "internalType": "address", | |
| "name": "previousOwner", | |
| "type": "address" | |
| }, | |
| { | |
| "indexed": true, | |
| "internalType": "address", | |
| "name": "newOwner", | |
| "type": "address" | |
| } | |
| ], | |
| "name": "OwnershipTransferred", | |
| "type": "event" | |
| }, | |
| { | |
| "inputs": [], | |
| "name": "owner", | |
| "outputs": [ | |
| { | |
| "internalType": "address", | |
| "name": "", | |
| "type": "address" | |
| } | |
| ], | |
| "stateMutability": "view", | |
| "type": "function" | |
| }, | |
| { | |
| "inputs": [], | |
| "name": "renounceOwnership", | |
| "outputs": [], | |
| "stateMutability": "nonpayable", | |
| "type": "function" | |
| }, | |
| { | |
| "inputs": [ | |
| { | |
| "internalType": "address", | |
| "name": "newOwner", | |
| "type": "address" | |
| } | |
| ], | |
| "name": "transferOwnership", | |
| "outputs": [], | |
| "stateMutability": "nonpayable", | |
| "type": "function" | |
| } | |
| ], | |
| "devdoc": { | |
| "details": "Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.", | |
| "kind": "dev", | |
| "methods": { | |
| "constructor": { | |
| "details": "Initializes the contract setting the deployer as the initial owner." | |
| }, | |
| "owner()": { | |
| "details": "Returns the address of the current owner." | |
| }, | |
| "renounceOwnership()": { | |
| "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner." | |
| }, | |
| "transferOwnership(address)": { | |
| "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner." | |
| } | |
| }, | |
| "version": 1 | |
| }, | |
| "evm": { | |
| "assembly": "", | |
| "bytecode": { | |
| "functionDebugData": {}, | |
| "generatedSources": [], | |
| "linkReferences": {}, | |
| "object": "", | |
| "opcodes": "", | |
| "sourceMap": "" | |
| }, | |
| "deployedBytecode": { | |
| "functionDebugData": {}, | |
| "generatedSources": [], | |
| "immutableReferences": {}, | |
| "linkReferences": {}, | |
| "object": "", | |
| "opcodes": "", | |
| "sourceMap": "" | |
| }, | |
| "gasEstimates": null, | |
| "legacyAssembly": null, | |
| "methodIdentifiers": { | |
| "owner()": "8da5cb5b", | |
| "renounceOwnership()": "715018a6", | |
| "transferOwnership(address)": "f2fde38b" | |
| } | |
| }, | |
| "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract setting the deployer as the initial owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/[email protected]/access/Ownable.sol\":\"Ownable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/[email protected]/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"@openzeppelin/[email protected]/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]}},\"version\":1}", | |
| "storageLayout": { | |
| "storage": [ | |
| { | |
| "astId": 7, | |
| "contract": "@openzeppelin/[email protected]/access/Ownable.sol:Ownable", | |
| "label": "_owner", | |
| "offset": 0, | |
| "slot": "0", | |
| "type": "t_address" | |
| } | |
| ], | |
| "types": { | |
| "t_address": { | |
| "encoding": "inplace", | |
| "label": "address", | |
| "numberOfBytes": "20" | |
| } | |
| } | |
| }, | |
| "userdoc": { | |
| "kind": "user", | |
| "methods": {}, | |
| "version": 1 | |
| } | |
| } | |
| }, | |
| "@openzeppelin/[email protected]/token/ERC20/ERC20.sol": { | |
| "ERC20": { | |
| "abi": [ | |
| { | |
| "inputs": [ | |
| { | |
| "internalType": "string", | |
| "name": "name_", | |
| "type": "string" | |
| }, | |
| { | |
| "internalType": "string", | |
| "name": "symbol_", | |
| "type": "string" | |
| } | |
| ], | |
| "stateMutability": "nonpayable", | |
| "type": "constructor" | |
| }, | |
| { | |
| "anonymous": false, | |
| "inputs": [ | |
| { | |
| "indexed": true, | |
| "internalType": "address", | |
| "name": "owner", | |
| "type": "address" | |
| }, | |
| { | |
| "indexed": true, | |
| "internalType": "address", | |
| "name": "spender", | |
| "type": "address" | |
| }, | |
| { | |
| "indexed": false, | |
| "internalType": "uint256", | |
| "name": "value", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "Approval", | |
| "type": "event" | |
| }, | |
| { | |
| "anonymous": false, | |
| "inputs": [ | |
| { | |
| "indexed": true, | |
| "internalType": "address", | |
| "name": "from", | |
| "type": "address" | |
| }, | |
| { | |
| "indexed": true, | |
| "internalType": "address", | |
| "name": "to", | |
| "type": "address" | |
| }, | |
| { | |
| "indexed": false, | |
| "internalType": "uint256", | |
| "name": "value", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "Transfer", | |
| "type": "event" | |
| }, | |
| { | |
| "inputs": [ | |
| { | |
| "internalType": "address", | |
| "name": "owner", | |
| "type": "address" | |
| }, | |
| { | |
| "internalType": "address", | |
| "name": "spender", | |
| "type": "address" | |
| } | |
| ], | |
| "name": "allowance", | |
| "outputs": [ | |
| { | |
| "internalType": "uint256", | |
| "name": "", | |
| "type": "uint256" | |
| } | |
| ], | |
| "stateMutability": "view", | |
| "type": "function" | |
| }, | |
| { | |
| "inputs": [ | |
| { | |
| "internalType": "address", | |
| "name": "spender", | |
| "type": "address" | |
| }, | |
| { | |
| "internalType": "uint256", | |
| "name": "amount", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "approve", | |
| "outputs": [ | |
| { | |
| "internalType": "bool", | |
| "name": "", | |
| "type": "bool" | |
| } | |
| ], | |
| "stateMutability": "nonpayable", | |
| "type": "function" | |
| }, | |
| { | |
| "inputs": [ | |
| { | |
| "internalType": "address", | |
| "name": "account", | |
| "type": "address" | |
| } | |
| ], | |
| "name": "balanceOf", | |
| "outputs": [ | |
| { | |
| "internalType": "uint256", | |
| "name": "", | |
| "type": "uint256" | |
| } | |
| ], | |
| "stateMutability": "view", | |
| "type": "function" | |
| }, | |
| { | |
| "inputs": [], | |
| "name": "decimals", | |
| "outputs": [ | |
| { | |
| "internalType": "uint8", | |
| "name": "", | |
| "type": "uint8" | |
| } | |
| ], | |
| "stateMutability": "view", | |
| "type": "function" | |
| }, | |
| { | |
| "inputs": [ | |
| { | |
| "internalType": "address", | |
| "name": "spender", | |
| "type": "address" | |
| }, | |
| { | |
| "internalType": "uint256", | |
| "name": "subtractedValue", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "decreaseAllowance", | |
| "outputs": [ | |
| { | |
| "internalType": "bool", | |
| "name": "", | |
| "type": "bool" | |
| } | |
| ], | |
| "stateMutability": "nonpayable", | |
| "type": "function" | |
| }, | |
| { | |
| "inputs": [ | |
| { | |
| "internalType": "address", | |
| "name": "spender", | |
| "type": "address" | |
| }, | |
| { | |
| "internalType": "uint256", | |
| "name": "addedValue", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "increaseAllowance", | |
| "outputs": [ | |
| { | |
| "internalType": "bool", | |
| "name": "", | |
| "type": "bool" | |
| } | |
| ], | |
| "stateMutability": "nonpayable", | |
| "type": "function" | |
| }, | |
| { | |
| "inputs": [], | |
| "name": "name", | |
| "outputs": [ | |
| { | |
| "internalType": "string", | |
| "name": "", | |
| "type": "string" | |
| } | |
| ], | |
| "stateMutability": "view", | |
| "type": "function" | |
| }, | |
| { | |
| "inputs": [], | |
| "name": "symbol", | |
| "outputs": [ | |
| { | |
| "internalType": "string", | |
| "name": "", | |
| "type": "string" | |
| } | |
| ], | |
| "stateMutability": "view", | |
| "type": "function" | |
| }, | |
| { | |
| "inputs": [], | |
| "name": "totalSupply", | |
| "outputs": [ | |
| { | |
| "internalType": "uint256", | |
| "name": "", | |
| "type": "uint256" | |
| } | |
| ], | |
| "stateMutability": "view", | |
| "type": "function" | |
| }, | |
| { | |
| "inputs": [ | |
| { | |
| "internalType": "address", | |
| "name": "to", | |
| "type": "address" | |
| }, | |
| { | |
| "internalType": "uint256", | |
| "name": "amount", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "transfer", | |
| "outputs": [ | |
| { | |
| "internalType": "bool", | |
| "name": "", | |
| "type": "bool" | |
| } | |
| ], | |
| "stateMutability": "nonpayable", | |
| "type": "function" | |
| }, | |
| { | |
| "inputs": [ | |
| { | |
| "internalType": "address", | |
| "name": "from", | |
| "type": "address" | |
| }, | |
| { | |
| "internalType": "address", | |
| "name": "to", | |
| "type": "address" | |
| }, | |
| { | |
| "internalType": "uint256", | |
| "name": "amount", | |
| "type": "uint256" | |
| } | |
| ], | |
| "name": "transferFrom", | |
| "outputs": [ | |
| { | |
| "internalType": "bool", | |
| "name": "", | |
| "type": "bool" | |
| } | |
| ], | |
| "stateMutability": "nonpayable", | |
| "type": "function" | |
| } | |
| ], | |
| "devdoc": { | |
| "details": "Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. For a generic mechanism see {ERC20PresetMinterPauser}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification. Finally, the non-standard {decreaseAllowance} and {increaseAllowance} functions have been added to mitigate the well-known issues around setting allowances. See {IERC20-approve}.", | |
| "kind": "dev", | |
| "methods": { | |
| "allowance(address,address)": { | |
| "details": "See {IERC20-allowance}." | |
| }, | |
| "approve(address,uint256)": { | |
| "details": "See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address." | |
| }, | |
| "balanceOf(address)": { | |
| "details": "See {IERC20-balanceOf}." | |
| }, | |
| "constructor": { | |
| "details": "Sets the values for {name} and {symbol}. The default value of {decimals} is 18. To select a different value for {decimals} you should overload it. All two of these values are immutable: they can only be set once during construction." | |
| }, | |
| "decimals()": { | |
| "details": "Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}." | |
| }, | |
| "decreaseAllowance(address,uint256)": { | |
| "details": "Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`." | |
| }, | |
| "increaseAllowance(address,uint256)": { | |
| "details": "Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address." | |
| }, | |
| "name()": { | |
| "details": "Returns the name of the token." | |
| }, | |
| "symbol()": { | |
| "details": "Returns the symbol of the token, usually a shorter version of the name." | |
| }, | |
| "totalSupply()": { | |
| "details": "See {IERC20-totalSupply}." | |
| }, | |
| "transfer(address,uint256)": { | |
| "details": "See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`." | |
| }, | |
| "transferFrom(address,address,uint256)": { | |
| "details": "See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`." | |
| } | |
| }, | |
| "version": 1 | |
| }, | |
| "evm": { | |
| "assembly": " /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":1401:13011 contract ERC20 is Context, IERC20, IERC20Metadata {... */\n mstore(0x40, 0x80)\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":1976:2089 constructor(string memory name_, string memory symbol_) {... */\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\ntag_1:\n pop\n mload(0x40)\n sub(codesize, bytecodeSize)\n dup1\n bytecodeSize\n dup4\n codecopy\n dup2\n dup2\n add\n 0x40\n mstore\n dup2\n add\n swap1\n tag_2\n swap2\n swap1\n tag_3\n jump\t// in\ntag_2:\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":2050:2055 name_ */\n dup2\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":2042:2047 _name */\n 0x03\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":2042:2055 _name = name_ */\n swap1\n dup2\n tag_6\n swap2\n swap1\n tag_7\n jump\t// in\ntag_6:\n pop\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":2075:2082 symbol_ */\n dup1\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":2065:2072 _symbol */\n 0x04\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":2065:2082 _symbol = symbol_ */\n swap1\n dup2\n tag_8\n swap2\n swap1\n tag_7\n jump\t// in\ntag_8:\n pop\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":1976:2089 constructor(string memory name_, string memory symbol_) {... */\n pop\n pop\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":1401:13011 contract ERC20 is Context, IERC20, IERC20Metadata {... */\n jump(tag_9)\n /* \"#utility.yul\":7:82 */\ntag_10:\n /* \"#utility.yul\":40:46 */\n 0x00\n /* \"#utility.yul\":73:75 */\n 0x40\n /* \"#utility.yul\":67:76 */\n mload\n /* \"#utility.yul\":57:76 */\n swap1\n pop\n /* \"#utility.yul\":7:82 */\n swap1\n jump\t// out\n /* \"#utility.yul\":88:205 */\ntag_11:\n /* \"#utility.yul\":197:198 */\n 0x00\n /* \"#utility.yul\":194:195 */\n dup1\n /* \"#utility.yul\":187:199 */\n revert\n /* \"#utility.yul\":211:328 */\ntag_12:\n /* \"#utility.yul\":320:321 */\n 0x00\n /* \"#utility.yul\":317:318 */\n dup1\n /* \"#utility.yul\":310:322 */\n revert\n /* \"#utility.yul\":334:451 */\ntag_13:\n /* \"#utility.yul\":443:444 */\n 0x00\n /* \"#utility.yul\":440:441 */\n dup1\n /* \"#utility.yul\":433:445 */\n revert\n /* \"#utility.yul\":457:574 */\ntag_14:\n /* \"#utility.yul\":566:567 */\n 0x00\n /* \"#utility.yul\":563:564 */\n dup1\n /* \"#utility.yul\":556:568 */\n revert\n /* \"#utility.yul\":580:682 */\ntag_15:\n /* \"#utility.yul\":621:627 */\n 0x00\n /* \"#utility.yul\":672:674 */\n 0x1f\n /* \"#utility.yul\":668:675 */\n not\n /* \"#utility.yul\":663:665 */\n 0x1f\n /* \"#utility.yul\":656:661 */\n dup4\n /* \"#utility.yul\":652:666 */\n add\n /* \"#utility.yul\":648:676 */\n and\n /* \"#utility.yul\":638:676 */\n swap1\n pop\n /* \"#utility.yul\":580:682 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":688:868 */\ntag_16:\n /* \"#utility.yul\":736:813 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":733:734 */\n 0x00\n /* \"#utility.yul\":726:814 */\n mstore\n /* \"#utility.yul\":833:837 */\n 0x41\n /* \"#utility.yul\":830:831 */\n 0x04\n /* \"#utility.yul\":823:838 */\n mstore\n /* \"#utility.yul\":857:861 */\n 0x24\n /* \"#utility.yul\":854:855 */\n 0x00\n /* \"#utility.yul\":847:862 */\n revert\n /* \"#utility.yul\":874:1155 */\ntag_17:\n /* \"#utility.yul\":957:984 */\n tag_51\n /* \"#utility.yul\":979:983 */\n dup3\n /* \"#utility.yul\":957:984 */\n tag_15\n jump\t// in\ntag_51:\n /* \"#utility.yul\":949:955 */\n dup2\n /* \"#utility.yul\":945:985 */\n add\n /* \"#utility.yul\":1087:1093 */\n dup2\n /* \"#utility.yul\":1075:1085 */\n dup2\n /* \"#utility.yul\":1072:1094 */\n lt\n /* \"#utility.yul\":1051:1069 */\n 0xffffffffffffffff\n /* \"#utility.yul\":1039:1049 */\n dup3\n /* \"#utility.yul\":1036:1070 */\n gt\n /* \"#utility.yul\":1033:1095 */\n or\n /* \"#utility.yul\":1030:1118 */\n iszero\n tag_52\n jumpi\n /* \"#utility.yul\":1098:1116 */\n tag_53\n tag_16\n jump\t// in\ntag_53:\n /* \"#utility.yul\":1030:1118 */\ntag_52:\n /* \"#utility.yul\":1138:1148 */\n dup1\n /* \"#utility.yul\":1134:1136 */\n 0x40\n /* \"#utility.yul\":1127:1149 */\n mstore\n /* \"#utility.yul\":917:1155 */\n pop\n /* \"#utility.yul\":874:1155 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":1161:1290 */\ntag_18:\n /* \"#utility.yul\":1195:1201 */\n 0x00\n /* \"#utility.yul\":1222:1242 */\n tag_55\n tag_10\n jump\t// in\ntag_55:\n /* \"#utility.yul\":1212:1242 */\n swap1\n pop\n /* \"#utility.yul\":1251:1284 */\n tag_56\n /* \"#utility.yul\":1279:1283 */\n dup3\n /* \"#utility.yul\":1271:1277 */\n dup3\n /* \"#utility.yul\":1251:1284 */\n tag_17\n jump\t// in\ntag_56:\n /* \"#utility.yul\":1161:1290 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":1296:1604 */\ntag_19:\n /* \"#utility.yul\":1358:1362 */\n 0x00\n /* \"#utility.yul\":1448:1466 */\n 0xffffffffffffffff\n /* \"#utility.yul\":1440:1446 */\n dup3\n /* \"#utility.yul\":1437:1467 */\n gt\n /* \"#utility.yul\":1434:1490 */\n iszero\n tag_58\n jumpi\n /* \"#utility.yul\":1470:1488 */\n tag_59\n tag_16\n jump\t// in\ntag_59:\n /* \"#utility.yul\":1434:1490 */\ntag_58:\n /* \"#utility.yul\":1508:1537 */\n tag_60\n /* \"#utility.yul\":1530:1536 */\n dup3\n /* \"#utility.yul\":1508:1537 */\n tag_15\n jump\t// in\ntag_60:\n /* \"#utility.yul\":1500:1537 */\n swap1\n pop\n /* \"#utility.yul\":1592:1596 */\n 0x20\n /* \"#utility.yul\":1586:1590 */\n dup2\n /* \"#utility.yul\":1582:1597 */\n add\n /* \"#utility.yul\":1574:1597 */\n swap1\n pop\n /* \"#utility.yul\":1296:1604 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":1610:1856 */\ntag_20:\n /* \"#utility.yul\":1691:1692 */\n 0x00\n /* \"#utility.yul\":1701:1814 */\ntag_62:\n /* \"#utility.yul\":1715:1721 */\n dup4\n /* \"#utility.yul\":1712:1713 */\n dup2\n /* \"#utility.yul\":1709:1722 */\n lt\n /* \"#utility.yul\":1701:1814 */\n iszero\n tag_64\n jumpi\n /* \"#utility.yul\":1800:1801 */\n dup1\n /* \"#utility.yul\":1795:1798 */\n dup3\n /* \"#utility.yul\":1791:1802 */\n add\n /* \"#utility.yul\":1785:1803 */\n mload\n /* \"#utility.yul\":1781:1782 */\n dup2\n /* \"#utility.yul\":1776:1779 */\n dup5\n /* \"#utility.yul\":1772:1783 */\n add\n /* \"#utility.yul\":1765:1804 */\n mstore\n /* \"#utility.yul\":1737:1739 */\n 0x20\n /* \"#utility.yul\":1734:1735 */\n dup2\n /* \"#utility.yul\":1730:1740 */\n add\n /* \"#utility.yul\":1725:1740 */\n swap1\n pop\n /* \"#utility.yul\":1701:1814 */\n jump(tag_62)\ntag_64:\n /* \"#utility.yul\":1848:1849 */\n 0x00\n /* \"#utility.yul\":1839:1845 */\n dup5\n /* \"#utility.yul\":1834:1837 */\n dup5\n /* \"#utility.yul\":1830:1846 */\n add\n /* \"#utility.yul\":1823:1850 */\n mstore\n /* \"#utility.yul\":1672:1856 */\n pop\n /* \"#utility.yul\":1610:1856 */\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":1862:2296 */\ntag_21:\n /* \"#utility.yul\":1951:1956 */\n 0x00\n /* \"#utility.yul\":1976:2042 */\n tag_66\n /* \"#utility.yul\":1992:2041 */\n tag_67\n /* \"#utility.yul\":2034:2040 */\n dup5\n /* \"#utility.yul\":1992:2041 */\n tag_19\n jump\t// in\ntag_67:\n /* \"#utility.yul\":1976:2042 */\n tag_18\n jump\t// in\ntag_66:\n /* \"#utility.yul\":1967:2042 */\n swap1\n pop\n /* \"#utility.yul\":2065:2071 */\n dup3\n /* \"#utility.yul\":2058:2063 */\n dup2\n /* \"#utility.yul\":2051:2072 */\n mstore\n /* \"#utility.yul\":2103:2107 */\n 0x20\n /* \"#utility.yul\":2096:2101 */\n dup2\n /* \"#utility.yul\":2092:2108 */\n add\n /* \"#utility.yul\":2141:2144 */\n dup5\n /* \"#utility.yul\":2132:2138 */\n dup5\n /* \"#utility.yul\":2127:2130 */\n dup5\n /* \"#utility.yul\":2123:2139 */\n add\n /* \"#utility.yul\":2120:2145 */\n gt\n /* \"#utility.yul\":2117:2229 */\n iszero\n tag_68\n jumpi\n /* \"#utility.yul\":2148:2227 */\n tag_69\n tag_14\n jump\t// in\ntag_69:\n /* \"#utility.yul\":2117:2229 */\ntag_68:\n /* \"#utility.yul\":2238:2290 */\n tag_70\n /* \"#utility.yul\":2283:2289 */\n dup5\n /* \"#utility.yul\":2278:2281 */\n dup3\n /* \"#utility.yul\":2273:2276 */\n dup6\n /* \"#utility.yul\":2238:2290 */\n tag_20\n jump\t// in\ntag_70:\n /* \"#utility.yul\":1957:2296 */\n pop\n /* \"#utility.yul\":1862:2296 */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":2316:2671 */\ntag_22:\n /* \"#utility.yul\":2383:2388 */\n 0x00\n /* \"#utility.yul\":2432:2435 */\n dup3\n /* \"#utility.yul\":2425:2429 */\n 0x1f\n /* \"#utility.yul\":2417:2423 */\n dup4\n /* \"#utility.yul\":2413:2430 */\n add\n /* \"#utility.yul\":2409:2436 */\n slt\n /* \"#utility.yul\":2399:2521 */\n tag_72\n jumpi\n /* \"#utility.yul\":2440:2519 */\n tag_73\n tag_13\n jump\t// in\ntag_73:\n /* \"#utility.yul\":2399:2521 */\ntag_72:\n /* \"#utility.yul\":2550:2556 */\n dup2\n /* \"#utility.yul\":2544:2557 */\n mload\n /* \"#utility.yul\":2575:2665 */\n tag_74\n /* \"#utility.yul\":2661:2664 */\n dup5\n /* \"#utility.yul\":2653:2659 */\n dup3\n /* \"#utility.yul\":2646:2650 */\n 0x20\n /* \"#utility.yul\":2638:2644 */\n dup7\n /* \"#utility.yul\":2634:2651 */\n add\n /* \"#utility.yul\":2575:2665 */\n tag_21\n jump\t// in\ntag_74:\n /* \"#utility.yul\":2566:2665 */\n swap2\n pop\n /* \"#utility.yul\":2389:2671 */\n pop\n /* \"#utility.yul\":2316:2671 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":2677:3530 */\ntag_3:\n /* \"#utility.yul\":2776:2782 */\n 0x00\n /* \"#utility.yul\":2784:2790 */\n dup1\n /* \"#utility.yul\":2833:2835 */\n 0x40\n /* \"#utility.yul\":2821:2830 */\n dup4\n /* \"#utility.yul\":2812:2819 */\n dup6\n /* \"#utility.yul\":2808:2831 */\n sub\n /* \"#utility.yul\":2804:2836 */\n slt\n /* \"#utility.yul\":2801:2920 */\n iszero\n tag_76\n jumpi\n /* \"#utility.yul\":2839:2918 */\n tag_77\n tag_11\n jump\t// in\ntag_77:\n /* \"#utility.yul\":2801:2920 */\ntag_76:\n /* \"#utility.yul\":2980:2981 */\n 0x00\n /* \"#utility.yul\":2969:2978 */\n dup4\n /* \"#utility.yul\":2965:2982 */\n add\n /* \"#utility.yul\":2959:2983 */\n mload\n /* \"#utility.yul\":3010:3028 */\n 0xffffffffffffffff\n /* \"#utility.yul\":3002:3008 */\n dup2\n /* \"#utility.yul\":2999:3029 */\n gt\n /* \"#utility.yul\":2996:3113 */\n iszero\n tag_78\n jumpi\n /* \"#utility.yul\":3032:3111 */\n tag_79\n tag_12\n jump\t// in\ntag_79:\n /* \"#utility.yul\":2996:3113 */\ntag_78:\n /* \"#utility.yul\":3137:3211 */\n tag_80\n /* \"#utility.yul\":3203:3210 */\n dup6\n /* \"#utility.yul\":3194:3200 */\n dup3\n /* \"#utility.yul\":3183:3192 */\n dup7\n /* \"#utility.yul\":3179:3201 */\n add\n /* \"#utility.yul\":3137:3211 */\n tag_22\n jump\t// in\ntag_80:\n /* \"#utility.yul\":3127:3211 */\n swap3\n pop\n /* \"#utility.yul\":2930:3221 */\n pop\n /* \"#utility.yul\":3281:3283 */\n 0x20\n /* \"#utility.yul\":3270:3279 */\n dup4\n /* \"#utility.yul\":3266:3284 */\n add\n /* \"#utility.yul\":3260:3285 */\n mload\n /* \"#utility.yul\":3312:3330 */\n 0xffffffffffffffff\n /* \"#utility.yul\":3304:3310 */\n dup2\n /* \"#utility.yul\":3301:3331 */\n gt\n /* \"#utility.yul\":3298:3415 */\n iszero\n tag_81\n jumpi\n /* \"#utility.yul\":3334:3413 */\n tag_82\n tag_12\n jump\t// in\ntag_82:\n /* \"#utility.yul\":3298:3415 */\ntag_81:\n /* \"#utility.yul\":3439:3513 */\n tag_83\n /* \"#utility.yul\":3505:3512 */\n dup6\n /* \"#utility.yul\":3496:3502 */\n dup3\n /* \"#utility.yul\":3485:3494 */\n dup7\n /* \"#utility.yul\":3481:3503 */\n add\n /* \"#utility.yul\":3439:3513 */\n tag_22\n jump\t// in\ntag_83:\n /* \"#utility.yul\":3429:3513 */\n swap2\n pop\n /* \"#utility.yul\":3231:3523 */\n pop\n /* \"#utility.yul\":2677:3530 */\n swap3\n pop\n swap3\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":3536:3635 */\ntag_23:\n /* \"#utility.yul\":3588:3594 */\n 0x00\n /* \"#utility.yul\":3622:3627 */\n dup2\n /* \"#utility.yul\":3616:3628 */\n mload\n /* \"#utility.yul\":3606:3628 */\n swap1\n pop\n /* \"#utility.yul\":3536:3635 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":3641:3821 */\ntag_24:\n /* \"#utility.yul\":3689:3766 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":3686:3687 */\n 0x00\n /* \"#utility.yul\":3679:3767 */\n mstore\n /* \"#utility.yul\":3786:3790 */\n 0x22\n /* \"#utility.yul\":3783:3784 */\n 0x04\n /* \"#utility.yul\":3776:3791 */\n mstore\n /* \"#utility.yul\":3810:3814 */\n 0x24\n /* \"#utility.yul\":3807:3808 */\n 0x00\n /* \"#utility.yul\":3800:3815 */\n revert\n /* \"#utility.yul\":3827:4147 */\ntag_25:\n /* \"#utility.yul\":3871:3877 */\n 0x00\n /* \"#utility.yul\":3908:3909 */\n 0x02\n /* \"#utility.yul\":3902:3906 */\n dup3\n /* \"#utility.yul\":3898:3910 */\n div\n /* \"#utility.yul\":3888:3910 */\n swap1\n pop\n /* \"#utility.yul\":3955:3956 */\n 0x01\n /* \"#utility.yul\":3949:3953 */\n dup3\n /* \"#utility.yul\":3945:3957 */\n and\n /* \"#utility.yul\":3976:3994 */\n dup1\n /* \"#utility.yul\":3966:4047 */\n tag_87\n jumpi\n /* \"#utility.yul\":4032:4036 */\n 0x7f\n /* \"#utility.yul\":4024:4030 */\n dup3\n /* \"#utility.yul\":4020:4037 */\n and\n /* \"#utility.yul\":4010:4037 */\n swap2\n pop\n /* \"#utility.yul\":3966:4047 */\ntag_87:\n /* \"#utility.yul\":4094:4096 */\n 0x20\n /* \"#utility.yul\":4086:4092 */\n dup3\n /* \"#utility.yul\":4083:4097 */\n lt\n /* \"#utility.yul\":4063:4081 */\n dup2\n /* \"#utility.yul\":4060:4098 */\n sub\n /* \"#utility.yul\":4057:4141 */\n tag_88\n jumpi\n /* \"#utility.yul\":4113:4131 */\n tag_89\n tag_24\n jump\t// in\ntag_89:\n /* \"#utility.yul\":4057:4141 */\ntag_88:\n /* \"#utility.yul\":3878:4147 */\n pop\n /* \"#utility.yul\":3827:4147 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":4153:4294 */\ntag_26:\n /* \"#utility.yul\":4202:4206 */\n 0x00\n /* \"#utility.yul\":4225:4228 */\n dup2\n /* \"#utility.yul\":4217:4228 */\n swap1\n pop\n /* \"#utility.yul\":4248:4251 */\n dup2\n /* \"#utility.yul\":4245:4246 */\n 0x00\n /* \"#utility.yul\":4238:4252 */\n mstore\n /* \"#utility.yul\":4282:4286 */\n 0x20\n /* \"#utility.yul\":4279:4280 */\n 0x00\n /* \"#utility.yul\":4269:4287 */\n keccak256\n /* \"#utility.yul\":4261:4287 */\n swap1\n pop\n /* \"#utility.yul\":4153:4294 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":4300:4393 */\ntag_27:\n /* \"#utility.yul\":4337:4343 */\n 0x00\n /* \"#utility.yul\":4384:4386 */\n 0x20\n /* \"#utility.yul\":4379:4381 */\n 0x1f\n /* \"#utility.yul\":4372:4377 */\n dup4\n /* \"#utility.yul\":4368:4382 */\n add\n /* \"#utility.yul\":4364:4387 */\n div\n /* \"#utility.yul\":4354:4387 */\n swap1\n pop\n /* \"#utility.yul\":4300:4393 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":4399:4506 */\ntag_28:\n /* \"#utility.yul\":4443:4451 */\n 0x00\n /* \"#utility.yul\":4493:4498 */\n dup3\n /* \"#utility.yul\":4487:4491 */\n dup3\n /* \"#utility.yul\":4483:4499 */\n shl\n /* \"#utility.yul\":4462:4499 */\n swap1\n pop\n /* \"#utility.yul\":4399:4506 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":4512:4905 */\ntag_29:\n /* \"#utility.yul\":4581:4587 */\n 0x00\n /* \"#utility.yul\":4631:4632 */\n 0x08\n /* \"#utility.yul\":4619:4629 */\n dup4\n /* \"#utility.yul\":4615:4633 */\n mul\n /* \"#utility.yul\":4654:4751 */\n tag_94\n /* \"#utility.yul\":4684:4750 */\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n /* \"#utility.yul\":4673:4682 */\n dup3\n /* \"#utility.yul\":4654:4751 */\n tag_28\n jump\t// in\ntag_94:\n /* \"#utility.yul\":4772:4811 */\n tag_95\n /* \"#utility.yul\":4802:4810 */\n dup7\n /* \"#utility.yul\":4791:4800 */\n dup4\n /* \"#utility.yul\":4772:4811 */\n tag_28\n jump\t// in\ntag_95:\n /* \"#utility.yul\":4760:4811 */\n swap6\n pop\n /* \"#utility.yul\":4844:4848 */\n dup1\n /* \"#utility.yul\":4840:4849 */\n not\n /* \"#utility.yul\":4833:4838 */\n dup5\n /* \"#utility.yul\":4829:4850 */\n and\n /* \"#utility.yul\":4820:4850 */\n swap4\n pop\n /* \"#utility.yul\":4893:4897 */\n dup1\n /* \"#utility.yul\":4883:4891 */\n dup7\n /* \"#utility.yul\":4879:4898 */\n and\n /* \"#utility.yul\":4872:4877 */\n dup5\n /* \"#utility.yul\":4869:4899 */\n or\n /* \"#utility.yul\":4859:4899 */\n swap3\n pop\n /* \"#utility.yul\":4588:4905 */\n pop\n pop\n /* \"#utility.yul\":4512:4905 */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":4911:4988 */\ntag_30:\n /* \"#utility.yul\":4948:4955 */\n 0x00\n /* \"#utility.yul\":4977:4982 */\n dup2\n /* \"#utility.yul\":4966:4982 */\n swap1\n pop\n /* \"#utility.yul\":4911:4988 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":4994:5054 */\ntag_31:\n /* \"#utility.yul\":5022:5025 */\n 0x00\n /* \"#utility.yul\":5043:5048 */\n dup2\n /* \"#utility.yul\":5036:5048 */\n swap1\n pop\n /* \"#utility.yul\":4994:5054 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":5060:5202 */\ntag_32:\n /* \"#utility.yul\":5110:5119 */\n 0x00\n /* \"#utility.yul\":5143:5196 */\n tag_99\n /* \"#utility.yul\":5161:5195 */\n tag_100\n /* \"#utility.yul\":5170:5194 */\n tag_101\n /* \"#utility.yul\":5188:5193 */\n dup5\n /* \"#utility.yul\":5170:5194 */\n tag_30\n jump\t// in\ntag_101:\n /* \"#utility.yul\":5161:5195 */\n tag_31\n jump\t// in\ntag_100:\n /* \"#utility.yul\":5143:5196 */\n tag_30\n jump\t// in\ntag_99:\n /* \"#utility.yul\":5130:5196 */\n swap1\n pop\n /* \"#utility.yul\":5060:5202 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":5208:5283 */\ntag_33:\n /* \"#utility.yul\":5251:5254 */\n 0x00\n /* \"#utility.yul\":5272:5277 */\n dup2\n /* \"#utility.yul\":5265:5277 */\n swap1\n pop\n /* \"#utility.yul\":5208:5283 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":5289:5558 */\ntag_34:\n /* \"#utility.yul\":5399:5438 */\n tag_104\n /* \"#utility.yul\":5430:5437 */\n dup4\n /* \"#utility.yul\":5399:5438 */\n tag_32\n jump\t// in\ntag_104:\n /* \"#utility.yul\":5460:5551 */\n tag_105\n /* \"#utility.yul\":5509:5550 */\n tag_106\n /* \"#utility.yul\":5533:5549 */\n dup3\n /* \"#utility.yul\":5509:5550 */\n tag_33\n jump\t// in\ntag_106:\n /* \"#utility.yul\":5501:5507 */\n dup5\n /* \"#utility.yul\":5494:5498 */\n dup5\n /* \"#utility.yul\":5488:5499 */\n sload\n /* \"#utility.yul\":5460:5551 */\n tag_29\n jump\t// in\ntag_105:\n /* \"#utility.yul\":5454:5458 */\n dup3\n /* \"#utility.yul\":5447:5552 */\n sstore\n /* \"#utility.yul\":5365:5558 */\n pop\n /* \"#utility.yul\":5289:5558 */\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":5564:5637 */\ntag_35:\n /* \"#utility.yul\":5609:5612 */\n 0x00\n /* \"#utility.yul\":5564:5637 */\n swap1\n jump\t// out\n /* \"#utility.yul\":5643:5832 */\ntag_36:\n /* \"#utility.yul\":5720:5752 */\n tag_109\n tag_35\n jump\t// in\ntag_109:\n /* \"#utility.yul\":5761:5826 */\n tag_110\n /* \"#utility.yul\":5819:5825 */\n dup2\n /* \"#utility.yul\":5811:5817 */\n dup5\n /* \"#utility.yul\":5805:5809 */\n dup5\n /* \"#utility.yul\":5761:5826 */\n tag_34\n jump\t// in\ntag_110:\n /* \"#utility.yul\":5696:5832 */\n pop\n /* \"#utility.yul\":5643:5832 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":5838:6024 */\ntag_37:\n /* \"#utility.yul\":5898:6018 */\ntag_112:\n /* \"#utility.yul\":5915:5918 */\n dup2\n /* \"#utility.yul\":5908:5913 */\n dup2\n /* \"#utility.yul\":5905:5919 */\n lt\n /* \"#utility.yul\":5898:6018 */\n iszero\n tag_114\n jumpi\n /* \"#utility.yul\":5969:6008 */\n tag_115\n /* \"#utility.yul\":6006:6007 */\n 0x00\n /* \"#utility.yul\":5999:6004 */\n dup3\n /* \"#utility.yul\":5969:6008 */\n tag_36\n jump\t// in\ntag_115:\n /* \"#utility.yul\":5942:5943 */\n 0x01\n /* \"#utility.yul\":5935:5940 */\n dup2\n /* \"#utility.yul\":5931:5944 */\n add\n /* \"#utility.yul\":5922:5944 */\n swap1\n pop\n /* \"#utility.yul\":5898:6018 */\n jump(tag_112)\ntag_114:\n /* \"#utility.yul\":5838:6024 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":6030:6573 */\ntag_38:\n /* \"#utility.yul\":6131:6133 */\n 0x1f\n /* \"#utility.yul\":6126:6129 */\n dup3\n /* \"#utility.yul\":6123:6134 */\n gt\n /* \"#utility.yul\":6120:6566 */\n iszero\n tag_117\n jumpi\n /* \"#utility.yul\":6165:6203 */\n tag_118\n /* \"#utility.yul\":6197:6202 */\n dup2\n /* \"#utility.yul\":6165:6203 */\n tag_26\n jump\t// in\ntag_118:\n /* \"#utility.yul\":6249:6278 */\n tag_119\n /* \"#utility.yul\":6267:6277 */\n dup5\n /* \"#utility.yul\":6249:6278 */\n tag_27\n jump\t// in\ntag_119:\n /* \"#utility.yul\":6239:6247 */\n dup2\n /* \"#utility.yul\":6235:6279 */\n add\n /* \"#utility.yul\":6432:6434 */\n 0x20\n /* \"#utility.yul\":6420:6430 */\n dup6\n /* \"#utility.yul\":6417:6435 */\n lt\n /* \"#utility.yul\":6414:6463 */\n iszero\n tag_120\n jumpi\n /* \"#utility.yul\":6453:6461 */\n dup2\n /* \"#utility.yul\":6438:6461 */\n swap1\n pop\n /* \"#utility.yul\":6414:6463 */\ntag_120:\n /* \"#utility.yul\":6476:6556 */\n tag_121\n /* \"#utility.yul\":6532:6554 */\n tag_122\n /* \"#utility.yul\":6550:6553 */\n dup6\n /* \"#utility.yul\":6532:6554 */\n tag_27\n jump\t// in\ntag_122:\n /* \"#utility.yul\":6522:6530 */\n dup4\n /* \"#utility.yul\":6518:6555 */\n add\n /* \"#utility.yul\":6505:6516 */\n dup3\n /* \"#utility.yul\":6476:6556 */\n tag_37\n jump\t// in\ntag_121:\n /* \"#utility.yul\":6135:6566 */\n pop\n pop\n /* \"#utility.yul\":6120:6566 */\ntag_117:\n /* \"#utility.yul\":6030:6573 */\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":6579:6696 */\ntag_39:\n /* \"#utility.yul\":6633:6641 */\n 0x00\n /* \"#utility.yul\":6683:6688 */\n dup3\n /* \"#utility.yul\":6677:6681 */\n dup3\n /* \"#utility.yul\":6673:6689 */\n shr\n /* \"#utility.yul\":6652:6689 */\n swap1\n pop\n /* \"#utility.yul\":6579:6696 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":6702:6871 */\ntag_40:\n /* \"#utility.yul\":6746:6752 */\n 0x00\n /* \"#utility.yul\":6779:6830 */\n tag_125\n /* \"#utility.yul\":6827:6828 */\n 0x00\n /* \"#utility.yul\":6823:6829 */\n not\n /* \"#utility.yul\":6815:6820 */\n dup5\n /* \"#utility.yul\":6812:6813 */\n 0x08\n /* \"#utility.yul\":6808:6821 */\n mul\n /* \"#utility.yul\":6779:6830 */\n tag_39\n jump\t// in\ntag_125:\n /* \"#utility.yul\":6775:6831 */\n not\n /* \"#utility.yul\":6860:6864 */\n dup1\n /* \"#utility.yul\":6854:6858 */\n dup4\n /* \"#utility.yul\":6850:6865 */\n and\n /* \"#utility.yul\":6840:6865 */\n swap2\n pop\n /* \"#utility.yul\":6753:6871 */\n pop\n /* \"#utility.yul\":6702:6871 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":6876:7171 */\ntag_41:\n /* \"#utility.yul\":6952:6956 */\n 0x00\n /* \"#utility.yul\":7098:7127 */\n tag_127\n /* \"#utility.yul\":7123:7126 */\n dup4\n /* \"#utility.yul\":7117:7121 */\n dup4\n /* \"#utility.yul\":7098:7127 */\n tag_40\n jump\t// in\ntag_127:\n /* \"#utility.yul\":7090:7127 */\n swap2\n pop\n /* \"#utility.yul\":7160:7163 */\n dup3\n /* \"#utility.yul\":7157:7158 */\n 0x02\n /* \"#utility.yul\":7153:7164 */\n mul\n /* \"#utility.yul\":7147:7151 */\n dup3\n /* \"#utility.yul\":7144:7165 */\n or\n /* \"#utility.yul\":7136:7165 */\n swap1\n pop\n /* \"#utility.yul\":6876:7171 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":7176:8571 */\ntag_7:\n /* \"#utility.yul\":7293:7330 */\n tag_129\n /* \"#utility.yul\":7326:7329 */\n dup3\n /* \"#utility.yul\":7293:7330 */\n tag_23\n jump\t// in\ntag_129:\n /* \"#utility.yul\":7395:7413 */\n 0xffffffffffffffff\n /* \"#utility.yul\":7387:7393 */\n dup2\n /* \"#utility.yul\":7384:7414 */\n gt\n /* \"#utility.yul\":7381:7437 */\n iszero\n tag_130\n jumpi\n /* \"#utility.yul\":7417:7435 */\n tag_131\n tag_16\n jump\t// in\ntag_131:\n /* \"#utility.yul\":7381:7437 */\ntag_130:\n /* \"#utility.yul\":7461:7499 */\n tag_132\n /* \"#utility.yul\":7493:7497 */\n dup3\n /* \"#utility.yul\":7487:7498 */\n sload\n /* \"#utility.yul\":7461:7499 */\n tag_25\n jump\t// in\ntag_132:\n /* \"#utility.yul\":7546:7613 */\n tag_133\n /* \"#utility.yul\":7606:7612 */\n dup3\n /* \"#utility.yul\":7598:7604 */\n dup3\n /* \"#utility.yul\":7592:7596 */\n dup6\n /* \"#utility.yul\":7546:7613 */\n tag_38\n jump\t// in\ntag_133:\n /* \"#utility.yul\":7640:7641 */\n 0x00\n /* \"#utility.yul\":7664:7668 */\n 0x20\n /* \"#utility.yul\":7651:7668 */\n swap1\n pop\n /* \"#utility.yul\":7696:7698 */\n 0x1f\n /* \"#utility.yul\":7688:7694 */\n dup4\n /* \"#utility.yul\":7685:7699 */\n gt\n /* \"#utility.yul\":7713:7714 */\n 0x01\n /* \"#utility.yul\":7708:8326 */\n dup2\n eq\n tag_135\n jumpi\n /* \"#utility.yul\":8370:8371 */\n 0x00\n /* \"#utility.yul\":8387:8393 */\n dup5\n /* \"#utility.yul\":8384:8461 */\n iszero\n tag_136\n jumpi\n /* \"#utility.yul\":8436:8445 */\n dup3\n /* \"#utility.yul\":8431:8434 */\n dup8\n /* \"#utility.yul\":8427:8446 */\n add\n /* \"#utility.yul\":8421:8447 */\n mload\n /* \"#utility.yul\":8412:8447 */\n swap1\n pop\n /* \"#utility.yul\":8384:8461 */\ntag_136:\n /* \"#utility.yul\":8487:8554 */\n tag_137\n /* \"#utility.yul\":8547:8553 */\n dup6\n /* \"#utility.yul\":8540:8545 */\n dup3\n /* \"#utility.yul\":8487:8554 */\n tag_41\n jump\t// in\ntag_137:\n /* \"#utility.yul\":8481:8485 */\n dup7\n /* \"#utility.yul\":8474:8555 */\n sstore\n /* \"#utility.yul\":8343:8565 */\n pop\n /* \"#utility.yul\":7678:8565 */\n jump(tag_134)\n /* \"#utility.yul\":7708:8326 */\ntag_135:\n /* \"#utility.yul\":7760:7764 */\n 0x1f\n /* \"#utility.yul\":7756:7765 */\n not\n /* \"#utility.yul\":7748:7754 */\n dup5\n /* \"#utility.yul\":7744:7766 */\n and\n /* \"#utility.yul\":7794:7831 */\n tag_138\n /* \"#utility.yul\":7826:7830 */\n dup7\n /* \"#utility.yul\":7794:7831 */\n tag_26\n jump\t// in\ntag_138:\n /* \"#utility.yul\":7853:7854 */\n 0x00\n /* \"#utility.yul\":7867:8075 */\ntag_139:\n /* \"#utility.yul\":7881:7888 */\n dup3\n /* \"#utility.yul\":7878:7879 */\n dup2\n /* \"#utility.yul\":7875:7889 */\n lt\n /* \"#utility.yul\":7867:8075 */\n iszero\n tag_141\n jumpi\n /* \"#utility.yul\":7960:7969 */\n dup5\n /* \"#utility.yul\":7955:7958 */\n dup10\n /* \"#utility.yul\":7951:7970 */\n add\n /* \"#utility.yul\":7945:7971 */\n mload\n /* \"#utility.yul\":7937:7943 */\n dup3\n /* \"#utility.yul\":7930:7972 */\n sstore\n /* \"#utility.yul\":8011:8012 */\n 0x01\n /* \"#utility.yul\":8003:8009 */\n dup3\n /* \"#utility.yul\":7999:8013 */\n add\n /* \"#utility.yul\":7989:8013 */\n swap2\n pop\n /* \"#utility.yul\":8058:8060 */\n 0x20\n /* \"#utility.yul\":8047:8056 */\n dup6\n /* \"#utility.yul\":8043:8061 */\n add\n /* \"#utility.yul\":8030:8061 */\n swap5\n pop\n /* \"#utility.yul\":7904:7908 */\n 0x20\n /* \"#utility.yul\":7901:7902 */\n dup2\n /* \"#utility.yul\":7897:7909 */\n add\n /* \"#utility.yul\":7892:7909 */\n swap1\n pop\n /* \"#utility.yul\":7867:8075 */\n jump(tag_139)\ntag_141:\n /* \"#utility.yul\":8103:8109 */\n dup7\n /* \"#utility.yul\":8094:8101 */\n dup4\n /* \"#utility.yul\":8091:8110 */\n lt\n /* \"#utility.yul\":8088:8267 */\n iszero\n tag_142\n jumpi\n /* \"#utility.yul\":8161:8170 */\n dup5\n /* \"#utility.yul\":8156:8159 */\n dup10\n /* \"#utility.yul\":8152:8171 */\n add\n /* \"#utility.yul\":8146:8172 */\n mload\n /* \"#utility.yul\":8204:8252 */\n tag_143\n /* \"#utility.yul\":8246:8250 */\n 0x1f\n /* \"#utility.yul\":8238:8244 */\n dup10\n /* \"#utility.yul\":8234:8251 */\n and\n /* \"#utility.yul\":8223:8232 */\n dup3\n /* \"#utility.yul\":8204:8252 */\n tag_40\n jump\t// in\ntag_143:\n /* \"#utility.yul\":8196:8202 */\n dup4\n /* \"#utility.yul\":8189:8253 */\n sstore\n /* \"#utility.yul\":8111:8267 */\n pop\n /* \"#utility.yul\":8088:8267 */\ntag_142:\n /* \"#utility.yul\":8313:8314 */\n 0x01\n /* \"#utility.yul\":8309:8310 */\n 0x02\n /* \"#utility.yul\":8301:8307 */\n dup9\n /* \"#utility.yul\":8297:8311 */\n mul\n /* \"#utility.yul\":8293:8315 */\n add\n /* \"#utility.yul\":8287:8291 */\n dup9\n /* \"#utility.yul\":8280:8316 */\n sstore\n /* \"#utility.yul\":7715:8326 */\n pop\n pop\n pop\n /* \"#utility.yul\":7678:8565 */\ntag_134:\n pop\n /* \"#utility.yul\":7268:8571 */\n pop\n pop\n pop\n /* \"#utility.yul\":7176:8571 */\n pop\n pop\n jump\t// out\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":1401:13011 contract ERC20 is Context, IERC20, IERC20Metadata {... */\ntag_9:\n dataSize(sub_0)\n dup1\n dataOffset(sub_0)\n 0x00\n codecopy\n 0x00\n return\nstop\n\nsub_0: assembly {\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":1401:13011 contract ERC20 is Context, IERC20, IERC20Metadata {... */\n mstore(0x40, 0x80)\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\n tag_1:\n pop\n jumpi(tag_2, lt(calldatasize, 0x04))\n shr(0xe0, calldataload(0x00))\n dup1\n 0x39509351\n gt\n tag_14\n jumpi\n dup1\n 0x39509351\n eq\n tag_8\n jumpi\n dup1\n 0x70a08231\n eq\n tag_9\n jumpi\n dup1\n 0x95d89b41\n eq\n tag_10\n jumpi\n dup1\n 0xa457c2d7\n eq\n tag_11\n jumpi\n dup1\n 0xa9059cbb\n eq\n tag_12\n jumpi\n dup1\n 0xdd62ed3e\n eq\n tag_13\n jumpi\n jump(tag_2)\n tag_14:\n dup1\n 0x06fdde03\n eq\n tag_3\n jumpi\n dup1\n 0x095ea7b3\n eq\n tag_4\n jumpi\n dup1\n 0x18160ddd\n eq\n tag_5\n jumpi\n dup1\n 0x23b872dd\n eq\n tag_6\n jumpi\n dup1\n 0x313ce567\n eq\n tag_7\n jumpi\n tag_2:\n 0x00\n dup1\n revert\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":2154:2252 function name() public view virtual override returns (string memory) {... */\n tag_3:\n tag_15\n tag_16\n jump\t// in\n tag_15:\n mload(0x40)\n tag_17\n swap2\n swap1\n tag_18\n jump\t// in\n tag_17:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":4431:4628 function approve(address spender, uint256 amount) public virtual override returns (bool) {... */\n tag_4:\n tag_19\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_20\n swap2\n swap1\n tag_21\n jump\t// in\n tag_20:\n tag_22\n jump\t// in\n tag_19:\n mload(0x40)\n tag_23\n swap2\n swap1\n tag_24\n jump\t// in\n tag_23:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":3242:3348 function totalSupply() public view virtual override returns (uint256) {... */\n tag_5:\n tag_25\n tag_26\n jump\t// in\n tag_25:\n mload(0x40)\n tag_27\n swap2\n swap1\n tag_28\n jump\t// in\n tag_27:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":5190:5476 function transferFrom(... */\n tag_6:\n tag_29\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_30\n swap2\n swap1\n tag_31\n jump\t// in\n tag_30:\n tag_32\n jump\t// in\n tag_29:\n mload(0x40)\n tag_33\n swap2\n swap1\n tag_24\n jump\t// in\n tag_33:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":3091:3182 function decimals() public view virtual override returns (uint8) {... */\n tag_7:\n tag_34\n tag_35\n jump\t// in\n tag_34:\n mload(0x40)\n tag_36\n swap2\n swap1\n tag_37\n jump\t// in\n tag_36:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":5871:6105 function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {... */\n tag_8:\n tag_38\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_39\n swap2\n swap1\n tag_21\n jump\t// in\n tag_39:\n tag_40\n jump\t// in\n tag_38:\n mload(0x40)\n tag_41\n swap2\n swap1\n tag_24\n jump\t// in\n tag_41:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":3406:3531 function balanceOf(address account) public view virtual override returns (uint256) {... */\n tag_9:\n tag_42\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_43\n swap2\n swap1\n tag_44\n jump\t// in\n tag_43:\n tag_45\n jump\t// in\n tag_42:\n mload(0x40)\n tag_46\n swap2\n swap1\n tag_28\n jump\t// in\n tag_46:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":2365:2467 function symbol() public view virtual override returns (string memory) {... */\n tag_10:\n tag_47\n tag_48\n jump\t// in\n tag_47:\n mload(0x40)\n tag_49\n swap2\n swap1\n tag_18\n jump\t// in\n tag_49:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":6592:7019 function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {... */\n tag_11:\n tag_50\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_51\n swap2\n swap1\n tag_21\n jump\t// in\n tag_51:\n tag_52\n jump\t// in\n tag_50:\n mload(0x40)\n tag_53\n swap2\n swap1\n tag_24\n jump\t// in\n tag_53:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":3727:3916 function transfer(address to, uint256 amount) public virtual override returns (bool) {... */\n tag_12:\n tag_54\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_55\n swap2\n swap1\n tag_21\n jump\t// in\n tag_55:\n tag_56\n jump\t// in\n tag_54:\n mload(0x40)\n tag_57\n swap2\n swap1\n tag_24\n jump\t// in\n tag_57:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":3974:4123 function allowance(address owner, address spender) public view virtual override returns (uint256) {... */\n tag_13:\n tag_58\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_59\n swap2\n swap1\n tag_60\n jump\t// in\n tag_59:\n tag_61\n jump\t// in\n tag_58:\n mload(0x40)\n tag_62\n swap2\n swap1\n tag_28\n jump\t// in\n tag_62:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":2154:2252 function name() public view virtual override returns (string memory) {... */\n tag_16:\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":2208:2221 string memory */\n 0x60\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":2240:2245 _name */\n 0x03\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":2233:2245 return _name */\n dup1\n sload\n tag_64\n swap1\n tag_65\n jump\t// in\n tag_64:\n dup1\n 0x1f\n add\n 0x20\n dup1\n swap2\n div\n mul\n 0x20\n add\n mload(0x40)\n swap1\n dup2\n add\n 0x40\n mstore\n dup1\n swap3\n swap2\n swap1\n dup2\n dup2\n mstore\n 0x20\n add\n dup3\n dup1\n sload\n tag_66\n swap1\n tag_65\n jump\t// in\n tag_66:\n dup1\n iszero\n tag_67\n jumpi\n dup1\n 0x1f\n lt\n tag_68\n jumpi\n 0x0100\n dup1\n dup4\n sload\n div\n mul\n dup4\n mstore\n swap2\n 0x20\n add\n swap2\n jump(tag_67)\n tag_68:\n dup3\n add\n swap2\n swap1\n 0x00\n mstore\n keccak256(0x00, 0x20)\n swap1\n tag_69:\n dup2\n sload\n dup2\n mstore\n swap1\n 0x01\n add\n swap1\n 0x20\n add\n dup1\n dup4\n gt\n tag_69\n jumpi\n dup3\n swap1\n sub\n 0x1f\n and\n dup3\n add\n swap2\n tag_67:\n pop\n pop\n pop\n pop\n pop\n swap1\n pop\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":2154:2252 function name() public view virtual override returns (string memory) {... */\n swap1\n jump\t// out\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":4431:4628 function approve(address spender, uint256 amount) public virtual override returns (bool) {... */\n tag_22:\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":4514:4518 bool */\n 0x00\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":4530:4543 address owner */\n dup1\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":4546:4558 _msgSender() */\n tag_71\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":4546:4556 _msgSender */\n tag_72\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":4546:4558 _msgSender() */\n jump\t// in\n tag_71:\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":4530:4558 address owner = _msgSender() */\n swap1\n pop\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":4568:4600 _approve(owner, spender, amount) */\n tag_73\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":4577:4582 owner */\n dup2\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":4584:4591 spender */\n dup6\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":4593:4599 amount */\n dup6\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":4568:4576 _approve */\n tag_74\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":4568:4600 _approve(owner, spender, amount) */\n jump\t// in\n tag_73:\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":4617:4621 true */\n 0x01\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":4610:4621 return true */\n swap2\n pop\n pop\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":4431:4628 function approve(address spender, uint256 amount) public virtual override returns (bool) {... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":3242:3348 function totalSupply() public view virtual override returns (uint256) {... */\n tag_26:\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":3303:3310 uint256 */\n 0x00\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":3329:3341 _totalSupply */\n sload(0x02)\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":3322:3341 return _totalSupply */\n swap1\n pop\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":3242:3348 function totalSupply() public view virtual override returns (uint256) {... */\n swap1\n jump\t// out\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":5190:5476 function transferFrom(... */\n tag_32:\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":5317:5321 bool */\n 0x00\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":5333:5348 address spender */\n dup1\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":5351:5363 _msgSender() */\n tag_77\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":5351:5361 _msgSender */\n tag_72\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":5351:5363 _msgSender() */\n jump\t// in\n tag_77:\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":5333:5363 address spender = _msgSender() */\n swap1\n pop\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":5373:5411 _spendAllowance(from, spender, amount) */\n tag_78\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":5389:5393 from */\n dup6\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":5395:5402 spender */\n dup3\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":5404:5410 amount */\n dup6\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":5373:5388 _spendAllowance */\n tag_79\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":5373:5411 _spendAllowance(from, spender, amount) */\n jump\t// in\n tag_78:\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":5421:5448 _transfer(from, to, amount) */\n tag_80\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":5431:5435 from */\n dup6\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":5437:5439 to */\n dup6\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":5441:5447 amount */\n dup6\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":5421:5430 _transfer */\n tag_81\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":5421:5448 _transfer(from, to, amount) */\n jump\t// in\n tag_80:\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":5465:5469 true */\n 0x01\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":5458:5469 return true */\n swap2\n pop\n pop\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":5190:5476 function transferFrom(... */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":3091:3182 function decimals() public view virtual override returns (uint8) {... */\n tag_35:\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":3149:3154 uint8 */\n 0x00\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":3173:3175 18 */\n 0x12\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":3166:3175 return 18 */\n swap1\n pop\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":3091:3182 function decimals() public view virtual override returns (uint8) {... */\n swap1\n jump\t// out\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":5871:6105 function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {... */\n tag_40:\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":5959:5963 bool */\n 0x00\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":5975:5988 address owner */\n dup1\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":5991:6003 _msgSender() */\n tag_84\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":5991:6001 _msgSender */\n tag_72\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":5991:6003 _msgSender() */\n jump\t// in\n tag_84:\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":5975:6003 address owner = _msgSender() */\n swap1\n pop\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":6013:6077 _approve(owner, spender, allowance(owner, spender) + addedValue) */\n tag_85\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":6022:6027 owner */\n dup2\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":6029:6036 spender */\n dup6\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":6066:6076 addedValue */\n dup6\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":6038:6063 allowance(owner, spender) */\n tag_86\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":6048:6053 owner */\n dup6\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":6055:6062 spender */\n dup10\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":6038:6047 allowance */\n tag_61\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":6038:6063 allowance(owner, spender) */\n jump\t// in\n tag_86:\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":6038:6076 allowance(owner, spender) + addedValue */\n tag_87\n swap2\n swap1\n tag_88\n jump\t// in\n tag_87:\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":6013:6021 _approve */\n tag_74\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":6013:6077 _approve(owner, spender, allowance(owner, spender) + addedValue) */\n jump\t// in\n tag_85:\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":6094:6098 true */\n 0x01\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":6087:6098 return true */\n swap2\n pop\n pop\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":5871:6105 function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":3406:3531 function balanceOf(address account) public view virtual override returns (uint256) {... */\n tag_45:\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":3480:3487 uint256 */\n 0x00\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":3506:3515 _balances */\n dup1\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":3506:3524 _balances[account] */\n 0x00\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":3516:3523 account */\n dup4\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":3506:3524 _balances[account] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n sload\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":3499:3524 return _balances[account] */\n swap1\n pop\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":3406:3531 function balanceOf(address account) public view virtual override returns (uint256) {... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":2365:2467 function symbol() public view virtual override returns (string memory) {... */\n tag_48:\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":2421:2434 string memory */\n 0x60\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":2453:2460 _symbol */\n 0x04\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":2446:2460 return _symbol */\n dup1\n sload\n tag_91\n swap1\n tag_65\n jump\t// in\n tag_91:\n dup1\n 0x1f\n add\n 0x20\n dup1\n swap2\n div\n mul\n 0x20\n add\n mload(0x40)\n swap1\n dup2\n add\n 0x40\n mstore\n dup1\n swap3\n swap2\n swap1\n dup2\n dup2\n mstore\n 0x20\n add\n dup3\n dup1\n sload\n tag_92\n swap1\n tag_65\n jump\t// in\n tag_92:\n dup1\n iszero\n tag_93\n jumpi\n dup1\n 0x1f\n lt\n tag_94\n jumpi\n 0x0100\n dup1\n dup4\n sload\n div\n mul\n dup4\n mstore\n swap2\n 0x20\n add\n swap2\n jump(tag_93)\n tag_94:\n dup3\n add\n swap2\n swap1\n 0x00\n mstore\n keccak256(0x00, 0x20)\n swap1\n tag_95:\n dup2\n sload\n dup2\n mstore\n swap1\n 0x01\n add\n swap1\n 0x20\n add\n dup1\n dup4\n gt\n tag_95\n jumpi\n dup3\n swap1\n sub\n 0x1f\n and\n dup3\n add\n swap2\n tag_93:\n pop\n pop\n pop\n pop\n pop\n swap1\n pop\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":2365:2467 function symbol() public view virtual override returns (string memory) {... */\n swap1\n jump\t// out\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":6592:7019 function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {... */\n tag_52:\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":6685:6689 bool */\n 0x00\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":6701:6714 address owner */\n dup1\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":6717:6729 _msgSender() */\n tag_97\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":6717:6727 _msgSender */\n tag_72\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":6717:6729 _msgSender() */\n jump\t// in\n tag_97:\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":6701:6729 address owner = _msgSender() */\n swap1\n pop\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":6739:6763 uint256 currentAllowance */\n 0x00\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":6766:6791 allowance(owner, spender) */\n tag_98\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":6776:6781 owner */\n dup3\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":6783:6790 spender */\n dup7\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":6766:6775 allowance */\n tag_61\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":6766:6791 allowance(owner, spender) */\n jump\t// in\n tag_98:\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":6739:6791 uint256 currentAllowance = allowance(owner, spender) */\n swap1\n pop\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":6829:6844 subtractedValue */\n dup4\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":6809:6825 currentAllowance */\n dup2\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":6809:6844 currentAllowance >= subtractedValue */\n lt\n iszero\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":6801:6886 require(currentAllowance >= subtractedValue, \"ERC20: decreased allowance below zero\") */\n tag_99\n jumpi\n mload(0x40)\n 0x08c379a000000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_100\n swap1\n tag_101\n jump\t// in\n tag_100:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n tag_99:\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":6920:6980 _approve(owner, spender, currentAllowance - subtractedValue) */\n tag_102\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":6929:6934 owner */\n dup3\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":6936:6943 spender */\n dup7\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":6964:6979 subtractedValue */\n dup7\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":6945:6961 currentAllowance */\n dup5\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":6945:6979 currentAllowance - subtractedValue */\n sub\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":6920:6928 _approve */\n tag_74\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":6920:6980 _approve(owner, spender, currentAllowance - subtractedValue) */\n jump\t// in\n tag_102:\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":7008:7012 true */\n 0x01\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":7001:7012 return true */\n swap3\n pop\n pop\n pop\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":6592:7019 function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":3727:3916 function transfer(address to, uint256 amount) public virtual override returns (bool) {... */\n tag_56:\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":3806:3810 bool */\n 0x00\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":3822:3835 address owner */\n dup1\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":3838:3850 _msgSender() */\n tag_104\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":3838:3848 _msgSender */\n tag_72\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":3838:3850 _msgSender() */\n jump\t// in\n tag_104:\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":3822:3850 address owner = _msgSender() */\n swap1\n pop\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":3860:3888 _transfer(owner, to, amount) */\n tag_105\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":3870:3875 owner */\n dup2\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":3877:3879 to */\n dup6\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":3881:3887 amount */\n dup6\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":3860:3869 _transfer */\n tag_81\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":3860:3888 _transfer(owner, to, amount) */\n jump\t// in\n tag_105:\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":3905:3909 true */\n 0x01\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":3898:3909 return true */\n swap2\n pop\n pop\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":3727:3916 function transfer(address to, uint256 amount) public virtual override returns (bool) {... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":3974:4123 function allowance(address owner, address spender) public view virtual override returns (uint256) {... */\n tag_61:\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":4063:4070 uint256 */\n 0x00\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":4089:4100 _allowances */\n 0x01\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":4089:4107 _allowances[owner] */\n 0x00\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":4101:4106 owner */\n dup5\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":4089:4107 _allowances[owner] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":4089:4116 _allowances[owner][spender] */\n 0x00\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":4108:4115 spender */\n dup4\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":4089:4116 _allowances[owner][spender] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n sload\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":4082:4116 return _allowances[owner][spender] */\n swap1\n pop\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":3974:4123 function allowance(address owner, address spender) public view virtual override returns (uint256) {... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"@openzeppelin/[email protected]/utils/Context.sol\":640:736 function _msgSender() internal view virtual returns (address) {... */\n tag_72:\n /* \"@openzeppelin/[email protected]/utils/Context.sol\":693:700 address */\n 0x00\n /* \"@openzeppelin/[email protected]/utils/Context.sol\":719:729 msg.sender */\n caller\n /* \"@openzeppelin/[email protected]/utils/Context.sol\":712:729 return msg.sender */\n swap1\n pop\n /* \"@openzeppelin/[email protected]/utils/Context.sol\":640:736 function _msgSender() internal view virtual returns (address) {... */\n swap1\n jump\t// out\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":10504:10874 function _approve(... */\n tag_74:\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":10652:10653 0 */\n 0x00\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":10635:10654 owner != address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":10635:10640 owner */\n dup4\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":10635:10654 owner != address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n sub\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":10627:10695 require(owner != address(0), \"ERC20: approve from the zero address\") */\n tag_109\n jumpi\n mload(0x40)\n 0x08c379a000000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_110\n swap1\n tag_111\n jump\t// in\n tag_110:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n tag_109:\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":10732:10733 0 */\n 0x00\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":10713:10734 spender != address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":10713:10720 spender */\n dup3\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":10713:10734 spender != address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n sub\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":10705:10773 require(spender != address(0), \"ERC20: approve to the zero address\") */\n tag_112\n jumpi\n mload(0x40)\n 0x08c379a000000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_113\n swap1\n tag_114\n jump\t// in\n tag_113:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n tag_112:\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":10814:10820 amount */\n dup1\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":10784:10795 _allowances */\n 0x01\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":10784:10802 _allowances[owner] */\n 0x00\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":10796:10801 owner */\n dup6\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":10784:10802 _allowances[owner] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":10784:10811 _allowances[owner][spender] */\n 0x00\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":10803:10810 spender */\n dup5\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":10784:10811 _allowances[owner][spender] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":10784:10820 _allowances[owner][spender] = amount */\n dup2\n swap1\n sstore\n pop\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":10851:10858 spender */\n dup2\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":10835:10867 Approval(owner, spender, amount) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":10844:10849 owner */\n dup4\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":10835:10867 Approval(owner, spender, amount) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":10860:10866 amount */\n dup4\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":10835:10867 Approval(owner, spender, amount) */\n mload(0x40)\n tag_115\n swap2\n swap1\n tag_28\n jump\t// in\n tag_115:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log3\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":10504:10874 function _approve(... */\n pop\n pop\n pop\n jump\t// out\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":11155:11596 function _spendAllowance(... */\n tag_79:\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":11285:11309 uint256 currentAllowance */\n 0x00\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":11312:11337 allowance(owner, spender) */\n tag_117\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":11322:11327 owner */\n dup5\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":11329:11336 spender */\n dup5\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":11312:11321 allowance */\n tag_61\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":11312:11337 allowance(owner, spender) */\n jump\t// in\n tag_117:\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":11285:11337 uint256 currentAllowance = allowance(owner, spender) */\n swap1\n pop\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":11371:11388 type(uint256).max */\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":11351:11367 currentAllowance */\n dup2\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":11351:11388 currentAllowance != type(uint256).max */\n eq\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":11347:11590 if (currentAllowance != type(uint256).max) {... */\n tag_118\n jumpi\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":11432:11438 amount */\n dup2\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":11412:11428 currentAllowance */\n dup2\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":11412:11438 currentAllowance >= amount */\n lt\n iszero\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":11404:11472 require(currentAllowance >= amount, \"ERC20: insufficient allowance\") */\n tag_119\n jumpi\n mload(0x40)\n 0x08c379a000000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_120\n swap1\n tag_121\n jump\t// in\n tag_120:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n tag_119:\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":11514:11565 _approve(owner, spender, currentAllowance - amount) */\n tag_122\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":11523:11528 owner */\n dup5\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":11530:11537 spender */\n dup5\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":11558:11564 amount */\n dup5\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":11539:11555 currentAllowance */\n dup5\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":11539:11564 currentAllowance - amount */\n sub\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":11514:11522 _approve */\n tag_74\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":11514:11565 _approve(owner, spender, currentAllowance - amount) */\n jump\t// in\n tag_122:\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":11347:11590 if (currentAllowance != type(uint256).max) {... */\n tag_118:\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":11275:11596 {... */\n pop\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":11155:11596 function _spendAllowance(... */\n pop\n pop\n pop\n jump\t// out\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":7473:8291 function _transfer(... */\n tag_81:\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":7615:7616 0 */\n 0x00\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":7599:7617 from != address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":7599:7603 from */\n dup4\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":7599:7617 from != address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n sub\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":7591:7659 require(from != address(0), \"ERC20: transfer from the zero address\") */\n tag_124\n jumpi\n mload(0x40)\n 0x08c379a000000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_125\n swap1\n tag_126\n jump\t// in\n tag_125:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n tag_124:\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":7691:7692 0 */\n 0x00\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":7677:7693 to != address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":7677:7679 to */\n dup3\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":7677:7693 to != address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n sub\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":7669:7733 require(to != address(0), \"ERC20: transfer to the zero address\") */\n tag_127\n jumpi\n mload(0x40)\n 0x08c379a000000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_128\n swap1\n tag_129\n jump\t// in\n tag_128:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n tag_127:\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":7744:7782 _beforeTokenTransfer(from, to, amount) */\n tag_130\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":7765:7769 from */\n dup4\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":7771:7773 to */\n dup4\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":7775:7781 amount */\n dup4\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":7744:7764 _beforeTokenTransfer */\n tag_131\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":7744:7782 _beforeTokenTransfer(from, to, amount) */\n jump\t// in\n tag_130:\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":7793:7812 uint256 fromBalance */\n 0x00\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":7815:7824 _balances */\n dup1\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":7815:7830 _balances[from] */\n 0x00\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":7825:7829 from */\n dup6\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":7815:7830 _balances[from] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n sload\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":7793:7830 uint256 fromBalance = _balances[from] */\n swap1\n pop\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":7863:7869 amount */\n dup2\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":7848:7859 fromBalance */\n dup2\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":7848:7869 fromBalance >= amount */\n lt\n iszero\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":7840:7912 require(fromBalance >= amount, \"ERC20: transfer amount exceeds balance\") */\n tag_132\n jumpi\n mload(0x40)\n 0x08c379a000000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_133\n swap1\n tag_134\n jump\t// in\n tag_133:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n tag_132:\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":7978:7984 amount */\n dup2\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":7964:7975 fromBalance */\n dup2\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":7964:7984 fromBalance - amount */\n sub\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":7946:7955 _balances */\n 0x00\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":7946:7961 _balances[from] */\n dup1\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":7956:7960 from */\n dup7\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":7946:7961 _balances[from] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":7946:7984 _balances[from] = fromBalance - amount */\n dup2\n swap1\n sstore\n pop\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":8178:8184 amount */\n dup2\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":8161:8170 _balances */\n 0x00\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":8161:8174 _balances[to] */\n dup1\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":8171:8173 to */\n dup6\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":8161:8174 _balances[to] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n 0x00\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":8161:8184 _balances[to] += amount */\n dup3\n dup3\n sload\n add\n swap3\n pop\n pop\n dup2\n swap1\n sstore\n pop\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":8225:8227 to */\n dup3\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":8210:8236 Transfer(from, to, amount) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":8219:8223 from */\n dup5\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":8210:8236 Transfer(from, to, amount) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":8229:8235 amount */\n dup5\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":8210:8236 Transfer(from, to, amount) */\n mload(0x40)\n tag_135\n swap2\n swap1\n tag_28\n jump\t// in\n tag_135:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log3\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":8247:8284 _afterTokenTransfer(from, to, amount) */\n tag_136\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":8267:8271 from */\n dup5\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":8273:8275 to */\n dup5\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":8277:8283 amount */\n dup5\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":8247:8266 _afterTokenTransfer */\n tag_137\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":8247:8284 _afterTokenTransfer(from, to, amount) */\n jump\t// in\n tag_136:\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":7581:8291 {... */\n pop\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":7473:8291 function _transfer(... */\n pop\n pop\n pop\n jump\t// out\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":12180:12301 function _beforeTokenTransfer(... */\n tag_131:\n pop\n pop\n pop\n jump\t// out\n /* \"@openzeppelin/[email protected]/token/ERC20/ERC20.sol\":12889:13009 function _afterTokenTransfer(... */\n tag_137:\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":7:106 */\n tag_140:\n /* \"#utility.yul\":59:65 */\n 0x00\n /* \"#utility.yul\":93:98 */\n dup2\n /* \"#utility.yul\":87:99 */\n mload\n /* \"#utility.yul\":77:99 */\n swap1\n pop\n /* \"#utility.yul\":7:106 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":112:281 */\n tag_141:\n /* \"#utility.yul\":196:207 */\n 0x00\n /* \"#utility.yul\":230:236 */\n dup3\n /* \"#utility.yul\":225:228 */\n dup3\n /* \"#utility.yul\":218:237 */\n mstore\n /* \"#utility.yul\":270:274 */\n 0x20\n /* \"#utility.yul\":265:268 */\n dup3\n /* \"#utility.yul\":261:275 */\n add\n /* \"#utility.yul\":246:275 */\n swap1\n pop\n /* \"#utility.yul\":112:281 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":287:533 */\n tag_142:\n /* \"#utility.yul\":368:369 */\n 0x00\n /* \"#utility.yul\":378:491 */\n tag_180:\n /* \"#utility.yul\":392:398 */\n dup4\n /* \"#utility.yul\":389:390 */\n dup2\n /* \"#utility.yul\":386:399 */\n lt\n /* \"#utility.yul\":378:491 */\n iszero\n tag_182\n jumpi\n /* \"#utility.yul\":477:478 */\n dup1\n /* \"#utility.yul\":472:475 */\n dup3\n /* \"#utility.yul\":468:479 */\n add\n /* \"#utility.yul\":462:480 */\n mload\n /* \"#utility.yul\":458:459 */\n dup2\n /* \"#utility.yul\":453:456 */\n dup5\n /* \"#utility.yul\":449:460 */\n add\n /* \"#utility.yul\":442:481 */\n mstore\n /* \"#utility.yul\":414:416 */\n 0x20\n /* \"#utility.yul\":411:412 */\n dup2\n /* \"#utility.yul\":407:417 */\n add\n /* \"#utility.yul\":402:417 */\n swap1\n pop\n /* \"#utility.yul\":378:491 */\n jump(tag_180)\n tag_182:\n /* \"#utility.yul\":525:526 */\n 0x00\n /* \"#utility.yul\":516:522 */\n dup5\n /* \"#utility.yul\":511:514 */\n dup5\n /* \"#utility.yul\":507:523 */\n add\n /* \"#utility.yul\":500:527 */\n mstore\n /* \"#utility.yul\":349:533 */\n pop\n /* \"#utility.yul\":287:533 */\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":539:641 */\n tag_143:\n /* \"#utility.yul\":580:586 */\n 0x00\n /* \"#utility.yul\":631:633 */\n 0x1f\n /* \"#utility.yul\":627:634 */\n not\n /* \"#utility.yul\":622:624 */\n 0x1f\n /* \"#utility.yul\":615:620 */\n dup4\n /* \"#utility.yul\":611:625 */\n add\n /* \"#utility.yul\":607:635 */\n and\n /* \"#utility.yul\":597:635 */\n swap1\n pop\n /* \"#utility.yul\":539:641 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":647:1024 */\n tag_144:\n /* \"#utility.yul\":735:738 */\n 0x00\n /* \"#utility.yul\":763:802 */\n tag_185\n /* \"#utility.yul\":796:801 */\n dup3\n /* \"#utility.yul\":763:802 */\n tag_140\n jump\t// in\n tag_185:\n /* \"#utility.yul\":818:889 */\n tag_186\n /* \"#utility.yul\":882:888 */\n dup2\n /* \"#utility.yul\":877:880 */\n dup6\n /* \"#utility.yul\":818:889 */\n tag_141\n jump\t// in\n tag_186:\n /* \"#utility.yul\":811:889 */\n swap4\n pop\n /* \"#utility.yul\":898:963 */\n tag_187\n /* \"#utility.yul\":956:962 */\n dup2\n /* \"#utility.yul\":951:954 */\n dup6\n /* \"#utility.yul\":944:948 */\n 0x20\n /* \"#utility.yul\":937:942 */\n dup7\n /* \"#utility.yul\":933:949 */\n add\n /* \"#utility.yul\":898:963 */\n tag_142\n jump\t// in\n tag_187:\n /* \"#utility.yul\":988:1017 */\n tag_188\n /* \"#utility.yul\":1010:1016 */\n dup2\n /* \"#utility.yul\":988:1017 */\n tag_143\n jump\t// in\n tag_188:\n /* \"#utility.yul\":983:986 */\n dup5\n /* \"#utility.yul\":979:1018 */\n add\n /* \"#utility.yul\":972:1018 */\n swap2\n pop\n /* \"#utility.yul\":739:1024 */\n pop\n /* \"#utility.yul\":647:1024 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":1030:1343 */\n tag_18:\n /* \"#utility.yul\":1143:1147 */\n 0x00\n /* \"#utility.yul\":1181:1183 */\n 0x20\n /* \"#utility.yul\":1170:1179 */\n dup3\n /* \"#utility.yul\":1166:1184 */\n add\n /* \"#utility.yul\":1158:1184 */\n swap1\n pop\n /* \"#utility.yul\":1230:1239 */\n dup2\n /* \"#utility.yul\":1224:1228 */\n dup2\n /* \"#utility.yul\":1220:1240 */\n sub\n /* \"#utility.yul\":1216:1217 */\n 0x00\n /* \"#utility.yul\":1205:1214 */\n dup4\n /* \"#utility.yul\":1201:1218 */\n add\n /* \"#utility.yul\":1194:1241 */\n mstore\n /* \"#utility.yul\":1258:1336 */\n tag_190\n /* \"#utility.yul\":1331:1335 */\n dup2\n /* \"#utility.yul\":1322:1328 */\n dup5\n /* \"#utility.yul\":1258:1336 */\n tag_144\n jump\t// in\n tag_190:\n /* \"#utility.yul\":1250:1336 */\n swap1\n pop\n /* \"#utility.yul\":1030:1343 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":1430:1547 */\n tag_146:\n /* \"#utility.yul\":1539:1540 */\n 0x00\n /* \"#utility.yul\":1536:1537 */\n dup1\n /* \"#utility.yul\":1529:1541 */\n revert\n /* \"#utility.yul\":1676:1802 */\n tag_148:\n /* \"#utility.yul\":1713:1720 */\n 0x00\n /* \"#utility.yul\":1753:1795 */\n 0xffffffffffffffffffffffffffffffffffffffff\n /* \"#utility.yul\":1746:1751 */\n dup3\n /* \"#utility.yul\":1742:1796 */\n and\n /* \"#utility.yul\":1731:1796 */\n swap1\n pop\n /* \"#utility.yul\":1676:1802 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":1808:1904 */\n tag_149:\n /* \"#utility.yul\":1845:1852 */\n 0x00\n /* \"#utility.yul\":1874:1898 */\n tag_196\n /* \"#utility.yul\":1892:1897 */\n dup3\n /* \"#utility.yul\":1874:1898 */\n tag_148\n jump\t// in\n tag_196:\n /* \"#utility.yul\":1863:1898 */\n swap1\n pop\n /* \"#utility.yul\":1808:1904 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":1910:2032 */\n tag_150:\n /* \"#utility.yul\":1983:2007 */\n tag_198\n /* \"#utility.yul\":2001:2006 */\n dup2\n /* \"#utility.yul\":1983:2007 */\n tag_149\n jump\t// in\n tag_198:\n /* \"#utility.yul\":1976:1981 */\n dup2\n /* \"#utility.yul\":1973:2008 */\n eq\n /* \"#utility.yul\":1963:2026 */\n tag_199\n jumpi\n /* \"#utility.yul\":2022:2023 */\n 0x00\n /* \"#utility.yul\":2019:2020 */\n dup1\n /* \"#utility.yul\":2012:2024 */\n revert\n /* \"#utility.yul\":1963:2026 */\n tag_199:\n /* \"#utility.yul\":1910:2032 */\n pop\n jump\t// out\n /* \"#utility.yul\":2038:2177 */\n tag_151:\n /* \"#utility.yul\":2084:2089 */\n 0x00\n /* \"#utility.yul\":2122:2128 */\n dup2\n /* \"#utility.yul\":2109:2129 */\n calldataload\n /* \"#utility.yul\":2100:2129 */\n swap1\n pop\n /* \"#utility.yul\":2138:2171 */\n tag_201\n /* \"#utility.yul\":2165:2170 */\n dup2\n /* \"#utility.yul\":2138:2171 */\n tag_150\n jump\t// in\n tag_201:\n /* \"#utility.yul\":2038:2177 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":2183:2260 */\n tag_152:\n /* \"#utility.yul\":2220:2227 */\n 0x00\n /* \"#utility.yul\":2249:2254 */\n dup2\n /* \"#utility.yul\":2238:2254 */\n swap1\n pop\n /* \"#utility.yul\":2183:2260 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":2266:2388 */\n tag_153:\n /* \"#utility.yul\":2339:2363 */\n tag_204\n /* \"#utility.yul\":2357:2362 */\n dup2\n /* \"#utility.yul\":2339:2363 */\n tag_152\n jump\t// in\n tag_204:\n /* \"#utility.yul\":2332:2337 */\n dup2\n /* \"#utility.yul\":2329:2364 */\n eq\n /* \"#utility.yul\":2319:2382 */\n tag_205\n jumpi\n /* \"#utility.yul\":2378:2379 */\n 0x00\n /* \"#utility.yul\":2375:2376 */\n dup1\n /* \"#utility.yul\":2368:2380 */\n revert\n /* \"#utility.yul\":2319:2382 */\n tag_205:\n /* \"#utility.yul\":2266:2388 */\n pop\n jump\t// out\n /* \"#utility.yul\":2394:2533 */\n tag_154:\n /* \"#utility.yul\":2440:2445 */\n 0x00\n /* \"#utility.yul\":2478:2484 */\n dup2\n /* \"#utility.yul\":2465:2485 */\n calldataload\n /* \"#utility.yul\":2456:2485 */\n swap1\n pop\n /* \"#utility.yul\":2494:2527 */\n tag_207\n /* \"#utility.yul\":2521:2526 */\n dup2\n /* \"#utility.yul\":2494:2527 */\n tag_153\n jump\t// in\n tag_207:\n /* \"#utility.yul\":2394:2533 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":2539:3013 */\n tag_21:\n /* \"#utility.yul\":2607:2613 */\n 0x00\n /* \"#utility.yul\":2615:2621 */\n dup1\n /* \"#utility.yul\":2664:2666 */\n 0x40\n /* \"#utility.yul\":2652:2661 */\n dup4\n /* \"#utility.yul\":2643:2650 */\n dup6\n /* \"#utility.yul\":2639:2662 */\n sub\n /* \"#utility.yul\":2635:2667 */\n slt\n /* \"#utility.yul\":2632:2751 */\n iszero\n tag_209\n jumpi\n /* \"#utility.yul\":2670:2749 */\n tag_210\n tag_146\n jump\t// in\n tag_210:\n /* \"#utility.yul\":2632:2751 */\n tag_209:\n /* \"#utility.yul\":2790:2791 */\n 0x00\n /* \"#utility.yul\":2815:2868 */\n tag_211\n /* \"#utility.yul\":2860:2867 */\n dup6\n /* \"#utility.yul\":2851:2857 */\n dup3\n /* \"#utility.yul\":2840:2849 */\n dup7\n /* \"#utility.yul\":2836:2858 */\n add\n /* \"#utility.yul\":2815:2868 */\n tag_151\n jump\t// in\n tag_211:\n /* \"#utility.yul\":2805:2868 */\n swap3\n pop\n /* \"#utility.yul\":2761:2878 */\n pop\n /* \"#utility.yul\":2917:2919 */\n 0x20\n /* \"#utility.yul\":2943:2996 */\n tag_212\n /* \"#utility.yul\":2988:2995 */\n dup6\n /* \"#utility.yul\":2979:2985 */\n dup3\n /* \"#utility.yul\":2968:2977 */\n dup7\n /* \"#utility.yul\":2964:2986 */\n add\n /* \"#utility.yul\":2943:2996 */\n tag_154\n jump\t// in\n tag_212:\n /* \"#utility.yul\":2933:2996 */\n swap2\n pop\n /* \"#utility.yul\":2888:3006 */\n pop\n /* \"#utility.yul\":2539:3013 */\n swap3\n pop\n swap3\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":3019:3109 */\n tag_155:\n /* \"#utility.yul\":3053:3060 */\n 0x00\n /* \"#utility.yul\":3096:3101 */\n dup2\n /* \"#utility.yul\":3089:3102 */\n iszero\n /* \"#utility.yul\":3082:3103 */\n iszero\n /* \"#utility.yul\":3071:3103 */\n swap1\n pop\n /* \"#utility.yul\":3019:3109 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":3115:3224 */\n tag_156:\n /* \"#utility.yul\":3196:3217 */\n tag_215\n /* \"#utility.yul\":3211:3216 */\n dup2\n /* \"#utility.yul\":3196:3217 */\n tag_155\n jump\t// in\n tag_215:\n /* \"#utility.yul\":3191:3194 */\n dup3\n /* \"#utility.yul\":3184:3218 */\n mstore\n /* \"#utility.yul\":3115:3224 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":3230:3440 */\n tag_24:\n /* \"#utility.yul\":3317:3321 */\n 0x00\n /* \"#utility.yul\":3355:3357 */\n 0x20\n /* \"#utility.yul\":3344:3353 */\n dup3\n /* \"#utility.yul\":3340:3358 */\n add\n /* \"#utility.yul\":3332:3358 */\n swap1\n pop\n /* \"#utility.yul\":3368:3433 */\n tag_217\n /* \"#utility.yul\":3430:3431 */\n 0x00\n /* \"#utility.yul\":3419:3428 */\n dup4\n /* \"#utility.yul\":3415:3432 */\n add\n /* \"#utility.yul\":3406:3412 */\n dup5\n /* \"#utility.yul\":3368:3433 */\n tag_156\n jump\t// in\n tag_217:\n /* \"#utility.yul\":3230:3440 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":3446:3564 */\n tag_157:\n /* \"#utility.yul\":3533:3557 */\n tag_219\n /* \"#utility.yul\":3551:3556 */\n dup2\n /* \"#utility.yul\":3533:3557 */\n tag_152\n jump\t// in\n tag_219:\n /* \"#utility.yul\":3528:3531 */\n dup3\n /* \"#utility.yul\":3521:3558 */\n mstore\n /* \"#utility.yul\":3446:3564 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":3570:3792 */\n tag_28:\n /* \"#utility.yul\":3663:3667 */\n 0x00\n /* \"#utility.yul\":3701:3703 */\n 0x20\n /* \"#utility.yul\":3690:3699 */\n dup3\n /* \"#utility.yul\":3686:3704 */\n add\n /* \"#utility.yul\":3678:3704 */\n swap1\n pop\n /* \"#utility.yul\":3714:3785 */\n tag_221\n /* \"#utility.yul\":3782:3783 */\n 0x00\n /* \"#utility.yul\":3771:3780 */\n dup4\n /* \"#utility.yul\":3767:3784 */\n add\n /* \"#utility.yul\":3758:3764 */\n dup5\n /* \"#utility.yul\":3714:3785 */\n tag_157\n jump\t// in\n tag_221:\n /* \"#utility.yul\":3570:3792 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":3798:4417 */\n tag_31:\n /* \"#utility.yul\":3875:3881 */\n 0x00\n /* \"#utility.yul\":3883:3889 */\n dup1\n /* \"#utility.yul\":3891:3897 */\n 0x00\n /* \"#utility.yul\":3940:3942 */\n 0x60\n /* \"#utility.yul\":3928:3937 */\n dup5\n /* \"#utility.yul\":3919:3926 */\n dup7\n /* \"#utility.yul\":3915:3938 */\n sub\n /* \"#utility.yul\":3911:3943 */\n slt\n /* \"#utility.yul\":3908:4027 */\n iszero\n tag_223\n jumpi\n /* \"#utility.yul\":3946:4025 */\n tag_224\n tag_146\n jump\t// in\n tag_224:\n /* \"#utility.yul\":3908:4027 */\n tag_223:\n /* \"#utility.yul\":4066:4067 */\n 0x00\n /* \"#utility.yul\":4091:4144 */\n tag_225\n /* \"#utility.yul\":4136:4143 */\n dup7\n /* \"#utility.yul\":4127:4133 */\n dup3\n /* \"#utility.yul\":4116:4125 */\n dup8\n /* \"#utility.yul\":4112:4134 */\n add\n /* \"#utility.yul\":4091:4144 */\n tag_151\n jump\t// in\n tag_225:\n /* \"#utility.yul\":4081:4144 */\n swap4\n pop\n /* \"#utility.yul\":4037:4154 */\n pop\n /* \"#utility.yul\":4193:4195 */\n 0x20\n /* \"#utility.yul\":4219:4272 */\n tag_226\n /* \"#utility.yul\":4264:4271 */\n dup7\n /* \"#utility.yul\":4255:4261 */\n dup3\n /* \"#utility.yul\":4244:4253 */\n dup8\n /* \"#utility.yul\":4240:4262 */\n add\n /* \"#utility.yul\":4219:4272 */\n tag_151\n jump\t// in\n tag_226:\n /* \"#utility.yul\":4209:4272 */\n swap3\n pop\n /* \"#utility.yul\":4164:4282 */\n pop\n /* \"#utility.yul\":4321:4323 */\n 0x40\n /* \"#utility.yul\":4347:4400 */\n tag_227\n /* \"#utility.yul\":4392:4399 */\n dup7\n /* \"#utility.yul\":4383:4389 */\n dup3\n /* \"#utility.yul\":4372:4381 */\n dup8\n /* \"#utility.yul\":4368:4390 */\n add\n /* \"#utility.yul\":4347:4400 */\n tag_154\n jump\t// in\n tag_227:\n /* \"#utility.yul\":4337:4400 */\n swap2\n pop\n /* \"#utility.yul\":4292:4410 */\n pop\n /* \"#utility.yul\":3798:4417 */\n swap3\n pop\n swap3\n pop\n swap3\n jump\t// out\n /* \"#utility.yul\":4423:4509 */\n tag_158:\n /* \"#utility.yul\":4458:4465 */\n 0x00\n /* \"#utility.yul\":4498:4502 */\n 0xff\n /* \"#utility.yul\":4491:4496 */\n dup3\n /* \"#utility.yul\":4487:4503 */\n and\n /* \"#utility.yul\":4476:4503 */\n swap1\n pop\n /* \"#utility.yul\":4423:4509 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":4515:4627 */\n tag_159:\n /* \"#utility.yul\":4598:4620 */\n tag_230\n /* \"#utility.yul\":4614:4619 */\n dup2\n /* \"#utility.yul\":4598:4620 */\n tag_158\n jump\t// in\n tag_230:\n /* \"#utility.yul\":4593:4596 */\n dup3\n /* \"#utility.yul\":4586:4621 */\n mstore\n /* \"#utility.yul\":4515:4627 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":4633:4847 */\n tag_37:\n /* \"#utility.yul\":4722:4726 */\n 0x00\n /* \"#utility.yul\":4760:4762 */\n 0x20\n /* \"#utility.yul\":4749:4758 */\n dup3\n /* \"#utility.yul\":4745:4763 */\n add\n /* \"#utility.yul\":4737:4763 */\n swap1\n pop\n /* \"#utility.yul\":4773:4840 */\n tag_232\n /* \"#utility.yul\":4837:4838 */\n 0x00\n /* \"#utility.yul\":4826:4835 */\n dup4\n /* \"#utility.yul\":4822:4839 */\n add\n /* \"#utility.yul\":4813:4819 */\n dup5\n /* \"#utility.yul\":4773:4840 */\n tag_159\n jump\t// in\n tag_232:\n /* \"#utility.yul\":4633:4847 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":4853:5182 */\n tag_44:\n /* \"#utility.yul\":4912:4918 */\n 0x00\n /* \"#utility.yul\":4961:4963 */\n 0x20\n /* \"#utility.yul\":4949:4958 */\n dup3\n /* \"#utility.yul\":4940:4947 */\n dup5\n /* \"#utility.yul\":4936:4959 */\n sub\n /* \"#utility.yul\":4932:4964 */\n slt\n /* \"#utility.yul\":4929:5048 */\n iszero\n tag_234\n jumpi\n /* \"#utility.yul\":4967:5046 */\n tag_235\n tag_146\n jump\t// in\n tag_235:\n /* \"#utility.yul\":4929:5048 */\n tag_234:\n /* \"#utility.yul\":5087:5088 */\n 0x00\n /* \"#utility.yul\":5112:5165 */\n tag_236\n /* \"#utility.yul\":5157:5164 */\n dup5\n /* \"#utility.yul\":5148:5154 */\n dup3\n /* \"#utility.yul\":5137:5146 */\n dup6\n /* \"#utility.yul\":5133:5155 */\n add\n /* \"#utility.yul\":5112:5165 */\n tag_151\n jump\t// in\n tag_236:\n /* \"#utility.yul\":5102:5165 */\n swap2\n pop\n /* \"#utility.yul\":5058:5175 */\n pop\n /* \"#utility.yul\":4853:5182 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":5188:5662 */\n tag_60:\n /* \"#utility.yul\":5256:5262 */\n 0x00\n /* \"#utility.yul\":5264:5270 */\n dup1\n /* \"#utility.yul\":5313:5315 */\n 0x40\n /* \"#utility.yul\":5301:5310 */\n dup4\n /* \"#utility.yul\":5292:5299 */\n dup6\n /* \"#utility.yul\":5288:5311 */\n sub\n /* \"#utility.yul\":5284:5316 */\n slt\n /* \"#utility.yul\":5281:5400 */\n iszero\n tag_238\n jumpi\n /* \"#utility.yul\":5319:5398 */\n tag_239\n tag_146\n jump\t// in\n tag_239:\n /* \"#utility.yul\":5281:5400 */\n tag_238:\n /* \"#utility.yul\":5439:5440 */\n 0x00\n /* \"#utility.yul\":5464:5517 */\n tag_240\n /* \"#utility.yul\":5509:5516 */\n dup6\n /* \"#utility.yul\":5500:5506 */\n dup3\n /* \"#utility.yul\":5489:5498 */\n dup7\n /* \"#utility.yul\":5485:5507 */\n add\n /* \"#utility.yul\":5464:5517 */\n tag_151\n jump\t// in\n tag_240:\n /* \"#utility.yul\":5454:5517 */\n swap3\n pop\n /* \"#utility.yul\":5410:5527 */\n pop\n /* \"#utility.yul\":5566:5568 */\n 0x20\n /* \"#utility.yul\":5592:5645 */\n tag_241\n /* \"#utility.yul\":5637:5644 */\n dup6\n /* \"#utility.yul\":5628:5634 */\n dup3\n /* \"#utility.yul\":5617:5626 */\n dup7\n /* \"#utility.yul\":5613:5635 */\n add\n /* \"#utility.yul\":5592:5645 */\n tag_151\n jump\t// in\n tag_241:\n /* \"#utility.yul\":5582:5645 */\n swap2\n pop\n /* \"#utility.yul\":5537:5655 */\n pop\n /* \"#utility.yul\":5188:5662 */\n swap3\n pop\n swap3\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":5668:5848 */\n tag_160:\n /* \"#utility.yul\":5716:5793 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":5713:5714 */\n 0x00\n /* \"#utility.yul\":5706:5794 */\n mstore\n /* \"#utility.yul\":5813:5817 */\n 0x22\n /* \"#utility.yul\":5810:5811 */\n 0x04\n /* \"#utility.yul\":5803:5818 */\n mstore\n /* \"#utility.yul\":5837:5841 */\n 0x24\n /* \"#utility.yul\":5834:5835 */\n 0x00\n /* \"#utility.yul\":5827:5842 */\n revert\n /* \"#utility.yul\":5854:6174 */\n tag_65:\n /* \"#utility.yul\":5898:5904 */\n 0x00\n /* \"#utility.yul\":5935:5936 */\n 0x02\n /* \"#utility.yul\":5929:5933 */\n dup3\n /* \"#utility.yul\":5925:5937 */\n div\n /* \"#utility.yul\":5915:5937 */\n swap1\n pop\n /* \"#utility.yul\":5982:5983 */\n 0x01\n /* \"#utility.yul\":5976:5980 */\n dup3\n /* \"#utility.yul\":5972:5984 */\n and\n /* \"#utility.yul\":6003:6021 */\n dup1\n /* \"#utility.yul\":5993:6074 */\n tag_244\n jumpi\n /* \"#utility.yul\":6059:6063 */\n 0x7f\n /* \"#utility.yul\":6051:6057 */\n dup3\n /* \"#utility.yul\":6047:6064 */\n and\n /* \"#utility.yul\":6037:6064 */\n swap2\n pop\n /* \"#utility.yul\":5993:6074 */\n tag_244:\n /* \"#utility.yul\":6121:6123 */\n 0x20\n /* \"#utility.yul\":6113:6119 */\n dup3\n /* \"#utility.yul\":6110:6124 */\n lt\n /* \"#utility.yul\":6090:6108 */\n dup2\n /* \"#utility.yul\":6087:6125 */\n sub\n /* \"#utility.yul\":6084:6168 */\n tag_245\n jumpi\n /* \"#utility.yul\":6140:6158 */\n tag_246\n tag_160\n jump\t// in\n tag_246:\n /* \"#utility.yul\":6084:6168 */\n tag_245:\n /* \"#utility.yul\":5905:6174 */\n pop\n /* \"#utility.yul\":5854:6174 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":6180:6360 */\n tag_161:\n /* \"#utility.yul\":6228:6305 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":6225:6226 */\n 0x00\n /* \"#utility.yul\":6218:6306 */\n mstore\n /* \"#utility.yul\":6325:6329 */\n 0x11\n /* \"#utility.yul\":6322:6323 */\n 0x04\n /* \"#utility.yul\":6315:6330 */\n mstore\n /* \"#utility.yul\":6349:6353 */\n 0x24\n /* \"#utility.yul\":6346:6347 */\n 0x00\n /* \"#utility.yul\":6339:6354 */\n revert\n /* \"#utility.yul\":6366:6557 */\n tag_88:\n /* \"#utility.yul\":6406:6409 */\n 0x00\n /* \"#utility.yul\":6425:6445 */\n tag_249\n /* \"#utility.yul\":6443:6444 */\n dup3\n /* \"#utility.yul\":6425:6445 */\n tag_152\n jump\t// in\n tag_249:\n /* \"#utility.yul\":6420:6445 */\n swap2\n pop\n /* \"#utility.yul\":6459:6479 */\n tag_250\n /* \"#utility.yul\":6477:6478 */\n dup4\n /* \"#utility.yul\":6459:6479 */\n tag_152\n jump\t// in\n tag_250:\n /* \"#utility.yul\":6454:6479 */\n swap3\n pop\n /* \"#utility.yul\":6502:6503 */\n dup3\n /* \"#utility.yul\":6499:6500 */\n dup3\n /* \"#utility.yul\":6495:6504 */\n add\n /* \"#utility.yul\":6488:6504 */\n swap1\n pop\n /* \"#utility.yul\":6523:6526 */\n dup1\n /* \"#utility.yul\":6520:6521 */\n dup3\n /* \"#utility.yul\":6517:6527 */\n gt\n /* \"#utility.yul\":6514:6550 */\n iszero\n tag_251\n jumpi\n /* \"#utility.yul\":6530:6548 */\n tag_252\n tag_161\n jump\t// in\n tag_252:\n /* \"#utility.yul\":6514:6550 */\n tag_251:\n /* \"#utility.yul\":6366:6557 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":6563:6787 */\n tag_162:\n /* \"#utility.yul\":6703:6737 */\n 0x45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77\n /* \"#utility.yul\":6699:6700 */\n 0x00\n /* \"#utility.yul\":6691:6697 */\n dup3\n /* \"#utility.yul\":6687:6701 */\n add\n /* \"#utility.yul\":6680:6738 */\n mstore\n /* \"#utility.yul\":6772:6779 */\n 0x207a65726f000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":6767:6769 */\n 0x20\n /* \"#utility.yul\":6759:6765 */\n dup3\n /* \"#utility.yul\":6755:6770 */\n add\n /* \"#utility.yul\":6748:6780 */\n mstore\n /* \"#utility.yul\":6563:6787 */\n pop\n jump\t// out\n /* \"#utility.yul\":6793:7159 */\n tag_163:\n /* \"#utility.yul\":6935:6938 */\n 0x00\n /* \"#utility.yul\":6956:7023 */\n tag_255\n /* \"#utility.yul\":7020:7022 */\n 0x25\n /* \"#utility.yul\":7015:7018 */\n dup4\n /* \"#utility.yul\":6956:7023 */\n tag_141\n jump\t// in\n tag_255:\n /* \"#utility.yul\":6949:7023 */\n swap2\n pop\n /* \"#utility.yul\":7032:7125 */\n tag_256\n /* \"#utility.yul\":7121:7124 */\n dup3\n /* \"#utility.yul\":7032:7125 */\n tag_162\n jump\t// in\n tag_256:\n /* \"#utility.yul\":7150:7152 */\n 0x40\n /* \"#utility.yul\":7145:7148 */\n dup3\n /* \"#utility.yul\":7141:7153 */\n add\n /* \"#utility.yul\":7134:7153 */\n swap1\n pop\n /* \"#utility.yul\":6793:7159 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":7165:7584 */\n tag_101:\n /* \"#utility.yul\":7331:7335 */\n 0x00\n /* \"#utility.yul\":7369:7371 */\n 0x20\n /* \"#utility.yul\":7358:7367 */\n dup3\n /* \"#utility.yul\":7354:7372 */\n add\n /* \"#utility.yul\":7346:7372 */\n swap1\n pop\n /* \"#utility.yul\":7418:7427 */\n dup2\n /* \"#utility.yul\":7412:7416 */\n dup2\n /* \"#utility.yul\":7408:7428 */\n sub\n /* \"#utility.yul\":7404:7405 */\n 0x00\n /* \"#utility.yul\":7393:7402 */\n dup4\n /* \"#utility.yul\":7389:7406 */\n add\n /* \"#utility.yul\":7382:7429 */\n mstore\n /* \"#utility.yul\":7446:7577 */\n tag_258\n /* \"#utility.yul\":7572:7576 */\n dup2\n /* \"#utility.yul\":7446:7577 */\n tag_163\n jump\t// in\n tag_258:\n /* \"#utility.yul\":7438:7577 */\n swap1\n pop\n /* \"#utility.yul\":7165:7584 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":7590:7813 */\n tag_164:\n /* \"#utility.yul\":7730:7764 */\n 0x45524332303a20617070726f76652066726f6d20746865207a65726f20616464\n /* \"#utility.yul\":7726:7727 */\n 0x00\n /* \"#utility.yul\":7718:7724 */\n dup3\n /* \"#utility.yul\":7714:7728 */\n add\n /* \"#utility.yul\":7707:7765 */\n mstore\n /* \"#utility.yul\":7799:7805 */\n 0x7265737300000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":7794:7796 */\n 0x20\n /* \"#utility.yul\":7786:7792 */\n dup3\n /* \"#utility.yul\":7782:7797 */\n add\n /* \"#utility.yul\":7775:7806 */\n mstore\n /* \"#utility.yul\":7590:7813 */\n pop\n jump\t// out\n /* \"#utility.yul\":7819:8185 */\n tag_165:\n /* \"#utility.yul\":7961:7964 */\n 0x00\n /* \"#utility.yul\":7982:8049 */\n tag_261\n /* \"#utility.yul\":8046:8048 */\n 0x24\n /* \"#utility.yul\":8041:8044 */\n dup4\n /* \"#utility.yul\":7982:8049 */\n tag_141\n jump\t// in\n tag_261:\n /* \"#utility.yul\":7975:8049 */\n swap2\n pop\n /* \"#utility.yul\":8058:8151 */\n tag_262\n /* \"#utility.yul\":8147:8150 */\n dup3\n /* \"#utility.yul\":8058:8151 */\n tag_164\n jump\t// in\n tag_262:\n /* \"#utility.yul\":8176:8178 */\n 0x40\n /* \"#utility.yul\":8171:8174 */\n dup3\n /* \"#utility.yul\":8167:8179 */\n add\n /* \"#utility.yul\":8160:8179 */\n swap1\n pop\n /* \"#utility.yul\":7819:8185 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":8191:8610 */\n tag_111:\n /* \"#utility.yul\":8357:8361 */\n 0x00\n /* \"#utility.yul\":8395:8397 */\n 0x20\n /* \"#utility.yul\":8384:8393 */\n dup3\n /* \"#utility.yul\":8380:8398 */\n add\n /* \"#utility.yul\":8372:8398 */\n swap1\n pop\n /* \"#utility.yul\":8444:8453 */\n dup2\n /* \"#utility.yul\":8438:8442 */\n dup2\n /* \"#utility.yul\":8434:8454 */\n sub\n /* \"#utility.yul\":8430:8431 */\n 0x00\n /* \"#utility.yul\":8419:8428 */\n dup4\n /* \"#utility.yul\":8415:8432 */\n add\n /* \"#utility.yul\":8408:8455 */\n mstore\n /* \"#utility.yul\":8472:8603 */\n tag_264\n /* \"#utility.yul\":8598:8602 */\n dup2\n /* \"#utility.yul\":8472:8603 */\n tag_165\n jump\t// in\n tag_264:\n /* \"#utility.yul\":8464:8603 */\n swap1\n pop\n /* \"#utility.yul\":8191:8610 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":8616:8837 */\n tag_166:\n /* \"#utility.yul\":8756:8790 */\n 0x45524332303a20617070726f766520746f20746865207a65726f206164647265\n /* \"#utility.yul\":8752:8753 */\n 0x00\n /* \"#utility.yul\":8744:8750 */\n dup3\n /* \"#utility.yul\":8740:8754 */\n add\n /* \"#utility.yul\":8733:8791 */\n mstore\n /* \"#utility.yul\":8825:8829 */\n 0x7373000000000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":8820:8822 */\n 0x20\n /* \"#utility.yul\":8812:8818 */\n dup3\n /* \"#utility.yul\":8808:8823 */\n add\n /* \"#utility.yul\":8801:8830 */\n mstore\n /* \"#utility.yul\":8616:8837 */\n pop\n jump\t// out\n /* \"#utility.yul\":8843:9209 */\n tag_167:\n /* \"#utility.yul\":8985:8988 */\n 0x00\n /* \"#utility.yul\":9006:9073 */\n tag_267\n /* \"#utility.yul\":9070:9072 */\n 0x22\n /* \"#utility.yul\":9065:9068 */\n dup4\n /* \"#utility.yul\":9006:9073 */\n tag_141\n jump\t// in\n tag_267:\n /* \"#utility.yul\":8999:9073 */\n swap2\n pop\n /* \"#utility.yul\":9082:9175 */\n tag_268\n /* \"#utility.yul\":9171:9174 */\n dup3\n /* \"#utility.yul\":9082:9175 */\n tag_166\n jump\t// in\n tag_268:\n /* \"#utility.yul\":9200:9202 */\n 0x40\n /* \"#utility.yul\":9195:9198 */\n dup3\n /* \"#utility.yul\":9191:9203 */\n add\n /* \"#utility.yul\":9184:9203 */\n swap1\n pop\n /* \"#utility.yul\":8843:9209 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":9215:9634 */\n tag_114:\n /* \"#utility.yul\":9381:9385 */\n 0x00\n /* \"#utility.yul\":9419:9421 */\n 0x20\n /* \"#utility.yul\":9408:9417 */\n dup3\n /* \"#utility.yul\":9404:9422 */\n add\n /* \"#utility.yul\":9396:9422 */\n swap1\n pop\n /* \"#utility.yul\":9468:9477 */\n dup2\n /* \"#utility.yul\":9462:9466 */\n dup2\n /* \"#utility.yul\":9458:9478 */\n sub\n /* \"#utility.yul\":9454:9455 */\n 0x00\n /* \"#utility.yul\":9443:9452 */\n dup4\n /* \"#utility.yul\":9439:9456 */\n add\n /* \"#utility.yul\":9432:9479 */\n mstore\n /* \"#utility.yul\":9496:9627 */\n tag_270\n /* \"#utility.yul\":9622:9626 */\n dup2\n /* \"#utility.yul\":9496:9627 */\n tag_167\n jump\t// in\n tag_270:\n /* \"#utility.yul\":9488:9627 */\n swap1\n pop\n /* \"#utility.yul\":9215:9634 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":9640:9819 */\n tag_168:\n /* \"#utility.yul\":9780:9811 */\n 0x45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000\n /* \"#utility.yul\":9776:9777 */\n 0x00\n /* \"#utility.yul\":9768:9774 */\n dup3\n /* \"#utility.yul\":9764:9778 */\n add\n /* \"#utility.yul\":9757:9812 */\n mstore\n /* \"#utility.yul\":9640:9819 */\n pop\n jump\t// out\n /* \"#utility.yul\":9825:10191 */\n tag_169:\n /* \"#utility.yul\":9967:9970 */\n 0x00\n /* \"#utility.yul\":9988:10055 */\n tag_273\n /* \"#utility.yul\":10052:10054 */\n 0x1d\n /* \"#utility.yul\":10047:10050 */\n dup4\n /* \"#utility.yul\":9988:10055 */\n tag_141\n jump\t// in\n tag_273:\n /* \"#utility.yul\":9981:10055 */\n swap2\n pop\n /* \"#utility.yul\":10064:10157 */\n tag_274\n /* \"#utility.yul\":10153:10156 */\n dup3\n /* \"#utility.yul\":10064:10157 */\n tag_168\n jump\t// in\n tag_274:\n /* \"#utility.yul\":10182:10184 */\n 0x20\n /* \"#utility.yul\":10177:10180 */\n dup3\n /* \"#utility.yul\":10173:10185 */\n add\n /* \"#utility.yul\":10166:10185 */\n swap1\n pop\n /* \"#utility.yul\":9825:10191 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":10197:10616 */\n tag_121:\n /* \"#utility.yul\":10363:10367 */\n 0x00\n /* \"#utility.yul\":10401:10403 */\n 0x20\n /* \"#utility.yul\":10390:10399 */\n dup3\n /* \"#utility.yul\":10386:10404 */\n add\n /* \"#utility.yul\":10378:10404 */\n swap1\n pop\n /* \"#utility.yul\":10450:10459 */\n dup2\n /* \"#utility.yul\":10444:10448 */\n dup2\n /* \"#utility.yul\":10440:10460 */\n sub\n /* \"#utility.yul\":10436:10437 */\n 0x00\n /* \"#utility.yul\":10425:10434 */\n dup4\n /* \"#utility.yul\":10421:10438 */\n add\n /* \"#utility.yul\":10414:10461 */\n mstore\n /* \"#utility.yul\":10478:10609 */\n tag_276\n /* \"#utility.yul\":10604:10608 */\n dup2\n /* \"#utility.yul\":10478:10609 */\n tag_169\n jump\t// in\n tag_276:\n /* \"#utility.yul\":10470:10609 */\n swap1\n pop\n /* \"#utility.yul\":10197:10616 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":10622:10846 */\n tag_170:\n /* \"#utility.yul\":10762:10796 */\n 0x45524332303a207472616e736665722066726f6d20746865207a65726f206164\n /* \"#utility.yul\":10758:10759 */\n 0x00\n /* \"#utility.yul\":10750:10756 */\n dup3\n /* \"#utility.yul\":10746:10760 */\n add\n /* \"#utility.yul\":10739:10797 */\n mstore\n /* \"#utility.yul\":10831:10838 */\n 0x6472657373000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":10826:10828 */\n 0x20\n /* \"#utility.yul\":10818:10824 */\n dup3\n /* \"#utility.yul\":10814:10829 */\n add\n /* \"#utility.yul\":10807:10839 */\n mstore\n /* \"#utility.yul\":10622:10846 */\n pop\n jump\t// out\n /* \"#utility.yul\":10852:11218 */\n tag_171:\n /* \"#utility.yul\":10994:10997 */\n 0x00\n /* \"#utility.yul\":11015:11082 */\n tag_279\n /* \"#utility.yul\":11079:11081 */\n 0x25\n /* \"#utility.yul\":11074:11077 */\n dup4\n /* \"#utility.yul\":11015:11082 */\n tag_141\n jump\t// in\n tag_279:\n /* \"#utility.yul\":11008:11082 */\n swap2\n pop\n /* \"#utility.yul\":11091:11184 */\n tag_280\n /* \"#utility.yul\":11180:11183 */\n dup3\n /* \"#utility.yul\":11091:11184 */\n tag_170\n jump\t// in\n tag_280:\n /* \"#utility.yul\":11209:11211 */\n 0x40\n /* \"#utility.yul\":11204:11207 */\n dup3\n /* \"#utility.yul\":11200:11212 */\n add\n /* \"#utility.yul\":11193:11212 */\n swap1\n pop\n /* \"#utility.yul\":10852:11218 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":11224:11643 */\n tag_126:\n /* \"#utility.yul\":11390:11394 */\n 0x00\n /* \"#utility.yul\":11428:11430 */\n 0x20\n /* \"#utility.yul\":11417:11426 */\n dup3\n /* \"#utility.yul\":11413:11431 */\n add\n /* \"#utility.yul\":11405:11431 */\n swap1\n pop\n /* \"#utility.yul\":11477:11486 */\n dup2\n /* \"#utility.yul\":11471:11475 */\n dup2\n /* \"#utility.yul\":11467:11487 */\n sub\n /* \"#utility.yul\":11463:11464 */\n 0x00\n /* \"#utility.yul\":11452:11461 */\n dup4\n /* \"#utility.yul\":11448:11465 */\n add\n /* \"#utility.yul\":11441:11488 */\n mstore\n /* \"#utility.yul\":11505:11636 */\n tag_282\n /* \"#utility.yul\":11631:11635 */\n dup2\n /* \"#utility.yul\":11505:11636 */\n tag_171\n jump\t// in\n tag_282:\n /* \"#utility.yul\":11497:11636 */\n swap1\n pop\n /* \"#utility.yul\":11224:11643 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":11649:11871 */\n tag_172:\n /* \"#utility.yul\":11789:11823 */\n 0x45524332303a207472616e7366657220746f20746865207a65726f2061646472\n /* \"#utility.yul\":11785:11786 */\n 0x00\n /* \"#utility.yul\":11777:11783 */\n dup3\n /* \"#utility.yul\":11773:11787 */\n add\n /* \"#utility.yul\":11766:11824 */\n mstore\n /* \"#utility.yul\":11858:11863 */\n 0x6573730000000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":11853:11855 */\n 0x20\n /* \"#utility.yul\":11845:11851 */\n dup3\n /* \"#utility.yul\":11841:11856 */\n add\n /* \"#utility.yul\":11834:11864 */\n mstore\n /* \"#utility.yul\":11649:11871 */\n pop\n jump\t// out\n /* \"#utility.yul\":11877:12243 */\n tag_173:\n /* \"#utility.yul\":12019:12022 */\n 0x00\n /* \"#utility.yul\":12040:12107 */\n tag_285\n /* \"#utility.yul\":12104:12106 */\n 0x23\n /* \"#utility.yul\":12099:12102 */\n dup4\n /* \"#utility.yul\":12040:12107 */\n tag_141\n jump\t// in\n tag_285:\n /* \"#utility.yul\":12033:12107 */\n swap2\n pop\n /* \"#utility.yul\":12116:12209 */\n tag_286\n /* \"#utility.yul\":12205:12208 */\n dup3\n /* \"#utility.yul\":12116:12209 */\n tag_172\n jump\t// in\n tag_286:\n /* \"#utility.yul\":12234:12236 */\n 0x40\n /* \"#utility.yul\":12229:12232 */\n dup3\n /* \"#utility.yul\":12225:12237 */\n add\n /* \"#utility.yul\":12218:12237 */\n swap1\n pop\n /* \"#utility.yul\":11877:12243 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":12249:12668 */\n tag_129:\n /* \"#utility.yul\":12415:12419 */\n 0x00\n /* \"#utility.yul\":12453:12455 */\n 0x20\n /* \"#utility.yul\":12442:12451 */\n dup3\n /* \"#utility.yul\":12438:12456 */\n add\n /* \"#utility.yul\":12430:12456 */\n swap1\n pop\n /* \"#utility.yul\":12502:12511 */\n dup2\n /* \"#utility.yul\":12496:12500 */\n dup2\n /* \"#utility.yul\":12492:12512 */\n sub\n /* \"#utility.yul\":12488:12489 */\n 0x00\n /* \"#utility.yul\":12477:12486 */\n dup4\n /* \"#utility.yul\":12473:12490 */\n add\n /* \"#utility.yul\":12466:12513 */\n mstore\n /* \"#utility.yul\":12530:12661 */\n tag_288\n /* \"#utility.yul\":12656:12660 */\n dup2\n /* \"#utility.yul\":12530:12661 */\n tag_173\n jump\t// in\n tag_288:\n /* \"#utility.yul\":12522:12661 */\n swap1\n pop\n /* \"#utility.yul\":12249:12668 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":12674:12899 */\n tag_174:\n /* \"#utility.yul\":12814:12848 */\n 0x45524332303a207472616e7366657220616d6f756e7420657863656564732062\n /* \"#utility.yul\":12810:12811 */\n 0x00\n /* \"#utility.yul\":12802:12808 */\n dup3\n /* \"#utility.yul\":12798:12812 */\n add\n /* \"#utility.yul\":12791:12849 */\n mstore\n /* \"#utility.yul\":12883:12891 */\n 0x616c616e63650000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":12878:12880 */\n 0x20\n /* \"#utility.yul\":12870:12876 */\n dup3\n /* \"#utility.yul\":12866:12881 */\n add\n /* \"#utility.yul\":12859:12892 */\n mstore\n /* \"#utility.yul\":12674:12899 */\n pop\n jump\t// out\n /* \"#utility.yul\":12905:13271 */\n tag_175:\n /* \"#utility.yul\":13047:13050 */\n 0x00\n /* \"#utility.yul\":13068:13135 */\n tag_291\n /* \"#utility.yul\":13132:13134 */\n 0x26\n /* \"#utility.yul\":13127:13130 */\n dup4\n /* \"#utility.yul\":13068:13135 */\n tag_141\n jump\t// in\n tag_291:\n /* \"#utility.yul\":13061:13135 */\n swap2\n pop\n /* \"#utility.yul\":13144:13237 */\n tag_292\n /* \"#utility.yul\":13233:13236 */\n dup3\n /* \"#utility.yul\":13144:13237 */\n tag_174\n jump\t// in\n tag_292:\n /* \"#utility.yul\":13262:13264 */\n 0x40\n /* \"#utility.yul\":13257:13260 */\n dup3\n /* \"#utility.yul\":13253:13265 */\n add\n /* \"#utility.yul\":13246:13265 */\n swap1\n pop\n /* \"#utility.yul\":12905:13271 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":13277:13696 */\n tag_134:\n /* \"#utility.yul\":13443:13447 */\n 0x00\n /* \"#utility.yul\":13481:13483 */\n 0x20\n /* \"#utility.yul\":13470:13479 */\n dup3\n /* \"#utility.yul\":13466:13484 */\n add\n /* \"#utility.yul\":13458:13484 */\n swap1\n pop\n /* \"#utility.yul\":13530:13539 */\n dup2\n /* \"#utility.yul\":13524:13528 */\n dup2\n /* \"#utility.yul\":13520:13540 */\n sub\n /* \"#utility.yul\":13516:13517 */\n 0x00\n /* \"#utility.yul\":13505:13514 */\n dup4\n /* \"#utility.yul\":13501:13518 */\n add\n /* \"#utility.yul\":13494:13541 */\n mstore\n /* \"#utility.yul\":13558:13689 */\n tag_294\n /* \"#utility.yul\":13684:13688 */\n dup2\n /* \"#utility.yul\":13558:13689 */\n tag_175\n jump\t// in\n tag_294:\n /* \"#utility.yul\":13550:13689 */\n swap1\n pop\n /* \"#utility.yul\":13277:13696 */\n swap2\n swap1\n pop\n jump\t// out\n\n auxdata: 0xa2646970667358221220ba81fcf5a442e5a2efc43f5b840635f59435ea3ef183517de79c5566c767fc4964736f6c63430008110033\n}\n", | |
| "bytecode": { | |
| "functionDebugData": { | |
| "@_157": { | |
| "entryPoint": null, | |
| "id": 157, | |
| "parameterSlots": 2, | |
| "returnSlots": 0 | |
| }, | |
| "abi_decode_available_length_t_string_memory_ptr_fromMemory": { | |
| "entryPoint": 376, | |
| "id": null, | |
| "parameterSlots": 3, | |
| "returnSlots": 1 | |
| }, | |
| "abi_decode_t_string_memory_ptr_fromMemory": { | |
| "entryPoint": 451, | |
| "id": null, | |
| "parameterSlots": 2, | |
| "returnSlots": 1 | |
| }, | |
| "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory": { | |
| "entryPoint": 502, | |
| "id": null, | |
| "parameterSlots": 2, | |
| "returnSlots": 2 | |
| }, | |
| "allocate_memory": { | |
| "entryPoint": 247, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "allocate_unbounded": { | |
| "entryPoint": 99, | |
| "id": null, | |
| "parameterSlots": 0, | |
| "returnSlots": 1 | |
| }, | |
| "array_allocation_size_t_string_memory_ptr": { | |
| "entryPoint": 278, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "array_dataslot_t_string_storage": { | |
| "entryPoint": 746, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "array_length_t_string_memory_ptr": { | |
| "entryPoint": 635, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "clean_up_bytearray_end_slots_t_string_storage": { | |
| "entryPoint": 1067, | |
| "id": null, | |
| "parameterSlots": 3, | |
| "returnSlots": 0 | |
| }, | |
| "cleanup_t_uint256": { | |
| "entryPoint": 882, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "clear_storage_range_t_bytes1": { | |
| "entryPoint": 1028, | |
| "id": null, | |
| "parameterSlots": 2, | |
| "returnSlots": 0 | |
| }, | |
| "convert_t_uint256_to_t_uint256": { | |
| "entryPoint": 902, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage": { | |
| "entryPoint": 1222, | |
| "id": null, | |
| "parameterSlots": 2, | |
| "returnSlots": 0 | |
| }, | |
| "copy_memory_to_memory_with_cleanup": { | |
| "entryPoint": 332, | |
| "id": null, | |
| "parameterSlots": 3, | |
| "returnSlots": 0 | |
| }, | |
| "divide_by_32_ceil": { | |
| "entryPoint": 767, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "extract_byte_array_length": { | |
| "entryPoint": 693, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "extract_used_part_and_set_length_of_short_byte_array": { | |
| "entryPoint": 1192, | |
| "id": null, | |
| "parameterSlots": 2, | |
| "returnSlots": 1 | |
| }, | |
| "finalize_allocation": { | |
| "entryPoint": 193, | |
| "id": null, | |
| "parameterSlots": 2, | |
| "returnSlots": 0 | |
| }, | |
| "identity": { | |
| "entryPoint": 892, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "mask_bytes_dynamic": { | |
| "entryPoint": 1160, | |
| "id": null, | |
| "parameterSlots": 2, | |
| "returnSlots": 1 | |
| }, | |
| "panic_error_0x22": { | |
| "entryPoint": 646, | |
| "id": null, | |
| "parameterSlots": 0, | |
| "returnSlots": 0 | |
| }, | |
| "panic_error_0x41": { | |
| "entryPoint": 146, | |
| "id": null, | |
| "parameterSlots": 0, | |
| "returnSlots": 0 | |
| }, | |
| "prepare_store_t_uint256": { | |
| "entryPoint": 942, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d": { | |
| "entryPoint": 119, | |
| "id": null, | |
| "parameterSlots": 0, | |
| "returnSlots": 0 | |
| }, | |
| "revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae": { | |
| "entryPoint": 124, | |
| "id": null, | |
| "parameterSlots": 0, | |
| "returnSlots": 0 | |
| }, | |
| "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": { | |
| "entryPoint": 114, | |
| "id": null, | |
| "parameterSlots": 0, | |
| "returnSlots": 0 | |
| }, | |
| "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": { | |
| "entryPoint": 109, | |
| "id": null, | |
| "parameterSlots": 0, | |
| "returnSlots": 0 | |
| }, | |
| "round_up_to_mul_of_32": { | |
| "entryPoint": 129, | |
| "id": null, | |
| "parameterSlots": 1, | |
| "returnSlots": 1 | |
| }, | |
| "shift_left_dynamic": { | |
| "entryPoint": 783, | |
| "id": null, | |
| "parameterSlots": 2, | |
| "returnSlots": 1 | |
| }, | |
| "shift_right_unsigned_dynamic": { | |
| "entryPoint": 1147, | |
| "id": null, | |
| "parameterSlots": 2, | |
| "returnSlots": 1 | |
| }, | |
| "storage_set_to_zero_t_uint256": { | |
| "entryPoint": 1000, | |
| "id": null, | |
| "parameterSlots": 2, | |
| "returnSlots": 0 | |
| }, | |
| "update_byte_slice_dynamic32": { | |
| "entryPoint": 796, | |
| "id": null, | |
| "parameterSlots": 3, | |
| "returnSlots": 1 | |
| }, | |
| "update_storage_value_t_uint256_to_t_uint256": { | |
| "entryPoint": 952, | |
| "id": null, | |
| "parameterSlots": 3, | |
| "returnSlots": 0 | |
| }, | |
| "zero_value_for_split_t_uint256": { | |
| "entryPoint": 995, | |
| "id": null, | |
| "parameterSlots": 0, | |
| "returnSlots": 1 | |
| } | |
| }, | |
| "generatedSources": [ | |
| { | |
| "ast": { | |
| "nodeType": "YulBlock", | |
| "src": "0:8574:11", | |
| "statements": [ | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "47:35:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "57:19:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "73:2:11", | |
| "type": "", | |
| "value": "64" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mload", | |
| "nodeType": "YulIdentifier", | |
| "src": "67:5:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "67:9:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "memPtr", | |
| "nodeType": "YulIdentifier", | |
| "src": "57:6:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "allocate_unbounded", | |
| "nodeType": "YulFunctionDefinition", | |
| "returnVariables": [ | |
| { | |
| "name": "memPtr", | |
| "nodeType": "YulTypedName", | |
| "src": "40:6:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "7:75:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "177:28:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "194:1:11", | |
| "type": "", | |
| "value": "0" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "197:1:11", | |
| "type": "", | |
| "value": "0" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "revert", | |
| "nodeType": "YulIdentifier", | |
| "src": "187:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "187:12:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "187:12:11" | |
| } | |
| ] | |
| }, | |
| "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", | |
| "nodeType": "YulFunctionDefinition", | |
| "src": "88:117:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "300:28:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "317:1:11", | |
| "type": "", | |
| "value": "0" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "320:1:11", | |
| "type": "", | |
| "value": "0" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "revert", | |
| "nodeType": "YulIdentifier", | |
| "src": "310:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "310:12:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "310:12:11" | |
| } | |
| ] | |
| }, | |
| "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", | |
| "nodeType": "YulFunctionDefinition", | |
| "src": "211:117:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "423:28:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "440:1:11", | |
| "type": "", | |
| "value": "0" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "443:1:11", | |
| "type": "", | |
| "value": "0" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "revert", | |
| "nodeType": "YulIdentifier", | |
| "src": "433:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "433:12:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "433:12:11" | |
| } | |
| ] | |
| }, | |
| "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", | |
| "nodeType": "YulFunctionDefinition", | |
| "src": "334:117:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "546:28:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "563:1:11", | |
| "type": "", | |
| "value": "0" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "566:1:11", | |
| "type": "", | |
| "value": "0" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "revert", | |
| "nodeType": "YulIdentifier", | |
| "src": "556:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "556:12:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "556:12:11" | |
| } | |
| ] | |
| }, | |
| "name": "revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae", | |
| "nodeType": "YulFunctionDefinition", | |
| "src": "457:117:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "628:54:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "638:38:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulIdentifier", | |
| "src": "656:5:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "663:2:11", | |
| "type": "", | |
| "value": "31" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "652:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "652:14:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "672:2:11", | |
| "type": "", | |
| "value": "31" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "not", | |
| "nodeType": "YulIdentifier", | |
| "src": "668:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "668:7:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "and", | |
| "nodeType": "YulIdentifier", | |
| "src": "648:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "648:28:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "result", | |
| "nodeType": "YulIdentifier", | |
| "src": "638:6:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "round_up_to_mul_of_32", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulTypedName", | |
| "src": "611:5:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "result", | |
| "nodeType": "YulTypedName", | |
| "src": "621:6:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "580:102:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "716:152:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "733:1:11", | |
| "type": "", | |
| "value": "0" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "736:77:11", | |
| "type": "", | |
| "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "726:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "726:88:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "726:88:11" | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "830:1:11", | |
| "type": "", | |
| "value": "4" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "833:4:11", | |
| "type": "", | |
| "value": "0x41" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "823:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "823:15:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "823:15:11" | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "854:1:11", | |
| "type": "", | |
| "value": "0" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "857:4:11", | |
| "type": "", | |
| "value": "0x24" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "revert", | |
| "nodeType": "YulIdentifier", | |
| "src": "847:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "847:15:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "847:15:11" | |
| } | |
| ] | |
| }, | |
| "name": "panic_error_0x41", | |
| "nodeType": "YulFunctionDefinition", | |
| "src": "688:180:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "917:238:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulVariableDeclaration", | |
| "src": "927:58:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "memPtr", | |
| "nodeType": "YulIdentifier", | |
| "src": "949:6:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "name": "size", | |
| "nodeType": "YulIdentifier", | |
| "src": "979:4:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "round_up_to_mul_of_32", | |
| "nodeType": "YulIdentifier", | |
| "src": "957:21:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "957:27:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "945:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "945:40:11" | |
| }, | |
| "variables": [ | |
| { | |
| "name": "newFreePtr", | |
| "nodeType": "YulTypedName", | |
| "src": "931:10:11", | |
| "type": "" | |
| } | |
| ] | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "1096:22:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [], | |
| "functionName": { | |
| "name": "panic_error_0x41", | |
| "nodeType": "YulIdentifier", | |
| "src": "1098:16:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "1098:18:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "1098:18:11" | |
| } | |
| ] | |
| }, | |
| "condition": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "newFreePtr", | |
| "nodeType": "YulIdentifier", | |
| "src": "1039:10:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "1051:18:11", | |
| "type": "", | |
| "value": "0xffffffffffffffff" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "gt", | |
| "nodeType": "YulIdentifier", | |
| "src": "1036:2:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "1036:34:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "name": "newFreePtr", | |
| "nodeType": "YulIdentifier", | |
| "src": "1075:10:11" | |
| }, | |
| { | |
| "name": "memPtr", | |
| "nodeType": "YulIdentifier", | |
| "src": "1087:6:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "lt", | |
| "nodeType": "YulIdentifier", | |
| "src": "1072:2:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "1072:22:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "or", | |
| "nodeType": "YulIdentifier", | |
| "src": "1033:2:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "1033:62:11" | |
| }, | |
| "nodeType": "YulIf", | |
| "src": "1030:88:11" | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "1134:2:11", | |
| "type": "", | |
| "value": "64" | |
| }, | |
| { | |
| "name": "newFreePtr", | |
| "nodeType": "YulIdentifier", | |
| "src": "1138:10:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "1127:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "1127:22:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "1127:22:11" | |
| } | |
| ] | |
| }, | |
| "name": "finalize_allocation", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "memPtr", | |
| "nodeType": "YulTypedName", | |
| "src": "903:6:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "size", | |
| "nodeType": "YulTypedName", | |
| "src": "911:4:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "874:281:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "1202:88:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "1212:30:11", | |
| "value": { | |
| "arguments": [], | |
| "functionName": { | |
| "name": "allocate_unbounded", | |
| "nodeType": "YulIdentifier", | |
| "src": "1222:18:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "1222:20:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "memPtr", | |
| "nodeType": "YulIdentifier", | |
| "src": "1212:6:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "name": "memPtr", | |
| "nodeType": "YulIdentifier", | |
| "src": "1271:6:11" | |
| }, | |
| { | |
| "name": "size", | |
| "nodeType": "YulIdentifier", | |
| "src": "1279:4:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "finalize_allocation", | |
| "nodeType": "YulIdentifier", | |
| "src": "1251:19:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "1251:33:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "1251:33:11" | |
| } | |
| ] | |
| }, | |
| "name": "allocate_memory", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "size", | |
| "nodeType": "YulTypedName", | |
| "src": "1186:4:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "memPtr", | |
| "nodeType": "YulTypedName", | |
| "src": "1195:6:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "1161:129:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "1363:241:11", | |
| "statements": [ | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "1468:22:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [], | |
| "functionName": { | |
| "name": "panic_error_0x41", | |
| "nodeType": "YulIdentifier", | |
| "src": "1470:16:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "1470:18:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "1470:18:11" | |
| } | |
| ] | |
| }, | |
| "condition": { | |
| "arguments": [ | |
| { | |
| "name": "length", | |
| "nodeType": "YulIdentifier", | |
| "src": "1440:6:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "1448:18:11", | |
| "type": "", | |
| "value": "0xffffffffffffffff" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "gt", | |
| "nodeType": "YulIdentifier", | |
| "src": "1437:2:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "1437:30:11" | |
| }, | |
| "nodeType": "YulIf", | |
| "src": "1434:56:11" | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "1500:37:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "length", | |
| "nodeType": "YulIdentifier", | |
| "src": "1530:6:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "round_up_to_mul_of_32", | |
| "nodeType": "YulIdentifier", | |
| "src": "1508:21:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "1508:29:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "size", | |
| "nodeType": "YulIdentifier", | |
| "src": "1500:4:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "1574:23:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "size", | |
| "nodeType": "YulIdentifier", | |
| "src": "1586:4:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "1592:4:11", | |
| "type": "", | |
| "value": "0x20" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "1582:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "1582:15:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "size", | |
| "nodeType": "YulIdentifier", | |
| "src": "1574:4:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "array_allocation_size_t_string_memory_ptr", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "length", | |
| "nodeType": "YulTypedName", | |
| "src": "1347:6:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "size", | |
| "nodeType": "YulTypedName", | |
| "src": "1358:4:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "1296:308:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "1672:184:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulVariableDeclaration", | |
| "src": "1682:10:11", | |
| "value": { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "1691:1:11", | |
| "type": "", | |
| "value": "0" | |
| }, | |
| "variables": [ | |
| { | |
| "name": "i", | |
| "nodeType": "YulTypedName", | |
| "src": "1686:1:11", | |
| "type": "" | |
| } | |
| ] | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "1751:63:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "dst", | |
| "nodeType": "YulIdentifier", | |
| "src": "1776:3:11" | |
| }, | |
| { | |
| "name": "i", | |
| "nodeType": "YulIdentifier", | |
| "src": "1781:1:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "1772:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "1772:11:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "src", | |
| "nodeType": "YulIdentifier", | |
| "src": "1795:3:11" | |
| }, | |
| { | |
| "name": "i", | |
| "nodeType": "YulIdentifier", | |
| "src": "1800:1:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "1791:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "1791:11:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mload", | |
| "nodeType": "YulIdentifier", | |
| "src": "1785:5:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "1785:18:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "1765:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "1765:39:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "1765:39:11" | |
| } | |
| ] | |
| }, | |
| "condition": { | |
| "arguments": [ | |
| { | |
| "name": "i", | |
| "nodeType": "YulIdentifier", | |
| "src": "1712:1:11" | |
| }, | |
| { | |
| "name": "length", | |
| "nodeType": "YulIdentifier", | |
| "src": "1715:6:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "lt", | |
| "nodeType": "YulIdentifier", | |
| "src": "1709:2:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "1709:13:11" | |
| }, | |
| "nodeType": "YulForLoop", | |
| "post": { | |
| "nodeType": "YulBlock", | |
| "src": "1723:19:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "1725:15:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "i", | |
| "nodeType": "YulIdentifier", | |
| "src": "1734:1:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "1737:2:11", | |
| "type": "", | |
| "value": "32" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "1730:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "1730:10:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "i", | |
| "nodeType": "YulIdentifier", | |
| "src": "1725:1:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "pre": { | |
| "nodeType": "YulBlock", | |
| "src": "1705:3:11", | |
| "statements": [] | |
| }, | |
| "src": "1701:113:11" | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "dst", | |
| "nodeType": "YulIdentifier", | |
| "src": "1834:3:11" | |
| }, | |
| { | |
| "name": "length", | |
| "nodeType": "YulIdentifier", | |
| "src": "1839:6:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "1830:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "1830:16:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "1848:1:11", | |
| "type": "", | |
| "value": "0" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "1823:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "1823:27:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "1823:27:11" | |
| } | |
| ] | |
| }, | |
| "name": "copy_memory_to_memory_with_cleanup", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "src", | |
| "nodeType": "YulTypedName", | |
| "src": "1654:3:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "dst", | |
| "nodeType": "YulTypedName", | |
| "src": "1659:3:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "length", | |
| "nodeType": "YulTypedName", | |
| "src": "1664:6:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "1610:246:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "1957:339:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "1967:75:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "length", | |
| "nodeType": "YulIdentifier", | |
| "src": "2034:6:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "array_allocation_size_t_string_memory_ptr", | |
| "nodeType": "YulIdentifier", | |
| "src": "1992:41:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "1992:49:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "allocate_memory", | |
| "nodeType": "YulIdentifier", | |
| "src": "1976:15:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "1976:66:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "array", | |
| "nodeType": "YulIdentifier", | |
| "src": "1967:5:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "name": "array", | |
| "nodeType": "YulIdentifier", | |
| "src": "2058:5:11" | |
| }, | |
| { | |
| "name": "length", | |
| "nodeType": "YulIdentifier", | |
| "src": "2065:6:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "2051:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "2051:21:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "2051:21:11" | |
| }, | |
| { | |
| "nodeType": "YulVariableDeclaration", | |
| "src": "2081:27:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "array", | |
| "nodeType": "YulIdentifier", | |
| "src": "2096:5:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "2103:4:11", | |
| "type": "", | |
| "value": "0x20" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "2092:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "2092:16:11" | |
| }, | |
| "variables": [ | |
| { | |
| "name": "dst", | |
| "nodeType": "YulTypedName", | |
| "src": "2085:3:11", | |
| "type": "" | |
| } | |
| ] | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "2146:83:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [], | |
| "functionName": { | |
| "name": "revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae", | |
| "nodeType": "YulIdentifier", | |
| "src": "2148:77:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "2148:79:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "2148:79:11" | |
| } | |
| ] | |
| }, | |
| "condition": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "src", | |
| "nodeType": "YulIdentifier", | |
| "src": "2127:3:11" | |
| }, | |
| { | |
| "name": "length", | |
| "nodeType": "YulIdentifier", | |
| "src": "2132:6:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "2123:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "2123:16:11" | |
| }, | |
| { | |
| "name": "end", | |
| "nodeType": "YulIdentifier", | |
| "src": "2141:3:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "gt", | |
| "nodeType": "YulIdentifier", | |
| "src": "2120:2:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "2120:25:11" | |
| }, | |
| "nodeType": "YulIf", | |
| "src": "2117:112:11" | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "name": "src", | |
| "nodeType": "YulIdentifier", | |
| "src": "2273:3:11" | |
| }, | |
| { | |
| "name": "dst", | |
| "nodeType": "YulIdentifier", | |
| "src": "2278:3:11" | |
| }, | |
| { | |
| "name": "length", | |
| "nodeType": "YulIdentifier", | |
| "src": "2283:6:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "copy_memory_to_memory_with_cleanup", | |
| "nodeType": "YulIdentifier", | |
| "src": "2238:34:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "2238:52:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "2238:52:11" | |
| } | |
| ] | |
| }, | |
| "name": "abi_decode_available_length_t_string_memory_ptr_fromMemory", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "src", | |
| "nodeType": "YulTypedName", | |
| "src": "1930:3:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "length", | |
| "nodeType": "YulTypedName", | |
| "src": "1935:6:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "end", | |
| "nodeType": "YulTypedName", | |
| "src": "1943:3:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "array", | |
| "nodeType": "YulTypedName", | |
| "src": "1951:5:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "1862:434:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "2389:282:11", | |
| "statements": [ | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "2438:83:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [], | |
| "functionName": { | |
| "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", | |
| "nodeType": "YulIdentifier", | |
| "src": "2440:77:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "2440:79:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "2440:79:11" | |
| } | |
| ] | |
| }, | |
| "condition": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "offset", | |
| "nodeType": "YulIdentifier", | |
| "src": "2417:6:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "2425:4:11", | |
| "type": "", | |
| "value": "0x1f" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "2413:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "2413:17:11" | |
| }, | |
| { | |
| "name": "end", | |
| "nodeType": "YulIdentifier", | |
| "src": "2432:3:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "slt", | |
| "nodeType": "YulIdentifier", | |
| "src": "2409:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "2409:27:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "iszero", | |
| "nodeType": "YulIdentifier", | |
| "src": "2402:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "2402:35:11" | |
| }, | |
| "nodeType": "YulIf", | |
| "src": "2399:122:11" | |
| }, | |
| { | |
| "nodeType": "YulVariableDeclaration", | |
| "src": "2530:27:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "offset", | |
| "nodeType": "YulIdentifier", | |
| "src": "2550:6:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mload", | |
| "nodeType": "YulIdentifier", | |
| "src": "2544:5:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "2544:13:11" | |
| }, | |
| "variables": [ | |
| { | |
| "name": "length", | |
| "nodeType": "YulTypedName", | |
| "src": "2534:6:11", | |
| "type": "" | |
| } | |
| ] | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "2566:99:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "offset", | |
| "nodeType": "YulIdentifier", | |
| "src": "2638:6:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "2646:4:11", | |
| "type": "", | |
| "value": "0x20" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "2634:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "2634:17:11" | |
| }, | |
| { | |
| "name": "length", | |
| "nodeType": "YulIdentifier", | |
| "src": "2653:6:11" | |
| }, | |
| { | |
| "name": "end", | |
| "nodeType": "YulIdentifier", | |
| "src": "2661:3:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "abi_decode_available_length_t_string_memory_ptr_fromMemory", | |
| "nodeType": "YulIdentifier", | |
| "src": "2575:58:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "2575:90:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "array", | |
| "nodeType": "YulIdentifier", | |
| "src": "2566:5:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "abi_decode_t_string_memory_ptr_fromMemory", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "offset", | |
| "nodeType": "YulTypedName", | |
| "src": "2367:6:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "end", | |
| "nodeType": "YulTypedName", | |
| "src": "2375:3:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "array", | |
| "nodeType": "YulTypedName", | |
| "src": "2383:5:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "2316:355:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "2791:739:11", | |
| "statements": [ | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "2837:83:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [], | |
| "functionName": { | |
| "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", | |
| "nodeType": "YulIdentifier", | |
| "src": "2839:77:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "2839:79:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "2839:79:11" | |
| } | |
| ] | |
| }, | |
| "condition": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "dataEnd", | |
| "nodeType": "YulIdentifier", | |
| "src": "2812:7:11" | |
| }, | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "2821:9:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "sub", | |
| "nodeType": "YulIdentifier", | |
| "src": "2808:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "2808:23:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "2833:2:11", | |
| "type": "", | |
| "value": "64" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "slt", | |
| "nodeType": "YulIdentifier", | |
| "src": "2804:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "2804:32:11" | |
| }, | |
| "nodeType": "YulIf", | |
| "src": "2801:119:11" | |
| }, | |
| { | |
| "nodeType": "YulBlock", | |
| "src": "2930:291:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulVariableDeclaration", | |
| "src": "2945:38:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "2969:9:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "2980:1:11", | |
| "type": "", | |
| "value": "0" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "2965:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "2965:17:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mload", | |
| "nodeType": "YulIdentifier", | |
| "src": "2959:5:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "2959:24:11" | |
| }, | |
| "variables": [ | |
| { | |
| "name": "offset", | |
| "nodeType": "YulTypedName", | |
| "src": "2949:6:11", | |
| "type": "" | |
| } | |
| ] | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "3030:83:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [], | |
| "functionName": { | |
| "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", | |
| "nodeType": "YulIdentifier", | |
| "src": "3032:77:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "3032:79:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "3032:79:11" | |
| } | |
| ] | |
| }, | |
| "condition": { | |
| "arguments": [ | |
| { | |
| "name": "offset", | |
| "nodeType": "YulIdentifier", | |
| "src": "3002:6:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "3010:18:11", | |
| "type": "", | |
| "value": "0xffffffffffffffff" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "gt", | |
| "nodeType": "YulIdentifier", | |
| "src": "2999:2:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "2999:30:11" | |
| }, | |
| "nodeType": "YulIf", | |
| "src": "2996:117:11" | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "3127:84:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "3183:9:11" | |
| }, | |
| { | |
| "name": "offset", | |
| "nodeType": "YulIdentifier", | |
| "src": "3194:6:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "3179:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "3179:22:11" | |
| }, | |
| { | |
| "name": "dataEnd", | |
| "nodeType": "YulIdentifier", | |
| "src": "3203:7:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "abi_decode_t_string_memory_ptr_fromMemory", | |
| "nodeType": "YulIdentifier", | |
| "src": "3137:41:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "3137:74:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "value0", | |
| "nodeType": "YulIdentifier", | |
| "src": "3127:6:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| { | |
| "nodeType": "YulBlock", | |
| "src": "3231:292:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulVariableDeclaration", | |
| "src": "3246:39:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "3270:9:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "3281:2:11", | |
| "type": "", | |
| "value": "32" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "3266:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "3266:18:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mload", | |
| "nodeType": "YulIdentifier", | |
| "src": "3260:5:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "3260:25:11" | |
| }, | |
| "variables": [ | |
| { | |
| "name": "offset", | |
| "nodeType": "YulTypedName", | |
| "src": "3250:6:11", | |
| "type": "" | |
| } | |
| ] | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "3332:83:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [], | |
| "functionName": { | |
| "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", | |
| "nodeType": "YulIdentifier", | |
| "src": "3334:77:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "3334:79:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "3334:79:11" | |
| } | |
| ] | |
| }, | |
| "condition": { | |
| "arguments": [ | |
| { | |
| "name": "offset", | |
| "nodeType": "YulIdentifier", | |
| "src": "3304:6:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "3312:18:11", | |
| "type": "", | |
| "value": "0xffffffffffffffff" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "gt", | |
| "nodeType": "YulIdentifier", | |
| "src": "3301:2:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "3301:30:11" | |
| }, | |
| "nodeType": "YulIf", | |
| "src": "3298:117:11" | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "3429:84:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "3485:9:11" | |
| }, | |
| { | |
| "name": "offset", | |
| "nodeType": "YulIdentifier", | |
| "src": "3496:6:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "3481:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "3481:22:11" | |
| }, | |
| { | |
| "name": "dataEnd", | |
| "nodeType": "YulIdentifier", | |
| "src": "3505:7:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "abi_decode_t_string_memory_ptr_fromMemory", | |
| "nodeType": "YulIdentifier", | |
| "src": "3439:41:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "3439:74:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "value1", | |
| "nodeType": "YulIdentifier", | |
| "src": "3429:6:11" | |
| } | |
| ] | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "headStart", | |
| "nodeType": "YulTypedName", | |
| "src": "2753:9:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "dataEnd", | |
| "nodeType": "YulTypedName", | |
| "src": "2764:7:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "value0", | |
| "nodeType": "YulTypedName", | |
| "src": "2776:6:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "value1", | |
| "nodeType": "YulTypedName", | |
| "src": "2784:6:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "2677:853:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "3595:40:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "3606:22:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulIdentifier", | |
| "src": "3622:5:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mload", | |
| "nodeType": "YulIdentifier", | |
| "src": "3616:5:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "3616:12:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "length", | |
| "nodeType": "YulIdentifier", | |
| "src": "3606:6:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "array_length_t_string_memory_ptr", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulTypedName", | |
| "src": "3578:5:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "length", | |
| "nodeType": "YulTypedName", | |
| "src": "3588:6:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "3536:99:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "3669:152:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "3686:1:11", | |
| "type": "", | |
| "value": "0" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "3689:77:11", | |
| "type": "", | |
| "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "3679:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "3679:88:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "3679:88:11" | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "3783:1:11", | |
| "type": "", | |
| "value": "4" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "3786:4:11", | |
| "type": "", | |
| "value": "0x22" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "3776:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "3776:15:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "3776:15:11" | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "3807:1:11", | |
| "type": "", | |
| "value": "0" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "3810:4:11", | |
| "type": "", | |
| "value": "0x24" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "revert", | |
| "nodeType": "YulIdentifier", | |
| "src": "3800:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "3800:15:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "3800:15:11" | |
| } | |
| ] | |
| }, | |
| "name": "panic_error_0x22", | |
| "nodeType": "YulFunctionDefinition", | |
| "src": "3641:180:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "3878:269:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "3888:22:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "data", | |
| "nodeType": "YulIdentifier", | |
| "src": "3902:4:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "3908:1:11", | |
| "type": "", | |
| "value": "2" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "div", | |
| "nodeType": "YulIdentifier", | |
| "src": "3898:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "3898:12:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "length", | |
| "nodeType": "YulIdentifier", | |
| "src": "3888:6:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "nodeType": "YulVariableDeclaration", | |
| "src": "3919:38:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "data", | |
| "nodeType": "YulIdentifier", | |
| "src": "3949:4:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "3955:1:11", | |
| "type": "", | |
| "value": "1" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "and", | |
| "nodeType": "YulIdentifier", | |
| "src": "3945:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "3945:12:11" | |
| }, | |
| "variables": [ | |
| { | |
| "name": "outOfPlaceEncoding", | |
| "nodeType": "YulTypedName", | |
| "src": "3923:18:11", | |
| "type": "" | |
| } | |
| ] | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "3996:51:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "4010:27:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "length", | |
| "nodeType": "YulIdentifier", | |
| "src": "4024:6:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "4032:4:11", | |
| "type": "", | |
| "value": "0x7f" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "and", | |
| "nodeType": "YulIdentifier", | |
| "src": "4020:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4020:17:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "length", | |
| "nodeType": "YulIdentifier", | |
| "src": "4010:6:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "condition": { | |
| "arguments": [ | |
| { | |
| "name": "outOfPlaceEncoding", | |
| "nodeType": "YulIdentifier", | |
| "src": "3976:18:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "iszero", | |
| "nodeType": "YulIdentifier", | |
| "src": "3969:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "3969:26:11" | |
| }, | |
| "nodeType": "YulIf", | |
| "src": "3966:81:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "4099:42:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [], | |
| "functionName": { | |
| "name": "panic_error_0x22", | |
| "nodeType": "YulIdentifier", | |
| "src": "4113:16:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4113:18:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "4113:18:11" | |
| } | |
| ] | |
| }, | |
| "condition": { | |
| "arguments": [ | |
| { | |
| "name": "outOfPlaceEncoding", | |
| "nodeType": "YulIdentifier", | |
| "src": "4063:18:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "name": "length", | |
| "nodeType": "YulIdentifier", | |
| "src": "4086:6:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "4094:2:11", | |
| "type": "", | |
| "value": "32" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "lt", | |
| "nodeType": "YulIdentifier", | |
| "src": "4083:2:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4083:14:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "eq", | |
| "nodeType": "YulIdentifier", | |
| "src": "4060:2:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4060:38:11" | |
| }, | |
| "nodeType": "YulIf", | |
| "src": "4057:84:11" | |
| } | |
| ] | |
| }, | |
| "name": "extract_byte_array_length", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "data", | |
| "nodeType": "YulTypedName", | |
| "src": "3862:4:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "length", | |
| "nodeType": "YulTypedName", | |
| "src": "3871:6:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "3827:320:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "4207:87:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "4217:11:11", | |
| "value": { | |
| "name": "ptr", | |
| "nodeType": "YulIdentifier", | |
| "src": "4225:3:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "data", | |
| "nodeType": "YulIdentifier", | |
| "src": "4217:4:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "4245:1:11", | |
| "type": "", | |
| "value": "0" | |
| }, | |
| { | |
| "name": "ptr", | |
| "nodeType": "YulIdentifier", | |
| "src": "4248:3:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "4238:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4238:14:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "4238:14:11" | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "4261:26:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "4279:1:11", | |
| "type": "", | |
| "value": "0" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "4282:4:11", | |
| "type": "", | |
| "value": "0x20" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "keccak256", | |
| "nodeType": "YulIdentifier", | |
| "src": "4269:9:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4269:18:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "data", | |
| "nodeType": "YulIdentifier", | |
| "src": "4261:4:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "array_dataslot_t_string_storage", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "ptr", | |
| "nodeType": "YulTypedName", | |
| "src": "4194:3:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "data", | |
| "nodeType": "YulTypedName", | |
| "src": "4202:4:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "4153:141:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "4344:49:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "4354:33:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulIdentifier", | |
| "src": "4372:5:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "4379:2:11", | |
| "type": "", | |
| "value": "31" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "4368:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4368:14:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "4384:2:11", | |
| "type": "", | |
| "value": "32" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "div", | |
| "nodeType": "YulIdentifier", | |
| "src": "4364:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4364:23:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "result", | |
| "nodeType": "YulIdentifier", | |
| "src": "4354:6:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "divide_by_32_ceil", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulTypedName", | |
| "src": "4327:5:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "result", | |
| "nodeType": "YulTypedName", | |
| "src": "4337:6:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "4300:93:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "4452:54:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "4462:37:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "bits", | |
| "nodeType": "YulIdentifier", | |
| "src": "4487:4:11" | |
| }, | |
| { | |
| "name": "value", | |
| "nodeType": "YulIdentifier", | |
| "src": "4493:5:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "shl", | |
| "nodeType": "YulIdentifier", | |
| "src": "4483:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4483:16:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "newValue", | |
| "nodeType": "YulIdentifier", | |
| "src": "4462:8:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "shift_left_dynamic", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "bits", | |
| "nodeType": "YulTypedName", | |
| "src": "4427:4:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "value", | |
| "nodeType": "YulTypedName", | |
| "src": "4433:5:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "newValue", | |
| "nodeType": "YulTypedName", | |
| "src": "4443:8:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "4399:107:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "4588:317:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulVariableDeclaration", | |
| "src": "4598:35:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "shiftBytes", | |
| "nodeType": "YulIdentifier", | |
| "src": "4619:10:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "4631:1:11", | |
| "type": "", | |
| "value": "8" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mul", | |
| "nodeType": "YulIdentifier", | |
| "src": "4615:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4615:18:11" | |
| }, | |
| "variables": [ | |
| { | |
| "name": "shiftBits", | |
| "nodeType": "YulTypedName", | |
| "src": "4602:9:11", | |
| "type": "" | |
| } | |
| ] | |
| }, | |
| { | |
| "nodeType": "YulVariableDeclaration", | |
| "src": "4642:109:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "shiftBits", | |
| "nodeType": "YulIdentifier", | |
| "src": "4673:9:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "4684:66:11", | |
| "type": "", | |
| "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "shift_left_dynamic", | |
| "nodeType": "YulIdentifier", | |
| "src": "4654:18:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4654:97:11" | |
| }, | |
| "variables": [ | |
| { | |
| "name": "mask", | |
| "nodeType": "YulTypedName", | |
| "src": "4646:4:11", | |
| "type": "" | |
| } | |
| ] | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "4760:51:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "shiftBits", | |
| "nodeType": "YulIdentifier", | |
| "src": "4791:9:11" | |
| }, | |
| { | |
| "name": "toInsert", | |
| "nodeType": "YulIdentifier", | |
| "src": "4802:8:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "shift_left_dynamic", | |
| "nodeType": "YulIdentifier", | |
| "src": "4772:18:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4772:39:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "toInsert", | |
| "nodeType": "YulIdentifier", | |
| "src": "4760:8:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "4820:30:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulIdentifier", | |
| "src": "4833:5:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "name": "mask", | |
| "nodeType": "YulIdentifier", | |
| "src": "4844:4:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "not", | |
| "nodeType": "YulIdentifier", | |
| "src": "4840:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4840:9:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "and", | |
| "nodeType": "YulIdentifier", | |
| "src": "4829:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4829:21:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulIdentifier", | |
| "src": "4820:5:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "4859:40:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulIdentifier", | |
| "src": "4872:5:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "name": "toInsert", | |
| "nodeType": "YulIdentifier", | |
| "src": "4883:8:11" | |
| }, | |
| { | |
| "name": "mask", | |
| "nodeType": "YulIdentifier", | |
| "src": "4893:4:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "and", | |
| "nodeType": "YulIdentifier", | |
| "src": "4879:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4879:19:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "or", | |
| "nodeType": "YulIdentifier", | |
| "src": "4869:2:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "4869:30:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "result", | |
| "nodeType": "YulIdentifier", | |
| "src": "4859:6:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "update_byte_slice_dynamic32", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulTypedName", | |
| "src": "4549:5:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "shiftBytes", | |
| "nodeType": "YulTypedName", | |
| "src": "4556:10:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "toInsert", | |
| "nodeType": "YulTypedName", | |
| "src": "4568:8:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "result", | |
| "nodeType": "YulTypedName", | |
| "src": "4581:6:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "4512:393:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "4956:32:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "4966:16:11", | |
| "value": { | |
| "name": "value", | |
| "nodeType": "YulIdentifier", | |
| "src": "4977:5:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "cleaned", | |
| "nodeType": "YulIdentifier", | |
| "src": "4966:7:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "cleanup_t_uint256", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulTypedName", | |
| "src": "4938:5:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "cleaned", | |
| "nodeType": "YulTypedName", | |
| "src": "4948:7:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "4911:77:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "5026:28:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "5036:12:11", | |
| "value": { | |
| "name": "value", | |
| "nodeType": "YulIdentifier", | |
| "src": "5043:5:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "ret", | |
| "nodeType": "YulIdentifier", | |
| "src": "5036:3:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "identity", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulTypedName", | |
| "src": "5012:5:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "ret", | |
| "nodeType": "YulTypedName", | |
| "src": "5022:3:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "4994:60:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "5120:82:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "5130:66:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulIdentifier", | |
| "src": "5188:5:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "cleanup_t_uint256", | |
| "nodeType": "YulIdentifier", | |
| "src": "5170:17:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "5170:24:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "identity", | |
| "nodeType": "YulIdentifier", | |
| "src": "5161:8:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "5161:34:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "cleanup_t_uint256", | |
| "nodeType": "YulIdentifier", | |
| "src": "5143:17:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "5143:53:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "converted", | |
| "nodeType": "YulIdentifier", | |
| "src": "5130:9:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "convert_t_uint256_to_t_uint256", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulTypedName", | |
| "src": "5100:5:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "converted", | |
| "nodeType": "YulTypedName", | |
| "src": "5110:9:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "5060:142:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "5255:28:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "5265:12:11", | |
| "value": { | |
| "name": "value", | |
| "nodeType": "YulIdentifier", | |
| "src": "5272:5:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "ret", | |
| "nodeType": "YulIdentifier", | |
| "src": "5265:3:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "prepare_store_t_uint256", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "value", | |
| "nodeType": "YulTypedName", | |
| "src": "5241:5:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "ret", | |
| "nodeType": "YulTypedName", | |
| "src": "5251:3:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "5208:75:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "5365:193:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulVariableDeclaration", | |
| "src": "5375:63:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "value_0", | |
| "nodeType": "YulIdentifier", | |
| "src": "5430:7:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "convert_t_uint256_to_t_uint256", | |
| "nodeType": "YulIdentifier", | |
| "src": "5399:30:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "5399:39:11" | |
| }, | |
| "variables": [ | |
| { | |
| "name": "convertedValue_0", | |
| "nodeType": "YulTypedName", | |
| "src": "5379:16:11", | |
| "type": "" | |
| } | |
| ] | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "name": "slot", | |
| "nodeType": "YulIdentifier", | |
| "src": "5454:4:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "slot", | |
| "nodeType": "YulIdentifier", | |
| "src": "5494:4:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "sload", | |
| "nodeType": "YulIdentifier", | |
| "src": "5488:5:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "5488:11:11" | |
| }, | |
| { | |
| "name": "offset", | |
| "nodeType": "YulIdentifier", | |
| "src": "5501:6:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "name": "convertedValue_0", | |
| "nodeType": "YulIdentifier", | |
| "src": "5533:16:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "prepare_store_t_uint256", | |
| "nodeType": "YulIdentifier", | |
| "src": "5509:23:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "5509:41:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "update_byte_slice_dynamic32", | |
| "nodeType": "YulIdentifier", | |
| "src": "5460:27:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "5460:91:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "sstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "5447:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "5447:105:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "5447:105:11" | |
| } | |
| ] | |
| }, | |
| "name": "update_storage_value_t_uint256_to_t_uint256", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "slot", | |
| "nodeType": "YulTypedName", | |
| "src": "5342:4:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "offset", | |
| "nodeType": "YulTypedName", | |
| "src": "5348:6:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "value_0", | |
| "nodeType": "YulTypedName", | |
| "src": "5356:7:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "5289:269:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "5613:24:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "5623:8:11", | |
| "value": { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "5630:1:11", | |
| "type": "", | |
| "value": "0" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "ret", | |
| "nodeType": "YulIdentifier", | |
| "src": "5623:3:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "zero_value_for_split_t_uint256", | |
| "nodeType": "YulFunctionDefinition", | |
| "returnVariables": [ | |
| { | |
| "name": "ret", | |
| "nodeType": "YulTypedName", | |
| "src": "5609:3:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "5564:73:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "5696:136:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulVariableDeclaration", | |
| "src": "5706:46:11", | |
| "value": { | |
| "arguments": [], | |
| "functionName": { | |
| "name": "zero_value_for_split_t_uint256", | |
| "nodeType": "YulIdentifier", | |
| "src": "5720:30:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "5720:32:11" | |
| }, | |
| "variables": [ | |
| { | |
| "name": "zero_0", | |
| "nodeType": "YulTypedName", | |
| "src": "5710:6:11", | |
| "type": "" | |
| } | |
| ] | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "name": "slot", | |
| "nodeType": "YulIdentifier", | |
| "src": "5805:4:11" | |
| }, | |
| { | |
| "name": "offset", | |
| "nodeType": "YulIdentifier", | |
| "src": "5811:6:11" | |
| }, | |
| { | |
| "name": "zero_0", | |
| "nodeType": "YulIdentifier", | |
| "src": "5819:6:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "update_storage_value_t_uint256_to_t_uint256", | |
| "nodeType": "YulIdentifier", | |
| "src": "5761:43:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "5761:65:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "5761:65:11" | |
| } | |
| ] | |
| }, | |
| "name": "storage_set_to_zero_t_uint256", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "slot", | |
| "nodeType": "YulTypedName", | |
| "src": "5682:4:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "offset", | |
| "nodeType": "YulTypedName", | |
| "src": "5688:6:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "5643:189:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "5888:136:11", | |
| "statements": [ | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "5955:63:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "name": "start", | |
| "nodeType": "YulIdentifier", | |
| "src": "5999:5:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "6006:1:11", | |
| "type": "", | |
| "value": "0" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "storage_set_to_zero_t_uint256", | |
| "nodeType": "YulIdentifier", | |
| "src": "5969:29:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "5969:39:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "5969:39:11" | |
| } | |
| ] | |
| }, | |
| "condition": { | |
| "arguments": [ | |
| { | |
| "name": "start", | |
| "nodeType": "YulIdentifier", | |
| "src": "5908:5:11" | |
| }, | |
| { | |
| "name": "end", | |
| "nodeType": "YulIdentifier", | |
| "src": "5915:3:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "lt", | |
| "nodeType": "YulIdentifier", | |
| "src": "5905:2:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "5905:14:11" | |
| }, | |
| "nodeType": "YulForLoop", | |
| "post": { | |
| "nodeType": "YulBlock", | |
| "src": "5920:26:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "5922:22:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "start", | |
| "nodeType": "YulIdentifier", | |
| "src": "5935:5:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "5942:1:11", | |
| "type": "", | |
| "value": "1" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "5931:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "5931:13:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "start", | |
| "nodeType": "YulIdentifier", | |
| "src": "5922:5:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "pre": { | |
| "nodeType": "YulBlock", | |
| "src": "5902:2:11", | |
| "statements": [] | |
| }, | |
| "src": "5898:120:11" | |
| } | |
| ] | |
| }, | |
| "name": "clear_storage_range_t_bytes1", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "start", | |
| "nodeType": "YulTypedName", | |
| "src": "5876:5:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "end", | |
| "nodeType": "YulTypedName", | |
| "src": "5883:3:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "5838:186:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "6109:464:11", | |
| "statements": [ | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "6135:431:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulVariableDeclaration", | |
| "src": "6149:54:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "array", | |
| "nodeType": "YulIdentifier", | |
| "src": "6197:5:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "array_dataslot_t_string_storage", | |
| "nodeType": "YulIdentifier", | |
| "src": "6165:31:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "6165:38:11" | |
| }, | |
| "variables": [ | |
| { | |
| "name": "dataArea", | |
| "nodeType": "YulTypedName", | |
| "src": "6153:8:11", | |
| "type": "" | |
| } | |
| ] | |
| }, | |
| { | |
| "nodeType": "YulVariableDeclaration", | |
| "src": "6216:63:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "dataArea", | |
| "nodeType": "YulIdentifier", | |
| "src": "6239:8:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "name": "startIndex", | |
| "nodeType": "YulIdentifier", | |
| "src": "6267:10:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "divide_by_32_ceil", | |
| "nodeType": "YulIdentifier", | |
| "src": "6249:17:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "6249:29:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "6235:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "6235:44:11" | |
| }, | |
| "variables": [ | |
| { | |
| "name": "deleteStart", | |
| "nodeType": "YulTypedName", | |
| "src": "6220:11:11", | |
| "type": "" | |
| } | |
| ] | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "6436:27:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "6438:23:11", | |
| "value": { | |
| "name": "dataArea", | |
| "nodeType": "YulIdentifier", | |
| "src": "6453:8:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "deleteStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "6438:11:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "condition": { | |
| "arguments": [ | |
| { | |
| "name": "startIndex", | |
| "nodeType": "YulIdentifier", | |
| "src": "6420:10:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "6432:2:11", | |
| "type": "", | |
| "value": "32" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "lt", | |
| "nodeType": "YulIdentifier", | |
| "src": "6417:2:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "6417:18:11" | |
| }, | |
| "nodeType": "YulIf", | |
| "src": "6414:49:11" | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "name": "deleteStart", | |
| "nodeType": "YulIdentifier", | |
| "src": "6505:11:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "name": "dataArea", | |
| "nodeType": "YulIdentifier", | |
| "src": "6522:8:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "name": "len", | |
| "nodeType": "YulIdentifier", | |
| "src": "6550:3:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "divide_by_32_ceil", | |
| "nodeType": "YulIdentifier", | |
| "src": "6532:17:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "6532:22:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "6518:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "6518:37:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "clear_storage_range_t_bytes1", | |
| "nodeType": "YulIdentifier", | |
| "src": "6476:28:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "6476:80:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "6476:80:11" | |
| } | |
| ] | |
| }, | |
| "condition": { | |
| "arguments": [ | |
| { | |
| "name": "len", | |
| "nodeType": "YulIdentifier", | |
| "src": "6126:3:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "6131:2:11", | |
| "type": "", | |
| "value": "31" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "gt", | |
| "nodeType": "YulIdentifier", | |
| "src": "6123:2:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "6123:11:11" | |
| }, | |
| "nodeType": "YulIf", | |
| "src": "6120:446:11" | |
| } | |
| ] | |
| }, | |
| "name": "clean_up_bytearray_end_slots_t_string_storage", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "array", | |
| "nodeType": "YulTypedName", | |
| "src": "6085:5:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "len", | |
| "nodeType": "YulTypedName", | |
| "src": "6092:3:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "startIndex", | |
| "nodeType": "YulTypedName", | |
| "src": "6097:10:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "6030:543:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "6642:54:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "6652:37:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "bits", | |
| "nodeType": "YulIdentifier", | |
| "src": "6677:4:11" | |
| }, | |
| { | |
| "name": "value", | |
| "nodeType": "YulIdentifier", | |
| "src": "6683:5:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "shr", | |
| "nodeType": "YulIdentifier", | |
| "src": "6673:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "6673:16:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "newValue", | |
| "nodeType": "YulIdentifier", | |
| "src": "6652:8:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "shift_right_unsigned_dynamic", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "bits", | |
| "nodeType": "YulTypedName", | |
| "src": "6617:4:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "value", | |
| "nodeType": "YulTypedName", | |
| "src": "6623:5:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "newValue", | |
| "nodeType": "YulTypedName", | |
| "src": "6633:8:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "6579:117:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "6753:118:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulVariableDeclaration", | |
| "src": "6763:68:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "6812:1:11", | |
| "type": "", | |
| "value": "8" | |
| }, | |
| { | |
| "name": "bytes", | |
| "nodeType": "YulIdentifier", | |
| "src": "6815:5:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mul", | |
| "nodeType": "YulIdentifier", | |
| "src": "6808:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "6808:13:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "6827:1:11", | |
| "type": "", | |
| "value": "0" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "not", | |
| "nodeType": "YulIdentifier", | |
| "src": "6823:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "6823:6:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "shift_right_unsigned_dynamic", | |
| "nodeType": "YulIdentifier", | |
| "src": "6779:28:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "6779:51:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "not", | |
| "nodeType": "YulIdentifier", | |
| "src": "6775:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "6775:56:11" | |
| }, | |
| "variables": [ | |
| { | |
| "name": "mask", | |
| "nodeType": "YulTypedName", | |
| "src": "6767:4:11", | |
| "type": "" | |
| } | |
| ] | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "6840:25:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "data", | |
| "nodeType": "YulIdentifier", | |
| "src": "6854:4:11" | |
| }, | |
| { | |
| "name": "mask", | |
| "nodeType": "YulIdentifier", | |
| "src": "6860:4:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "and", | |
| "nodeType": "YulIdentifier", | |
| "src": "6850:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "6850:15:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "result", | |
| "nodeType": "YulIdentifier", | |
| "src": "6840:6:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "mask_bytes_dynamic", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "data", | |
| "nodeType": "YulTypedName", | |
| "src": "6730:4:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "bytes", | |
| "nodeType": "YulTypedName", | |
| "src": "6736:5:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "result", | |
| "nodeType": "YulTypedName", | |
| "src": "6746:6:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "6702:169:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "6957:214:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "7090:37:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "data", | |
| "nodeType": "YulIdentifier", | |
| "src": "7117:4:11" | |
| }, | |
| { | |
| "name": "len", | |
| "nodeType": "YulIdentifier", | |
| "src": "7123:3:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mask_bytes_dynamic", | |
| "nodeType": "YulIdentifier", | |
| "src": "7098:18:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "7098:29:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "data", | |
| "nodeType": "YulIdentifier", | |
| "src": "7090:4:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "7136:29:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "data", | |
| "nodeType": "YulIdentifier", | |
| "src": "7147:4:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "7157:1:11", | |
| "type": "", | |
| "value": "2" | |
| }, | |
| { | |
| "name": "len", | |
| "nodeType": "YulIdentifier", | |
| "src": "7160:3:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mul", | |
| "nodeType": "YulIdentifier", | |
| "src": "7153:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "7153:11:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "or", | |
| "nodeType": "YulIdentifier", | |
| "src": "7144:2:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "7144:21:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "used", | |
| "nodeType": "YulIdentifier", | |
| "src": "7136:4:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "name": "extract_used_part_and_set_length_of_short_byte_array", | |
| "nodeType": "YulFunctionDefinition", | |
| "parameters": [ | |
| { | |
| "name": "data", | |
| "nodeType": "YulTypedName", | |
| "src": "6938:4:11", | |
| "type": "" | |
| }, | |
| { | |
| "name": "len", | |
| "nodeType": "YulTypedName", | |
| "src": "6944:3:11", | |
| "type": "" | |
| } | |
| ], | |
| "returnVariables": [ | |
| { | |
| "name": "used", | |
| "nodeType": "YulTypedName", | |
| "src": "6952:4:11", | |
| "type": "" | |
| } | |
| ], | |
| "src": "6876:295:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "7268:1303:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulVariableDeclaration", | |
| "src": "7279:51:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "src", | |
| "nodeType": "YulIdentifier", | |
| "src": "7326:3:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "array_length_t_string_memory_ptr", | |
| "nodeType": "YulIdentifier", | |
| "src": "7293:32:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "7293:37:11" | |
| }, | |
| "variables": [ | |
| { | |
| "name": "newLen", | |
| "nodeType": "YulTypedName", | |
| "src": "7283:6:11", | |
| "type": "" | |
| } | |
| ] | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "7415:22:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [], | |
| "functionName": { | |
| "name": "panic_error_0x41", | |
| "nodeType": "YulIdentifier", | |
| "src": "7417:16:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "7417:18:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "7417:18:11" | |
| } | |
| ] | |
| }, | |
| "condition": { | |
| "arguments": [ | |
| { | |
| "name": "newLen", | |
| "nodeType": "YulIdentifier", | |
| "src": "7387:6:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "7395:18:11", | |
| "type": "", | |
| "value": "0xffffffffffffffff" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "gt", | |
| "nodeType": "YulIdentifier", | |
| "src": "7384:2:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "7384:30:11" | |
| }, | |
| "nodeType": "YulIf", | |
| "src": "7381:56:11" | |
| }, | |
| { | |
| "nodeType": "YulVariableDeclaration", | |
| "src": "7447:52:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "slot", | |
| "nodeType": "YulIdentifier", | |
| "src": "7493:4:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "sload", | |
| "nodeType": "YulIdentifier", | |
| "src": "7487:5:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "7487:11:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "extract_byte_array_length", | |
| "nodeType": "YulIdentifier", | |
| "src": "7461:25:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "7461:38:11" | |
| }, | |
| "variables": [ | |
| { | |
| "name": "oldLen", | |
| "nodeType": "YulTypedName", | |
| "src": "7451:6:11", | |
| "type": "" | |
| } | |
| ] | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "name": "slot", | |
| "nodeType": "YulIdentifier", | |
| "src": "7592:4:11" | |
| }, | |
| { | |
| "name": "oldLen", | |
| "nodeType": "YulIdentifier", | |
| "src": "7598:6:11" | |
| }, | |
| { | |
| "name": "newLen", | |
| "nodeType": "YulIdentifier", | |
| "src": "7606:6:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "clean_up_bytearray_end_slots_t_string_storage", | |
| "nodeType": "YulIdentifier", | |
| "src": "7546:45:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "7546:67:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "7546:67:11" | |
| }, | |
| { | |
| "nodeType": "YulVariableDeclaration", | |
| "src": "7623:18:11", | |
| "value": { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "7640:1:11", | |
| "type": "", | |
| "value": "0" | |
| }, | |
| "variables": [ | |
| { | |
| "name": "srcOffset", | |
| "nodeType": "YulTypedName", | |
| "src": "7627:9:11", | |
| "type": "" | |
| } | |
| ] | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "7651:17:11", | |
| "value": { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "7664:4:11", | |
| "type": "", | |
| "value": "0x20" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "srcOffset", | |
| "nodeType": "YulIdentifier", | |
| "src": "7651:9:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "cases": [ | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "7715:611:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulVariableDeclaration", | |
| "src": "7729:37:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "newLen", | |
| "nodeType": "YulIdentifier", | |
| "src": "7748:6:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "7760:4:11", | |
| "type": "", | |
| "value": "0x1f" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "not", | |
| "nodeType": "YulIdentifier", | |
| "src": "7756:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "7756:9:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "and", | |
| "nodeType": "YulIdentifier", | |
| "src": "7744:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "7744:22:11" | |
| }, | |
| "variables": [ | |
| { | |
| "name": "loopEnd", | |
| "nodeType": "YulTypedName", | |
| "src": "7733:7:11", | |
| "type": "" | |
| } | |
| ] | |
| }, | |
| { | |
| "nodeType": "YulVariableDeclaration", | |
| "src": "7780:51:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "slot", | |
| "nodeType": "YulIdentifier", | |
| "src": "7826:4:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "array_dataslot_t_string_storage", | |
| "nodeType": "YulIdentifier", | |
| "src": "7794:31:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "7794:37:11" | |
| }, | |
| "variables": [ | |
| { | |
| "name": "dstPtr", | |
| "nodeType": "YulTypedName", | |
| "src": "7784:6:11", | |
| "type": "" | |
| } | |
| ] | |
| }, | |
| { | |
| "nodeType": "YulVariableDeclaration", | |
| "src": "7844:10:11", | |
| "value": { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "7853:1:11", | |
| "type": "", | |
| "value": "0" | |
| }, | |
| "variables": [ | |
| { | |
| "name": "i", | |
| "nodeType": "YulTypedName", | |
| "src": "7848:1:11", | |
| "type": "" | |
| } | |
| ] | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "7912:163:11", | |
| "statements": [ | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "name": "dstPtr", | |
| "nodeType": "YulIdentifier", | |
| "src": "7937:6:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "src", | |
| "nodeType": "YulIdentifier", | |
| "src": "7955:3:11" | |
| }, | |
| { | |
| "name": "srcOffset", | |
| "nodeType": "YulIdentifier", | |
| "src": "7960:9:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "7951:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "7951:19:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mload", | |
| "nodeType": "YulIdentifier", | |
| "src": "7945:5:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "7945:26:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "sstore", | |
| "nodeType": "YulIdentifier", | |
| "src": "7930:6:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "7930:42:11" | |
| }, | |
| "nodeType": "YulExpressionStatement", | |
| "src": "7930:42:11" | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "7989:24:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "dstPtr", | |
| "nodeType": "YulIdentifier", | |
| "src": "8003:6:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "8011:1:11", | |
| "type": "", | |
| "value": "1" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "7999:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "7999:14:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "dstPtr", | |
| "nodeType": "YulIdentifier", | |
| "src": "7989:6:11" | |
| } | |
| ] | |
| }, | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "8030:31:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "srcOffset", | |
| "nodeType": "YulIdentifier", | |
| "src": "8047:9:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "8058:2:11", | |
| "type": "", | |
| "value": "32" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "8043:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "8043:18:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "srcOffset", | |
| "nodeType": "YulIdentifier", | |
| "src": "8030:9:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "condition": { | |
| "arguments": [ | |
| { | |
| "name": "i", | |
| "nodeType": "YulIdentifier", | |
| "src": "7878:1:11" | |
| }, | |
| { | |
| "name": "loopEnd", | |
| "nodeType": "YulIdentifier", | |
| "src": "7881:7:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "lt", | |
| "nodeType": "YulIdentifier", | |
| "src": "7875:2:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "7875:14:11" | |
| }, | |
| "nodeType": "YulForLoop", | |
| "post": { | |
| "nodeType": "YulBlock", | |
| "src": "7890:21:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulAssignment", | |
| "src": "7892:17:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "name": "i", | |
| "nodeType": "YulIdentifier", | |
| "src": "7901:1:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
| "src": "7904:4:11", | |
| "type": "", | |
| "value": "0x20" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "7897:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "7897:12:11" | |
| }, | |
| "variableNames": [ | |
| { | |
| "name": "i", | |
| "nodeType": "YulIdentifier", | |
| "src": "7892:1:11" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "pre": { | |
| "nodeType": "YulBlock", | |
| "src": "7871:3:11", | |
| "statements": [] | |
| }, | |
| "src": "7867:208:11" | |
| }, | |
| { | |
| "body": { | |
| "nodeType": "YulBlock", | |
| "src": "8111:156:11", | |
| "statements": [ | |
| { | |
| "nodeType": "YulVariableDeclaration", | |
| "src": "8129:43:11", | |
| "value": { | |
| "arguments": [ | |
| { | |
| "arguments": [ | |
| { | |
| "name": "src", | |
| "nodeType": "YulIdentifier", | |
| "src": "8156:3:11" | |
| }, | |
| { | |
| "name": "srcOffset", | |
| "nodeType": "YulIdentifier", | |
| "src": "8161:9:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "add", | |
| "nodeType": "YulIdentifier", | |
| "src": "8152:3:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "8152:19:11" | |
| } | |
| ], | |
| "functionName": { | |
| "name": "mload", | |
| "nodeType": "YulIdentifier", | |
| "src": "8146:5:11" | |
| }, | |
| "nodeType": "YulFunctionCall", | |
| "src": "8146:26:11" | |
| }, | |
| "variables": [ | |
| { | |
| "name": "lastValue", | |
| "nodeType": "YulTypedName", | |
| "src": "8133:9:11", | |
| "type": "" | |
| } | |
| ] | |
| }, | |
| { | |
| "expression": { | |
| "arguments": [ | |
| { | |
| "name": "dstPtr", | |
| "nodeType": "YulIdentifier", | |
| "src": "8196:6:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "name": "lastValue", | |
| "nodeType": "YulIdentifier", | |
| "src": "8223:9:11" | |
| }, | |
| { | |
| "arguments": [ | |
| { | |
| "name": "newLen", | |
| "nodeType": "YulIdentifier", | |
| "src": "8238:6:11" | |
| }, | |
| { | |
| "kind": "number", | |
| "nodeType": "YulLiteral", | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment